c语言课程设计报告---学生信息管理系统.pdf

上传人:索**** 文档编号:83205340 上传时间:2023-03-28 格式:PDF 页数:15 大小:38.14KB
返回 下载 相关 举报
c语言课程设计报告---学生信息管理系统.pdf_第1页
第1页 / 共15页
c语言课程设计报告---学生信息管理系统.pdf_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《c语言课程设计报告---学生信息管理系统.pdf》由会员分享,可在线阅读,更多相关《c语言课程设计报告---学生信息管理系统.pdf(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、题目:学生信息管理系统一、需求分析任务要求:自学 C语言中有关链表及外部文件的内容,设计学生信息管理系统。具体要求如下:建立学生信息,信息至少包括名字、性别、年龄、学号、系别、家庭信息等内容;能够提供添加、删除和修改学生信息等功能;能将通讯录保存在文件中;能够按指定方式输出学生信息。系统功能需求分析:1、为存储学生信息,需定义一个结构体类型,成员名字、性别、年龄、学号、系别、家庭信息等,并建立链表,定义该结构体类型的指针,用于指向各结点;2、分别建立具有添加、删除、修改、查询等功能的子函数,完成相应功能,对程序实现模块化。这其中要用到对链表的删除、插入等知识。删除时用一结构体指针指向链表的第一

2、个结点,检查该节点的值是否等于输入的要删除的学号,若相等就删除,不相等则后移指针,直至表尾。插入时也要先找到相应结点,再添加。3、为实现存储功能,需用到文件的相关函数,打开文件,将添加、修改或删除的信息存入磁盘中。4、为以表格的形式输出文件,宏定义格式化输出语句,指定输出学生信息。2 二、概要设计系统总体设计框架:对程序进行模块化,建立添加、修改、删除、查找和显示功能的子函数,各子函数中运用链表存储数据。从主函数开始执行,调用各个子函数,并运用文件相关知识将信息存入磁盘中。系统功能模块图:主菜单学生形象查询学生信息添加学生信息删除学生信息添加是否保存关闭文件3 三、详细设计主要功能模块的算法设

3、计思路如下:1、查询通讯录信息(void chakan())(1)为开辟一个新单元(2)输入查询关键字:(3)读取保存的文件数据输入ASCLL字符:(4)在链表中寻找相应结点;(5)调用输出函数,输出结点信息。2、添加信息函数(void add())(1)定义指向结构体变量的指针;(2)移动指针,找到插入结点;(3)在要插入的结点输入信息;(4)调用保存函数,打开文件,保存输入信息。3、删除信息函数(void del())(1)定义指向结构体变量的指针;(2)用指针检验链表中是否有记录,若没记录,返回主函数;(3)根据要修改的编号查找要删除的结点;(4)修改链表,删除对应结点。4、修改信息函数

4、(void xiugai())(1)定义指向结构体变量的指针;(2)读取保存的文件数据输入ASCLL字符:(3)用指针检验链表中是否有记录,若没记录,返回主函数;(4)根据要修改的编号查找对应结点;(5)修改信息;(6)打开文件,保存修改记录。5、保存信息函数(baocun())(1)定义指向结构体变量的指针;(2)用文件指针指向要读写的磁盘文件名,若没有则新建此文件名:(3)用指针检验链表中是否有记录,若没记录,返回主函数:(4)打开文件,保存记录:6、屏幕操作函数(void stubent187())(1)以一定格式输出所想要的图形:4 四、主要源程序代码定义变量:(对整个程序定义全局变量

5、)#include#include#define STUDENT ID /*所有 STUDENT 都用 ID 来代替*/typedef struct node /*定义结构体*/char ming50;/*名字*/char xing50;/*性别*/char nian50;/*年龄*/int xuehao;/*学号*/char xibie50;/*专业*/char sushe50;/*宿舍号*/char jia50;/*家庭地址*/struct node*next;ID;/*学生信息(变量名)*/ID*head=NULL;/*定义一个头指针*/FILE*zhi;/*定义一个文件指针*/主菜单界

6、面:(进入屏幕界面的形式)void stubent187()/*屏幕格式函数*/printf(*n);printf(*学生信息管理系统 *n);printf(*n);printf(*请选择:1:查看;2:添加;3:删除;*n);printf(*4:修改;0:退出系统 *n);printf(*n);printf(*n);printf(输入 04 数字ming,&t-xing,&t-nian,&t-xuehao,&t-xibie,&t-sushe,&t-jia);/*读取保存的文件数据输入 ASCLL字符:*/printf(%10s%10s%10s%10d%10s%10s%10sn,t-ming,

7、t-xing,t-nian,t-xuehao,t-xibie,t-sushe,t-jia);/*以这形式输出各个学生信息*/t-next=(ID*)malloc(sizeof(ID);t=t-next;添加学生信息记录:()void add()char i;/*添加*/ID*t1,*t2;t1=t2=NULL;loop:t1=(ID*)malloc(sizeof(ID);/*为 t1 开辟一个新单元*/printf(请输入姓名:);scanf(%s,&t1-ming);/*姓名*/printf(请输入性别:);scanf(%s,&t1-xing);/*性别*/printf(请输入年龄:);sc

8、anf(%s,&(t1-nian);/*年龄*/printf(请输入学号:);scanf(%d,&(t1-xuehao);/*学号*/printf(请输入系别:);scanf(%s,&(t1-xibie);/*系别*/printf(请输入宿舍号:);scanf(%s,&(t1-sushe);/*宿舍号*/printf(请输入家庭地址:);scanf(%s,&(t1-jia);/*家庭地址*/t1-next=NULL;if(head=NULL)/*如果头结点为空*/head=t1;/*t1指向头结点*/6 t2=t1;else t2=head;while(t2-next!=NULL)t2=t2-

9、next;/*没有成立则指向下个结点*/t2-next=t1;getchar();printf(是否继续添加(Y/N):n);scanf(%s,&i);/*输入 Y/N*/if(i=y|i=Y)clrscr();goto loop;/*清屏在 循环*/else printf(是否保存此次添加(Y/N)n);scanf(%s,&i);if(i=y|i=Y)/*是否要保存*/baocun();/*调用保存*/clrscr();/*清屏*/stubent187();/*调用屏幕函数*/printf(保存成功);else if(i=n|i=N)clrscr();/*清屏*/stubent187();/

10、*调用屏幕函数*/return;删除学生信息操作:(对以存的学生信息进行删除)void del()/*删除*/ID*A,*B;/*定义指针*/char t,i;int xuehao;/*定义整型变量与字符型变量*/A=B=NULL;if(zhi=fopen(,a+)=NULL)printf(没有此信息文件 n);else loop:printf(请输入要删除的学生学号:);scanf(%d,&xuehao);while(!feof(zhi)fscanf(zhi,%10s%10s%10s%10d%10s%10s%10sn,&A-ming,&A-xing,&A-nian,&A-xuehao,&A-

11、xibie,&A-sushe,&A-jia);/*读取保存的文件数据输7 入 ASCLL字符:*/if(A!=NULL&A-xuehao!=xuehao)A=A-next;else break;if(A-xuehao=xuehao)head=A-next;free(*A);printf(成功!n);printf(是否继续删除(Y/N);scanf(%s,&i);if(i=y|i=Y)clrscr();goto loop;if(i=n|i=N)printf(是否保存此次删除(Y/N)n);scanf(%s,&i);if(i=y|i=Y)baocun();else clrscr();stubent

12、187();else printf(无法找到此编号 n);修改学生信息操作:(对保存的学生信息进行修改)void xiugai()/*修改*/ID*t1,*t2;/*定义指针*/int i;char xuehao;/*定义整型变量与字符型变量*/t1=head;if(zhi=fopen(,a+)=NULL)printf(没有此信息文件 n);loop:printf(请输入要修改的学号:);scanf(%s,&xuehao);/*输入编号*/while(!feof(zhi)fscanf(zhi,%10s%10s%10s%10d%10s%10s%10sn,&t1-ming,&t1-xing,&t1

13、-nian,&t1-xuehao,&t1-xibie,&t1-sushe,&t1-jia);*读取保存的文件数据输入 ASCLL字符:*/8 if(t1!=NULL&t1-xuehao!=xuehao)t1=t1-next;else break;if(t1-xuehao=xuehao)fprintf(zhi,%10s%10s%10s%10d%10s%10s%10sn,t1-ming,t1-xing,t1-nian,t1-xuehao,t1-xibie,t1-sushe,t1-jia);printf(输入名字:);scanf(%s,&t1-ming);/*名字*/printf(输入性别:);sc

14、anf(%s,&(t1-xing);/*性别*/printf(输入年龄:);scanf(%s,&(t1-nian);/*年龄*/printf(输入学号:);scanf(%s,&t1-xuehao);/*学号*/printf(输入 系别:);scanf(%s,&(t1-xibie);/*系 别*/printf(输入专业:);scanf(%s,&(t1-sushe);/*宿舍号 */printf(输入家庭地址:);scanf(%s,&(t1-jia);/*家庭地址*/printf(成功!n);printf(是否继续修改(Y/N);scanf(%d,&i);if(i=y|i=Y)clrscr();g

15、oto loop;if(i=n|i=N)printf(是否保存此次修改(Y/N)n);scanf(%c,&i);if(i=y|i=Y)baocun();else clrscr();/*清屏*/stubent187();/*调用屏幕函数*/else printf(没有此编号 n);return;保存添加,删除,修改学生的信息:(操作过后是否保存)baocun()/*保存*/ID*t=head;/*定义指针*/zhi=fopen(,a+);/*(读写 文本)*/9 while(t!=NULL)fprintf(zhi,%10s%10s%10s%10d%10s%10s%10sn,t-ming,t-xi

16、ng,t-nian,t-xuehao,t-xibie,t-sushe,t-jia);/*以 zhi 为文件指针保存*/t=t-next;fclose(zhi);/*关闭此文件*/printf(成功!n);return;主菜单操作:(选择所需要的操作)main()/*主函数*/int i;/*定义整形变量 i*/stubent187();/*调用屏幕函数*/while(1)scanf(%d,&i);/*输入要执行的操作*/switch(i)case 1:chakan();break;/*调用查看函数*/case 2:add();break;/*调用添加函数*/case 3:del();break

17、;/*调用删除函数*/case 4:xiugai();break;/*调用修改函数*/case 0:exit(0);/*结束*/default:printf(输 入 错 误,请 在 此 输 入n);continue;/*输入不是 04的,则返回*/源函数代码:void chakan()/*查看*/ID*t;t=head;t=(ID*)malloc(sizeof(ID);/*为 t 开辟一个新单元*/if(zhi=fopen(,rb)=NULL)printf(没有此文件 n);10 else printf(%10s%10s%10s%10s%10s%10s%10sn,ming,xing,nian,

18、xuehao,eng,sushe,jia);/*输出一个屏幕格式*/while(!feof(zhi)fscanf(zhi,%10s%10s%10s%10d%10s%10s%10sn,&t-ming,&t-xing,&t-nian,&t-xuehao,&t-xibie,&t-sushe,&t-jia);/*读取保存的文件数据输入 ASCLL字符:*/printf(%10s%10s%10s%10d%10s%10s%10sn,t-ming,t-xing,t-nian,t-xuehao,t-xibie,t-sushe,t-jia);/*以这形式输出各个学生信息*/t-next=(ID*)malloc(

19、sizeof(ID);t=t-next;void add()char i;/*添加*/ID*t1,*t2;t1=t2=NULL;loop:t1=(ID*)malloc(sizeof(ID);/*为 t1 开辟一个新单元*/printf(请输入姓名:);scanf(%s,&t1-ming);/*姓名*/printf(请输入性别:);scanf(%s,&t1-xing);/*性别*/printf(请输入年龄:);scanf(%s,&(t1-nian);/*年龄*/printf(请输入学号:);scanf(%d,&(t1-xuehao);/*学号*/printf(请输入系别:);scanf(%s,&

20、(t1-xibie);/*系别*/printf(请输入宿舍号:);scanf(%s,&(t1-sushe);/*宿舍号*/printf(请输入家庭地址:);scanf(%s,&(t1-jia);/*家庭地址*/t1-next=NULL;if(head=NULL)/*如果头结点为空*/head=t1;/*t1指向头结点*/t2=t1;else t2=head;11 while(t2-next!=NULL)t2=t2-next;/*没有成立则指向下个结点*/t2-next=t1;getchar();printf(是否继续添加(Y/N):n);scanf(%s,&i);/*输入 Y/N*/if(i=

21、y|i=Y)clrscr();goto loop;/*清屏在 循环*/else printf(是否保存此次添加(Y/N)n);scanf(%s,&i);if(i=y|i=Y)/*是否要保存*/baocun();/*调用保存*/clrscr();/*清屏*/stubent187();/*调用屏幕函数*/printf(保存成功);else if(i=n|i=N)clrscr();/*清屏*/stubent187();/*调用屏幕函数*/return;void del()/*删除*/ID*A,*B;/*定义指针*/char t,i;int xuehao;/*定义整型变量与字符型变量*/A=B=NUL

22、L;if(zhi=fopen(,a+)=NULL)printf(没有此信息文件 n);else loop:printf(请输入要删除的学生学号:);scanf(%d,&xuehao);while(!feof(zhi)fscanf(zhi,%10s%10s%10s%10d%10s%10s%10sn,&A-ming,&A-xing,&A-nian,&A-xuehao,&A-xibie,&A-sushe,&A-jia);/*读取保存的文件数据输入 ASCLL字符:*/if(A!=NULL&A-xuehao!=xuehao)A=A-next;else break;12 if(A-xuehao=xueh

23、ao)head=A-next;free(*A);printf(成功!n);printf(是否继续删除(Y/N);scanf(%s,&i);if(i=y|i=Y)clrscr();goto loop;if(i=n|i=N)printf(是否保存此次删除(Y/N)n);scanf(%s,&i);if(i=y|i=Y)baocun();else clrscr();stubent187();else printf(无法找到此编号 n);void xiugai()/*修改*/ID*t1,*t2;/*定义指针*/int i;char xuehao;/*定义整型变量与字符型变量*/t1=head;if(zh

24、i=fopen(,a+)=NULL)printf(没有此信息文件 n);loop:printf(请输入要修改的学号:);scanf(%s,&xuehao);/*输入编号*/while(!feof(zhi)fscanf(zhi,%10s%10s%10s%10d%10s%10s%10sn,&t1-ming,&t1-xing,&t1-nian,&t1-xuehao,&t1-xibie,&t1-sushe,&t1-jia);*读取保存的文件数据输入 ASCLL字符:*/if(t1!=NULL&t1-xuehao!=xuehao)t1=t1-next;else break;if(t1-xuehao=xu

25、ehao)fprintf(zhi,%10s%10s%10s%10d%10s%10s%10sn,t1-ming,t1-xing,t1-nian,t1-xuehao,t1-xibie,t1-sushe,t1-jia);printf(输入名字:);scanf(%s,&t1-ming);/*名字13*/printf(输入性别:);scanf(%s,&(t1-xing);/*性别*/printf(输入年龄:);scanf(%s,&(t1-nian);/*年龄*/printf(输入学号:);scanf(%s,&t1-xuehao);/*学号*/printf(输入 系别:);scanf(%s,&(t1-xi

26、bie);/*系 别*/printf(输入专业:);scanf(%s,&(t1-sushe);/*宿舍号 */printf(输入家庭地址:);scanf(%s,&(t1-jia);/*家庭地址*/printf(成功!n);printf(是否继续修改(Y/N);scanf(%d,&i);if(i=y|i=Y)clrscr();goto loop;if(i=n|i=N)printf(是否保存此次修改(Y/N)n);scanf(%c,&i);if(i=y|i=Y)baocun();else clrscr();/*清屏*/stubent187();/*调用屏幕函数*/else printf(没有此编号

27、 n);return;baocun()/*保存*/ID*t=head;/*定义指针*/zhi=fopen(,a+);/*(读写 文本)*/while(t!=NULL)fprintf(zhi,%10s%10s%10s%10d%10s%10s%10sn,t-ming,t-xing,t-nian,t-xuehao,t-xibie,t-sushe,t-jia);/*以 zhi 为文件指针保存*/t=t-next;fclose(zhi);/*关闭此文件*/printf(成功!n);return;14 main()/*主函数*/int i;/*定义整形变量 i*/stubent187();/*调用屏幕函数

28、*/while(1)scanf(%d,&i);/*输入要执行的操作*/switch(i)case 1:chakan();break;/*调用查看函数*/case 2:add();break;/*调用添加函数*/case 3:del();break;/*调用删除函数*/case 4:xiugai();break;/*调用修改函数*/case 0:exit(0);/*结束*/default:printf(输 入 错 误,请 在 此 输 入n);continue;/*输入不是 04的,则返回*/5、归纳总结实训中遇到的问题及解决方法:在这次的实训中,主要遇到的问题是在修改第一个操作查看时,出现了一些

29、乱码,15 与规格不是所想实现的要求。后经老师指导解决了此问题,就是 fprintf存文件数据后,需用 fscanf来调用输出文件数据。设计中尚存的不足之处:关于这次的程序,有许多不足,比如在查询的方式中,只有单一的一个查询方式;程序界面不够美观大方;删除与修改的功能,没有实现我所想编程的操作;感想和心得体会:通过这次课程设计,我对 C语言有了更深刻的了解,自身不仅对增强了程序的编写能力,更巩固了专业知识,对程序的模块化观念也又模糊逐渐变的清晰了。虽然在程序的运行与调试过程中出现了很多错误,但在通过反复地复习课本上的相关知识和在老师,同学的指导下,不停地修改与调试,我终于完成了这段程序。虽然程序没有预想中的实现多功能。但在编程过程中,我认识到了 C语言的灵活性与严谨性,同一个功能可以由不同的语句来实现。编写程序时要特别注意细节方面的问题,一个小小的疏忽就能导致整个程序不能运行。当然我也认识到了自己的不足之处,如对链表相关知识的欠缺,程序的构想不完好,文件运用的不熟练等。因此在今后的学习中,应多问老师,多向同学学习。6、参考资料1 谭浩强.C程序设计(第三版).清华大学出版社,2 沈岚岚学生成绩管理系统文件附件

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁