设计学生证信息管理系统(C++实现,附源代码,详细解析)

学生证信息管理系统

C++实现

  • 录入学生的学生信息

  • 给定学号显示学生的信息和给定班级显示全班

  • 给定某位学生的学号,修改该学生的学生证信息

  • 给定某位学生的学号,删除该学生的学生证信息

  • 统计每班的某个号次

  • 代码

#include<iostream>
#include<cstdio>
#include <stdlib.h>
#include<cstring>
#include<conio.h>
# define N 70
using namespace std;

void welcome();              //定义欢迎界面函数;
void entrance();           //定义进入界面;
void add();            //定义录入学生信息的函数;
void find();                  //定义按学号查询信息函数和按班级查询信息函数;
void modify();           //定义修改函数;
void del();               //定义删除函数;
void statistics();               //定义一个统计函数;statistics 统计;
int tex=10;
struct student
{
	char sno[9];         //学号
	char name[20];          //姓名
	char classes[5];        //班级
}stu[N]={
{"18180001","卫庄","0001"},
{"18180002","盖聂  ","0002"},
{"18180004","大司命  ","0001"},
{"18180006","少司命","0002"},
{"18180007","张良","0003"},
{"18180008","红莲  ","0003"},
{"18180011","紫女","0004"},
{"18180022","雪女","0001"},
{"18180021","项羽  ","0005"},
{"18180032","虞姬  ","0005"}};
int main()
{

	welcome();	//进入欢迎界面;
}
/***************判断密码************/

/***************欢迎************************/
void welcome()
{

	system("cls");
	cout<<"\n";
	cout<<"\t\t\t    欢迎进入学生成绩管理系统\n";
	cout<<"\t\t******************************************\n";
	cout<<"\t\t\t请选择业务:\n";
	cout<<"\n";
	cout<<"\t\t\t1.录入学生的学生信息\n";
	cout<<"\t\t\t2.给定学号显示学生的信息和给定班级显示全班\n";
	cout<<"\t\t\t3.给定某位学生的学号,修改该学生的学生证信息\n";
	cout<<"\t\t\t4.给定某位学生的学号,删除该学生的学生证信息\n";
	cout<<"\t\t\t5.统计每班的某个号次\n";
	cout<<"\t\t\t6.退出\n";
	cout<<"\t\t\t请选择:";
	entrance();
	}
/***************进入**************************/
void entrance()
{
	int a;
	scanf("%d",&a);
    system("cls");
	switch(a)
	{
		
		case 1:             //录入信息
			cout<<"\n\n\n";
			cout<<"\t\t\t欢进入记录显示界面\n";
            add();
			break;
		case 2:             //给定学号,显示某学生信息和给定班号,显示全班学生
			cout<<"\n\n\n";
            cout<<"\t\t\t欢迎进入查询界面\n";
			find();
			break;
		case 3:             //进入修改界面
			cout<<"\n\n\n";
			cout<<"\t\t\t欢迎进入修改记录界面\n";
			modify();
			break;
		case 4:             //进入删除界面
			cout<<"\n\n\n";
			cout<<"\t\t\t欢迎进入删除记录界面\n";
            del();
		
		case 5:             //退出
			statistics();
			break;
		default: 
			cout<<"输入错误!\n";
			welcome();
			break;
		
	}
}
/*************添加学生信息********************/
void add()
{
	int figure;//定义要输入信息的学生的个数
	int j;
	char h,m;
	//fflush(stdin);
	system("cls");

		cout<<"你要输入多少个学生的信息? ";
		scanf("%d",&figure);
		cout<<"您确定要输入%d个学生的信息么?\n",figure;
		fflush(stdin);
		cout<<"<按Y开始N返回>";
		scanf("%c",&h);
		if(h=='Y'||h=='y')
		{
			for(j=0;j<figure;j++)
			{
				
				cout<<"请输入第%d个学生的信息:\n",j+1;
	            cout<<"学号:";
			    scanf("%s",&stu[tex].sno);
				cout<<"姓名:";
	           	scanf("%s",&stu[tex].name);
				cout<<"班级:";
	            scanf("%s",&stu[tex].classes);
				tex++;
			}

		}
		else
		{
			add();
		}
		cout<<"添加成功!\n";
		cout<<"是否现在查看所有记录?y/n";
     	fflush(stdin);
		scanf("%c",&m);
		if(m=='y'||m=='Y')
		{
			system("cls");
			find();
		}
		else
		{
			system("cls");
			welcome();

		}

}
/****************给定学号,显示某位学生学生证信息********************/
/****************给定班级,显示全班学生信息********************/
void find()
{
	int a,i;
	char sno[9];
	char classes[5];
	char t=' ';
	system("cls");
	cout<<"\t\t您可以:\n";
	cout<<"\t\t1.按学号查询!\n";
	cout<<"\t\t2.按班号查询!\n";
	scanf("%d",&a);
    switch(a)
	{
		case 1:
			cout<<"请输入学号:";
			scanf("%s",sno);
			cout<<"\t\t    学号    \t姓名  \t班级  \n";
			for(i=0;i<tex;i++)
			{
				if(strcmp(sno,stu[i].sno)==0)
				{
					cout<<"\t\t %s\t%s\t%s\t%",stu[i].sno,stu[i].name,stu[i].classes;
					cout<<"\n";
					break;
				}
			}
			if(i==tex)
			{
				cout<<"没有找到!\n";
			}
			cout<<"按Y返回!\n";
			while(t!='Y'&&t!='y')
			{
				fflush(stdin);
				scanf("%c",&t);
			}
			welcome();
			break;
		case 2:
			cout<<"请输入班级:";
			scanf("%s",classes);
			cout<<"\t\t    学号    \t姓名  \t班级  \n";
			for(i=0;i<tex;i++)
			{
				if(strcmp(classes,stu[i].classes)==0)
				{
					cout<<"\t\t %s\t%s\t%s\t",stu[i].sno,stu[i].name,stu[i].classes;
					cout<<"\n";
				}
			}
			cout<<"按Y返回!\n";
			while(t!='Y'&&t!='y')
			{
				fflush(stdin);
				scanf("%c",&t);
			}
			welcome();
			break;
		default:
			find();
			break;
	
	}
}

/****************修改信息****************/
void modify()
{
	int i;
	char numb[9];
	char h;
	system("cls");
	cout<<"\t\t    学号    \t姓名  \t班级 \n";
	for(i=0;i<tex;i++)
	{
		cout<<"\t\t %s\t%s\t%s\t",stu[i].sno,stu[i].name,stu[i].classes;
		cout<<"\n";
	}
    printf("请输入您要修改的学生的学号:");
			scanf("%s",numb);
			for(i=0;i<tex;i++)
			{
				if(strcmp(numb,stu[i].sno)==0)
				{
					cout<<"\t\t    学号    \t姓名  \t班级  \n";
					cout<<"\t\t %s\t%s\t%s\t",stu[i].sno,stu[i].name,stu[i].classes;
				}
				break;
			}
			cout<<"\n";
			cout<<"请输入该学生的信息:\n";
			cout<<"学号:";
			scanf("%s",&stu[i].sno);
			cout<<"姓名:";
	       	scanf("%s",&stu[i].name);
			cout<<"班级:";
	       	scanf("%s",&stu[i].classes);
			cout<<"修改成功!\n";
			cout<<"\t\t    学号    \t姓名  \t班级  \n";
			for(i=0;i<tex;i++)
{
				if(strcmp(stu[i].sno,"")!=0)
				{
					cout<<"\t\t %s\t%s\t%s\t",stu[i].sno,stu[i].name,stu[i].classes;
					cout<<"\n";
				}
			}
			cout<<"按Y返回!\n";
			fflush(stdin);
			scanf("%c",&h);
			while(h=='y'||h=='Y')
			{
				welcome();
			}
}
/****************删除记录****************/
     void del()
{
	int i,j;
	int k=0;
	char numb[9];
	char h,ft;
	system("cls");
	for(i=0;i<tex;i++)
	{
		if(strcmp(stu[i].sno,"")!=0)
		{
			cout<<"\t\t %s\t%s\t%s\t",stu[i].sno,stu[i].name,stu[i].classes;
			cout<<"\n";
		}
	}
			cout<<"请输入要删除的学号:";
			fflush(stdin);
			scanf("%s",numb);
			cout<<"\t\t    学号    \t姓名  \t班级  \n";
			for(i=0;i<tex;i++)
			{
				if(strcmp(numb,stu[i].sno)==0)
				{
					cout<<"\t\t %s\t%s\t%s\t",stu[i].sno,stu[i].name,stu[i].classes;
					cout<<"\n";
					break;
				}
			}
			cout<<"是否确定删除:y/n?";
			fflush(stdin);
			scanf("%c",&h);
			j=tex;
			if(h=='y'||h=='Y')
			{
					for(;i<tex-1;i++)
					{
						strcpy(stu[i].sno,stu[i+1].sno);
						strcpy(stu[i].name,stu[i+1].name);
						strcpy(stu[i].classes,stu[i+1].classes);
						strcpy(stu[tex].sno,"");
						strcpy(stu[tex].name,"");
						strcpy(stu[tex].classes,"");
									}
					tex--;
				
				cout<<"删除成功!\n";
				for(i=0;i<tex;i++)
				{
					if(strcmp(stu[i].sno,"")!=0)
					{
						cout<<"\t\t %s\t%s\t%s\t",stu[i].sno,stu[i].name,stu[i].classes;
						cout<<"\n";
					}
				}
				cout<<"按Y继续,按N返回: ";
				fflush(stdin);
				scanf("%c",&ft);
				if(ft=='Y'||ft=='y')
				{
					del();
				}
				else
				{
					welcome();
				}

			}
			else
			{
				del();
			}
		

}
/****************统计每班的某个号次****************/
void statistics()
{
	int i,j;
    char h;
	int x=(0,1,2,3,4,5,6,7,8,9);
	cout<<"您可以选择:\n";
	cout<<"1.统计每班的一号:\n";
	cout<<"2.统计每班的二号:\n";
	scanf("%d",&j);
	switch(j)
	{
		case 1:
			cout<<"每班的一号学生有:";
				for(i=0;i<tex;i++)
				{
				//xxxx******//
				if(stu[i].sno[7] == '1')
					{
						cout<<"\t%s",stu[i].name;
					}
				}
				cout<<"\n按Y继续按N返回:";
				fflush(stdin);
				scanf("%c",&h);
				if(h=='N'||h=='n')
				{
					welcome();
				}
				else
				{
					statistics();
				}
				break;

		case 2:
			cout<<"每班的二号学生有:";
				for(i=0;i<tex;i++)
				{
					if(stu[i].sno[7] == '2')
					{
						cout<<"\t%s",stu[i].name;
					}
				}
				cout<<"\n按Y继续按N返回:";
				fflush(stdin);
				scanf("%c",&h);
				if(h=='N'||h=='n')
				{
					welcome();
				}
				else
				{
					statistics();
				}
				break;
		default:
			statistics();
			break;
	}
}

在这里插入图片描述

  • 10
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设计一个学生证的管理程序。该程序应该具有以下功能: (l)录入某位学生的学生证信息(学生证应该包含的位息请参看自己的学生证); (2)给定学号,显示某位学生的学生证信息; (3)给定某个班级的班号,按学号由小到大显示该班所有学生的学生证信息; (4)给定某个班级的班号,按姓名的字典顺序显示该班所有学生的学生证信息; (5)给定某位学生的学号,修改该学生的学生证信息; (6)给定某位学生的学号,删除该学生的学生证信息。 题目要求: (1)按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序,即在程序中加入异常处理,检查用户输入数据的有效性,以保证程序的健壮性; (2)学生证应该包含的信息请参看自己的学生证; (3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单选项选则所需进行的操作项目,菜单要界面友好、清晰; (4)将所有学生证信息存储在一个文件中,并实现文件的读写操作,即将输入的数据以文件的形式存盘,将原来已经存盘的文件读入内存,进行管理; (5)应保证测试用例测试程序的各种边缘情况。 输入要求: 应用程序运行后,在屏幕上显示一个菜单。用户可以根据需要,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。 输出要求: (1)应用程序运行后,在屏幕上显示一个菜单。 (2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值