学生成绩管理系统c程序设计报告1.docx

上传人:b****6 文档编号:13840065 上传时间:2023-06-17 格式:DOCX 页数:40 大小:481.03KB
下载 相关 举报
学生成绩管理系统c程序设计报告1.docx_第1页
第1页 / 共40页
学生成绩管理系统c程序设计报告1.docx_第2页
第2页 / 共40页
学生成绩管理系统c程序设计报告1.docx_第3页
第3页 / 共40页
学生成绩管理系统c程序设计报告1.docx_第4页
第4页 / 共40页
学生成绩管理系统c程序设计报告1.docx_第5页
第5页 / 共40页
学生成绩管理系统c程序设计报告1.docx_第6页
第6页 / 共40页
学生成绩管理系统c程序设计报告1.docx_第7页
第7页 / 共40页
学生成绩管理系统c程序设计报告1.docx_第8页
第8页 / 共40页
学生成绩管理系统c程序设计报告1.docx_第9页
第9页 / 共40页
学生成绩管理系统c程序设计报告1.docx_第10页
第10页 / 共40页
学生成绩管理系统c程序设计报告1.docx_第11页
第11页 / 共40页
学生成绩管理系统c程序设计报告1.docx_第12页
第12页 / 共40页
学生成绩管理系统c程序设计报告1.docx_第13页
第13页 / 共40页
学生成绩管理系统c程序设计报告1.docx_第14页
第14页 / 共40页
学生成绩管理系统c程序设计报告1.docx_第15页
第15页 / 共40页
学生成绩管理系统c程序设计报告1.docx_第16页
第16页 / 共40页
学生成绩管理系统c程序设计报告1.docx_第17页
第17页 / 共40页
学生成绩管理系统c程序设计报告1.docx_第18页
第18页 / 共40页
学生成绩管理系统c程序设计报告1.docx_第19页
第19页 / 共40页
学生成绩管理系统c程序设计报告1.docx_第20页
第20页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

学生成绩管理系统c程序设计报告1.docx

《学生成绩管理系统c程序设计报告1.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统c程序设计报告1.docx(40页珍藏版)》请在冰点文库上搜索。

学生成绩管理系统c程序设计报告1.docx

学生成绩管理系统c程序设计报告1

 

内蒙古科技大学

本科生课程设计说明书

 

题目:

面向对象课程设计

——学生成绩管理系统

学生姓名:

****

学号:

*********

专业:

计算机科学与技术

班级:

11级-3班

指导教师:

**

2013年1月6日

内蒙古科技大学课程设计任务书

课程名称

面向对象课程设计

设计题目

学生成绩管理系统

指导教师

**

时间

2012.12.31——2013.1.4

一、教学要求

1.巩固和加深学生对C++面向对象课程的基本知识的理解和掌握

2.掌握C++面向对象课程和程序调试的基本技能

3.利用C++进行基本的软件设计

4.掌握书写程序设计说明文档的能力

5.提高运用C++解决实际问题的能力

二、设计资料及参数

每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。

某班学生成绩管理,包括以下功能:

v从键盘输入包括学号、姓名、各门课程成绩(不少于5门),并将其保存在磁盘文件里

v打开文件后,计算每个人的总分和平均分,排序并保存

v具有单项查询或多项查询的功能(即按照给定的关键字,如姓名找出满足条件的纪录)

v具有插入、删除和修改功能

v具有输出文件数据信息的功能

三、设计要求及成果

1.分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)

2.写出详细设计说明(至少包括功能实现分析和模块流程图)

3.编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少3个函数,每人至少200行代码,不包括注释和花括号)

4.设计完成的软件要便于操作和使用

5.设计完成后提交课程设计报告(请严格按照模板进行排版)

四、进度安排

第一天选择课程设计题目,分析课题的要求

第二天编程

第三天编程及调试

第四天写课程设计报告

第五天提交课程设计报告(打印稿及电子稿)

五、评分标准

1.根据平时上机考勤、表现和进度,教师将每天点名和检查

2.根据课程设计完成情况,必须有可运行的软件。

3.根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。

六、建议参考资料

1.《C++面向对象程序设计》,吴敏杨国林,内蒙古大学出版社

2.《C++面向对象程序设计习题解答与实验指导》,吴敏,内蒙古大学出版社

 

第一章需求分析

1.1引言

建立学生成绩管理系统,通过使用计算机对学生成绩进行管理,进一步提高办学效率。

此设计说明书是对学生成绩管理系统开发的一个初步的分析说明性文档,旨在通过该文档清晰的阐述系统的实际功能,方便系统开发人员对系统的理解以及与用户的沟通。

文档相关说明部分在目录部分已全部涵盖,阅读此文档的相关人员可以通过目录索引找到相应部分予以阅读。

1.2任务概述

某班学生成绩管理,包括以下功能:

v从键盘输入包括学号、姓名、各门课程成绩(不少于5门),并将其保存在磁盘文件里

v打开文件后,计算每个人的总分和平均分,排序并保存

v具有单项查询或多项查询的功能(即按照给定的关键字,如姓名找出满足条件的纪录)

v具有插入、删除和修改功能

v具有输出文件数据信息的功能

1.3数据描述

该管理系统程序中数据主要有:

学生的学号、姓名、各门课程成绩、每个人的总分和平均分、查询、输出、插入、删除和修改等功能。

1.4功能需求

(1)输入模块:

有关学生的信息,各门课程成绩的输入;

(2)输出模块:

学生成绩的总分和平均分;

(3)查找模块:

根据学生的姓名查询该学生的名次、成绩;

(4)排序模块:

对学生成绩的排序;

1.5性能需求

(1)要求该管理系统具有一定的可扩展性以便适应发展,且便于维护;

(2)要求该管理系统便于使用,使用步骤简易明了。

1.6运行需求

基于windows平台下的窗口图形界面软件,运行主界面为windows的经典运行界面,采用多文档界面,从而使程序更加美观,整齐有序,简易操作。

软件运行基于windows平台上的xp,Vista,win7等

1.7任务计划

第一天选择课程设计题目,分析课题的要求

第二天编程

第三天编程及调试

第四天写课程设计报告

第五天提交课程设计报告(打印稿及电子稿)

 

第二章概要设计

2.1总体设计

设计目的:

1.巩固和加深学生对面向对象课程的基本知识的理解和掌握

2.掌握面向对象设计语言编程和程序调试的基本技能

3.利用面向对象设计语言进行基本的软件设计

4.掌握书写程序设计说明文档的能力

5.提高运用面向对象设计语言解决实际问题的能力

 

 

图2.1:

程序总体设计图

 

2.2数据类型设计(或数据结构设计)

表2.1:

数据类型设计

数据

数据类型

学生各门课程成绩

int型

学号

姓名

字符型变量

平均分

浮点型数据

姓名

字符型变量

2.3接口设计

表2.2:

函数列表

函数名

函数格式//即函数首部

函数功能

getdata

void

输入学生信息

sort

void

按照成绩总分排序

disp

void

显示结果

initdisp

void

初始化界面

adddata

void

添加学生记录

namefind

void

按照姓名查找记录

dispone

void

显示一个学生的记录

usechoice

int

根据用户选择获取不同的操作

inputonename

int

输入一个学生的姓名

dele

void

删除学生记录

showaver

void

显示学生平均分

quit

void

退出系统

 

2.3运行界面设计

图2.2:

运行界面设计

 

第三章详细设计

3.1输入模块设计

输入学生信息:

voidcompute:

:

getdata()

{

inti,sno;

floatEn,Ch,Ma,Ph,Ge,Tol;

chartname[10];

cout<<"Pleaseinputtheamountsofstudents!

";

cin>>ns;

for(i=0;i

{

cout<<"Inputthestudent'sNO:

";

cin>>sno;

na[i].setNo(sno);

cout<<"Inputthestudent'sname:

";

cin>>tname;

na[i].setname(tname);

cout<<"Inputthestudent'sEnglishscore:

";

cin>>En;

sumEng=sumEng+En;

na[i].setEng(En);

cout<<"Inputthestudent'sChinesescore:

";

cin>>Ch;

sumChi=sumChi+Ch;

na[i].setChi(Ch);

cout<<"Inputthestudent'sMathsscore:

";

cin>>Ma;

sumMat=sumMat+Ma;

na[i].setMat(Ma);

cout<<"Inputthestudent'sPhysicsscore:

";

cin>>Ph;

sumPhy=sumPhy+Ph;

na[i].setPhy(Ph);

cout<<"Inputthestudent'sGeographyscore:

";

cin>>Ge;

sumGeo=sumGeo+Ge;

na[i].setGeo(Ge);

Tol=En+Ch+Ma+Ph+Ge;

na[i].settotal(Tol);

}

}

3.2输出模块设计

显示输出结果:

voidcompute:

:

disp()

{

cout<<"List"<<"NO"<<"Name"<<"English"<<"Chinese"<<"Maths"<<"Physics"<<"Geography"<<"Total"<

for(inti=0;i

{

cout<

<

}

}

显示一个学生的记录:

voidcompute:

:

dispone(inti)

{

cout<<"List"<<"NO"<<"Name"<<"English"<<"Chinese"<<"Maths"<<"Total"<

cout<<1<<""<

<

}

显示学生平均分:

voidcompute:

:

showaver(intnum)

{

inti;

for(i=0;i

{

if(na[i].getNo()==num)

{

cout<<"学号:

"<

cout<<"姓名:

"<

}

}

}

3.3查找模块设计

按照姓名查找学生:

voidcompute:

:

namefind(intnum)

{

inti;

for(i=0;i

{

if(na[i].getNo()==num)

{

dispone(i);

}

}

if(i>=ns)

{

cout<<"没有您要查的记录"<

}

}

按照学号查找学生:

intcompute:

:

inputonename()

{

intnum;

cout<<"请输入要查找的学生学号:

";

cin>>num;

returnnum;

}

3.4排序模块设计

按照成绩进行排序:

voidcompute:

:

sort()//直接选择排序

{

inti,j,pick;

stdtemp;

for(i=0;i

{

pick=i;

for(j=i+1;j

{

if(na[j].gettotal()>na[pick].gettotal())

pick=j;

}

temp=na[i];

na[i]=na[pick];

na[pick]=temp;

}

}

3.5添加模块设计

添加学生记录:

voidcompute:

:

adddata()

{

inti,sno;

floatEn,Ch,Ma,Ph,Ge,Tol;

chartname[10];

if(ns==0)

{

cout<<"请先选择1添加数据,然后在选择2增加记录"<

return;

}

cout<<"请输入要添加的学生记录";

cin>>addns;

for(i=0;i

{

cout<<"Inputthestudent'sNO:

";

cin>>sno;

na[ns+i].setNo(sno);

cout<<"Inputthestudent'sname:

";

cin>>tname;

na[ns+i].setname(tname);

cout<<"Inputthestudent'sEnglishscore:

";

cin>>En;

sumEng=sumEng+En;

na[ns+i].setEng(En);

cout<<"Inputthestudent'sChinesescore:

";

cin>>Ch;

sumChi=sumChi+Ch;

na[ns+i].setChi(Ch);

cout<<"Inputthestudent'sMathsscore:

";

cin>>Ma;

sumMat=sumMat+Ma;

na[ns+i].setMat(Ma);

cout<<"Inputthestudent'sPhysicsscore:

";

cin>>Ph;

sumPhy=sumPhy+Ph;

na[ns+i].setPhy(Ph);

cout<<"Inputthestudent'sGeographyscore:

";

cin>>Ge;

sumGeo=sumGeo+Ge;

na[ns+i].setGeo(Ge);

Tol=En+Ch+Ma+Ph+Ge;

na[ns+i].settotal(Tol);

}

ns=ns+addns;

}

3.6删除模块设计

删除学生记录:

voidcompute:

:

dele(intnum)

{

inti,cunt,flag=0;

//学号是否存在

if(num<0)

{

cout<<"超出学号范围"<

return;

}

for(i=0;i

{

if(na[i].getNo()==num)

{

//记录该学号在数组中的位置

cunt=i;

flag=1;

}

}

if(!

flag)

{

cout<<"学号不存在"<

return;

}

for(i=cunt;i

{

na[i].setname(na[i+1].getname());

na[i].setNo(na[i+1].getNo());

na[i].setEng(na[i+1].getEng());

na[i].setChi(na[i+1].getChi());

na[i].setMat(na[i+1].getMat());

na[i].setPhy(na[i+1].getPhy());

na[i].setGeo(na[i+1].getGeo());

na[i].settotal(na[i+1].gettotal())

;

}

ns=ns-1;

}

3.7退出模块设计

退出系统:

voidcompute:

:

quit()

{

FLAG=0;

cout<<"程序在3秒后关闭……"<

_sleep(1000);

cout<<"还剩2秒……"<

_sleep(1000);

cout<<"还剩1秒……"<

_sleep(1000);

return;

}

第四章测试分析

4.1测试程序执行情况

图4.1:

运行主界面

图4.2:

输入学生信息

图4.3:

添加学生记录

图4.4:

按照学号查找学生记录

图4.5:

按照总分排序

图4.6:

学生各科平均分

图4.7:

学生成绩信息记录

图4.8:

删除学生信息

图4.9:

退出学生成绩管理系统

4.2出现的问题和解决的方法

1、多次出现未知标示符,导致程序无法正常运行:

发现打代码时,没有把简写字母打上,加上简写字母后,程序运行正常。

 

第五章课程设计总结

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在是生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握计算机开发技术十分重要的。

我的课设题目是学生成绩管理系统,对于刚刚接触C语言的学生来说也是有一定难度的。

如何将课堂所学和实践相结合是我们此次课设最为重要的一部分,将所学的知识应用到实践中才是我们真正的将知识学到我们自己的脑子里。

回顾此次课设,感受颇多,从开始课设到课设结束,确实学到了很多东西,不仅巩固了以前学到的知识,更是学到了很多以前未接触过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到的问题,可以说是困难重重,第一次做课设,无法避免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计后,把以前所学过的知识都重新温故。

在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。

一时的失意不算什么,只要能坚持下去,就一定会成功的。

感谢这次课设让我明白很多,了解很多,同时也改变很多。

 

附录:

程序代码

#include

#include

#include

#defineN10000

intFLAG=1;

classstd

{

intNo;

charname[10];

floatEng;

floatChi;

floatMat;

floatPhy;

floatGeo;

floattotal;

public:

voidsetname(charna[])

{

strcpy(name,na);

};

voidsetNo(intn)

{

No=n;

};

voidsetEng(floate)

{

Eng=e;

};

voidsetChi(floatc)

{

Chi=c;

};

voidsetMat(floatm)

{

Mat=m;

};

voidsetPhy(floatp)

{

Phy=p;

};

voidsetGeo(floatg)

{

Geo=g;

};

voidsettotal(floatt)

{

total=t;

};

char*getname()

{

returnname;

};

intgetNo()

{

returnNo;

};

floatgetEng()

{

returnEng;

};

floatgetChi()

{

returnChi;

};

floatgetMat()

{

returnMat;

};

floatgetPhy()

{

returnPhy;

};

floatgetGeo()

{

returnGeo;

};

floatgettotal()

{

returntotal;

};

};

classcompute

{

intns;

intaddns;

stdna[N];

staticfloatsumEng;

staticfloatsumChi;

staticfloatsumMat;

staticfloatsumPhy;

staticfloatsumGeo;

public:

voidgetdata();//输入数据

voidsort();//按照成绩总分进行排序

voiddisp();//显示结果

voidinitdisp();//初始化界面

intusechoice();//根据用户选择获取不同的操作

voidadddata();//添加学生记录

voidnamefind(int);//按照姓名查找记录

voiddispone(inti);//显示一个学生的记录

intinputonename();//输入一个学生的姓名

voiddele(intnum);//删除学生记录

voidshowaver(intnum);//显示学生平均分

voidquit();//退出系统

compute()

{

ns=0;

}

floataveEng()

{

returnsumEng/ns;

}

floataveChi()

{

returnsumChi/ns;

}

floataveMat()

{

returnsumMat/ns;

}

floatavePhy()

{

returnsumPhy/ns;

}

floataveChem()

{

returnsumGeo/ns;

}

intgetns()

{

returnns;

}

};

floatcompute:

:

sumEng=0.0;

floatcompute:

:

sumChi=0.0;

floatcompute:

:

sumMat=0.0;

floatcompute:

:

sumPhy=0.0;

floatcompute:

:

sumGeo=0.0;

voidcompute:

:

getdata()

{

inti,sno;

floatEn,Ch,Ma,Ph,Ge,Tol;

chartname[10];

cout<<"Pleaseinputtheamountsofstudents!

";

cin>>ns;

for(i=0;i

{

cout<<"Inputthestudent'sNO:

";

cin>>sno;

na[i].setNo(sno);

cout<<"Inputthestudent'sname:

";

cin>>tname;

na[i].setname(tname);

cout<<"Inputthestudent'sEnglishscore:

";

cin>>En;

sumEng=sumEng+En;

na[i].setEng(En);

co

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2