《高校学籍管理系统.doc》由会员分享,可在线阅读,更多相关《高校学籍管理系统.doc(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课 程 设 计 报 告课程名称 面向对象程序设计 课题名称 高校学籍管理系统 专 业 通信工程 班 级 通信工程0801 学 号 姓 名 指导教师 2010年 01 月 16日湖南工程学院课 程 设 计 任 务 书课程名称 面向对象程序设计 课 题 高校学籍管理系统 专业班级 通信工程0801 学生姓名 学 号 200803020126 指导老师 审 批 任务书下达日期 2009年 12 月 29 日任务完成日期 2010年 01 月 16 日面向对象程序设计课程设计任务书授课班级:通信工程0801/02 学时: 3授课教师:雷晓一、课程设计报告规范(包括系统设计要求,设计思路,系统功能模块图
2、,系统流程图,类的层次图(包括类成员列表),调试过程,关键程序代码,总结,参考书目等)。(一)需求分析系统设计目的与意义系统功能需求(系统流程图);输入输出的要求;(二)总体设计系统功能分析;系统功能模块划分与设计(系统功能模块图)。(三)详细设计数据库需求分析数据库概念结构设计(ER图);数据库逻辑结构设计。类层次图(四)界面设计与各功能模块实现(五)系统调试调试问题出现的主要问题:编译语法错误及修改,重点是运行逻辑问题修改和调整(六)使用说明及编程体会说明如何使用你编写的程序,详细列出每一步的操作步骤。(七)关键源程序(带注释)二、书写格式1、设计报告要求用A4纸打印成册;2、标题为:黑体
3、三号,正文为:宋体五号。三、答辩与评分标准: 1、完成基本功能:40分; 2、设计报告及使用说明书:40分; 3、设置错误或者按照要求改变结果:10分;4、回答问题:10分。四、 教材及参考书 朱战立等著, C+面向对象程序设计,人民邮电出版社;郑莉著, C+ 语言程序设计(含实验指导书)。 清华大学出版社 ( 结构化程序设计部分 ) 钱能主编 ,C+ 程序设计教程,清华大学出版社, 2000.11 戴锋编著, Visual C+ 程序设计基础 , 清华大学出版社 ,2001.4 吕日著, C+ 程序设计教程,清华大学出版社, C+ 大学教程,美国 Harvey M.Deitel 等 五、课程
4、设计时间安排1、 班级:通信工程0801/022、 指导教师:雷晓3、时间安排: 上机时间:十九周 周一下午 14:00-18:00 周二下午 14:00-18:00 十九周 周三上午 08:00-12:00附:选题方案:所选题目根据学生学号确定,学号模6加1,即(学号%6+1)。如你的学号为17,则所选题目号为:17%6+16(题目6)。六、 设计项目:题目3: 高校学籍管理系统 (一)、课程设计题目: 高校学籍管理系统 (二)、目的与要求:1、目的: (1)要求学生达到熟练掌握C+语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,
5、解决简单的面向对象程序设计问题。2、基本要求: (1)要求利用面向对象的方法以及C+的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次; 3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。4、写出设计说明书 (三)、设计方法和基本原理:1、功能要求 要求完成以下功能:1)能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。2)能够将指定的信息从文件中删除。3)能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。4)可以统计全部学生的总成绩,及其在班上的排名。5)能够统计各科的平均成绩及及格率。6)要求有错误提示功能,例如性别只能
6、输入男女,输入错误提示重新输入。7)如果检索不到相应的信息应提示用户。 2、问题的解决方案:根据系统功能要求,可以将问题解决分为以下步骤: a)写出需求分析(做什么) b)分析系统中的各个实体之间的关系及其属性和行为; c)根据问题描述,设计系统的类层次; d)完成类层次中各个类的描述(包括属性和方法); e)完成类中各个成员函数的定义; f)用户界面的设计 g)分析系统功能模块(系统流程图) h)代码编写 i)功能调试; j)完成系统总结报告以及系统使用说明书。 目 录一、需求分析31.系统设计目的与意义32.系统功能需求(系统流程图)32.系统功能流程图43.输入输出的要求4二、总体分析5
7、1.系统功能分析52.系统功能结构图5三、详细设计61.类设计:6三、界面设计与各功能模块的实现81.界面设计8四、系统调试101.首页进入学籍管理系统主菜单102录入学生信息界面:103.显示学生信息界面114.查找学生信息界面115.删除学生信息界面126.修改学生信息127.统计学生信息:13五、使用说明及心得体会14六、附件15 一、 需求分析1.系统设计目的与意义要求用C+面向程序设计语言编写一高校学籍管理系统,1、目的: 1)要求学生达到熟练掌握C+语言的基本知识和技能; 2)基本掌握面向对象程序设计的基本思路和方法; 3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问
8、题。2. 系统设计的意义:系统要能够对相应的数据进行很好的测试,系统的统计对每一科的总成绩,平均成绩,及格律都进行了统计;系统数据的录入 除可以手工录入外,还可以采用文件的录入;系统统计学生的基本信息较全面,包括学号,姓名,民族,政治面貌,身份证号,生日,性别,数学、英语、计算机的成绩;程序中查找运用了两种查找方式即学号查找和姓名查找。2.系统功能需求(系统流程图)1.要求完成以下功能:1)能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。2)能够将指定的信息从文件中删除。3)能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。4)可以统计全部学生的总成绩,及其在班上的排名。5
9、)能够统计各科的平均成绩及及格率。6)要求有错误提示功能,例如性别只能输入男女,输入错误提示重新输入。7)如果检索不到相应的信息应提示用户。 2.系统功能流程图退出主程序初始化程序菜单程序查找删除修改统计录入显示保存3.输入输出的要求1.输入的要求:通过主函数体调用其他函数应用系统主控界面包括学生信息录入,查找等功能模块。学生信息录入功能完成学生信息和成绩的输入。记录查询功能可以对数据各分类的记录进行查询。2.输出的要求:1)能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。2)可以统计全部学生的总成绩,及其在班上的排名。3)能够统计各科的平均成绩及及格率。4)如果检索不到相应的信
10、息应提示用户二、 总体分析1. 系统功能分析能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。能够将指定的信息从文件中删除。能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。可以统计全部学生的总成绩,及其在班上的排名。能够统计各科的平均成绩及及格率。要求有错误提示功能,例如性别只能输入男女,输入错误提示重新输入。如果检索不到相应的信息应提示用户。 开始选择菜单序号1录入信息2显示信息3查找信息4删除信息5修改信息6统计成绩7保存信息0退出按要求逐步输入学生信息选择修改方式1?编号查询姓名查找2?保存?输入学生信息退出保存2.系统功能结构图 三、详细设计1.类设计:类:stud
11、ent 数据成员编号,姓名,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩class student protected: int number; /学号char name20; /姓名char sex6; /性别char place20; /籍贯char nation6; /民族char birth20; /出生日期char party10; /政治面貌char id20; /身份证号float score3; /成绩类:school成员函数录入函数input():逐步输入学生信息;修改函数 mend():按姓名或编号修改学生信息;统计函数count():统计各科的
12、总成绩,计算平均成绩,统计各科的及格率;查找函数found():按学号或姓名查找学生的记录;修改函数mend():修改指定学号学生成绩记录;删除函数del():删除指定学号学生记录;输出函数show():输出班级所有学生成绩记录;class schoolvoid input(); /录入函数void mend(); /修改函数void del(); /删除函数int find(student *p,int num,char *pn=); /子查找函数void found(); /查找函数void show(); /显示函数void count(); /统计函数void save(); /保存函
13、数void begin(); /初始化函数void clear(); /清空函数char mainmenu(); /主菜单函数具体如下图所示:Student#number:int#name20:char#sex6:char#place20:char#nation6:char#birth20:char#party10: char#id20:char#score3:float+student*next; +student() +student() + * getname():char+getnumber():int+getscore(inti)double+ getg():float+ input
14、():void+input(ifstream & is): void +output():void+output(ofstream&os):voidschool+school()+school()+ input():void+ mend():void+ del():void+ find:int+found():void+ show():void+ count():void+ save():void+ begin():void+ clear():void+mainmenu():char+getkey():int+setkey(intk):void- *head: student - key:in
15、t三、 界面设计与各功能模块的实现1. 界面设计1.界面设计程序运行后会出现一个简捷的窗口,便于用户查询数据。2.功能模块实现设计通过主窗体调用其他窗体。应用系统主控界面包括学生信息录入,查找等功能模块。学生信息录入功能完成学生信息和成绩的输入。记录查询功能可以对数据各分类的记录进行查询。具体举例如下:1) 查找函数:void school:found()student *p;int num=-1,n=9;char name20=;do coutn;while(n2);if(n=1)coutnum;if(n=2)coutname;if(!find(&p,num,name) )coutSORRY
16、!找不到你要查找的内容!next)-output();2)删除函数void school:del()student *p,*p2;int num;coutnum;if( !find(&p,num,) )coutSORRY!找不到你要删除的内容!next)-output();p2=p-next;p-next=p2-next;delete p2;school:setkey(1);四、 系统调试1.首页进入学籍管理系统主菜单2录入学生信息界面:3.显示学生信息界面:4.查找学生信息界面:5.删除学生信息界面:6.修改学生信息:7.统计学生信息:五、 使用说明及心得体会此次c+课程设计,在指导教师的精
17、心教导下,我们学会了如何用C+编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。其中遇到了四个错误,第一个是d:123123.h(341) : error C2143: syntax error : missing ; before 。是在主菜单函数中多了一个“;”经调试查出改正。第二个错误时d:123123.h(326) : error C2111: pointer addition requires integral operand。是在统计函数中
18、,定义了g 为数组格式,但是在用到的时候却忽略了,按照非数组形式计算,结果出错,一直没有找出,最后在老师的精心指导下才发现了这一问题。第三个错误是:根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C+语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。六、附件源文件代码:1. 头文件:#include#include#include#include class student protect
19、ed: int number; /学号char name20; /姓名char sex6; /性别char place20; /籍贯char nation6; /民族char birth20; /出生日期char party10; /政治面貌char id20; /身份证号float score3; /成绩public: student *next; student() student() char* getname() return name; int getnumber() return number;float getscore(int i) return scorei;float ge
20、tg() return (score0+score1+score2); /录入信息void input()int e=1;cout按提示输入:endl;coutnumber;coutname;do coutsex; if(strcmp(sex,男)=0 | strcmp(sex,女)=0) coutplace; coutnation; coutbirth; coutparty; coutid; coutscore0; coutscore1; coutscore2; e=0; else cout无此类型性别!重新输入!numbernamesexplacenationbirthpartyid sc
21、ore0score1score2;is.get(); /显示信息void output()cout学生基本信息如下:endl;cout 编号:number 姓名:name 性别:sex 籍贯:place 民族:nation 生日:birth 政治面貌:partyendl 身份证号:id 数学:score0 英语:score1 计算机:score2 总分:getg()endlendl;void output(ofstream & os) ossetw(6)number setw(15)name setw(6)sex setw(20)place setw(6)nation setw(20)birt
22、h setw(20)party setw(20)id setw(6)score0 setw(6)score1 setw(6)score2next=NULL; key=0; school() delete head; void input(); /录入函数void mend(); /修改函数void del(); /删除函数int find(student *p,int num,char *pn=); /子查找函数void found(); /查找函数void show(); /显示函数void count(); /统计函数void save(); /保存函数void begin(); /初始化
23、函数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=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
24、n;/子查找函数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 0;/查找函数void school:found()student *p;int num=-1,n=9;char name20=;do coutn;while(n2);if(n=1)coutnum;if(n=2)coutname
25、;if(!find(&p,num,name) )coutSORRY!找不到你要查找的内容!next)-output();/删除函数void school:del()student *p,*p2;int num;coutnum;if( !find(&p,num,) )coutSORRY!找不到你要删除的内容!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-nex
26、t;/修改函数void school:mend()student *p;int num=-1,n;char name20=;do coutn;while(n2);if(n=1)coutnum;if(n=2)coutname;if( !find(&p,num,name) )coutSORRY!找不到你要修改的内容!next)-output();(p-next)-input();school:setkey(1);/保存函数void school:save()student *p;p=head;ofstream os(student.txt,ios:out);if (school:getkey()=
27、1) while(p-next) (p-next)-output(os); p=p-next;cout文件已保存! 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;delete p2;/统计函数 void school:count()student *p;p=head;int n=0;double g3=0,0,0;float j3=0,0,0;while(p-n
28、ext) p=p-next; n+; for(int i=0;igetscore(i) ); (p-getscore(i) )=60? i+ : 0 ;cout数学总分:g0 平均分:g0/n 及格率:j0/nendl英语总分:g1 平均分:g1/n 及格率:j1/nendl计算机总分: g2 平均分: g2/n 及格率:j2/nendl;/主选菜单函数char school:mainmenu()char n6;coutnn 欢迎进入高校学籍管理系统endlendl * * * * * * * * * * * * * * * * * * * * * * * * * * * *endl * *
29、* * * * * * * * * * * * * * * * * * * * * * * * * *endl * * 1: 录入学生信息 * *endl * * 2: 显示学生信息 * *endl * * 3: 查找学生信息 * *endl * * 4: 删除学生信息 * *endl * * 5: 修改学生信息 * *endl * * 6: 统计学生成绩 * *endl * * 7: 保存学生信息 * *endl * * 0: 退出系统 * *endl * * * * * * * * * * * * * * * * * * * * * * * * * * * *endl * * * * * * * * * * * * * * * * * * * * * * * * * * * *endln;return n0;2. 主函数:/主函数#include123.hvoid main()school p;int k=1;char n;p.begin();while(k=1)n=p.mainmenu();switch(n) case 1:p.input(); break; case 2:p.show(); break; case 3:p.found(); break; case 4:p.del(); break; case 5:p.mend(); brea
限制150内