ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:69.31KB ,
资源ID:7411856      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7411856.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(学生信息管理系统讲解.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

学生信息管理系统讲解.docx

1、学生信息管理系统讲解合肥学院程序设计与算法语言课程设计报告书题 目 学生信息管理系统院 系 名 称 合肥学院数学与物理系专 业 ( 班级) 14 信息与计算科学姓 名 ( 学号) 王玉( 1407011011)指 导 教 师 钱泽强完 成 时 间 2016 年12月28日、问题描述学生信息管理工作是每个学校必须面对的,它是一项传统且繁琐的教育基础管理工作。 本次课程设计的任务是分别采用顺序表和链表两种存储形式设计学生信息管理系统软件, 基 本功能要求包括增删改查等操作,并采用菜单调用各项功能。二、基本要求学生信息管理系统要求由两人合作完成, 分别采用“顺序表” 和“链表”两种形式实现。具体要求

2、如下:1、编写增加数据模块,完成信息管理系统中学生信息数据的输入;2、编写删除数据模块,完成信息管理系统中学生信息数据的删除;3、编写数据查询模块,完成信息管理系统中学生信息数据的查询;4、编写数据修改模块,完成信息管理系统中学生信息数据的修改;5、编写数据排序模块,完成信息管理系统中学生信息数据的排序;6、编写菜单模块,完成对各功能子模块的调用。三、功能结构图和模块划分1、功能结构图2、存储结构人员基本信息结构体(链表存储结构)typedef struct node struct student char num10; /* 学号 */char name18; /* 姓名 */char se

3、x3; /* 性别 */int age; /* 年龄 */ data; struct node *next; Node,*Link;3、模块划分:(1)主菜单模块 void menu() :通过利用输出函数显示输出主菜单信息。(2)提示错误信息模块 void Wrong() :通过利用输出函数输出提示错误信息。(3)提示没有找到模块 void Nofind() :通过利用输出函数输出提示没有找到该学生( 4)输出中文、英文模块 void printchinese()void printenglish(Node *p) :通过利用输出函数输出中文提示及学生数据。( 5)定位模块 Node* Lo

4、cate(Link l,char findmess,char nameornum) :定位连表中 符要求合的接点,并返回该指针。(6)增加学生信息模块 void Add(Link l) :通过指针的不断后移逐个接受学生信息并将学 生信息付给相应变量。(7)删除信息模块 void Del(Link l) :根据用户选择按学号或按姓名删除,分别比对输入数据和结构体中的数据,有匹配的则删除,没有则提示无信息可删。(8)修改信息模块 void Modify(Link l) :通过用户输入的学号找到相应学生,然后逐项 修改学生信息,否则提示无此学生。(9)查询学生信息模块 void Seek(Link

5、l) :根据用户选择按学号或按姓名查询,分别按学号或姓名逐个比较输入的数据与结构体中的数据, 有匹配的则输出, 没有则提示没有找 到。10)保存信息模块 void Save(Link l) :将接受的结构体信息利用指针存入文件中。11)排序模块 void Scoretow(Link l) :按照学生的学号大小排序,输出。12)主函数 void main() :通过调用各模块来实现学生信息的管理。四、源程序#include stdio.h#include conio.h#include stdlib.h#include string.hint havesave=0;typedef struct

6、node struct student char num10; /*学号 */char name18; /*姓名 */char sex3; /*性别 */int age; /*年龄 */ data; struct node *next; Node,*Link; printf( t1 printf( t3添加学生信息 t2 删除学生信息 n); 查询学生信息 t4 修改学生信息 n);void menu() /* 主菜单 */printf( t5保存学生信息 t6排序学生信息 n);printf( t0 退出系统 n);void print_san() printf( n); void Wron

7、g() /* 提示错误 */ printf(t 学号 t 姓名 性别 年龄 n); void printenglish(Node *p)/* 用于输出英文 */ printf(t%-9s%st%st%dn,p-data.num,p-data.name,p-data.sex,p-data.age该函数用于定位链表中符Node* Locate(Link l,char findmess,char nameornum) /* 合要求的结点,并返回该指针 */ Node *r;if(strcmp(nameornum,num)=0) /* 按学号查询 */ r=l-next;while(r!=NULL)

8、if(strcmp(r-data.num,findmess)=0)return r;r=r-next; else if(strcmp(nameornum,name)=0) /* 按姓名查询 */ r=l-next;while(r!=NULL) if(strcmp(r-data.name,findmess)=0)return r;r=r-next; return 0;增加学生 */void Add(Link l) /* Node *p,*r,*s;char num10;r=l;s=l-next;while(r-next!=NULL)r=r-next; /* 将指针置于最末尾 */while(1)

9、 printf( 请你输入学号 ( 以 0 返回上一级菜单 :);scanf(%s,num); if(strcmp(num,0)=0) break;while(s) if(strcmp(s-data.num,num)=0) printf(= 提示 : 学号为 %s 的学生已经存在 , 若要修改请你选择 4 修改 !n,num);print_san();printchinese();printenglish(s); print_san();printf(n);return; s=s-next; p=(Node *)malloc(sizeof(Node);strcpy(p-data.num,num

10、);printf( 请你输入姓名 :); scanf(%s,p-data.name);getchar();printf( 请你输入性别 :);scanf(%s,p-data.sex);getchar();printf( 请你输入年龄 :); scanf(%d,&p-data.age);getchar(); /* 信息输入已经完成 */ p-next=NULL;r-next=p;r=p; havesave=1; void Del(Link l) /* 删除学生 */ int sel;Node *p,*r;char findmess20;if(!l-next) printf(n= 提示 : 没有信

11、息可以删除 !n);return; printf(n=1 按学号删除 n=2 按姓名删除 n);printf(n 请您选择操作 :);scanf(%d,&sel); if(sel=1) printf( 请您输入要删除的学号 :); scanf(%s,findmess); p=Locate(l,findmess,num); if(p) r=l;while(r-next!=p) r=r-next;r-next=p-next; free(p);printf(n= 提示 : 该学生已经成功删除 !n); havesave=1; elseNofind(); else if(sel=2) printf(

12、请你输入要删除的姓名 :); scanf(%s,findmess); p=Locate(l,findmess,name); if(p) r=l;while(r-next!=p) r=r-next;r-next=p-next;free(p);printf(n= 提示 : 该学生已经成功删除 !n); havesave=1; elseNofind(); elseWrong(); void Modify(Link l) /* 修改学生信息 */ Node *p;char findmess20; if(!l-next) printf(n= 提示 : 没有信息可以修改 !n); return; prin

13、tf( 请您输入要修改的学生学号 :); scanf(%s,findmess);p=Locate(l,findmess,num);if(p) printf( 请你输入新学号 ( 原来是 %s):,p-data.num); scanf(%s,p-data.num);printf( 请你输入新姓名 ( 原来是 %s):,p-data.name); scanf(%s,p-data.name);getchar();printf( 请你输入新性别 ( 原来是 %s):,p-data.sex); scanf(%s,p-data.sex);printf( 请你输入新的年龄 (原来是 %d):,p-data.

14、age); scanf(%d,&p-data.age);getchar();printf(n= 提示 : 信息修改成功 !n); havesave=1; elseNofind(); void Seek(Link l) /* 查询学生信息 */ int sel;char findmess20;Node *p; if(!l-next) printf(n= 提示 : 没有信息可以查询 !n);return; printf(n 1 按学号查找 n 2 按姓名查找 n); printf(n 请您选择操作 :);scanf(%d,&sel);if(sel=1)/* 学号 */ printf( 请你输入要查

15、找的学号 :);scanf(%s,findmess);p=Locate(l,findmess,num);if(p) printf(tttt 查找结果 n);print_san();printf(n);printchinese();printenglish(p);printf(n);print_san();printf( 按任意键返回 ); getch(); elseNofind(); else if(sel=2) /* 姓名 */ printf( 请您输入要查找的姓名 :); scanf(%s,findmess); p=Locate(l,findmess,name);if(p) printf(

16、tttt 查找结果 n); print_san();printf(n); printchinese(); printenglish(p);printf(n); print_san();printf( 按任意键返回 ); getch(); elseNofind(); elseWrong(); void Save(Link l) FILE* fp;Node *p;int flag=1,count=0;学生管理 ,wb);if(fp=NULL) printf(n= 提示 : 重新打开文件时发生错误 !n); exit(1); p=l-next;while(p) if(fwrite(p,sizeof(

17、Node),1,fp)=1) p=p-next;count+; else flag=0;break; if(flag).)n,count); printf(n= 提示 : 文件保存成功 .( 有 %d条记录已经保存 havesave=0; fclose(fp); void Scoretow(Link l) /* 按学号排序 */ Link ll;Node *p,*rr,*s;ll=(Link)malloc(sizeof(Node); /* 用于做新的连表 */ ll-next=NULL;if(l-next=NULL) printf(n= 提示 : 没有信息可以排序 !n); return ;

18、p=l-next;while(p) s=(Node*)malloc(sizeof(Node); /* 新建接点用于保存信息 */ s-data=p-data;s-next=NULL;rr=ll; while(rr-next!=NULL & rr-next-data.num=p-data.num) rr=rr-next;if(rr-next=NULL) rr-next=s;else s-next=rr-next;rr-next=s; p=p-next; free(l);l-next=ll-next; printf(n= 提示: 排序已经完成 !n); void main() Link l; /*

19、 链表 */FILE *fp; /* 文件指针 */int sel;char c;char chji;int count=0;Node *p,*r;printf(tttt 学生信息管理系统 nttttn); l=(Node*)malloc(sizeof(Node);l-next=NULL;r=l;学生管理 ,rb);if(fp=NULL) printf(n= 提示 : 文件还不存在,是否创建? (y/n)n); scanf(%c,&chji);if(chji=y|chji=Y)学生管理 ,wb); printf(n= 提示: 文件已经打开 , 正在导入记录 n);fclose(fp); /*

20、关闭文件 */printf(n= 提示:记录导入完毕 ,共导入 %d条记录 .n,count); elseexit(0);else while(!feof(fp) p=(Node*)malloc(sizeof(Node); if(fread(p,sizeof(Node),1,fp) /* p-next=NULL;将文件的内容放入接点中 */r-next=p; r=p; /* count+; 将该接点挂入连中 */ fclose(fp); /* 关闭文件 */ printf(n= 提示:记录导入完毕 ,共导入 %d条记录 .n,count); while(1) menu();printf( 请你

21、选择操作 :);scanf(%d,&sel);if(sel=0) if(havesave=1) getchar();printf(n= 提示: 信息已经改动 , 是否将改动保存到文件中 (y/n)?n); scanf(%c,&c);if(c=y|c=Y)Save(l); printf(n= 提示: 您已经退出系统 , 再见 !n); break; switch(sel) case 1:Add(l);break; /* case 2:Del(l);break; /* case 3:Seek(l);break; /* case 4:Modify(l);break; /* case 5:Save(l

22、);break; /*增加学生 */ 删除学生 */ 查询学生 */ 修改学生 */ 保存学生 */case 6:Scoretow(l);break; /* 按学号排序 */default: Wrong();getchar();break;五、测试情况1、进入主菜单2、增加学生信息3、删除学生信息(按学号删除为例)4、查询学生信息(按学号查找为例)5、修改学生信息6、排序学生信息7、退出系统1999,清华大学出版社, 19921999六、参考文献1钱能编著 .c+ 程序设计教程,清华大学出版社,2谭浩强编著 .c程序设计题解与上机指导(第四版)3吕凤煮著 .C+ 语言基础教程,清华大学出版社,

23、4Robert L.Kruse 著.C+ 数据结构与程序设计,清华大学出版社, 20045宁正元著 .数据结构 C语言版,中国水利水电出版社, 1997小结经过两个多星期的努力, 这份课程设计论文终于做好了, 看着这份满含着自己心血论文, 心中百感交集。经过一个学期的学习, 我对 c 语言这门课程也有了一定的认识, 不再是一开始上课时那 样大脑一片空白。 C 语言是学习计算机科学的基础, 作为一名信息与计算科学专业学生, 掌 握 C 语言更是毋庸置疑。在上课之前,就经常听同学说, C 语言很难学,确实,刚开始听 课时觉得老师不知所云。 不过, 经过一段时间的上课时候认真听讲再加上钱老师的辅导,

24、 一切好像也不是那么难了,这让我对 C 语言的学习更有信心。计算机最重要的就是上机操作。在课上听过老师讲解书上的知识后,再自己编写程序, 最后再在计算机上运行, 每次刚开始都会出现许多大大小小错误, 经过分析改正后, 终于能 够运行了, 虽然只是一些基础的程序, 但毕竟是自己写出来的程序, 多多少少都会有许多成 就感,就这样经过一次次失败又一次次成功,慢慢地,喜欢上了这门课程。在 c 语言这门课程期末考试之后, 老师通知我们要做课程设计。 刚听到这个消息的时候, 是有些慌张的, 毕竟这次要写的程序和平时那些小程序是不一样的, 一点经验也没有。 之后 我并没有直接开始写, 而是首先在网上找了一些

25、关于这方面资料和一些往届学长学姐们写的 课程设计论文, 然后和小组的另一个同学进行反复讨论, 把程序的大体轮廓和细节设计弄得 清楚后在开始编写程序,之后所有事情就变得得心应手了。在这个过程中真的学到了很多。 不仅仅是关于学习的知识, 还有感受到了合作和交流的重要性, 提高了自己的实际动手能力 和独立思考的能力。 课程设计是一个把需求分析、 程序编写、 程序调试、撰写报告结合为一 体的过程。 在这个过程中, 不仅锻炼了我们缜密的思维和坚持不解的毅力, 更磨练了我们小 组的团结互助的精神。 只有通过大家一起努力才能将课程设计的所有环节都顺利的完成。 另 外程序设计中我们遇到问题并解决问题的过程,

26、使得我们独自探索并解决问题的能力了有了 一个提高, 这有利于我们以后的学习。 同时这整一个过程, 也使我们对程序编写的整个过程 有了一个统筹全局的思想,因为需求分析、程序编写、程序调试、 撰写报告这些过程是环环 相扣的,绝对不可能独立进行。这次课程设计设计过程中遇到了很多编程问题,但有句话说得好, “世上无难事,只怕 有心人”。最后在我和小组同学的不懈努力下,终于游逆而解。同时,在学习 c 语言的过程 中,在授课老师钱泽强老师的身上我也学到了很多实用的知识,在此我表示感谢 !在今后的时间里,我一定要投入更多精力学习 C 语言,以课本为基础,请教老师,与同学讨论,参 考资料,上机操作,我相信我一定能把 C 语言学好!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1