学籍信息记录薄
31页1、程序设计报告HUNAN UNIVERSITY程序设计训练报 告学生姓名 易伟浪 殷婷婷 学生学号 20110704115 20110704106 专业班级 测控技术与仪器一班 指导老师 洪跃山 2012 年 7 月4 日一 需求分析随着计算机技术的日益发达,计算机软件功能已涉入生活的诸多方面。其中对学生籍贯信息的管理就是其中的一个小小的方面。利用计算机软件来管理学生籍贯信息能够克服传统的文档管理的不足。通过计算机实现学生籍贯信息管理薄具有存储信息量大,方便查询,修改,添加,删除,浏览等传统纸质文档不具备的良好功能。二 程序功能说明 1.功能分析说明图:录入学生籍贯信息查询学生籍贯信息浏览学生籍贯信息修改学生籍贯信息删除学生籍贯信息按学号查询主菜单按姓名查询学生籍贯信息记录薄2.各项功能说明:a.主菜单:用于显示系统主模块信息,供用户选择。b.录入学生籍贯信息:用来将员工信息输入到计算机中,并保存到数据文件中,此模块还具有添加学生籍贯信息的功能。c.查询学生籍贯信息:可按学号和姓名查找学生籍贯信息。d.浏览学生籍贯信息:将系统中已有学生籍贯信息全部列出。e.修改学生籍贯信息:根据学号进行
2、查询,修改指定字段内容。f.删除学生籍贯信息:删除指定学号的学生籍贯信息。 以上模块可由用户选择执行,另外,当用户运行此程序时,必须判断学生信息是否曾经保存过。若学生籍贯信息事先未保存,必须先进行学生籍贯信息的录入。三 软件基本操作 先打开源程序,编译,运行。然后根据提示输入相关内容。具体如下:1. 若学生籍贯信息已存在(即data.dat文件被创建,且不为空),输入Y或y,进入主界面。若学生籍贯信息已存在则按其他键,进入主界面。如图所示(主界面):2. 输入要选择的项目(选择1),进入界面(按照提示进行输入):a. 若学籍信息已保存过,则输入的信息添加到文件中。b. 若学学籍信息未保存过,输入的信息组成链表首次存到文件中。c. 若不再继续添加,则输入其他键,此时程序会将调用print()函数将文件中信息显示出来。再输入除n或N的其他键,保存刚输入的内容。d. 最后保存完毕时,输入任意键返回主界面。e. 若输入相同的学号,程序会报错,输入时即使不按学号顺序输入,该程序最终也会按学号从小到大排序。3. 输入2时:程序会调用print()函数将文件中保存信息读出来。再按任意键返回主界面。如
3、图所示:4. 输入3时,则进入查询界面。如图: a. 若选择1,则按学号查询。输入要查询的学号。如图: b. 若选择2,则按姓名查询。输入要查询的姓名。如图: 查询完毕时,按任意键返回主界面。5. 输入4时,进入删除操作,输入要删除的学号,则会删除对应的信息。如图:按任意键返回主界面。重新浏览籍贯信息。如图:28号钟汉良已被删除。6. 输入5时,进行学籍信息修改,输入要修改的原始学号,进入修改界面。如图:a. 输入1,修改学号。如图操作: b. 输入2,修改姓名。如图操作: c. 输入3,修改性别。如图操作: d. 输入4,修改地址。如图操作: 输入y或Y,可继续修改。7.输入6,退出系统。四软件设计详细内容1.采用的主要数据类型和目录: #include#include#include#include#includestruct studentint num; /学号 char name20;char sex5;char address20;struct student *next;2.main()函数: main()函数中,主要是判断文件是否保存过。并调用menu()函数。其代码为
4、:void main()char flag0;struct student *p1;printf(曾几何时,学籍信息是否保存过?“是”输入Y或y,“否”按任意键n);fflush(stdin);scanf(%c,&flag0);if(flag0=Y|flag0=y)p1=readdata();elsep1=create_list();menu(p1);getch();该函数通过if语句输入不同的头指针,若文件以保存过,则调用readdata()函数从文件中建立链表,返回头指针。若文件未保存过,这通过调用create_list()返回头指针,该指针指向的内容未初始化,其内容保存从第二个节点开始。3.create_list()函数 用来创建链表的头指针,不过该指针指向的节点无学生籍贯信息记录,仅用来记录链表的头节点位置。其源代码为:struct student *create_list()struct student* head;head=(struct student*)malloc(sizeof(struct student);head-next=NULL;return head;4.
5、menu()函数: 该函数通过参数传入头指针,主要是界面的显示以及多个函数的调用,其流程图如下:1234输入选项6籍贯信息浏览籍贯信息查询籍贯信息录入输入错误籍贯信息修改籍贯信息删除退出系统开始结束5主界面其他 其源代码为: void menu(struct student *head)int choice;char flag2=Y;for(;)printf( _n);printf( | | | |n);printf( | | 学生籍贯信息记录薄 | |n);printf( | |_| |n);printf( | |n);printf( | 1.学生籍贯信息录入 |n);printf( | |n);printf( | 2.学生籍贯信息浏览 |n);printf( | |n);printf( | 3.学生籍贯信息查询 |n);printf( | |n);printf( | 4.学生籍贯信息删除 |n);printf( | |n);printf( | 5.学生籍贯信息修改 |n);printf( | |n);printf( | 6.退出系统 |n);printf( |_|n); print
6、f(n美女帅哥们,请输入要选择的项目n); scanf(%d,&choice); switch(choice) case 1:input(head);printf(亲按任意键返回主界面n); getch();break;case 2:print(head);printf(亲按任意键返回主界面n);getch();break;case 3:search(head);printf(亲按任意键返回主界面n);getch();break;case 4:deletelist(head);printf(亲按任意键返回主界面n);getch();break;case 5:while(flag2=Y|flag2=y)change(head);printf(是否继续修改“是”(Y或y)n);fflush(stdin);scanf(%c,&flag2);printf(亲按任意键返回主界面n);getch();break;case 6:exit(0);default:printf(输入错误,请重新输入n);5.savadata()函数: 该函数用来保存录入,修改,添加,删除后的信息。将信息保存到data.d
7、at文件中,用户再次运行此程序时,就不必再次输入信息。具体代码如下:void savadata(struct student *head)struct student *p=head-next;FILE *f;if(f=fopen(data.dat,wb)=NULL)printf(打开文件出错!);return;while(p)fwrite(p,sizeof(struct student),1,f);p=p-next;fclose(f);该函数中,以只写方式读写,写入的时候是按数据项写入,即:一次写入一个struct student类型的数据。将链表写入文件中时,一次写入一个节点。先让指针指在第二个节点(第一个节点实际无任何内容),写入第二个节点,然后指针继续往后移,直到指针指向空为止。6.readdata()函数: 该函数用来将data.dat(信息事先以录入)文件中的数据读出来,返回头指针,供后续模块进行浏览,查询,编辑。具体代码如下: struct student *readdata()struct student *head,*p,*s;FILE *fp;head=create
8、_list();p=head;while(p-next!=NULL)p=p-next;if(fp=fopen(data.dat,rb)=NULL)printf(打开文件出错!n);return NULL;while(!feof(fp)s=(struct student*)malloc(sizeof(struct student);fread(s,sizeof(struct student),1,fp);if(feof(fp)break;if(s=NULL)printf(错误n);break;p-next=s;p=s;s-next=NULL;fclose(fp);return head;该函数中先以调用create_list()函数创建无有用信息的struct student类型的数据,并返回指向它的指针,作为链表的头指针。7. input()函数:该函数具有首次录入,再次添加的功能,并调用savadata()函数将信息保存到data.dat文件中。再次添加时调用readdata()函数将文件中的信息读出来。结束接入第一个含信息节点向链表中添加节点(其链表中的节点顺序按照学生学号从小到大
《学籍信息记录薄》由会员kms****20分享,可在线阅读,更多相关《学籍信息记录薄》请在金锄头文库上搜索。
高三文科数学(长方体模型1)
高一生物:必修2 1.1孟德尔的豌豆杂交实验
遗传学第1章 绪言
高等代数课件--第三章 线性方程组§3.3 线性相关性
高二数学(1.1-1空间几何体及棱柱、棱锥的结构特征)
递回关系与演算法分析
过程是vb的基本组成单位
营养器官的生长
细菌真菌在生物圈中的作用课件(济南版七年级上)
自动化-ab变频器的原理及其应用
网络操作系统-第16章 windows server 2003安全管理
网络安全+第4讲+防火墙
素材-接触网施工技术-双线隧道吊柱安装
系统结构第5章
计算机体系结构实验2008
计算机系统安全
高考词汇总常用词v
软件测试tmap
电脑文件被删除怎么恢复图文教程
电子教案--第9章
2023-08-14 2页
2022-10-22 6页
2022-09-03 2页
2022-10-02 6页
2022-10-05 4页
2023-11-16 8页
2022-11-28 3页
2022-10-11 3页
2022-12-20 4页
2022-07-15 3页