1、 5.7.2 女生信息21 5.7.3 全体学生信息 23 5.8 删除模块 23六、上机操作 26 6.1 系统说明 266.2 系统测试 26 七、总结 32八、源代码 32一、课程设计目的通过实践,学会编制结构清晰、风格良好、数据结构适当的C语言程序,加深对C语言基础知识的理解和掌握,进一步巩固C语言编程实践能力,锻炼思维逻辑和解决综合性实际问题的能力。二、实习内容及要求1、用C语言编写一个学生证管理系统,该系统具有以下功能: (1)录入某位学生的学生证信息;(2)给定学号,显示某位学生的学生证信息;(3)给定某个班级的班号,显示该班所有学生的学生证信息;(4)给定某位学生的学号,修改该
2、学生的学生证信息;(5)给定某位学生的学号,删除该学生的学生证信息;(6)提供一些统计各类信息的功能;(7)提供浏览所有学生的学生证信息的功能。2、输入要求应用程序运行后,在屏幕上显示一个菜单;用户可以根据要求,选定相应的操作项目;进入某个操作后,根据应用程序的提示,从键盘输入相应的信息。3、输出要求(1)应用程序运行后,要在屏幕上显示一个菜单;(2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。三、需求分析根据题目要求,学生信息要从文本文件中存取,所以本程序应该提供读写文件,显示、统计、查询、修改记录,保存文件等操作,此外,还应该提供键盘式选择菜单实现功
3、能。四、总体设计根据需求分析,可以把这个系统的设计分为添加、修改、查询、浏览、统计、删除六大模块,其中查询模块可以分为三个子模块,统计模块可以分为三个子模块,子模块下面还有子函数;系统功能模块图如下所示:五、详细设计5.0 头文件及结构体#includestdlib.hstring.h#define N 100struct Class /班级 char Cname20; /班名 char Cno20; /班号;struct Student /学生 char Sname20; /姓名 char Sex10; /性别 char Sno20; /学号 int Age; /年龄 struct Clas
4、s CInfo; /嵌套结构体,表示班级信息StuInfoN; /结构体数组,用作读取和存放临时数据5.1 主函数void main() menu(); /菜单 getchar();5.2 菜单void menu() int chose; int right; do printf(ntttt学生证管理系统n); 菜单:t1-添加t2-修改t3-浏览全部t4-查询t5-统计t6-删除t7-退出n请输入数字选择: scanf(%d,&chose); if(chose8) right=1;输入错误,请重新输入!n else right=0; while(right=1); switch(chose)
5、 case 1:add(); break; /添加模块 case 2:modify(); /修改模块 case 3:browse(); /浏览模块 case 4:quiry(); break; /查询模块 case 5:stastic(); /统计模块 case 6:Delete(); /删除模块 case 7:exit(0); /退出 5.3 添加模块首先要判断文件StuInfo.txt是否存在,如果存在就以读写(r+)的方式打开,如果不存在,就以写(w)的方式创建文件StuInfo.txt。输入格式要求:性别为男或女,学号为11位且不能重复,年龄在0-100之间,班级号为6位,程序提供了完
6、善的验证机制,输入错误时将提示重新输入直到正确为止。此外,如果以读写的方式打开,还要判断记录数numN是否成立,因为结构体数组的大小为N,当num=N时,表示已满,不能再存储数据,需要修改N的值。void add() int num; /表示记录数 int i; int age; /临时变量,用于验证输入的性别是否满足条件 char sno20; /临时变量,用于验证输入的学号是否满足条件 char sex20; char cno20; /临时变量,用于验证输入的班号是否满足条件 FILE*fp; if(fp=fopen(StuInfo.txt,r+)=NULL) /以读写方式打开w)=NUL
7、L) /文件不存在就创建文件n文件不存在且创建失败,返回!n请按照提示输入学生信息:nn姓名:%sStuInfo0.Sname);n性别(男或女):,sex); if(strcmp(sex,男)!=0)&(strcmp(sex,女=0) 输入错误,请输入男或女! right=1; getchar(); strcpy(StuInfo0.Sex,sex);n学号(11位):,sno); if(strlen(sno)!=11)输入错误,学号长度应为11位数! strcpy(StuInfo0.Sno,sno);n年龄:age); if(age100)年龄应在0-100之间,请重新输入年龄! StuIn
8、fo0.Age=age;n班号(6位):,cno); if(strlen(cno)!=6)输入错误,班号长度应为6位数! strcpy(StuInfo0.CInfo.Cno,cno);n班名:StuInfo0.CInfo.Cname);fprintf(fp,n%st%st%st%dt%st%s,StuInfo0.Sname,StuInfo0.Sex,StuInfo0.Sno,StuInfo0.Age,StuInfo0.CInfo.Cno,StuInfo0.CInfo.Cname); fclose(fp);n保存成功!n请按enter键返回主菜单! /以上的输入是以写的方式输入,下面是以读写的方式输入数据 for(i=0;!feof(fp);i+) fscanf(fp,%s%s%s%d%s%sStuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.Cno,&StuInfoi.CInfo.Cname); num=i; /记录数 if(num=N)n保存记录数超出结构体数组数的大小,请先修改N的值! getchar();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1