兰州理工c++课设报告.docx
- 文档编号:29009618
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:38
- 大小:446.29KB
兰州理工c++课设报告.docx
《兰州理工c++课设报告.docx》由会员分享,可在线阅读,更多相关《兰州理工c++课设报告.docx(38页珍藏版)》请在冰豆网上搜索。
兰州理工c++课设报告
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2011年春季学期
面向对象课程设计
题目:
学生学籍管理系统
专业班级:
计算机科学与技术1班
姓名:
刘守宁
学号:
10240129
指导教师:
成绩:
摘要
学籍管理系统设计涉及学生信息的录入,显示,查找,删除,修改,统计,保存,退出等功能,从而能够对信息进行处理。
程序中运用了相关类的知识,同时定义了一定数量的数据及成员函数。
程序使用了数组记录统计的相关数据,运用了指针实现相应功能函数的功能,运用了student,school两个类实现面向对象的要求。
程序的完成涉及到程序的分析,模块的分解,程序的控制,程序的调试。
关键词:
学籍管理;面向对象;程序控制;类
目录
一、需求分析1
二、总体设计2
三、详细设计3
1、数据定义3
2、算法流程图4
四、编码7
五、测试8
六、设计总结12
致谢13
参考文献14
附录15
一、需求分析
本系统依据开发要求主要应用于教育系统,完成对日常的教育工作中学生成绩档案的数字化管理。
开发本系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理,以及国家各部门关于信息化的步伐,使各项管理更加规范化。
目前,学校工作繁杂、资料重多,虽然各类管理信息系统已进入高校,但还未普及,而对于学生成绩管理来说,目前还没有一套完整的、统一的系统。
因此,开发一套适和大众的、兼容性好的系统是很有必要的。
本系统在开发过程中,注意使其符合操作的业务流程,并力求系统的全面性、通用性,使得本系统不只适用于一家教育机构。
在开发方法的选择上,选择了生命周期法与原型法相结合的方法,遵循系统调查研究、系统分析、系统设计和系统实施四个主要阶段进行设计,而在具体的设计上,采取了演化式原型法,随着用户的使用及对系统了解的不断加深,对某一部分或几部分进行重新分析、设计、实施。
二、总体设计
根据需求分析,先将系统分为如图1所示的模块
图1学生学籍管理系统模块图
三、详细设计
1、数据定义
floatyw;//语文成绩
floatsx;//数学成绩
floatyy;//英语成绩
floatwl;//物理成绩
floatcjj;//C++成绩
floatsum;//总成绩
floatavar;//平均成绩
floatzxf;//实得总学分
structscore*next;//定义结构指针next
classstudent
student:
:
student(intM,intN,charS[2],floatchj[15])
2、算法流程图
1)主函数流程图如图2所示。
图2主函数流程图
2)增加函数流程图如图3所示。
图3增加函数流程图
3)修改函数流程图如图4所示。
图4修改函数流程图
4)查询函数流程图如图5所示。
图5查询函数流程图
5)录入函数流程图如图6所示。
图6录入函数流程图
6)统计函数流程图如图7所示。
图7统计函数流程图
四、编码
函数声明:
voidinput(student*head);//录入数据
voidAsearch(student*head);//学生基本信息查询
voidBsearch(student*head);//成绩查询
voidchange(student*head);//修改数据
voidshanchu(student*head);//删除数据
voidtongji(student*head);//统计数据
voidshow(student*head);//显示数据
voiddisplay();//显示菜单
floatsdxfjs(floatzhcj,floatxf);//计算实得学分
五、测试
1.主菜单
2.学生数据初始化
3.学生数据修改
4.学生信息显示
5.学生信息查询
6.学生信息统计
7.学生信息删除
六、设计总结
此次c++课程设计,在指导教师的精心教导下,我们学会了如何用C++编写一个简单的应用程序。
首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。
程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。
根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解和掌握。
理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。
我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。
致谢
不多于100字
参考文献
[1]陈雪飞《C++实例入门》,中国青年出版社,2004年5月出版
[2]谭浩强编,《C++面向对象程序设计》,清华大学出版社,2005年7月出版
[3]李师贤等译,《C++精髓》,机械工业出版社,2002年8月出版
[4]韩滨魏海萍,《C++类库使用手册》,电子工业出版社,2007年7月出版
[5]陈灿煌,《C++彻底研究》中国青年出版社,2005年9月出版。
附录
#include
#include
#include
usingnamespacestd;
////////////学生成绩结构体////////////
structscore
{
floatyw;//语文成绩
floatsx;//数学成绩
floatyy;//英语成绩
floatwl;//物理成绩
floatcjj;//C++成绩
floatsum;//总成绩
floatavar;//平均成绩
floatzxf;//实得总学分
structscore*next;//定义结构指针next
};
////////////学生数据类////////////
classstudent
{
public:
student(intM,intN,charS[2],floatchj[15]);//构造函数
student(){}
~student(){}//析构函数
intmun;//学号
intname;//姓名
stringsex;//性别
scorexf;//学分
scorepscj;//平时成绩
scorejmcj;//卷面成绩
scorezhcj;//综合成绩;
scoresdxf;//实得学分
scoresdzxf;//实得总学分
classstudent*next;//定义结构指针next
};
student:
:
student(intM,intN,charS[2],floatchj[15])
{
mun=M;name=N;sex=S;
pscj.yw=chj[0];jmcj.yw=chj[1];xf.yw=chj[2];
pscj.sx=chj[3];jmcj.sx=chj[4];xf.sx=chj[5];
pscj.yy=chj[6];jmcj.yy=chj[7];xf.yy=chj[8];
pscj.wl=chj[9];jmcj.wl=chj[10];xf.wl=chj[11];
pscj.cjj=chj[12];jmcj.cjj=chj[13];xf.cjj=chj[14];
}
#include
#include
#include
usingnamespacestd;
intamount=0;//记录学生个数
//////////////显示菜单////////////////
voiddisplay()
{
cout<<"/////////////学生学籍管理系统/////////////"< cout<<"////////1、学生数据初始化////////"< cout<<"////////2、学生数据的修改////////"< cout<<"////////3、学生信息的显示////////"< cout<<"////////4、学生信息的查询////////"< cout<<"////////5、学生成绩的统计////////"< cout<<"////////6、学生信息的删除////////"< cout<<"////////7、退出系统////////"< cout<<"注: 请输入相应括号里的数字来执行相关的操作! "< cout<<"///////欢迎您使用学生学籍管理系统! ///////"< cout<<"请选择相应的数字进行操作: "< } ////////////////显示学生数据////////////////// voidshow(student*head) { student*stu=head->next; while(stu! =NULL) { cout<<"学号: "<<(*stu).mun< "<<(*stu).name< "<<(*stu).sex< cout<<"|课程编号|课程名称|平时成绩|卷面成绩|综合成绩|应得学分|实得学分"< cout<<"|"<<"001"<<"|"<<"语文"<<"|"< cout<<"|"< cout<<"|"<<"002"<<"|"<<"数学"<<"|"< cout<<"|"< cout<<"|"<<"003"<<"|"<<"英语"<<"|"< cout<<"|"< cout<<"|"<<"004"<<"|"<<"物理"<<"|"< cout<<"|"< cout<<"|"<<"005"<<"|"<<"C++"<<"|"< cout<<"|"< cout<<"所有课目的总成绩为: "<<(*stu).zhcj.sum<<""; cout< "<<(*stu).zhcj.avar< cout<<"该学生共修: "<<"5科"<<""<<"实得总学分为: "<<(*stu).sdzxf.zxf< stu=stu->next; } } ////////////////学生数据初始化///////////////// voidinput(student*head) { intj=1,x=200701,y=101; student*p=head; do { floatchengji[15]={86-j,87-j,4,96-j,95-j,4,60+j,45+j,4,66+j,67+j,4,77-j,78-j,4}; student*stu=newstudent(x,y,"男",chengji);//动态创建对象,调用有参数的构造函数进行初始化学生学籍管理系统的数据 stu->next=p->next; p->next=stu; p=p->next; ///////////////////////综合成绩的计算///////////////////// (*stu).zhcj.yw=((*stu).pscj.yw)*0.30+((*stu).jmcj.yw)*0.70; (*stu).zhcj.sx=((*stu).pscj.sx)*0.30+((*stu).jmcj.sx)*0.70; (*stu).zhcj.yy=((*stu).pscj.yy)*0.30+((*stu).jmcj.yy)*0.70; (*stu).zhcj.wl=((*stu).pscj.wl)*0.30+((*stu).jmcj.wl)*0.70; (*stu).zhcj.cjj=((*stu).pscj.cjj)*0.30+((*stu).jmcj.cjj)*0.70; /////////////////总成绩和平均成绩的计算//////////////////// (*stu).zhcj.sum=(*stu).zhcj.yw+(*stu).zhcj.sx+(*stu).zhcj.yy+(*stu).zhcj.wl+(*stu).zhcj.cjj; (*stu).zhcj.avar=(*stu).zhcj.sum/5.0; ////////////////////实得学分的计算//////////////// (*stu).sdxf.yw=sdxfjs((*stu).zhcj.yw,(*stu).xf.yw); (*stu).sdxf.sx=sdxfjs((*stu).zhcj.sx,(*stu).xf.sx); (*stu).sdxf.yy=sdxfjs((*stu).zhcj.yy,(*stu).xf.yy); (*stu).sdxf.wl=sdxfjs((*stu).zhcj.wl,(*stu).xf.wl); (*stu).sdxf.cjj=sdxfjs((*stu).zhcj.cjj,(*stu).xf.cjj); (*stu).sdzxf.zxf=(*stu).sdxf.yw+(*stu).sdxf.sx+(*stu).sdxf.yy+(*stu).sdxf.wl+(*stu).sdxf.cjj; j++;x++;y++; }while(j<=20);//控制初始化人数 } ////////////////学生的基本信息查询/////////////////// voidAsearch(student*head) { charc; intname; do { student*stu=head->next; boolflag=0; cout<<"请输入你要查询学生的姓名: "; cin>>name; do { if(stu! =NULL&&name==(*stu).name)//输出查询学生的基本信息 { flag=1; cout<<"学号: "<<(*stu).mun< "<<(*stu).name< "<<(*stu).sex< cout<<"|课程编号|课程名称|平时成绩|卷面成绩|综合成绩|应得学分|实得学分"< cout<<"|"<<"001"<<"|"<<"语文"<<"|"< cout<<"|"< cout<<"|"<<"002"<<"|"<<"数学"<<"|"< cout<<"|"< cout<<"|"<<"003"<<"|"<<"英语"<<"|"< cout<<"|"< cout<<"|"<<"004"<<"|"<<"物理"<<"|"< cout<<"|"< cout<<"|"<<"005"<<"|"<<"C++"<<"|"< cout<<"|"< cout<<"所有课目的总成绩为: "<<(*stu).zhcj.sum<<""; cout< "<<(*stu).zhcj.avar< cout<<"该学生共修: "<<"5科"<<""<<"实得总学分为: "<<(*stu).sdzxf.zxf< } stu=stu->next; }while(stu! =NULL); if(flag==0) cout<<"/////对不起! 您要查询的学生信息已经被删除或不存在! /////"< cout<<"您想继续查询吗? (y/n)"; cin>>c; while(c! ='y'&&c! ='n') { cout<<"//////指令错误(请输入y或者n! )//////"< cout<<"您想继续查询吗? (y/n)"; cin>>c; } }while(c=='y'); } ///////////////////学生成绩查询/////////////////// voidBsearch(student*head) { charc; intxh; do { student*stu=head->next; boolflag=0; cout<<"请输入您要查询的学生学号: "; cin>>xh; do { if(stu! =NULL&&xh==(*stu).mun)//输出查询学生的成绩信息 { flag=1; cout<<"学号: "<<(*stu).mun< "<<(*stu).name< cout<<"|课程编号|课程名称|平时成绩|卷面成绩|综合成绩|应得学分|实得学分"< cout<<"|"<<"001"<<"|"<<"语文"<<"|"< cout<<"|"< cout<<"|"<<"002"<<"|"<<"数学"<<"|"< cout<<"|"< cout<<"|"<<"003"<<"|"<<"英语"<<"|"< cout<<"|"< cout<<"|"<<"004"<<"|"<<"物理"<<"|"<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 兰州 理工 c+ 报告