c课设报告许焕_第1页
c课设报告许焕_第2页
c课设报告许焕_第3页
c课设报告许焕_第4页
c课设报告许焕_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

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) 

4、分析系统功能模块(系统流程图) h) 代码编写 i) 功能调试; j) 完成系统总结报告以及系统使用说明书。 。(5)    删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。(二)其它要求:(1) 只能使用C+语言,源程序要有适当的注释,使程序容易阅读;(2) 至少采用文本菜单界面(如果能采用图形菜单界面更好);(3) 建议使用结构和链表等数据结构;(4) 学生可自动增加新功能模块(视情况可另外加分);(5)写出课程设计报告,具体要求见相关说明文档。

5、2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)分析系统中的各个实体之间的关系及其属性和行为; (2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述(包括属性和方法); (4)完成类中各个成员函数的定义; (5)完成系统的应用模块; (6)功能调试; (7)完成系统总结报告以及系统使用说明书。 四、答辩与评分标准: 1、完成基本功能:40分; 2、设计报告及使用说明书:40分; 3、设置错误或者按照要求改变结果:10分;4、回答问题:10分。五、  教材及参考书 朱战立等著, C+面向对象程序设计,人民邮电出版社;郑莉著, C+ 语言程序

6、设计(含实验指导书)。 清华大学出版社 ( 结构化程序设计部分 ) 钱能主编 ,C+ 程序设计教程,清华大学出版社, 2000.11 戴锋编著, Visual C+ 程序设计基础 , 清华大学出版社 ,2001.4 吕日著, C+ 程序设计教程,清华大学出版社, C+ 大学教程,美国 Harvey M.Deitel 等 六、课程设计时间安排1、 班级:通信工程09812、 指导教师:雷晓3、时间安排:第十九周上机时间:第十九周 目录(一)需求分析71、系统设计目的与意义72、系统功能需求73、输入输出要求7(二)结构设计 81、系统功能模块划分与设计(系统功能模块图)82、结构设计8(三)界面

7、设计与各功能模块实现9(四)系统调试11(五)使用说明及编程体会121、使用说明122、编程体会12附件:14(一)需求分析1、设计目的与意义;(1)要求学生达到熟练掌握C+语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2、功能需求;高校学籍管理系统删除学生信息查找学生信息显示学生信息录入学生信息修改学生信息统计学生信息保存学生信息3、输出的要求;本系统的输入输出为: 1). 学生信息录入2). 学生信息显示3) 学生信息的删除4) 学生信息的修改5) 统计全部学生的总成绩,及其在班上的排名6) 能

8、够统计各科的平均成绩及及格率7) 保存学生信息其中在上述要求“1)”中,当进入系统后,输入代码“1”,则进行学生信息的输入,当输入学生姓名以及性别时必须以字符串的形式输入,而输入学生各科成绩时必须以小数形式输入,输入学生学号时必须以整形形式输入,最后在结果运行输出时,各数据的结果类型也是为原先定义的数据类型。(二)结构设计1、系统功能模块划分与设计(系统功能模块图)。高校学籍管理系统删除学生信息查找学生信息显示学生信息录入学生信息修改学生信息统计学生信息保存学生信息2、结构设计(1)(ER图);学生高校学籍管理 系统信息查询成绩查询信息修改学生基本信息管理基本信息录入基本信息修改基本休息删除学

9、生成绩信息查询学生成绩录入学生成绩修改学生成绩 删除信息查询统计基本信息查询学生成绩查询学生成绩统计(2)类层次图 PersonSchool(3)类视图Person#name#sex# place# nation# birth# party# id# number# score+Person()+Person()+ getname()+ getnumber()+ getscore+ getg()+ input()+ output()(三)界面设计与各功能模块实现 首先此系统是利用switch函数来实现主界面的设计。当进入此系统时,你会看到以下主界面的设计1、录入学生信息:选择1,实现录入模块的

10、功能,利用cin函数,来输入学生的各项基本信息,if语句来判断学生性别,实现男女的选择。2、显示学生信息:选择2,实现显示模块的功能:3、查找学生信息:选择3,实现查找模块的功能,利用if语句实现,根据程序的设计,选择你所希望的查找方式,这里提供2种方式,选择1为按编号查找,选择2按姓名查找。4、删除学生信息:选择4,实现删除模块的功能,利用if语句实现,这里提供选择所要删除的学生编号方式来实现,以下是显示了删除了所选编号的学生信息。5、修改学生信息:选择5,实现修改模块的功能,利用利用cin函数和if语句实现:6、统计学生成绩:选择6,实现统计模块的功能,利用计数器count实现:7、保存学

11、生信息:选择7,实现保存模块的功能,利用指针实现:(四)系统调试系统调试数据见第三步界面设计和各功能模块实现1、在程序完全编写完后,而且提示无错误后,在程序运行,输入变量的值时,运行出错。 这时,应弄清楚在定义变量时,自己所选择的变量值的类型,在程序运行输入的时候,只能输入符合定义的类型相同的类型的值2、有时候用到了其它库函数而未定时会出现类似'strlen' undefined; assuming extern returning int的警告,虽然不是错误,但有时可能影响到程序最终运行结果这时候只需查找所未定义的函数所属的库函数,然后将之定义在程序最开头即可(五)使用说明及

12、编程体会1、使用说明 使用此系统,当你运行时,你会首先进入主界面,然后你会看到此系统有8个选项,其中1-7个选项是此系统的功能,还有一个0选项为退出此系统。根据你自己的意愿按提示进行操作。例如你若要录入学生信息,请输入1,回车后,会有进一步的提示,按提示输入相应的学生信息,而其中性别输入只能输入男或女,否则系统会提示输入错误,无此性别,将要求你重新输入,只到输入正确为止。全部录入信息后,系统会出现2个选择,按1为继续输入其他学生的信息,按0为退出输入,此时系统会回到主界面。你若要显示你所输入的学生信息,请输入2,回车后系统将显示你刚刚输入进去的全部学生及其相关信息。你若要查找学生信息,请输入3

13、,查找学生信息,系统会给你2个选择,1为按编号查找,2为按姓名查找,根据你的选择,输入相应的数字,然后按要求正确输入系统会显示你所要查找的还存在的学生信息。你若要删除学生信息,请输入4,回车后,系统会提示你输入要删除的学生的编号,你只要输入编号后,再按回车即可,然后系统会显示你所删除的学生的信息。你若要修改学生的信息,请输入5,然后系统也会给你2种方式确定你要删除的对象是谁,按1为按编号修改,按2为按姓名修改,选择你的方式后,系统会提示你要输入的内容,和你录入学生信息的方法一样,此时你可以修改你所要的信息。你若要统计学生各科成绩总分以及对各科目进行平均分和及格率的计算及统计,请输入6,回车后系

14、统讲显示你所要的信息。选项7为保存你以上所有操作的最后输入输出结果。你若想要推出此系统,请输入0,回车后退出系统。以上操作顺序部分可更换。谢谢使用本系统。2、编程体会这已经是第二次做可课程设计了,但是遇到的问题似乎比第一次做还多,C+比C语言难很多,要用到的知识更复杂,操作起来也更麻烦,但是我们最终还是顺利完成了任务要求。在老师及同学的指导下,让我在C语言的基础上,对C+有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,有时候虽然书中的知识貌似是看懂了,但是在写程序时还是会出现一些自己无法单独解决的问题。通过实践,我也发现我的好多不足之处,首先是自己对C+一

15、些全新的库函数不太了解,在程序编译时会出现一些警告,或者是程序最后运行结果不对,还有对函数调用的正确使用不够熟悉,以及对C+中经常出现的错误也不了解,英文提示错误不明白,但是通过实践,使我在这几个方面的认识有了进一步的提高。通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以在后来的学习过程中,我会更加注视实践操作,使自己便好地学好计算机。现在回想起学习C+的过程中,既有快乐又有烦恼。在还没学习C+之前,听学姐说C+难很多,我想应该也就这样吧,也是一些基本的符号语言然后串在一起就行了,但是经过一段时间的学习,才发现根

16、本不是如此,从开学学习C+的第一天开始,就感觉C+很多东西完全不同于C语言,开始以为C+的学习也会很容易,但是后面很快就感觉到错了,课还是要认真听,理解了书上的内容还要做很多习题去了解它的变换才能做到理解透彻。从发课表的那天起,我就知道在最后的一周要进行课程设计。当时觉得也没什么,毕竟已经做过一次了,感觉还不错,想想这次应该也就这样,不会很难。到了现在真正做C+的课设发现要求改了很多,更严格了。虽然上机的前部分一段时间,貌似什么都没做,因为实在是感觉无从下手,不过到了后期,我感觉自己收获越来越大,从一开始的迷茫,不知道从何下手到把报告中的几个任务编写出来,心里很开心如果是按照第一次的格式做,我

17、想真的很简单,但是由于是C+,很多内容改了,也有了更多高级的表达形式,这些都是之前没遇到,没做过的,所以开始把程序编好之后,再来做这些新的东西,发现真的无从下手,不过还好有老师和同学的帮助,慢慢从不懂到懂,从笨手笨脚到得心应手,确实很开心,很快乐。最后经过自己看书自学和摸索以及在别人的帮助和提示下,我完成了整个程序设计。为期一周的课程设计结束了,在这段时间里,我又学到了更多关于C+的知识,如:对数组,各种运算符的运用更加得心应手。同时我也被提醒以后办事的时候要多注意细节,仔细,考虑周全。因为在编程时往往出现的错误只是因为少了一个符号而已。我也看到了团队精神和互帮互助的重要性。这一点真的让我终生

18、受益。这一周过很充实!在课程设计过程中,我学到了很多人生的哲理,通过程序一个个模块的去编写,完善,让我懂得在未来怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。在本次实践中,给我印象最为深刻的是在文件删除程序的编译过程中,先有我的其他各个模块的程序都已经编写成功,那么我只要完成了这个程序就一切都完成了,可是在这个问题的解决上,我花了大量的时间,都无功而反,长时间的思考着这一个问题,当时真的很头痛。然而我最终没有自暴自弃。我鼓起勇气,到处问,到处查资料,黄天不负有心人,我终与在自己的努力下完成了编写。不得不说这是精神的胜利,

19、因为我看到有许多同学,往往做着做着就做不下去了,就去玩游戏了,或者是聊天,还有的则干脆不来机房上机了。谢谢给我指点迷津的老师以及同学。这次设计让我明白了一个道理,做任何事前之前,不管做一件事的时间有多么充裕。我们对待事情开始的态度都要摆好,都要认真去对待,到最后才不会后悔!这次实践给我的经验是宝贵的,它可能影响我以后的毕业设计甚至是未来的生活和工作。记得有人说过吧:人在做一件事之前,是不知道它到底有没有意义,只有做了才会有所发现,有所收获,但是不去做,是一定什么都得不到的!。这次的实践让我再次懂得了这个道理,我会把它好好的记在心中,并且会在以后的生活和工作中去实践它,见证它所拥有的巨大价值。附

20、件:关键源程序(带注释)#include<iostream>#include<string>#include<fstream>#define N 20#include<iomanip> using namespace std;int hz=N;class student protected: int number;char nameN;char sexN;char placeN;char nationN;char birthN;char partyN;char idN;float scoreN;public: student *next; stu

21、dent() 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;cout<<"ttt按提示输入:"<<endl;cout<<"tt输入编号: "cin>>number;cout<<"tt输入姓名: &q

22、uot;cin>>name;docout<<"tt输入性别: "cin>>sex;if(strcmp(sex,"男")=0 | strcmp(sex,"女")=0)cout<<"tt输入籍贯: "cin>>place;cout<<"tt输入民族: "cin>>nation;cout<<"tt输入生日: "cin>>birth;cout<<"tt输入

23、政治面貌: "cin>>party;cout<<"tt输入身份证号: "cin>>id;cout<<"tt输入数学分数: "cin>>score0;cout<<"tt输入英语分数: "cin>>score1;cout<<"tt输入计算机分数: "cin>>score2;e=0;elsecout<<"ttt无此类型性别!重新输入!"<<endl;e=1;wh

24、ile(e);return ;void input(ifstream & is) is>>number>>name>>sex>>place>>nation>>birth>>party>>id>>score0>>score1>>score2;is.get(); void output()cout<<"学生基本信息如下:"<<endl;cout<<"编号:"<<number

25、<<" 姓名:"<<name<<" 性别:"<<sex<<" 籍贯:"<<place<<" 民族:"<<nation<<" 生日:"<<birth<<" 政治面貌:"<<party<<endl<<"身份证号:"<<id<<" 数学:"<<

26、;score0<<" 英语:"<<score1<<" 计算机:"<<score2<<" 总分:"<<getg()<<endl<<endl;void output(ofstream & os) os<<setw(N)<<number<<setw(N)<<name<<setw(N)<<sex<<setw(N)<<place<<se

27、tw(N)<<nation<<setw(N)<<birth<<setw(N)<<party<<setw(N)<<id<<setw(N)<<score0<<setw(N)<<score1<<setw(N)<<score2<<endl;class school public: school() head=new student; head->next=NULL; key=0; school() delete head; voi

28、d 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=NUL

29、L;p=head; 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);cout<<"ttt按1继续,按0返回 : "cin>>n;/子查找函数int school:find(student *p1,int num,char *pn)student *p;p=head;while(p->next)(*p1)=p;if( (p-&

30、gt;next)->getnumber()=num|!strcmp( (p->next)->getname(),pn ) )return 1;p=p->next;return 0;/查找函数void school:found()student *p;int num=-1,n=9;char nameN=""docout<<"tt1:按编号查找,2:按姓名查找: "cin>>n;while(n<1|n>2);if(n=1)cout<<"ttt输入编号: "cin>

31、;>num;if(n=2)cout<<"ttt输入姓名: "cin>>name;if(!find(&p,num,name) )cout<<"tt找不到你要查找的内容!"<<endl;return;(p->next)->output();/删除函数void school:del()student *p,*p2;int num;cout<<"ttt输入编号: "cin>>num;if( !find(&p,num,""

32、;) )cout<<"tt找不到你要删除的内容!"<<endl;return;(p->next)->output();p2=p->next;p->next=p2->next;delete 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

33、nameN=""docout<<"tt1:按编号修改,2:按姓名修改: "cin>>n;while(n<1|n>2);if(n=1)cout<<"ttt输入编号: "cin>>num;if(n=2)cout<<"ttt输入姓名: "cin>>name;if( !find(&p,num,name) )cout<<"tt找不到你要修改的内容!"<<endl;return;(p->

34、next)->output();(p->next)->input();school:setkey(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;cout<<"ttt文件已保存! "<<endl;school:setkey(0);/初始化函数voi

35、d school:begin()student *p,*p2;p=head;clear();long t;ifstream is("student.txt",ios:in); if(!is)ofstream os("student.txt",ios:out);os.close();return ;int num=-1;while(1)num=-1;t=is.tellg();is>>num;is.seekg(t);if(num<0) is.close();return;p2=new student;p2->input(is);p-&

36、gt;next=p2;p2->next=NULL;p=p->next;/清空函数 void school:clear()student *p,*p2;p=head->next;while( p )p2=p;p=p->next;delete 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;i<3;i+) gi=gi+( p->getscore(i) );(p->getscore(i) )>=60? ji+ : 0 ;cout<<"ttbbbb数学总分:"<<g0<<" 平均分:"<<g0/n<<" 及格率:"<<j0/n<<endl<<"ttbbbb英语总分:"<<g1<<" 平均分:"<<g1/n<<" 及格率:"<<j1/n<<e

温馨提示

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

评论

0/150

提交评论