1、灵活使用链表来储存学生信息。 8. 掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进一步使用字符串二、实验内容 学生证的管理程序。该程序应该具有下列功能:(1) 录入某位学生的学生证信息;(2) 给定学号,显示某位学生的学生证信息;(3) 给定某个班级的班号,显示该班所有学生的学生证信息;(4) 给定某位学生的学号,修改该学生的学生证信息;(5) 给定某位学生的学号,删除该学生的学生证信息;(6) 提供一些统计各类信息的功能。三、需求分析系统功能:1. 显示全部的学生证信息;2. 给定某位学生的学号或姓名,查询或修改该学生的学生证信息;3. 给定某位学生的学号或姓名,删除该学
2、生的学生证信息;4. 增加学生信息;5. 提供一些统计各类信息的功能。例如统计学生数,班级数,每个班级的学生数;6. 能够对学号和班级进行升序和降序排序;7. 用文件的形式将录入的数据进行存储,并从其中读取数据。性能描述:各种功能都可以满足;程序相对较小,因而运行时反应比较迅速,不存在响应不及时地问题。四、概要设计1.方案设计 2.数据结构说明1、建立一个小型的学生证管理系统.可对学生的信息进行管理.2、学生信息应包括学生的学号,姓名,性别,班级的信息.3、数据必须以文件形式存放.分析:首先进入信息的录入和储存,录入学生基本信息,然后储存在文件中.其次做更新操作(插入,删除,修改).然后作查询
3、,排序等操作。3.模块功能说明luru()用于储存所输入的学生信息到指定文件chaxunx()用于按学号查找某个学生信息并打印该生信息chaxunb() 用于按班级查找某个学生信息并打印该生信息xiugai()用于修改某个学号的学生信息shanchu()用于按学号删除某个学生的信息tongji()用于统计学生的信息4.程序可以满足功能 1.各模块间通过菜单切换和调用2.主函数通过调用菜单函数实现对各功能模块的调用,各功能模块间根据需要可相互调用。3.程序能够保证各模块功能的独立和数据共享。4.相近功能以级联菜单的形式集成。五、详细设计主函数 主函数较多、较复杂,已经和主菜单函数合并,主菜单函数
4、里还包括了各自的二级菜单,并已经开始了对各个函数的调用。为了程序显示的清晰可读,应先清屏之后调用菜单函数。程序void main() int n; system(cls); /清屏 printf(欢迎使用学生证管理系统n1、录入学生信息n2、查询学生信息n3、查询班级信息n4、修改学生信息n5、删除学生信息n6、统计学生信息n7、退出 n 请输入功能代码:1-5 scanf(%d,&n); switch(n) case 1:luru();break; case 2:chaxunx(); case 3:chaxunb(); case 4:xiugai(); case 5:shanchu(); c
5、ase 6:tongji(); case 7:exit(1); default:printf(errorn 输入模块 用于输入学生的相关信息包括姓名、性别、学号、班级、单位,并将信息存储到stu_kard.txt文件中。void luru() int i=0; FILE *fp;请输入学生信息(以空格隔开)n姓名 性别 学号 班号 单位n%s%s%d%d%sstudi.name,&studi.sex,&studi.xuehao,&studi.banhao,&studi.danwei); fp=fopen(stu_kard.txt,a/追加方式打开文本文件 if(fp=NULL) /打开失败 p
6、rintf(cannot open filen return; else /打开成功 if(fwrite(&studi,sizeof(struct student),1,fp)!=1)file write errorn fclose(fp); /关闭文件 return;按学号查询模块 用于按学号查询学生信息。输入所要查询的学生学号,程序读取stu_kard.txt文件中的信息查找出相关的学生信息并将其显示出来。void chaxunx() /查询学生信息函数 char it; int xuehao; /以下是查询某个学生的个人信息是要查询学生个人信息吗? yes-y no-n 请输入:%sit
7、); if(it=y) /输入 y 表示要查询学生的个人信息请输入学号:xuehao);r/只读方式打开文本文件 while(!feof(fp) /循环从文件总读取记录,与输入学号相比, fread(&studi,sizeof(struct student),1,fp); if(xuehao=studi.xuehao)查询信息如下:姓名 性别 学号 班号 单位n%17s %5s %6d %6d %8sn,studi.name,studi.sex,studi.xuehao,studi.banhao,studi.danwei); break; /查询到该学生信息后退出循环 if(studi.xue
8、hao!=xuehao)查无此人! else if(it=n) printf(取消查询n else printf(输入错误!n按班级查询模块 用于按班级查询学生信息。输入所要查询的班号,程序读取stu_kard.txt文件中的信息查找出对应班级下相关的学生信息并将其显示出来。void chaxunb() /查询班级信息函数 int i; int banhao; i=0;是要查询学生班级信息吗?) /输入 y 表示要查询学生的班级信息请输入班号:banhao); for(i=0;!feof(fp);i+)/循环从文件总读取记录,与studi.banji相比, if(banhao=studi.ba
9、nhao) /如果banji号相同,显示该条记录输入任意字符结束/void xiugai() /修改函数 int xuehao,i;请输入需要修改学生信息的学号:r+a请输入新的学生信息(以空格隔开)n姓名 性别 学号 班号 单位n fseek(fp,sizeof(struct student),1); fwrite(& 删除模块 用于删除学生的信息。输入想要删除的学生信息的学号,程序读取stu_kard.txt文件中的信息查找出相应的学生并将其信息删除。void shanchu() /删除函数 int j; j=0;请输入需要删除学生信息的学号: if(xuehao=studi.xuehao
10、)/查询到该学生信息后删除该学生信息 studi.xuehao=0; studi.banhao=0; strcpy(studi.danwei, strcpy(studi.name, strcpy(studi.sex, fwrite(&删除成功! break;修改模块 用于修改学生信息。输入想要修改的学生学号,程序会读取stu_kard.txt文件中的信息查找出相应的学生显示出来并且可以重新修改其学生信息。程序 统计模块 用于统计所输入的学生信息,统计的信息包括学生总人数,男生、女生人数,并且可以选择是否显示当前所存储的所有学生的信息。void tongji() char chr; int re
11、n,nan,nv,i; ren=0; nan=nv=0;n -统计学生信息-n是否统计当前录入的学生人数?(yes-y no-n)chr); if(chr=)rbi+) if(studi.xuehao!=0) ren+; if(strcmp(studi.sex,男)=0) nan+; else if(strcmp(studi.sex,女 nv+; fclose(fp);当前录入的学生总人数是:%6dn,ren); 其中男生人数:%6d ,nan); 女生人数:,nv); elseprintf(取消操作n /nnn是否显示所有录入学生信息?六、调试情况,设计技巧及体会1、运行该程序,其各个模块的
12、界面图如下:(1)主菜单函数:(2)输入模块:(3)查询学生信息模块:(4)查询班级信息模块:(5)修改学生信息模块:(6)删除模块:(7)统计模块:2、对自己设计进行评价我觉得我的程序比较成功,各个模块在运行中都很正常,基本满足了实习的基本要求,各个模块构成一个功能相对完整的的系统。3、在设计过程中的感受对这次实习的最大感受,便是做一个程序应该很细心,因为在编程过程中我很多地方的错误都是不细心,不认真而造成的,但在完成整个程序后,眼看各个功能模块完美的运行成功,又有一种很强的成就感。7、源程序清单#includestdlib.hstdio.htime.hconio.hstring.h#def
13、ine SIZE 5struct student char name10; char sex4; int xuehao; char danwei10; studSIZE;typedef struct char name10;stu;void main();void luru();void chaxunx();void chaxunb();void xiugai();void shanchu();void tongji(); 欢迎使用学生证管理系统 n*1、录入学生信息*n*2、查询学生信息*n*3、查询班级信息*n*4、修改学生信息*n*5、删除学生信息*n*6、统计学生信息*n*7、退出 *n/
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1