还剩3页未读,继续阅读
文本内容:
学生管理系统实验报告
1、实验目的上学期学习了C语言的内容,学生信息管理系统有助于对C语言的学习的进一步巩固,在本系统可以增强对指针、数组、文件、函数等基本知识的进一步理解另外学生管理系统也是学校常用的基本系统之一,它有助于学校对学生的基本管理
2、问题分析学生信息管理系统是对学生信息的基本管理,它包括学生信息的输入、学生信息的修改、学生信息的查询、学生信息的删除、学生成绩的排序、学生信息的输出使用模块化编程的方法每项功能有一个函数来完成,对应如下学生信息的输入===voidjiaLinki学生信息的修改==voidxiuLinki学生信息的查询===voidchaLinki学生信息的删除==voidshanLinki学生信息的排序===voidpaiLinki学生信息的保存==voidbaoLinki为了避免指针的过于复杂使用typedef函数创建了一个struct的同义字程序如下typedefstructnode{structstudentdata;structnode*next;}Node*Link;这是问题变得更易于描述、和程序的设计另外本程序运用动态存储、二进制进行存贮为了使程序变得更加明了设计另外一个定位Node型的函数(Node*LocateLinkicharfind[]charnameornum[])这对于查询、删除、修改中非常重要程序的设计流程如下
3、主要算法的设计
(1)主函数的算法设计首先,进入设定__
(123456),进入菜单,然后选择操作(运用swith语句),调用各子函数,在退出程序时检验文件是否保存(设定全局变量wang若不改变或以保存则为0,否则为1)退出程序在返回操作中运用while语句进行控制若选择0则返回菜单读入信息while!feoffp{p=Node*__llocsizeofNode;iffreadpsizeofNode1fp从二进制文件中读入信息{p-next=NULL;r-next=p;r=p;//count++;}}fclosefp;控制保存信息ifwang==1{getchar;printf\n====提示资料已经改动,是否将改动保存(y/n)\n;printf请输入你的选择;scanf%cch;ifch==y||ch==Ybaoi;}printf\n=====提示你已经退出系统,再见!\n;break;}
(2)各子函数的算法设计
1、一些显示操作__函数用递归的方法设计,其它显示操作均用输出相应的内容即可递归的运用voidmi__{charmi
[10];printf====请输入__;scanf%smi;ifstrcmpmi123456==0return;elseprintf====没有记住__!请重新输入……\n;mi__;}
2、定位操作函数Node*LocateLinkicharfind[]charnameornum[]引入Link型I字符型的find[],namenum[]运用strcmp进行比较返回其地址即可
3、学生信息的输入函数VoidjiaLinki首先,申请空间(p=Node*__llocsizeofNode;)输入学生信息,然后做总分计算和平均分的计算p-data.zong=p-data.ying+p-data.shu+p-data.c;p-data.ping=p-data.zong/3;
4、学生信息的修改voidxiuLinki首先选择修改信息,然后定位(p=Locateifindnum;)输入修改信息;若成功则printf====修改成功!\n;否则调用报错函数wrong;
5、学生信息的查询voidchaLinki选择查询方式printf====1按学号查询\n====2按姓名查询\n;然后定位,在调用输出函数;printf查询结果\n;xian;shuchu;shuchu1p;xian;
6、学生信息的删除voidshanLinki首先查询要删除的学生信息,然后调用定位函数进行定位,删除操作;ifp{r=i;whiler-next!=pr=r-next;r-next=p-next;freep;printf====提示该学生已经成功删除!\n;
7、学生信息的排序voidpaiLinki首先选择排序规则printf====1按C语言排序\t\t====2按数学排序\n====3按英语排序\t\t====4按总分排序\n;然后新建链接(s=Node*__llocsizeofNode;//新建节点用于保存信息)然后按照冒泡排序的思想排序whilerr-next!=NULLrr-next-data.c=p-data.crr=rr-next;//由大到小ifrr-next==NULLrr-next=s;else{s-next=rr-next;rr-next=s;}p=p-next;}
8、学生信息的保存voidbaoLinki本程序运用二进制进行保存打开文件(s.___)进行读写fp=fopens.___wb;写入保存内容whilep{iffwritepsizeofNode1fp==1{p=p-next;count++;}else{flag=0;break;}
9、学生成绩的统计voidtongLinki,先选择你的分数线printf请输入分数线;scanf%dn;然后统计出高于这一分数的人数;
10、学生信息的显示voidxianshiLinki直接调用输出函数即可printf显示信息\n;xian;shuchu;printf\n;whilep{shuchu1p;p=p-next;}xian;
4、上机调试过程在调试过程中出现了,几十条的错误!特别是在排序这一函数调试了无数次,主要是指针与动态存贮问题,和建立新的链接,过程中理解不够深刻在调试排序这一功能时最为复杂,在新建链接时有i-next=ii-next;把排序好的顺序__给新的链表,在调试过程中有很大的麻烦,注具体调试过程,麻烦在编程时,没有认真记录,现在想不起来了
5、个人心得通过C语言编程的能力有了提高,特别是在指针、数组、函数和结构体方面有了很大提高,另外还学习了课本没有讲到的知识,学会了使用模块化编程的简单方法,另外在对话框的编程要求美观、方面也有了体会指针是C语言的灵魂,也是本程序的灵魂,它在本程序中既有“穿针引线”的作用(利用指针传值),也起到了对数据进行分析、存贮、读取等重要的作用,本程序在使用指针过程中对指针进行了简化也是一个“亮点”,它使程序变得通俗易懂,也降低了程序的难度以后要对这种方法进行深刻的体会数组在程序中有着很重要的作用,对数据的贮存、输入、读取起着很重要的作用,本程序几乎所有数据都以数组进行输入、贮存、读取方便了对数据的处理和输入,数组的的使用在本程序中有很大的好处函数是实现模块化编程的基础,它使程序变得方面易懂,对修改起了很大作用,也降低了编程的难度,一个函数就是一个功能,它使各个功能之间有了一定的__性,一个函数的错误,不会导致整个程序的失败(主函数除外),对函数的良好应用时在本程序中又以深刻的体会也有了很大提高结构体的使用,为本程序提供了很大方面,也提高了本程序的可读性,结构数组方面了对数据的管理文件的读取与存贮使数据可以保存下来,这也是在学校的学习过程中没有掌握的内容,在开始时遇到了不小的困难typedefstructnode{structstudentdata;structnode*next;}Node*Link;以上程序时在课本中没有基础的知识,(它用使用网上的程序中的一段)也是是本程序变得好写的关键所在,它把复杂的指针问题,变得简单另外、感觉到在学校编的程序时那样的简短(都不足1k)、自己需要在编程方面进一步提高,也提高了自己对编程的兴趣,使自己对编程有了更深的理解,体会到编程的乐趣
6、参考书目
1、C语言程序设计何钦铭颜晖高等教育出版社
2008.
12、C语言程序设计实验指导颜晖高等教育出版社
2008.1附网上参考地址http://hi.baidu.com/sky_willing/blog/item/e7d9de10__053603213f2e8b.html注本人已弄懂该程序并加以改进了输入__开始操作学生信息显示学生成绩统计学生信息的排序学生信息的查询学生信息的修改学生信息的输入学生信息的保存学生信息的删除0返回菜单,选择操作。