收藏 分销(赏)

c课设报告许焕.doc

上传人:a199****6536 文档编号:3396682 上传时间:2024-07-04 格式:DOC 页数:25 大小:607.50KB
下载 相关 举报
c课设报告许焕.doc_第1页
第1页 / 共25页
c课设报告许焕.doc_第2页
第2页 / 共25页
c课设报告许焕.doc_第3页
第3页 / 共25页
c课设报告许焕.doc_第4页
第4页 / 共25页
c课设报告许焕.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、课 程 设 计 报 告课程名称 面向对象程序设计课题名称 高校学籍管理系统 专 业 通信工程 班 级 通信工程0981 学 号 200913120111 姓 名 许焕 指导教师 雷晓 郭芳 2011年 01 月 20日湖南工程学院课 程 设 计 任 务 书课程名称 面向对象程序设计 课 题 高校学籍管理系统 专业班级 通信工程0981 学生姓名 许焕 学 号 200913120111 指导老师 雷晓 郭芳 审 批 任务书下达日期 2010年 12 月 29 日任务完成日期 2011年 01 月 20 日 高校学籍管理系统 (一)、课程设计题目: 学籍管理系统 (二)、目的与要求:1、目的: (

2、1)要求学生达到熟练掌握C+语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2、基本要求: (1)要求利用面向对象的方法以及C+的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次; 3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。4、写出设计说明书 (三)、设计方法和基本原理:1、功能要求 要求完成以下功能:1)能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。2)能够将指定的信息从文件中删除。3)能够按编号、姓名对学生的信息进行检索并将检索

3、结果显示在屏幕上。4)可以统计全部学生的总成绩,及其在班上的排名。5)能够统计各科的平均成绩及及格率。6)要求有错误提示功能,例如性别只能输入男女,输入错误提示重新输入。7)如果检索不到相应的信息应提示用户。 2、问题的解决方案:根据系统功能要求,可以将问题解决分为以下步骤: a)写出需求分析(做什么) b)分析系统中的各个实体之间的关系及其属性和行为; c)根据问题描述,设计系统的类层次; d)完成类层次中各个类的描述(包括属性和方法); e)完成类中各个成员函数的定义; f)用户界面的设计 g)分析系统功能模块(系统流程图) h)代码编写 i)功能调试; j)完成系统总结报告以及系统使用说

4、明书。 。(5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。(二)其它要求:(1)只能使用C+语言,源程序要有适当的注释,使程序容易阅读;(2)至少采用文本菜单界面(如果能采用图形菜单界面更好);(3)建议使用结构和链表等数据结构;(4)学生可自动增加新功能模块(视情况可另外加分);(5)写出课程设计报告,具体要求见相关说明文档。2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)分析系统中的各个实体之间的关系及其属性和行为; (2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述(包括属性和方法); (4)完成类

5、中各个成员函数的定义; (5)完成系统的应用模块; (6)功能调试; (7)完成系统总结报告以及系统使用说明书。 四、答辩与评分标准: 1、完成基本功能:40分; 2、设计报告及使用说明书:40分; 3、设置错误或者按照要求改变结果:10分;4、回答问题:10分。五、 教材及参考书 朱战立等著, C+面向对象程序设计,人民邮电出版社;郑莉著, C+ 语言程序设计(含实验指导书)。 清华大学出版社 ( 结构化程序设计部分 ) 钱能主编 ,C+ 程序设计教程,清华大学出版社, 2000.11 戴锋编著, Visual C+ 程序设计基础 , 清华大学出版社 ,2001.4 吕日著, C+ 程序设计

6、教程,清华大学出版社, C+ 大学教程,美国 Harvey M.Deitel 等 六、课程设计时间安排1、 班级:通信工程09812、 指导教师:雷晓3、时间安排:第十九周上机时间:第十九周 目录(一)需求分析71、系统设计目的与意义72、系统功能需求73、输入输出要求7(二)结构设计 81、系统功能模块划分与设计(系统功能模块图)82、结构设计8(三)界面设计与各功能模块实现9(四)系统调试11(五)使用说明及编程体会121、使用说明122、编程体会12附件:14(一)需求分析1、设计目的与意义;(1)要求学生达到熟练掌握C+语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和

7、方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2、功能需求;高校学籍管理系统删除学生信息查找学生信息显示学生信息录入学生信息修改学生信息统计学生信息保存学生信息3、输出的要求;本系统的输入输出为: 1). 学生信息录入2). 学生信息显示3) 学生信息的删除4) 学生信息的修改5) 统计全部学生的总成绩,及其在班上的排名6) 能够统计各科的平均成绩及及格率7) 保存学生信息其中在上述要求“1)”中,当进入系统后,输入代码“1”,则进行学生信息的输入,当输入学生姓名以及性别时必须以字符串的形式输入,而输入学生各科成绩时必须以小数形式输入,输入学生学号时必须以整形形式

8、输入,最后在结果运行输出时,各数据的结果类型也是为原先定义的数据类型。(二)结构设计1、系统功能模块划分与设计(系统功能模块图)。高校学籍管理系统删除学生信息查找学生信息显示学生信息录入学生信息修改学生信息统计学生信息保存学生信息2、结构设计(1)(ER图);学生高校学籍管理 系统信息查询成绩查询信息修改学生基本信息管理基本信息录入基本信息修改基本休息删除学生成绩信息查询学生成绩录入学生成绩修改学生成绩 删除信息查询统计基本信息查询学生成绩查询学生成绩统计(2)类层次图 PersonSchool(3)类视图Person#name#sex# place# nation# birth# party

9、# id# number# score+Person()+Person()+ getname()+ getnumber()+ getscore+ getg()+ input()+ output()(三)界面设计与各功能模块实现 首先此系统是利用switch函数来实现主界面的设计。当进入此系统时,你会看到以下主界面的设计1、录入学生信息:选择1,实现录入模块的功能,利用cin函数,来输入学生的各项基本信息,if语句来判断学生性别,实现男女的选择。2、显示学生信息:选择2,实现显示模块的功能:3、查找学生信息:选择3,实现查找模块的功能,利用if语句实现,根据程序的设计,选择你所希望的查找方式,这

10、里提供2种方式,选择1为按编号查找,选择2按姓名查找。4、删除学生信息:选择4,实现删除模块的功能,利用if语句实现,这里提供选择所要删除的学生编号方式来实现,以下是显示了删除了所选编号的学生信息。5、修改学生信息:选择5,实现修改模块的功能,利用利用cin函数和if语句实现:6、统计学生成绩:选择6,实现统计模块的功能,利用计数器count实现:7、保存学生信息:选择7,实现保存模块的功能,利用指针实现:(四)系统调试系统调试数据见第三步界面设计和各功能模块实现1、在程序完全编写完后,而且提示无错误后,在程序运行,输入变量的值时,运行出错。 这时,应弄清楚在定义变量时,自己所选择的变量值的类

11、型,在程序运行输入的时候,只能输入符合定义的类型相同的类型的值2、有时候用到了其它库函数而未定时会出现类似strlen undefined; assuming extern returning int的警告,虽然不是错误,但有时可能影响到程序最终运行结果这时候只需查找所未定义的函数所属的库函数,然后将之定义在程序最开头即可(五)使用说明及编程体会1、使用说明 使用此系统,当你运行时,你会首先进入主界面,然后你会看到此系统有8个选项,其中1-7个选项是此系统的功能,还有一个0选项为退出此系统。根据你自己的意愿按提示进行操作。例如你若要录入学生信息,请输入1,回车后,会有进一步的提示,按提示输入相

12、应的学生信息,而其中性别输入只能输入男或女,否则系统会提示输入错误,无此性别,将要求你重新输入,只到输入正确为止。全部录入信息后,系统会出现2个选择,按1为继续输入其他学生的信息,按0为退出输入,此时系统会回到主界面。你若要显示你所输入的学生信息,请输入2,回车后系统将显示你刚刚输入进去的全部学生及其相关信息。你若要查找学生信息,请输入3,查找学生信息,系统会给你2个选择,1为按编号查找,2为按姓名查找,根据你的选择,输入相应的数字,然后按要求正确输入系统会显示你所要查找的还存在的学生信息。你若要删除学生信息,请输入4,回车后,系统会提示你输入要删除的学生的编号,你只要输入编号后,再按回车即可

13、,然后系统会显示你所删除的学生的信息。你若要修改学生的信息,请输入5,然后系统也会给你2种方式确定你要删除的对象是谁,按1为按编号修改,按2为按姓名修改,选择你的方式后,系统会提示你要输入的内容,和你录入学生信息的方法一样,此时你可以修改你所要的信息。你若要统计学生各科成绩总分以及对各科目进行平均分和及格率的计算及统计,请输入6,回车后系统讲显示你所要的信息。选项7为保存你以上所有操作的最后输入输出结果。你若想要推出此系统,请输入0,回车后退出系统。以上操作顺序部分可更换。谢谢使用本系统。2、编程体会这已经是第二次做可课程设计了,但是遇到的问题似乎比第一次做还多,C+比C语言难很多,要用到的知

14、识更复杂,操作起来也更麻烦,但是我们最终还是顺利完成了任务要求。在老师及同学的指导下,让我在C语言的基础上,对C+有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,有时候虽然书中的知识貌似是看懂了,但是在写程序时还是会出现一些自己无法单独解决的问题。通过实践,我也发现我的好多不足之处,首先是自己对C+一些全新的库函数不太了解,在程序编译时会出现一些警告,或者是程序最后运行结果不对,还有对函数调用的正确使用不够熟悉,以及对C+中经常出现的错误也不了解,英文提示错误不明白,但是通过实践,使我在这几个方面的认识有了进一步的提高。通过实践的学习,我认识到学好计算机要

15、重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以在后来的学习过程中,我会更加注视实践操作,使自己便好地学好计算机。现在回想起学习C+的过程中,既有快乐又有烦恼。在还没学习C+之前,听学姐说C+难很多,我想应该也就这样吧,也是一些基本的符号语言然后串在一起就行了,但是经过一段时间的学习,才发现根本不是如此,从开学学习C+的第一天开始,就感觉C+很多东西完全不同于C语言,开始以为C+的学习也会很容易,但是后面很快就感觉到错了,课还是要认真听,理解了书上的内容还要做很多习题去了解它的变换才能做到理解透彻。从发课表的那天起,我就知道在最后的一周要进行课程设

16、计。当时觉得也没什么,毕竟已经做过一次了,感觉还不错,想想这次应该也就这样,不会很难。到了现在真正做C+的课设发现要求改了很多,更严格了。虽然上机的前部分一段时间,貌似什么都没做,因为实在是感觉无从下手,不过到了后期,我感觉自己收获越来越大,从一开始的迷茫,不知道从何下手到把报告中的几个任务编写出来,心里很开心如果是按照第一次的格式做,我想真的很简单,但是由于是C+,很多内容改了,也有了更多高级的表达形式,这些都是之前没遇到,没做过的,所以开始把程序编好之后,再来做这些新的东西,发现真的无从下手,不过还好有老师和同学的帮助,慢慢从不懂到懂,从笨手笨脚到得心应手,确实很开心,很快乐。最后经过自己

17、看书自学和摸索以及在别人的帮助和提示下,我完成了整个程序设计。为期一周的课程设计结束了,在这段时间里,我又学到了更多关于C+的知识,如:对数组,各种运算符的运用更加得心应手。同时我也被提醒以后办事的时候要多注意细节,仔细,考虑周全。因为在编程时往往出现的错误只是因为少了一个符号而已。我也看到了团队精神和互帮互助的重要性。这一点真的让我终生受益。这一周过很充实!在课程设计过程中,我学到了很多人生的哲理,通过程序一个个模块的去编写,完善,让我懂得在未来怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。在本次实践中,给我印象最为深

18、刻的是在文件删除程序的编译过程中,先有我的其他各个模块的程序都已经编写成功,那么我只要完成了这个程序就一切都完成了,可是在这个问题的解决上,我花了大量的时间,都无功而反,长时间的思考着这一个问题,当时真的很头痛。然而我最终没有自暴自弃。我鼓起勇气,到处问,到处查资料,黄天不负有心人,我终与在自己的努力下完成了编写。不得不说这是精神的胜利,因为我看到有许多同学,往往做着做着就做不下去了,就去玩游戏了,或者是聊天,还有的则干脆不来机房上机了。谢谢给我指点迷津的老师以及同学。这次设计让我明白了一个道理,做任何事前之前,不管做一件事的时间有多么充裕。我们对待事情开始的态度都要摆好,都要认真去对待,到最

19、后才不会后悔!这次实践给我的经验是宝贵的,它可能影响我以后的毕业设计甚至是未来的生活和工作。记得有人说过吧:人在做一件事之前,是不知道它到底有没有意义,只有做了才会有所发现,有所收获,但是不去做,是一定什么都得不到的!。这次的实践让我再次懂得了这个道理,我会把它好好的记在心中,并且会在以后的生活和工作中去实践它,见证它所拥有的巨大价值。附件:关键源程序(带注释)#include#include#include#define N 20#include using namespace std;int hz=N;class student protected: int number;char nam

20、eN;char sexN;char placeN;char nationN;char birthN;char partyN;char idN;float scoreN;public: student *next; student() student() char* getname()return name; int getnumber() return number;double getscore(int i) return scorei;float getg() return (score0+score1+score2); void input()int e=1;coutttt按提示输入:e

21、ndl;coutnumber;coutname;docoutsex;if(strcmp(sex,男)=0 | strcmp(sex,女)=0)coutplace;coutnation;coutbirth;coutparty;coutid;coutscore0;coutscore1;coutscore2;e=0;elsecoutttt无此类型性别!重新输入!numbernamesexplacenationbirthpartyidscore0score1score2;is.get(); void output()cout学生基本信息如下:endl;cout编号:number 姓名:name 性别:

22、sex 籍贯:place 民族:nation 生日:birth 政治面貌:partyendl身份证号:id 数学:score0 英语:score1 计算机:score2 总分:getg()endlendl;void output(ofstream & os) ossetw(N)numbersetw(N)namesetw(N)sexsetw(N)placesetw(N)nationsetw(N)birthsetw(N)partysetw(N)idsetw(N)score0setw(N)score1setw(N)score2next=NULL; key=0; school() delete hea

23、d; void input();void mend();void del();int find(student *p,int num,char *pn=);void found();void show();void count();void save();void begin();void clear();char mainmenu();int getkey() return key;void setkey(int k) key=k; private: student *head; int key;/录入函数void school:input()student *p,*p2=NULL;p=he

24、ad; int n;while(p-next)p=p-next;while(n)p2=new student;p2-input();p-next=p2;p2-next=NULL;p=p-next; school:setkey(1);coutn;/子查找函数int school:find(student *p1,int num,char *pn)student *p;p=head;while(p-next)(*p1)=p;if( (p-next)-getnumber()=num|!strcmp( (p-next)-getname(),pn ) )return 1;p=p-next;return

25、0;/查找函数void school:found()student *p;int num=-1,n=9;char nameN=;docoutn;while(n2);if(n=1)coutnum;if(n=2)coutname;if(!find(&p,num,name) )couttt找不到你要查找的内容!next)-output();/删除函数void school:del()student *p,*p2;int num;coutnum;if( !find(&p,num,) )couttt找不到你要删除的内容!next)-output();p2=p-next;p-next=p2-next;de

26、lete p2;school:setkey(1);/显示函数void school:show()student *p;p=head;while(p-next)(p-next)-output();p=p-next;/修改函数void school:mend()student *p;int num=-1,n;char nameN=;docoutn;while(n2);if(n=1)coutnum;if(n=2)coutname;if( !find(&p,num,name) )couttt找不到你要修改的内容!next)-output();(p-next)-input();school:setkey

27、(1);/保存函数void school:save()student *p;p=head;ofstream os(student.txt,ios:out);if (school:getkey()=1)while(p-next)(p-next)-output(os);p=p-next;coutttt文件已保存! num;is.seekg(t);if(numinput(is);p-next=p2;p2-next=NULL;p=p-next;/清空函数 void school:clear()student *p,*p2;p=head-next;while( p )p2=p;p=p-next;dele

28、te p2;/统计函数 void school:count()student *p;p=head;int n=0;double g3=0,0,0;float j3=0,0,0;while(p-next)p=p-next; n+;for(int i=0;igetscore(i) );(p-getscore(i) )=60? ji+ : 0 ;coutttbbbb数学总分:g0 平均分:g0/n 及格率:j0/nendlttbbbb英语总分:g1 平均分:g1/n 及格率:j1/nendlttbbbb计算机总分: g2 平均分: g2/n 及格率:j2/nendl;/主选菜单函数char scho

29、ol:mainmenu()char nN; coutnn 欢迎进入高校学籍管理系统endlendl 1: 录入学生信息 endl 2: 显示学生信息 endl 3: 查找学生信息 endl 4: 删除学生信息 endl 5: 修改学生信息 endl 6: 统计学生成绩 endl 7: 保存学生信息 endl 0: 退 出 系 统 endlendln;return n0;/主函数void main()school pp;int k=1;char n;pp.begin();while(k=1)n=pp.mainmenu();switch(n)case 1:pp.input(); break;cas

30、e 2:pp.show(); break;case 3:pp.found(); break;case 4:pp.del(); break;case 5:pp.mend(); break;case 6:pp.count(); break;case 7:pp.save(); break;case 0:if(pp.getkey()=1)coutk;if(k=1)pp.save();pp.clear();k=0;break;计算机与通信学院课程设计评分表课题名称: 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩 教师签名: 日 期: (注:1此页附在课程设计报告最后一页;2综合成绩按优、良、中、及格和不及格五级评定。)

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服