2013数据结构-学生信息管理系统-大二_第1页
2013数据结构-学生信息管理系统-大二_第2页
2013数据结构-学生信息管理系统-大二_第3页
2013数据结构-学生信息管理系统-大二_第4页
2013数据结构-学生信息管理系统-大二_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上数 据 结 构课程设计说明书题 目学生信息管理系统学 号姓 名王绪指导教师周李涌日 期2013年12月31日内蒙古科技大学课程设计任务书课程名称数据结构课程设计设计题目学生信息管理系统指导教师 周李涌时间2013年秋学期第15周至第19周一、教学要求1. 掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能3. 提高综合运用所学的理论知识和方法独立分析和解决问题的能力4. 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风二、设计资料及参数每个

2、学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。学生信息管理系统要求综合运用C+面向对象程序设计和数据结构的知识来实现此题目。具体如下:v 设计人员基类,由其派生学生类v 人员基类中用虚函数(或纯虚函数)来统一标识类族相同操作,实现动态多态v 用顺序表来表示学生信息,相关存储结构要定义为类模板v 能对不同数据项进行查询,对有序数据项的查询要用折半查找算法v 实现对学生总成绩或单科成绩进行排序,至少用到一种先进的排序方法 并设计主函数测试该类(或类模板)。三、设计要求及成果1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4.

3、设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告四、进度安排资料查阅与讨论(1天)系统分析(2天)系统的开发与测试(5天)编写课程设计说明书和验收(2天)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。4. 根据答辩的情况,应能够以清晰的思路和准确、简练的语言叙述自己的设计和回答教师的提问六、建议参考资料1数据结构 (C语言版)严蔚敏、吴伟民 主编 清华大学出版社 2004.112数据结构课程设计案例精编(用C/C+描述),李建学 等 编著,

4、清华大学出版社 2007.23.清华大学出版社 2007.6目录第1章 需求分析随着计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算机实现企业人事管理势在必行。对于大中型企业来说,利用计算机支持企业高效率完成劳动人事管理的日常事务,是适应现代企业制度要求、推动企业劳动人事管理走向科学化、规范化的必要条件;计算机管理所无法比拟的优点检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。不同的企业具有不同的人事管理制度,这就决定了不同的企业需要不同的人事管理系统。而随着校园信息化、多

5、媒体化的建设。教育资源的种类已经远远的超出了以往我们所认知的范畴。各种多媒体教学设施的运用;各色师资力量的介入 教育资源是教育系统中最重要,最被关注的组成部分。教育资源的优劣,直接关系着教育效益的产出。教育资源管理的好坏将直接影响着学校的建设和发展。作为一个循环的,可持续性强的学校,很有必要实行资产经营,力求在教育方向上能取到跟高的升学率和较低的资产营运成本。在新的形势下,学校也要树立科学发展观,自觉地按照市场经济的内在规律办事,以实现学校产业价值最大化为目标,注重价值形态经营管理,实现教育资源、资产的最大化利用,以及争取取得最大的效益产出。教育资源管理系统是指综合运用地理信息系统(

6、GIS)、多媒体及虚拟现实等现代信息技术实现对学校校舍、课桌、教学用具等硬件设施和师资力量等软件设施的信息的采集、集成和管理。它的建设将为教育部门对教育资源的管理起到很重要的监督和管理作用。并能够作为一项新兴的部门管理方法。 学生信息档案的管理对于学校的管理者来说至关重要,学生信息是高等学校非常重要的一项数据资源,是一个教育单位不可缺少一部分。但其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依*人工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高,所以利用计算机实现学生信息档案管理成为必然的趋势。本系统针对学校学生信息的特点以及管理中实际需要而设计,能够有

7、效地实现学生信息管理的信息化,减轻管理人员的工作负担,高效率、规范化地管理大量的学生信息,并避免人为操作的错误和不规范行为。 我的学生信息管理系统包括基于管理员的操作和基于学生的操作。管理员的操作应包括录入学生信息,查询信息,修改信息,删除信息等;学生的操作只有查询信息。以顺序表SeqList存储集合,在此基础上完成对集合的操作。类包括俩个一个为student类:其中包括学生的学号,姓名,年龄,以及各科的成绩,总成绩及平均成绩等。第二个类为SeqList:其中包括一个student类的数组和一个数组大小的size;以及对顺序表的插入和删除操作。管理员账号为:boss管理员密码为:10086 第

8、2章 总体设计系统的功能结构,用文字描述系统要完成的功能,用结构框图表示各个功能之间的关系系统功能。学生操作管理员操作查询信息修改信息删除信息查询信息录入信息第3章3.1 SeqList抽象数据类型的设计ADT SeqList数据对象D:D是具有数值的常量C和没有数值的变量V;数据关系:R=<(V或者C)P(V或者C)>|V,CD, <(V或者C)P(V或者C)>表示由运算符P结合起来的表达式E基本操作:Void chang(int n)初始条件:list类型的数组存在;操作结果:修改list中的数据void del(int n)初始条件:list类型的数组存在;操作结

9、果:删除一个list数组中的元素。Void erfeng(datatype a,int key,int n)初始条件:list类型的数组存在;操作结果:对datatype类型的数组进行排序。void Find(datatype& item)初始条件:list类型的数组存在;操作结果:将datatype类型的数组显示在显示器上。void kecheng(int n)初始条件:list类型的数组存在;操作结果:对list类型的数组查找其课程数据项。void luru(int n)初始条件:list类型的数组存在;操作结果:将数据写入list类型的数组void paixu1(datatype

10、 array,int k,int length)。初始条件:list类型的数组存在;操作结果:datatype类型的数组array中的数据进行排序。void xianshi(int n)初始条件:list类型的数组存在;操作结果:将liste类型的数组中的数据进行显示。 ADT 第4章 详细设计4.1 工程视图 只有一个工程如图4.1 图4.14.2 类图视图共有俩个类,一个为SeqList如图4.2.1;另一个为student,如图4.2.2 图4.2.1 图6.2.2class studentprivate:int num; /学号int grade5; /成绩数组float sum; /

11、总成绩float ping; /平均成绩char name20; /姓名int age; /年龄public:student()void setnum(int nu)num=nu; 建立学号int getnum()int n;n=num;return n; 得到学号void setgrade(int a,int b)gradeb=a; 建立成绩int getgrade(int n)int a;a=graden;return a; 得到成绩void setname(char *na)strcpy(name,na); 建立姓名char *getname()char *na;na=name;retu

12、rn na; 得到姓名void setage(int a)age=a; 建立年龄int getage()int a;a=age;return a; 得到年龄friend class SeqList; float getping(); 获得平均成绩int getsum(); 获得总成绩student (student &s);4.3 函数的调用关系 main()主程序管理员guanliyuan()录入函数luru()学生studentmian()查询函数xianshi()删除函数del()修改函数change()4.4 主程序流程图 删除函数模块设计void SeqList:del(in

13、t n)system("cls");int i,j;int c;printf("n输入你要删除的学生学号 :n");printf("num:"); cin>>c;for(i=0;i<list.size;i+)if(list.datai.getnum()=c) break;for(j=i;j<list.size;j+)list.dataj=list.dataj+1;printf("tt你已经删除 %d的信息n",c);list.size-;duoyu2(); 开始输入要删除的信息找到要删除的信

14、息? no yes删除信息输入模块设计void SeqList:luru(int n) /luru函数system("cls"); int j,num,age,grade5,k=0; /输入5科成绩char ch20;do k=0;system("cls");printf("n输入学生信息:n");printf("n学号: ");scanf("%d",&num);for(int i=0;i<=list.size;i+)if(list.datai.getnum()=num) k=1;

15、 if(k=0) list.datasize.setnum(num);printf("n姓名: ");cin>>ch;list.datasize.setname(ch);printf("n年龄: ");cin>>age;list.datasize.setage(age);printf("注:(成绩1为数学,成绩2为计算机,成绩3为英语,成绩4为语文,成绩5为思修 n");for(j=0;j<5;j+) /输出5科成绩 printf("n成绩%d: ",j+1);cin>>g

16、radej; list.datasize.setgrade(gradej,j);list.size+; else if(k=1) printf("此学号已存在,请查实后再输入!");printf("n如要继续输入学生信息,请选择(y/n): ");scanf("%s",ch); /判断是否要继续while(strcmp(ch,"y")=0|strcmp(ch,"Y")=0);paixun(list.data,list.size);guanliyuan(n);开始输入学号已存在? yes no输入

17、信息 是否继续输入? yes no结束修改函数模块设计void SeqList:change(int a)int n,i,j;int k=0;int num,grade5;char name20,ch5;printf("请输入要修改的学生学号:");cin>>n;for(i=0;i<list.size;i+)if(list.datai.getnum()=n)printf("n你确定要修改学号吗?(y/n): ");scanf("%s",ch);if(strcmp(ch,"y")=0|strcmp(

18、ch,"Y")=0) /判断是否要继续printf("n学号:");cin>>num;list.datai.setnum(num);k=1;printf("n你确定要修改学生姓名吗?(y/n): ");cin>>ch;if(strcmp(ch,"y")=0|strcmp(ch,"Y")=0) /判断是否要继续 printf("n名字:"); cin>>name;list.datai.setname(name);k=1;printf(&quo

19、t;n你确定要修改学生成绩吗?(y/n): ");scanf("%s",ch);printf("n");if(strcmp(ch,"y")=0|strcmp(ch,"Y")=0) /判断是否要继续printf("注:(成绩1为数学,成绩2为计算机,成绩3为英语,成绩4为语文,成绩5为思修 n");for(j=0;j<5;j+) printf("成绩%d:",j+1); cin>>gradej;list.datasize.setgrade(grade

20、j,j);printf("n"); k=1;开始输入学号修改学号? yes输入新信息 no修改姓名?输入新信息 yes no输入新信息修改年龄? yes no修改成绩?输入新信息 yes no输出修改后的信息结束第5章 测试 主函数 图5.1 输入账号密码 图5.2管理员操作页面 图5.3录入信息页面(管理员) 图5.4查询信息页面(管理员,学生) 图5.5查询全班信息页面 图5.6查询个人信息页面 图5.7按姓名查找 图5.8按学号查找 图5.9按成绩查找页面 图5.1.修改信息页面 图5.11 学生查询页面 图5.12第6章 总结 通过该课程设计,收获颇多。而我的收获就

21、是让我这个学期学的理论不只是有了用武之地。更多的让我学到了除了课本以外的知识,让我对编程有了新的认识。平时很少上机,认为数据结构很难,虽然总是在看程序,满足于看懂程序,因此离自己会写程序还有一段差距,但是这次我们参考的程序不是特别符合要求,必须要改动,而且要写一部分插入里面,这就使我不得不自己写,看了几遍程序,又翻了几遍书并参考了我去年用c语言做的课设,经过艰难的修改,最后写出了初稿。虽然比较简陋,但是能够执行,才知道,我们不是不能做,是不做,只要我们动笔,想到什么写什么不对再改再加,只有勇于尝试,勤练习,其实数据结构也没有那么难。 给我的收获还有就是在编程前一定要给自己规划好步骤,给自己搭建

22、好一个框架,这样编程起来将会更加方便自如,就如你把所有的类的名字提前想好,这样就不会有重复的类名,当你有错误的时候,你按照框架很快就能发现的了,并会很快就得到解决,这种事情我在编程的时候发生过,所以给了我很大的教训。 我们在修改程序程序时也遇到很多的问题,有语法错误,其原因就是没能对所学知识彻底理解和运用,还有就是平时练习少,很少自己写程序,导致有时程序出错感到很茫然不知所措,解决问题的方法就是上网或在书上找,问老师和同学,还有一些符号错误,我觉得是自己太马虎大意,不够仔细,有时一个符号错误,会导致好多个错误,这就是让我知道了学习需要认真,这对以后的学习很有帮助。还有就是在写登陆系统时,我写的

23、程序老是不对。自己找了半天找不到,最后上网上发了个帖子,列出了我的登录系统,最后一个好心人给我解答了。原来是我存储密码的数组应该初始化成0,应为我是用strcmp()函数的,而他不能确定你的数组什么时候结束。这就体现了我c语言的基础并不扎实,所以我决定放假后回去再将c语言看一遍。还有一个错误时在按学号查找时,我写的程序老是不停的输出。这让我想到了肯定是有一个地方存在死循环。在经过仔细的查看后才发现原来是返回值的问题。我的查找算法是二分法,当时我偷懒了,直接在网上下了一个,并将他的返回值删了,调用显示函数,结果就死循环了。这图出了我的俩个问题:一是我的二分查找掌握的并不好;二是我对于函数的调用还

24、是掌握不够。这次报告给我最大的鼓舞就是我自己写了一段程序,虽然过程很艰难,但毕竟是自己写的,并且经调试虽然错误很多,但是我觉得这很好,现在犯这些错误不仅让我明白了自己在那里的不足,并且现在犯这些错误还有时间让我改正。没准以后我会为了这写错误付出很大的代价。所以我并不害怕我自己写的程序出错误,就是怕我不敢正视这些错误。我相信,只要我坚持这个想法,我相信我肯定会自己写出好的程序。或许这就是我在这次课设中的最大的收获。附录:程序代码#include<iostream.h>#include<string.h>#include<stdlib.h>#include<

25、;conio.h>#include<stdio.h>const MaxListSize=100;class studentprivate:int num;int grade5;float sum;float ping;char name20;int age;public:student()void setnum(int nu)num=nu;int getnum()int n;n=num;return n;void setgrade(int a,int b)gradeb=a;int getgrade(int n)int a;a=graden;return a;void setn

26、ame(char *na)strcpy(name,na);char *getname()char *na;na=name;return na;void setage(int a)age=a;int getage()int a;a=age;return a;friend class SeqList;float getping();int getsum();student (student &s);int student:getsum()int sum=0;for(int i=0;i<5;i+)sum=sum+gradei;return sum;float student:getpi

27、ng()float sum=0;for(int i=0;i<5;i+)sum=sum+gradei;sum=sum/5;return sum;student:student (student &s)num=s.num;age=s.age;strcpy(name,);for(int i=0;i<5;i+)gradei=s.gradei;typedef student datatype;class SeqList private:datatype dataMaxListSize;public:int size;int ListSize()return size;vo

28、id Find(datatype& item);void Find3(datatype& item);void Insert(datatype& item,int pos);void ClearList();void luru(int n);void xianshi(int n); void xinming(int n); void xuehao(int a); void kecheng(int n);void change(int a);void del(int n);void paixu1(datatype array,int k,int length);void

29、Find1(datatype& item,int j);datatype erfeng(datatype a,int key,int n);void duoyu1();void Find2(datatype& item);void zong(int n);void SeqList:Find1(datatype& item,int j) printf("学号:%d",item.getnum(); printf(" 姓名:%s",item.getname();printf(" 年龄:%d",item.getage(

30、);printf(" 成绩%d:%d",j,item.getgrade(j);printf("n");void SeqList:Find2(datatype& item) printf("学号:%d",item.getnum(); printf(" 姓名:%s",item.getname();printf(" 年龄:%d",item.getage();printf(" 总成绩:%d",item.getsum();printf(" 平均成绩:%.2f"

31、;,item.getping();printf("n");void paixun(datatype array,int length) /希尔排序 int d = length/2; /设置希尔排序的增量int i ;int j;student temp,t;while(d>=1)for(i=d;i<length;i+)temp=arrayi;j=i-d;while(j>=0 && arrayj.getnum()>temp.getnum()t=arrayj;arrayj+d=t;j=j-d;arrayj+d=temp;d= d/2;

32、/缩小增量void SeqList:Find(datatype& item) printf("学号:%d",item.getnum(); printf(" 姓名:%s",item.getname();printf(" 年龄:%d",item.getage();for(int j=0;j<5;j+)printf(" 成绩:%d",item.getgrade(j);printf(" 总成绩:%d",item.getsum();printf(" 平均成绩:%.2f",

33、item.getping();void SeqList:Find3(datatype& item) printf("学号:%d",item.getnum(); printf(" 姓名:%s",item.getname();printf(" 年龄:%d",item.getage();for(int j=0;j<5;j+)printf(" 成绩:%d",item.getgrade(j);printf(" 总成绩:%d",item.getsum();printf(" 平均成绩:

34、%.2f",item.getping();void SeqList:ClearList ()size =0;SeqList list;void guanliyuan(int n);void guanliyuanmain(int n);void guanliyuan_denglu(int n);void duoyu1();void xianshi1(int n);void duoyu2();void paixun(datatype array,int length);void studentmain(int n);void zhu();void main()int a;do syste

35、m("cls");list.ClearList();printf("nnn");printf("ttt 欢迎使用学生信息查询系统 n ");printf("ttt*n");printf("ttt* *n");printf("ttt* 1.管理员登陆 *n");printf("ttt* 2.学员登录 *n");printf("ttt* 3.退出 *n");printf("ttt* *n");printf("t

36、tt*nn");printf("ttt请输入你要操作的序号:n");printf("ttt你要输入的序号是:");scanf("%d",&a);if(a<0|a>3) printf("您输入的有误,请重新输入!");switch(a)case 1:guanliyuan_denglu(0);break; case 2:studentmain(1);break; case 3:exit(0);break; while(a!=0); void zhu()int a;do system(&qu

37、ot;cls");printf("nnn");printf("ttt 欢迎使用学生信息查询系统 n ");printf("ttt*n");printf("ttt* *n");printf("ttt* 1.管理员登陆 *n");printf("ttt* 2.学员登录 *n");printf("ttt* 3.退出 *n");printf("ttt* *n");printf("ttt*nn");printf(&q

38、uot;ttt请输入你要操作的序号:n");printf("ttt你要输入的序号是:");scanf("%d",&a);if(a<0|a>3) printf("您输入的有误,请重新输入!");switch(a)case 1:guanliyuan_denglu(0);break; case 2:studentmain(1);break; case 3:exit(0);break; while(a!=0); void guanliyuan_denglu(int n)system("cls"

39、);char z10,sun10='0',c;int i=0;printf("ttnnnn");printf("ttt 欢迎使用学生信息查询系统 n ");printf("t*nnn");printf("ttt 请输入管理员账号:");scanf("%s",&z);printf("ttt 请输入管理员密码:");while(1)c=getch();if(c != 'r')printf("*");suni=c;i+;e

40、lse break;if(strcmp("boss",z)=0&&strcmp("10086",sun)=0)guanliyuan(n);else printf("ttt您输入的有误!");void guanliyuan(int n) int a; dosystem("cls");printf("nnn");printf("ttt 欢迎使用学生信息查询系统 n ");printf("ttt*n");printf("ttt* *n&

41、quot;);printf("ttt* 1.录入系统 *n");printf("ttt* 2.查询系统 *n"); printf("ttt* 3.修改系统 *n");printf("ttt* 4.删除系统 *n");printf("ttt* 5.返回主菜单 *n");printf("ttt* 6. 退出 *n");printf("ttt* *n");printf("ttt*nn");printf("ttt请输入你要操作的序号:

42、n");printf("ttt你要输入的序号是:");scanf("%d",&a);if(a<0|a>6) printf("您输入的有误,请重新输入!");switch(a)case 1:list.luru(n);break; case 2:guanliyuanmain(n);break;case 3:list.change( n);break;case 4:list.del(n);break;case 5:zhu();break;case 6:exit(0);break; while(a!=0); sy

43、stem("cls"); void guanliyuanmain(int n) int a; do system("cls"); printf("nnn"); printf("ttt 欢迎使用学生信息查询系统 n "); printf("ttt*n"); printf("ttt* *n"); printf("ttt* 1.查询全班信息 *n"); printf("ttt* 2.查询个人信息 *n"); printf("ttt*

44、 3.返回上一级菜单 *n"); printf("ttt* 4.返回主菜单 *n"); printf("ttt* 5.退出 *n"); printf("ttt* *n"); printf("ttt*nn"); printf("ttt请输入你要操作的序号:n"); printf("ttt你要输入的序号是:"); scanf("%d",&a); if(a<0|a>4) printf("您输入的有误,请重新输入!"); switch(a) case 1:list.xianshi(n);break; case 2:xianshi1(n);break; case 3:guanliyuan(n);break; case 4:zhu();break; case 5:exit(0);break; while(a!=0); void SeqList:luru(int n) system("cls");int j,num,age,grade5,k=0; char ch20;do k=0;system("cls");p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论