1、. . 课程名称:+面向对象程序设计 课程设计题目:大学生学籍管理系统目录:一、 系统设计目标、意义二、 系统设计思路三、 系统功能介绍四、 输入输出的设计(1) 界面的设计(2) 数据输出设计(3) 系统运行结果五、 详细设计(1) 系统功能结构图(2) UML六、 附录七、 系统设计、开发过程中遇到的问题八、 心得体会学生学籍管理系统一、系统设计目标、意义(一)系统实现的目标 1、课程设计的任务: 制作一个小型的学生学籍管理系统,要求制作一个菜单,实现数据的录入,数据的显示,数据查找,数据的删除,数据的保存,数据的统计,数据的修改,系统的退出。系统的设计要求用到C+面向对象的程序设计,要求
2、用到类来实现,同时每一个功能用到一个函数。2、(1)基本功能:学生基本信息(编号,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩)成绩统计(各科总成绩,各科平均成绩,各科的及格率)(2)扩展功能:学生数据的添加、修改、与删除学生数据的读取与存储 3、系统特点:系统要能够对相应的数据进行很好的测试,系统的统计对每一科的总成绩,平均成绩,及格律都进行了统计;系统数据的录入 除可以手工录入外,还可以采用文件的录入;系统统计学生的基本信息较全面,包括学号,民族,政治面貌,号,生日,性别,数学、英语、计算机的成绩;程序中查找运用了两种查找方式即学号查找和查找。(二)系统设计的意
3、义通过设计此项程序,能够对学生的学籍进行统一的管理,对学生的学籍进行录入、修改、保存等功能进行处理,从而能够较快地对信息进行处理,系统数据的录入 除可以手工录入外,还可以采用文件的录入;系统统计学生的基本信息较全面,程序中查找运用了两种查找方式即学号查找和查找,方便查询。二、系统设计思路第一步:分析题目,建立类并派生出它的子类,画出类图。 第二步:画出流程,根据流程图编写程序清单 第三步:上机调试程序(使用单步调试,设置断点、分块调试的方法)。 第四步:及时整理资料,撰写课程设计报告中有关这个题目的容。三、系统功能介绍(一)程序对学生学籍的数据处理要求 能够输入并浏览学生的基本信息; 能够实现
4、对学生信息的查询和修改; 能够对成绩进行统计; 能够对学生的信息进行保存;(二)系统功能:资料维护:系统维护包括对各学生信息和成绩的录入操作。资料维护:对数据表中的信息进行浏览。系统查询:可以对不同科目的总成绩、不及率、各科平均成绩相关信息。四、输入输出的设计1界面的设计、界面设计程序运行后会出现一个简捷的窗口,便于用户查询数据。、功能设计通过主窗体调用其他窗体,具体实现可以参照系统分析相关容。应用系统主控界面包括学生信息录入,查找等功能模块。学生信息录入功能完成学生信息和成绩的输入。记录查询功能可以对数据各分类的记录进行查询。2数据输出设计主要运行界面:统计界面:查找界面:显示界面:录入界面
5、:保存界面:修改界面:删除界面:3、系统运行的结果:(仅部分)五、详细设计1、系统功能结构图:主程序菜单程序初始化程序退出统计修改删除查找显示输入2、(1)类:student 数据成员:编号,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩(2)类:school成员函数:录入函数Input():输入编号到计算机的成绩;统计函数count():统计各科的总成绩,计算平均成绩,统计各科的及格率;查询函数found():按学号或查找学生的记录;修改函数mend():修改指定学号学生成绩记录;删除函数del():删除指定学号学生记录;输出函数show():输出班级所有学生成绩记
6、录;UML图: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():void+input(ifstream & is): void +output():void+output(ofstrea
7、m&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:int六、附录:(主要代码)#include#include#include#include /操纵符定义在其中class stud
8、ent protected: 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;double getscore(int i) return scorei;float getg() return (score0+score1+sco
9、re2); void input()int e=1;coutttt按提示输入:endl;coutnumber;coutname;docoutsex; if(strcmp(sex,男)=0 | strcmp(sex,女)=0) coutplace; coutnation;coutbirth; coutparty; coutid; coutscore0;coutscore1;coutscore2; e=0; else coutttt无此类型性别!重新输入!numbernamesexplacenationbirthpartyid score0score1score2;is.get(); void o
10、utput()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)namesetw(20)place setw(6)nationsetw(20)birthsetw(20)party setw(20)idsetw(6)score0setw(6)score1setw(6
11、)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(); void clear();char mainmenu();int getkey() return key;void setkey(int k) key=k; private: student *head; int key;/录入
12、函数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); 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(
13、(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;if(!find(&p,num,name) ) couttt找不到你要查找的容!next)-output();/删除函数void school:del()student *p,*p2;int num;coutnum;if( !find(&p,num,) ) co
14、uttt找不到你要删除的容!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 name20=;do coutn;while(n2);if(n=1) coutnum;if(n=2)coutname;if( !find(&p,num,name) ) c
15、outtt找不到你要修改的容!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;coutttt文件已保存! num;is.seekg(t); if(numinput(is);p-next=p2;p2-next=NULL;p=p-next;void school:cle
16、ar()/清空函数 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;igetscore(i) ); (p-getscore(i) )=60.0 ji+ : 0 ;coutttbbbb数学总分:g0 平均分:g0/n 及格率:j0/nendlttbbbb英语总分:g1 平均分:g1/
17、n 及格率:j1/nendlttbbbb计算机总分: g2 平均分: g2/n 及格率:j2/nendl;/主选菜单函数char school:mainmenu()char n6;coutnn 欢迎进入学籍管理系统endlendl * * * * * * * * * * * * * * * * * * * * * * * * * * * *endl * * * * * * * * * * * * * * * * * * * * * * * * * * * *endl * * 1: 录入学生信息 * *endl * * 2: 显示学生信息 * *endl * * 3: 查找学生信息 * *end
18、l * * 4: 删除学生信息 * *endl * * 5: 修改学生信息 * *endl * * 6: 统计学生成绩 * *endl * * 7: 保存学生信息 * *endl * * 0: 退出系统 * *endl * * * * * * * * * * * * * * * * * * * * * * * * * * * *endl * * * * * * * * * * * * * * * * * * * * * * * * * * * *endln;return n0;/主函数void main()school pp;int k=1;char n;pp.begin();while(k=
19、1)n=pp.mainmenu();switch(n)case 1:pp.input(); break; case 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; 七、系统设计、开发过程中遇到的问题及创新
20、点本程序基本完成了题目要求的功能。但是由于显示的限制,所罗列的学生成绩只给出了数学,英语,计算机的成绩。程序可通过改进,增加科目数。程序在显示学生信息时输入过于繁杂,不够清晰明朗,若显示成类似表格的形式就好了。解决办法将输出函数的输出格式改一下,难点是计算输出点的控制。至于创新,就是在课题的选择上,我更加偏向于选择自己感兴趣的课题,更加注意程序的实用性八、心得体会通过这次课程设计,我学会了很多的知识,我通过自学相关的书籍,浏览,接触了大量的编程知识,在编程过程中逐渐提升自己的自学能力,克服困难的能力。我觉得首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C+语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。- 优选