C++课程设计 学生学籍管理系统
更新时间:2024-05-15 04:43:01 阅读量: 综合文库 文档下载
成绩
中国农业大学 课程论文
(2010-2011学年春季学期)
课程设计题目:学生学籍管理系统 课程名称:C++面向对象程序设计
目录:
一、 系统设计目标、意义 二、 系统设计思路 三、 系统功能介绍 四、 输入输出的设计 (1) 界面的设计 (2) 数据输出设计 (3) 系统运行结果 五、 详细设计 (1) 系统功能结构图 (2) UML 六、 附录
七、 系统设计、开发过程中遇到的问题及创新点 八、 心得体会
学生学籍管理系统
一、系统设计目标、意义
(一)系统实现的目标 1、课程设计的任务:
制作一个小型的学生学籍管理系统,要求制作一个菜单,实现数
据的录入,数据的显示,数据查找,数据的删除,数据的保存,数据的统计,数据的修改,系统的退出。系统的设计要求用到C++面向对象的程序设计,要求用到类来实现,同时每一个功能用到一个函数。 2、(1)基本功能:
学生基本信息(编号,姓名,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩) 成绩统计(各科总成绩,各科平均成绩,各科的及格率) (2)扩展功能:
学生数据的添加、修改、与删除 学生数据的读取与存储 3、系统特点:
系统要能够对相应的数据进行很好的测试,系统的统计对每一科的总成绩,平均成绩,及格律都进行了统计;系统数据的录入 除可
以手工录入外,还可以采用文件的录入;系统统计学生的基本信息较全面,包括学号,姓名,民族,政治面貌,身份证号,生日,性别,数学、英语、计算机的成绩;程序中查找运用了两种查找方式即学号查找和姓名查找。 (二)系统设计的意义
通过设计此项程序,能够对学生的学籍进行统一的管理,对学生的学籍进行录入、修改、保存等功能进行处理,从而能够较快地对信息进行处理,系统数据的录入 除可以手工录入外,还可以采用文件的录入;系统统计学生的基本信息较全面,程序中查找运用了两种查找方式即学号查找和姓名查找,方便查询。
二、系统设计思路
第一步:分析题目,建立类并派生出它的子类,画出类图。 第二步:画出流程,根据流程图编写程序清单
第三步:上机调试程序(使用单步调试,设置断点、分块调试的方法)。 第四步:及时整理资料,撰写课程设计报告中有关这个题目的内容。
三、系统功能介绍
(一)程序对学生学籍的数据处理要求
① 能够输入并浏览学生的基本信息; ② 能够实现对学生信息的查询和修改; ③ 能够对成绩进行统计;
④ 能够对学生的信息进行保存; (二)系统功能:
资料维护:系统维护包括对各学生信息和成绩的录入操作。 资料维护:对数据表中的信息进行浏览。
系统查询:可以对不同科目的总成绩、不及率、各科平均成绩相关信息。
四、输入输出的设计
1.界面的设计 ①、界面设计
程序运行后会出现一个简捷的窗口,便于用户查询数据。 ②、功能设计
通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容。应用系统主控界面包括学生信息录入,查找等功能模块。学生信息录入功能完成学生信息和成绩的输入。记录查询功能可以对数据各分类的记录进行查询。
2.数据输出设计
主要运行界面:
统计界面:
查找界面:
显示界面:
录入界面:
保存界面:
修改界面:
删除界面:
3、系统运行的结果:
(仅部分)
五、详细设计
1、系统功能结构图:
初始化程序 菜单程序 主程序 输入 显示 查找 删除 修改 统计 退出 2、(1)类:student
数据成员:编号,姓名,性别,籍贯,民族,生日,政治面貌,省
份证,数学成绩,英语成绩,计算机成绩
(2)类:school
成员函数:录入函数Input():输入编号到计算机的成绩; 统计函数count():统计各科的总成绩,计算平均成绩,统计各科的及格率;
查询函数found():按学号或姓名查找学生的记录; 修改函数mend():修改指定学号学生成绩记录; 删除函数del():删除指定学号学生记录; 输出函数show():输出班级所有学生成绩记录; UML图:
school +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 Student #number:int #name[20]:char #sex[6]:char #place[20]:char #nation[6]:char #birth[20]:char #party[10]: char #id[20]:char #score[3]:float +student*next; +student(){ } +~student(){ } + * getname():char +getnumber():int +getscore(inti)double + getg():float + input():void +input(ifstream & is): void +output():void +output(ofstream&os):void 六、附录:(主要代码)
#include
#include
protected: int number; char name[20]; char sex[6]; char place[20]; char nation[6]; char birth[20]; char party[10]; char id[20]; float score[3];
public: student *next; student(){ } ~student(){ }
char* getname(){ return name; } int getnumber(){ return number;}
double getscore(int i) { return score[i];}
float getg(){ return (score[0]+score[1]+score[2]); } void input() { int e=1;
cout<<\按提示输入:\
cout<<\输入编号: \ cin>>number; cout<<\输入姓名: \ cin>>name; do
{cout<<\输入性别: \ cin>>sex;
if(strcmp(sex,\男\女\
{ cout<<\输入籍贯: \ cout<<\输入民族: \
cout<<\输入生日: \ cout<<\输入政治面貌: \ cout<<\输入身份证号: \ cout<<\输入数学分数: \
cout<<\输入英语分数: \ cout<<\输入计算机分数: \ e=0;} else
{cout<<\无此类型性别!重新输入!\ e=1; } }while(e);
return ; }
void input(ifstream & is)
{is>>number>>name>>sex>>place>>nation>>birth>>party>>id >>score[0]>>score[1]>>score[2]; is.get(); } void output()
{cout<<\学生基本信息如下:\
cout<<\编号:\姓名:\性别:\籍贯:\<<\民族:\生日:\政治面貌:\<<\身份证号:\数学:\英语:\ <<\计算机:\总分:\}
void output(ofstream & os)
{ os< class school {public: school(){ head=new student; head->next=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; }; //录入函数 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<<\按1继续,按0返回 : \ cin>>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 name[20]=\do { cout<<\按编号查找,2:按姓名查找: \ cin>>n; }while(n<1||n>2); if(n==1) { cout<<\输入编号: \ cin>>num;} if(n==2) { cout<<\输入姓名: \cin>>name; } if(!find(&p,num,name) ) { cout<<\找不到你要查找的内容!\return;} (p->next)->output(); } //删除函数 void school::del() { student *p,*p2; int num; cout<<\输入编号: \ cin>>num; if( !find(&p,num,\ { cout<<\找不到你要删除的内容!\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 name[20]=\do { cout<<\按编号修改,2:按姓名修改: \ cin>>n; }while(n<1||n>2); if(n==1) { cout<<\输入编号: \ cin>>num; } if(n==2) {cout<<\输入姓名: \cin>>name; } if( !find(&p,num,name) ) { cout<<\找不到你要修改的内容!\return; } (p->next)->output(); (p->next)->input(); school::setkey(1); } void school::save() //保存函数 { student *p; p=head; ofstream os(\if (school::getkey()==1) { while(p->next) { (p->next)->output(os); p=p->next; } } cout<<\文件已保存! \school::setkey(0); } void school::begin()//初始化函数 { student *p,*p2; p=head; clear(); long t; ifstream is(\ if(!is) { ofstream os(\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->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 g[3]={0,0,0}; float j[3]={0,0,0}; while(p->next) { p=p->next; n++; for(int i=0;i<3;i++) { g[i]=g[i]+( p->getscore(i) ); (p->getscore(i) )>=60.0? j[i]++ : 0 ; } } cout<<\数学总分:\平均分:\<<\及格率:\英语总分:\<<\平均分:\及格率:\ <<\计算机总分: \平均分: \<<\及格率:\} //主选菜单函数 char school::mainmenu() { char n[6]; cout<<\ ☆☆☆☆欢迎进入学籍管理系统☆☆☆☆\<<\ * * * * * * * * * * * * * * * * * * * * * * * * * * * *\<<\ * * * * * * * * * * * * * * * * * * * * * * * * * * * *\<<\ * * 1: 录入学生信息 * *\<<\ * * 2: 显示学生信息 * *\<<\ * * 3: 查找学生信息 * *\<<\ * * 4: 删除学生信息 * *\<<\ * * 5: 修改学生信息 * *\<<\ * * 6: 统计学生成绩 * *\<<\ * * 7: 保存学生信息 * *\<<\ * * 0: 退出系统 * *\<<\ * * * * * * * * * * * * * * * * * * * * * * * * * * * *\<<\ * * * * * * * * * * * * * * * * * * * * * * * * * * * *\<<\ 请选择:\cin>>n; return n[0]; } //主函数 void main() {school pp; int k=1; char n; pp.begin(); while(k==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) { cout<<\是否保存? 1 : 保存 0:不保存 : \ cin>>k; if(k==1) pp.save(); } pp.clear(); k=0; break; }}} 七、系统设计、开发过程中遇到的问题及创新点 本程序基本完成了题目要求的功能。但是由于显示的限制,所罗列的学生成绩只给出了数学,英语,计算机的成绩。程序可通过改进,增加科目数。程序在显示学生信息时输入过于繁杂,不够清晰明朗,若显示成类似表格的形式就好了。解决办法将输出函数的输出格式改一下,难点是计算输出点的控制。 至于创新,就是在课题的选择上,我更加偏向于选择自己感兴趣的课题,更加注意程序的实用性 八、心得体会 通过这次课程设计,我学会了很多的知识,我通过自学相关的书籍,浏览网站,接触了大量的编程知识,在编程过程中逐渐提升自己的自学能力,克服困难的能力。我觉得首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。 根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。
正在阅读:
C++课程设计 学生学籍管理系统05-15
中国联通公司提升服务质量的对策研究05-10
乡镇招商引资上半年工作总结及下半年工作打算(多篇范文)07-08
八年级历史下册材料题库(整理)06-01
浙教版数学八下第五章习题答案06-24
浅谈加强农村消防工作的几点思考05-25
医学检验师考试试题04-16
(目录)2017-2022年中国电力环保设备行业发展预测及投资咨询报03-08
初中数学中考常考知识点总结03-08
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- C++
- 学籍
- 管理系统
- 课程
- 学生
- 设计
- 新版教科版小学五年级下册科学全册教学设计(教案)2
- 消费者行为学复习资料市营2
- 2017年交警个人年度工作总结3篇
- 2016年福建省南平市中考物理试卷
- 幼儿园听课后评语
- 2017年液化石油气(LPG)行业现状及发展趋势分析 (目录)
- 中国组合音响行业现状研究分析及市场前景预测报告
- 广东省惠州市2011届高三第三次调研考试数学文科含详细答案
- 微机原理实验指导书1
- 孩子是种子,请静待花开!
- 2017学年九年级物理期中
- ACS800基本调试步骤
- Excel-12数据处理题库题目(20150330)
- AMP 六类综合布线方案
- 豌豆缓慢消化淀粉的制备及其性质研究
- (理综试题)珠海市2013年高三5月综合测试试题(二)解析
- 初中英语的句子成分及基本句型讲解 练习 答案
- 某三层宿舍楼毕业设计计算书
- 探伤工高级
- 家长请别“替”孩子成长!