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

上传人:小飞机 文档编号:3155523 上传时间:2023-03-11 格式:DOCX 页数:19 大小:41.39KB
返回 下载 相关 举报
c语言课程设计报告学生信息管理系统.docx_第1页
第1页 / 共19页
c语言课程设计报告学生信息管理系统.docx_第2页
第2页 / 共19页
c语言课程设计报告学生信息管理系统.docx_第3页
第3页 / 共19页
c语言课程设计报告学生信息管理系统.docx_第4页
第4页 / 共19页
c语言课程设计报告学生信息管理系统.docx_第5页
第5页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《c语言课程设计报告学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告学生信息管理系统.docx(19页珍藏版)》请在三一办公上搜索。

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

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

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

4、数据输入ASCLL字符: 用指针检验链表中是否有记录,若没记录,返回主函数; 根据要修改的编号查找对应结点; 修改信息; 打开文件,保存修改记录。 5、保存信息函数 定义指向结构体变量的指针; 用文件指针指向要读写的磁盘文件名,若没有则新建此文件名: 用指针检验链表中是否有记录,若没记录,返回主函数: 打开文件,保存记录: 6、屏幕操作函数 以一定格式输出所想要的图形: 3 四、主要源程序代码 定义变量: #include stdio.h #include conio.h #define STUDENT ID /*所有STUDENT都用ID来代替*/ typedef struct node /

5、*定义结构体*/ char ming50; /*名字*/ char xing50; /*性别*/ char nian50; /*年龄*/ int xuehao; /*学号*/ char xibie50; /*专业*/ char sushe50; /*宿舍号*/ char jia50; /*家庭地址*/ struct node *next; ID; /*学生信息*/ ID *head=NULL; /*定义一个头指针*/ FILE *zhi; /*定义一个文件指针*/ 主菜单界面: void stubent187 /*屏幕格式函数*/ printf(*n); printf(* 学生信息管理系统 *

6、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,t-xing,t-nian,t-xuehao,t-xibie,t-sushe,t-jia); /*以这形

7、式输出各个学生信息*/ 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(请输入年龄:);scanf(%s,&(t1-nian); /* 年龄 */ print

8、f(请输入学号:);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指向头结点*/ t2=t1; else t2=head; while (t2-next!=NULL) t2=t2-next; /*没有成

9、立则指向下个结点*/ t2-next=t1; getchar; printf(是否继续添加(Y/N):n); 5 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(yihu1.txt,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,&

11、A-xuehao,&A-xibie,&A-sushe,&A-jia); /*读取保存的文件数据输入ASCLL字符:*/ if(A!=NULL & A-xuehao!=xuehao) A=A-next; else break; if (A-xuehao=xuehao) head=A-next; free(*A); 6 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) ba

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

13、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=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(输入名字:);

14、scanf(%s,&t1-ming); /*名字*/ printf(输入性别:);scanf(%s,&(t1-xing); /*性别*/ printf(输入年龄:);scanf(%s,&(t1-nian); /*年龄*/ printf(输入学号:);scanf(%s,&t1-xuehao); /*学号*/ 7 printf(输入系别:);scanf(%s,&(t1-xibie); /*系别*/ printf(输入专业:);scanf(%s,&(t1-sushe); /* 宿舍号 */ printf(输入家庭地址:);scanf(%s,&(t1-jia); /* 家庭地址*/ printf(成功

15、!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(没有此编号n); return; 保存添加,删除,修改学生的信息: baocun /*保存*/ ID *t=head; /*定义指针*/ zhi=fopen(yihu1.txt,a+); /*(读写 yihu.tx

16、t文本) */ 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 ; 主菜单操作: main /*主函数*/ int i; /*定义整形变量i*/ stubent187; /*调用屏幕函数*/ 8 while(1) scanf(%d,&i); /*输入要执行的操作*/ switch(i

17、) 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的,则返回*/ 源函数代码: void chakan /* 查看*/ ID *t; t=head; t=(ID *)malloc(sizeof(ID); /*为t开辟一个新单元*/ if(zhi=fopen(yih

18、u1.txt,rb)=NULL) printf(没有此文件n); else printf(%10s%10s%10s%10s%10s%10s%10sn,ming,xing,nian,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%10

19、s%10sn,t-ming,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; /*添加*/ 9 ID *t1,*t2; t1=t2=NULL; loop: t1=(ID *)malloc(sizeof(ID); /*为t1开辟一个新单元*/ printf(请输入姓名:);scanf(%s,&t1-ming); /* 姓名 */ printf(请输入性别:);scanf(%s,&t1-xing); /

20、* 性别 */ printf(请输入年龄:);scanf(%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指向头结点*/ t2

21、=t1; else t2=head; while (t2-next!=NULL) t2=t2-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;/*调用屏幕函数*/ p

22、rintf(保存成功); else if(i=n|i=N) clrscr; /*清屏*/ stubent187; /*调用屏幕函数*/ return ; void del /*删除*/ ID *A,*B; /*定义指针*/ char t,i;int xuehao; /*定义整型变量与字符型变量*/ 10 A=B=NULL; if(zhi=fopen(yihu1.txt,a+)=NULL) printf(没有此信息文件n); else loop: printf(请输入要删除的学生学号:);scanf(%d,&xuehao); while (!feof(zhi) fscanf(zhi,%10s%1

23、0s%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; 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) prin

24、tf(是否保存此次删除(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(zhi=fopen(yihu1.txt,a+)=NULL) printf(没有此信息文件n); loop: printf(请输入要修改的学号:);scanf(%s,&xuehao); /* 输入编号*/ while (!f

25、eof(zhi) 11 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=xuehao) fprintf(zhi,%10s%10s%10s%10d%10s%10s%10sn,t1-ming,t1-xing,t1-nian,t1-xuehao,t

26、1-xibie,t1-sushe,t1-jia); printf(输入名字:);scanf(%s,&t1-ming); /*名字*/ printf(输入性别:);scanf(%s,&(t1-xing); /*性别*/ printf(输入年龄:);scanf(%s,&(t1-nian); /*年龄*/ printf(输入学号:);scanf(%s,&t1-xuehao); /*学号*/ printf(输入系别:);scanf(%s,&(t1-xibie); /*系别*/ printf(输入专业:);scanf(%s,&(t1-sushe); /* 宿舍号 */ printf(输入家庭地址:);s

27、canf(%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(没有此编号n); return; baocun /*保存*/ ID *t=head; /*定义指针*/ zhi=fopen(yihu1.txt,a+); /*(读写 yihu.txt文本) */ 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为文件指针保存*/ 12 t=t-next; fclose

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号