程序设计.docx
- 文档编号:7577317
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:31
- 大小:729.55KB
程序设计.docx
《程序设计.docx》由会员分享,可在线阅读,更多相关《程序设计.docx(31页珍藏版)》请在冰豆网上搜索。
程序设计
课程设计报告
课程名称面向对象程序设计
课题名称高校学籍管理系统
专业通信工程
班级1101
学号201103020109
姓名杨耽
指导教师李峰、谭晓兰、张益星
2012年12月22日
湖南工程学院
课程设计任务书
课程名称面向对象程序设计
课题高校学籍管理系统
专业班级通信工程
学生姓名杨耽
学号201103020109
指导老师李峰、谭晓兰、张益星
审批
任务书下达日期2012年12月22日
任务完成日期2013年1月6日
一、设计内容与设计要求
1.课程设计目的:
面向对象程序设计课程设计是集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。
要求学生达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。
2.课题题目
⑴公司库存管理系统
⑵高校学籍管理系统
⑶高校工资管理系统
⑷高校人事管理系统
⑸文件加密管理系统
3.设计要求:
⑴设计课题题目:
第5个课题是扩展课题,有能力完成的同学可以选择。
其余每位同学根据自己学号除以4所得的余数加一选择相应题号的课题。
换题者不记成绩。
⑵根据自己对应的课题完成以下主要工作:
①完成系统需求分析:
包括系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。
②完成系统总体设计:
包括系统功能分析;系统功能模块划分与设计(系统功能模块图)。
③完成系统详细设计:
包括数据库需求分析;类层次图;界面设计与各功能模块实现。
④系统调试:
调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。
⑤使用说明书及编程体会:
说明如何使用你编写的程序,详细列出每一步的操作步骤。
⑥关键源程序(带注释)
⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。
⑷不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。
课题2:
高校学籍管理系统
(一)、课程设计题目:
高校学籍管理系统
(二)、目的与要求:
1、目的:
(1)要求学生达到熟练掌握C++语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:
(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)在系统的设计中,至少要用到面向对象的一种机制。
3、创新要求:
在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
4、写出设计说明书
(三)、设计方法和基本原理:
1、问题描述(功能要求):
(1)能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。
(2)能够将指定的信息从文件中删除。
(3)能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。
(4)可以统计全部学生的总成绩,及其在班上的排名。
(5)能够统计各科的平均成绩及及格率。
(6)要求有错误提示功能,例如性别只能输入男女,输入错误提示重新输入。
(7)如果检索不到相应的信息应提示用户。
(8)扩展要求:
能先行设置本学期的科目
每个学生信息应该包括:
姓名、学号、成绩
成绩信息应该包括:
科目数量、各科目名称、各科目成绩
2、问题的解决方案:
根据系统功能要求,可以将问题解决分为以下步骤:
(1)写出需求分析(做什么);
(2)分析系统中的各个实体之间的关系及其属性和行为;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述(包括属性和方法);
(5)完成类中各个成员函数的定义;
(6)用户界面的设计;
(7)分析系统功能模块(系统流程图);
(8)代码编写,功能调试;
(9)完成系统总结报告以及系统使用说明书。
目录
1.系统需求分析2
1.1.1.系统设计目的与意义2
1.1.2.系统功能需求(系统流程图)2
1.1.3.系统功能流程图3
1.1.4.输入输出的要求3
2。
总体设计3
2.1.系统功能分析3
2.2.系统功能结构图4
3.详细设计4
3.1.类设计:
4
4.系统调试6
4.1.首页进入学籍管理系统主菜单6
4.2录入学生信息界面:
7
4.3.显示学生信息界面7
4.4.查找学生信息界面8
4.5.删除学生信息界面9
4.6.修改学生信息9
4.7.统计学生信息10
4.8.统计学生信息11
5.结果分析11
6.总结11
7.附件(程序源代码)12
系统需求分析
1.1.1系统设计目的与意义
要求用C++面向程序设计语言编写一高校学籍管理系统,
1、目的:
1)要求学生达到熟练掌握C++语言的基本知识和技能;
2)基本掌握面向对象程序设计的基本思路和方法;
3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2.系统设计的意义:
系统要能够对相应的数据进行很好的测试,系统的统计对每一科的总成绩,平均成绩,及格律都进行了统计;系统数据的录入除可以手工录入外,还可以采用文件的录入;系统统计学生的基本信息较全面,包括学号,姓名,民族,政治面貌,身份证号,生日,性别,数学、英语、计算机的成绩;程序中查找运用了两种查找方式即学号查找和姓名查找。
1.1.2.系统功能需求(系统流程图)
1.要求完成以下功能:
1)能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。
2)能够将指定的信息从文件中删除。
3)能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。
4)可以统计全部学生的总成绩,及其在班上的排名。
5)能够统计各科的平均成绩及及格率。
6)要求有错误提示功能,例如性别只能输入男女,输入错误提示重新输入。
7)如果检索不到相应的信息应提示用户。
1.1.3.系统功能流程图
图1.1.3.系统功能流程图
1.1.4输入输出的要求
1.输入的要求:
通过主函数体调用其他函数应用系统主控界面包括学生信息录入,查找等功能模块。
学生信息录入功能完成学生信息和成绩的输入。
记录查询功能可以对数据各分类的记录进行查询。
2.输出的要求:
1)能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。
2)可以统计全部学生的总成绩,及其在班上的排名。
3)能够统计各科的平均成绩及及格率。
4)如果检索不到相应的信息应提示用户
总体设计
2.1系统功能分析
能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。
能够将指定的信息从文件中删除。
能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。
可以统计全部学生的总成绩,及其在班上的排名。
能够统计各科的平均成绩及及格率。
要求有错误提示功能,例如性别只能输入男女,输入错误提示重新输入。
如果检索不到相应的信息应提示用户。
2.2.系统功能结构图
图2.2.系统功能结构图
详细设计
3.1.类设计:
类:
student
数据成员
学号,姓名,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩
classstudent
{
protected:
intnumber;//学号
charname[20];//姓名
charsex[6];//性别
charplace[20];//籍贯
charnation[6];//民族
charbirth[20];//出生日期
charparty[10];//政治面貌
charid[20];//身份证号
floatscore[3];//成绩
类:
school
成员函数
录入函数input():
逐步输入学生信息;
修改函数mend():
按姓名或学号修改学生信息;
统计函数count():
统计各科的总成绩,计算平均成绩,统计各科的及格率;
查找函数found():
按学号或姓名查找学生的记录;
修改函数mend():
修改指定学号学生成绩记录;
删除函数del():
删除指定学号学生记录;
输出函数show():
输出班级所有学生成绩记录;
classschool
{
voidinput();//录入函数
voidmend();//修改函数
voiddel();//删除函数
intfind(student**p,intnum,char*pn="^");//子查找函数
voidfound();//查找函数
voidshow();//显示函数
voidcount();//统计函数
voidsave();//保存函数
voidbegin();//初始化函数
voidclear();//清空函数
charmainmenu();//主菜单函数
具体如下图所示:
图3.1.关于类的设计图
系统调试
4.1.首页进入学籍管理系统主菜单
图4.1.进入高校学籍管理系统界面框图
4.2录入学生信息界面:
图4.2.输入学生信息界面框图
4.3显示学生信息界面:
图4.3.显示学生信息界面框图
4.4.查找学生信息界面:
图4.4.查找学生信息界面框图
4.5.删除学生信息界面:
图4.5.删除学生信息界面框图
4.6.修改学生信息:
图4.6.修改学生信息界面框图
4.7统计学生信息:
图4.7.统计学生信息界面框图
4.8.保存学生信息界面:
图4.8.保存学生信息界面框图
结果分析
在总体设计上,整个程序没什么问题,但是在调试过程中,每次都会出现界面菜单,而且在查找时,要是输入错误的话,整个界面框都在不停闪动,无法停止,这是一个问题。
不过,总的来说,整个设计还是可以的。
6.总结
此次c++课程设计,在指导教师的精心教导下,我们学会了如何用C++编写一个简单的应用程序。
首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。
程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。
根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解和掌握。
理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。
我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。
7.附件(程序代码)
#include
#include
#include
#include
classstudent
{
protected:
intnumber;//学号
charname[20];//姓名
charsex[6];//性别
charplace[20];//籍贯
charnation[6];//民族
charbirth[20];//出生日期
charparty[10];//政治面貌
charid[20];//身份证号
floatscore[3];//成绩
public:
student*next;
student(){}
~student(){}
char*getname(){returnname;}
intgetnumber(){returnnumber;}
floatgetscore(inti){returnscore[i];}
floatgetg(){return(score[0]+score[1]+score[2]);}
//录入信息
voidinput()
{
inte=1;
cout<<"按提示输入:
"< cout<<"请输入学号: "; cin>>number; cout<<"请输入姓名: "; cin>>name; do { cout<<"请输入性别: "; cin>>sex; if(strcmp(sex,"男")==0||strcmp(sex,"女")==0) { cout<<"请输入籍贯: "; cin>>place; cout<<"请输入民族: "; cin>>nation; cout<<"请输入生日: "; cin>>birth; cout<<"请输入政治面貌: "; cin>>party; cout<<"请输入身份证号: "; cin>>id; cout<<"请输入数学分数: "; cin>>score[0]; cout<<"请输入英语分数: "; cin>>score[1]; cout<<"请输入计c++分数: "; cin>>score[2]; e=0; } else { cout<<"无此类型性别! 重新输入! "< e=1; } }while(e); return; } voidinput(ifstream&is) { is>>number>>name>>sex>>place>>nation>>birth>>party>>id >>score[0]>>score[1]>>score[2]; is.get(); } //显示信息 voidoutput() { cout<<"学生基本信息如下: "< cout<<"编号: "< <<"姓名: "< <<"性别: "< <<"籍贯: "< <<"民族: "< <<"生日: "< <<"政治面貌: "< <<"身份证号: "< <<"数学: "< <<"英语: "< <<"计算机: "< <<"总分: "< } voidoutput(ofstream&os) { os< < < < < < < < < < < } }; classschool { public: school(){head=newstudent;head->next=NULL;key=0;} ~school(){deletehead;} voidinput();//录入函数 voidmend();//修改函数 voiddel();//删除函数 intfind(student**p,intnum,char*pn="^");//子查找函数 voidfound();//查找函数 voidshow();//显示函数 voidcount();//统计函数 voidsave();//保存函数 voidbegin();//初始化函数 voidclear();//清空函数 charmainmenu();//主菜单函数 intgetkey(){returnkey;} voidsetkey(intk){key=k;} private: student*head; intkey; }; //录入函数 voidschool: : input() { student*p,*p2=NULL; p=head; intn; while(p->next) p=p->next; while(n) { p2=newstudent; p2->input(); p->next=p2; p2->next=NULL; p=p->next; school: : setkey (1); cout<<"按1继续,按0返回: "; cin>>n; } } //子查找函数 intschool: : find(student**p1,intnum,char*pn) { student*p; p=head; while(p->next) { (*p1)=p; if((p->next)->getnumber()==num||! strcmp((p->next)->getname(),pn)) return1; p=p->next; } return0; } //查找函数 voidschool: : found() { student*p; intnum=-1,n=9; charname[20]="^"; do { cout<<"1: 按学号查找,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<<"SORRY! 找不到你要查找的内容! "< return; } (p->next)->output(); } //删除函数 voidschool: : del() { student*p,*p2; intnum; cout<<"请输入学号: "; cin>>num; if(! find(&p,num,"^")) { cout<<"SORRY! 找不到你要删除的内容! "< return; } (p->next)->output(); p2=p->next; p->next=p2->next; deletep2; school: : setkey (1); } //显示函数 voidschool: : show() { student*p; p=head; while(p->next) { (p->next)->output(); p=p->next; } } //修改函数 voidschool: : mend() { student*p; intnum=-1,n; charname[20]="^"; do { cout<<"1: 按学号修改,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<<"SORRY! 找不到你要修改的内容! "< return; } (p->next)->output(); (p->next)->input(); school: : setkey (1); } //保存函数 voidschool: : save() { student*p; p=head; ofstreamos("student.txt",ios: : out); if(school: : getkey()==1) { while(p->next) { (p->next)->output(os); p=p->next; } } cout<<"文件已保存! "< school: : setkey(0); } //初始化函数 voidschool: : begin() { student*p,*p2; p=head; clear(); longt; ifstreamis("student.txt",ios: : in); if(! is) { ofstreamos("student.txt",ios: : out); os.close(); return; } intnum=-1; while (1) { num=-1; t=is.tellg(); is>>num; is.seekg(t); if(num<0) { is.close(); return; } p2=newstudent; p2->input(is); p->next=p2; p2->next=NULL; p=p->next; } } //清空函数 voidschool: : clear() { student*p,*p2; p=head->next; while(p) { p2=p; p=p->next; deletep2; } } //统计函数 voidschool: : count() { student*p; p=head; intn=0; doubleg[3]={0,0,0}; floatj[3]={0,0,0}; while(p->next) { p=p->next; n++; for(inti=0;i<3;i++) { g[i]=g[i]+(p->getscore(i)); (p->getscore(i))>=60? i++: 0; } } cout<<"数学总分: "< "< <<"及格率: "< "< <<"平均分: "< "< <<"计算机总分: "< "< <<"及格率: "< } //主选菜单函数 charschool: : mainmenu() { charn[6]; cout<<"\n\n☆☆☆☆欢迎进入高校学籍管理系统☆☆☆☆"< <<"****************************"< <<"**************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计
![提示](https://static.bdocx.com/images/bang_tan.gif)