学生证管理系统C语言课程设计.docx
- 文档编号:28015684
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:50
- 大小:614.14KB
学生证管理系统C语言课程设计.docx
《学生证管理系统C语言课程设计.docx》由会员分享,可在线阅读,更多相关《学生证管理系统C语言课程设计.docx(50页珍藏版)》请在冰豆网上搜索。
学生证管理系统C语言课程设计
C语言课程设计报告
学院:
计算机学院
专业:
网络工程
题目:
学生证管理系统
班序号:
19313126
学号:
20131004080
姓名:
赵清华
2013年12月31日
报告目录
一、实习内容要求—————————————————————————3
二、需求分析—————————————————————————3
三、总体设计—————————————————————————3
四、设计简介—————————————————————————4
4.0头文件——————————————————————————4
4.1主函数—————————————————————————5
4.2子函数菜单—————————————————————————5
4.3子函数添加—————————————————————————5
4.4子函数修改—————————————————————————10
4.5子函数浏览—————————————————————————13
4.6子函数查询—————————————————————————14
4.7子函数统计—————————————————————————18
4.8子函数删除—————————————————————————23
五、上机操作—————————————————————————25
5.1系统说明—————————————————————————25
5.2系统测试—————————————————————————25
六、总结__________________________________________________31
一、实习内容要求
1、用C语言编写一个学生证管理系统,该系统具有以下功能:
(1)录入某位学生的学生证信息;
(2)给定学号,显示某位学生的学生证信息;
(3)给定某个班级的班号,显示该班所有学生的学生证信息;
(4)给定某位学生的学号,修改该学生的学生证信息;
(5)给定某位学生的学号,删除该学生的学生证信息;
(6)提供一些统计各类信息的功能;
(7)提供浏览所有学生的学生证信息的功能。
2、输入要求
应用程序运行后,在屏幕上显示一个菜单;用户可以根据要求,选定相应的操作项目;进入某个操作后,根据应用程序的提示,从键盘输入相应的信息。
3、输出要求
(1)应用程序运行后,要在屏幕上显示一个菜单;
(2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式
及结束方式等。
二、需求分析
学生证信息采用文件存储,因而要提供问价的输入/输出操作;要根据给定的学号或班号进行相应操作,要提供查找操作;实现一些统计给雷信息的功能要提供统计操作;另外,还要提供键盘式选择菜单以实现功能选择。
三、总体设计
这个程序被设计成数据输入模块、数据查找模块、数据子函数删除和数据子函数统计。
即:
添加,修改、查询,浏览、删除,统计等,如下图所示:
四、设计简介
4.0头文件
#include
#include
#include
#defineN100
structClass
{
charCname[20];//班名
charCno[20];//班号
};
structStudent//学生
{
charSname[20];//姓名
charSex[10];//性别
charSno[20];//学号
intAge;//年龄
structClassCInfo;//嵌套结构体,表示班级信息
}StuInfo[N];//结构体数组,用作读取和存放临时数据
4.1主函数
voidmain()
{
menu();
getchar();
}
4.2子函数菜单
voidmenu()
{
intchose;
intright;
do
{
printf("\n\t\t\t\t学生证管理系统\n");
printf("*******************************************************************************\n");
printf("\t\t\t\t1.添加学生信息");
printf("\n\t\t\t\t2.修改学生信息");
printf("\n\t\t\t\t3.全部学生信息");
printf("\n\t\t\t\t4.查询学生信息");
printf("\n\t\t\t\t5.统计学生信息");
printf("\n\t\t\t\t6.删除学生信息");
printf("\n\t\t\t\t7.退出系统\n");
printf("*******************************************************************************");printf("请输入数字选择:
");
scanf("%d",&chose);
if(chose<1||chose>8)
{
right=1;
printf("输入错误,请重新输入!
\n");
getchar();
}
elseright=0;
}while(right==1);
switch(chose)
{
case1:
add();break;//子函数添加
case2:
modify();break;//子函数修改
case3:
browse();break;//子函数浏览
case4:
quiry();break;//子函数查询
case5:
stastic();break;//子函数统计
case6:
Delete();break;//子函数删除
case7:
exit(0);//退出
}
}
4.3子函数添加
首先要判断文件StuInfo.txt是否存在,如果存在就以读写(r+)的方式打开,如果不存在,就以写(w)的方式创建文件StuInfo.txt。
输入格式要求:
性别为男或女,学号为11位且不能重复,年龄在0-100之间,班级号为6位,程序提供了完善的验证机制,输入错误时将提示重新输入直到正确为止。
此外,如果以读写的方式打开,还要判断记录数num voidadd() { intnum; inti; intage; charsno[20]; charsex[20]; charcno[20]; intright; FILE*fp; if((fp=fopen("StuInfo.txt","r+"))==NULL) { if((fp=fopen("StuInfo.txt","w"))==NULL) { printf("\n文件不存在且创建失败,返回! \n"); menu(); } printf("\n请按照提示输入学生信息: \n\n"); printf("姓名: "); scanf("%s",&StuInfo[0].Sname); do { printf("\n性别(男或女): "); scanf("%s",sex); if((strcmp(sex,"男")! =0)&&(strcmp(sex,"女")! =0)) { printf("输入错误,请输入男或女! \n"); right=1; getchar(); } elseright=0; }while(right==1); strcpy(StuInfo[0].Sex,sex); do { printf("\n学号(11位): "); scanf("%s",sno); if(strlen(sno)! =11) { printf("输入错误,学号长度应为11位数! \n"); right=1; getchar(); } elseright=0; }while(right==1); strcpy(StuInfo[0].Sno,sno); do { printf("\n年龄: "); scanf("%d",&age); if(age<=0||age>100) { printf("年龄应在0-100之间,请重新输入年龄! \n"); right=1; getchar(); } elseright=0; }while(right==1); StuInfo[0].Age=age; do { printf("\n班号(6位): "); scanf("%s",cno); if(strlen(cno)! =6) { printf("输入错误,班号长度应为6位数! \n"); right=1; getchar(); } elseright=0; }while(right==1); strcpy(StuInfo[0].CInfo.Cno,cno); printf("\n班名: "); scanf("%s",&StuInfo[0].CInfo.Cname); fprintf(fp,"\n%s\t%s\t%s\t%d\t%s\t%s",StuInfo[0].Sname,StuInfo[0].Sex,StuInfo[0].Sno,StuInfo[0].Age,StuInfo[0].CInfo.Cno,StuInfo[0].CInfo.Cname); fclose(fp); printf("\n保存成功! \n"); printf("\n请按enter键返回主菜单! \n"); getchar(); getchar(); menu(); }//以上的输入是以写的方式输入,下面是以读写的方式输入数据 for(i=0;! feof(fp);i++) { fscanf(fp,"%s%s%s%d%s%s",&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i].Age,&StuInfo[i].CInfo.Cno,&StuInfo[i].CInfo.Cname); } num=i;//记录数 if(num==N) { printf("\n保存记录数超出结构体数组数的大小,请先修改N的值! \n"); printf("\n请按enter键返回主菜单! \n"); getchar(); getchar(); menu(); } printf("\n请按照提示输入学生信息: \n\n"); printf("姓名: "); scanf("%s",&StuInfo[num].Sname); do { printf("\n性别(男或女): "); scanf("%s",sex); if((strcmp(sex,"男")! =0)&&(strcmp(sex,"女")! =0)) { printf("输入错误,请输入男或女! \n"); right=1; getchar(); } elseright=0; }while(right==1); strcpy(StuInfo[num].Sex,sex); do { printf("\n学号(11位): "); scanf("%s",sno); if(strlen(sno)! =11) { printf("输入错误,学号长度应为11位数! \n"); right=1; getchar(); } elseright=0; for(i=0;i { if(strcmp(sno,StuInfo[i].Sno)==0) { printf("该学号已经存在,请重新输入! \n"); right=1; getchar(); } } }while(right==1); strcpy(StuInfo[num].Sno,sno); do { printf("\n年龄: "); scanf("%d",&age); if(age<=0||age>100) { printf("年龄应在0-100之间,请重新输入年龄! \n"); right=1; getchar(); } elseright=0; }while(right==1); StuInfo[num].Age=age; do { printf("\n班号(6位): "); scanf("%s",cno); if(strlen(cno)! =6) { printf("输入错误,班号长度应为6位数! \n"); right=1; getchar(); } elseright=0; }while(right==1); strcpy(StuInfo[num].CInfo.Cno,cno); printf("\n班名: "); scanf("%s",&StuInfo[num].CInfo.Cname); //把该记录写到文件末尾 fprintf(fp,"\n%s\t%s\t%s\t%d\t%s\t%s",StuInfo[num].Sname,StuInfo[num].Sex,StuInfo[num].Sno,StuInfo[num].Age,StuInfo[num].CInfo.Cno,StuInfo[num].CInfo.Cname); fclose(fp); printf("\n保存成功! \n"); printf("\n请按enter键返回主菜单! \n"); getchar(); getchar(); menu(); } 4.4子函数修改 voidmodify() { intnum; inti; intright; intage; charsex[20]; charcno[20]; charsno[20]; intfound=-1; charStuNO[20]; FILE*fpr,*fpw; if((fpr=fopen("StuInfo.txt","r"))==NULL) { printf("文件打不开! \n"); menu(); } for(i=0;! feof(fpr);i++)/ { fscanf(fpr,"%s%s%s%d%s%s",&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i].Age,&StuInfo[i].CInfo.Cno,&StuInfo[i].CInfo.Cname); } num=i; fclose(fpr); printf("\n请输入学号选择要修改的记录: "); scanf("%s",StuNO); for(i=0;i { if(strcmp(StuNO,StuInfo[i].Sno)==0) { found=i; printf("\n你要修改的学生信息为: \n\n"); printf("姓名性别学号年龄班号班名\n"); printf("%s\t%s\t%s\t%d\t%s\t%s\n",StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i].Age,StuInfo[i].CInfo.Cno,StuInfo[i].CInfo.Cname); printf("\n请按照提示输入学生的新信息: \n"); printf("姓名: "); scanf("%s",&StuInfo[found].Sname); do { printf("\n性别(男或女): "); scanf("%s",sex); if((strcmp(sex,"男")! =0)&&(strcmp(sex,"女")! =0)) { printf("输入错误,请输入男或女! \n"); right=1; getchar(); } elseright=0; }while(right==1); strcpy(StuInfo[found].Sex,sex); do { printf("\n学号(11位): "); scanf("%s",sno); if(strlen(sno)! =11) { printf("输入错误,学号长度应为11位数! \n"); right=1; getchar(); } elseright=0; for(i=0;i { if((i! =found)&&(strcmp(sno,StuInfo[i].Sno)==0)) { printf("该学号已经存在,请重新输入! \n"); right=1; getchar(); } } }while(right==1); strcpy(StuInfo[found].Sno,sno); do { printf("\n年龄: "); scanf("%d",&age); if(age<=0||age>100) { printf("年龄应在0-100之间,请重新输入年龄! \n"); right=1; getchar(); } elseright=0; }while(right==1); StuInfo[found].Age=age; do { printf("\n班号(6位): "); scanf("%s",cno); if(strlen(cno)! =6) { printf("输入错误,班号长度应为6位数! \n"); right=1; getchar(); } elseright=0; }while(right==1); strcpy(StuInfo[found].CInfo.Cno,cno); printf("\n班名: "); scanf("%s",&StuInfo[found].CInfo.Cname); if((fpw=fopen("StuInfo.txt","w"))==NULL) { printf("文件打不开,保存失败! \n"); menu(); } for(i=0;i { fprintf(fpw,"\n%s\t%s\t%s\t%d\t%s\t%s",StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i].Age,StuInfo[i].CInfo.Cno,StuInfo[i].CInfo.Cname); } fclose(fpw); printf("\n修改成功! \n"); printf("\n请按enter键返回主菜单! \n"); getchar(); getchar(); menu(); } } if(found<0) { printf("\n没有找到该学号的记录: \n"); printf("\n请按enter键返回主菜单! \n"); getchar(); getchar(); menu(); } } 4.5子函数浏览 voidbrowse() { intnum; inti; FILE*fp; if((fp=fopen("StuInfo.txt","r"))==NULL) { printf("文件打不开! \n"); menu(); } for(i=0;! feof(fp);i++) { fscanf(fp,"%s%s%s%d%s%s",&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i].Age,&StuInfo[i].CInfo.Cno,&StuInfo[i].CInfo.Cname); } fclose(fp); num=i; printf("\n已添加%d个学生信息\n\n",num); printf("姓名性别学号年龄班号班名\n"); for(i=0;i { printf("%s\t%s\t%s\t%d\t%s%s\n",StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i].Age,StuInfo[i].CInfo.Cno,StuInfo[i].CInfo.Cname); } printf("\n请按enter键返回主菜单! \n"); getchar(); getchar(); menu(); } 4.6子函数查询 voidquiry() { intchose; intright; do { printf("\n1-按学号查询\t2-按姓名 查询\t3-某班学生信息\t4-返回\n"); printf("\n请输入数字选择: "); scanf("%d",&chose); if(chose<1||chose>4) { right=1; getchar(); } elseright=0; }while(right==1); switch(chose) { case1: bySno();break; case2: bySname();break; case3: byCno();break; case4: menu(); } } 4.6.1根据学号查找某学生的学生证信息: voidbySno() { intfound=-1; intnum; inti; charno[20]; FILE*fp; if((fp=fopen("StuInfo.txt","r"))==NULL) { printf("文件打不开! \n"); menu(); } for(i=0;! feof(fp);i++) { fscanf(fp,"%s%s%s%d%s%s",&StuInfo[i].Sname, &StuInfo[i].Sex,&StuInfo[i].Sno,&StuInf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生证 管理 系统 语言 课程设计