10计本《数据结构课程设计报告》.docx
《10计本《数据结构课程设计报告》.docx》由会员分享,可在线阅读,更多相关《10计本《数据结构课程设计报告》.docx(16页珍藏版)》请在冰豆网上搜索。
10计本《数据结构课程设计报告》
安徽省巢湖学院计算机与信息工程学院
课程设计报告
课程名称《数据结构》
课题名称学生成绩管理系统
专业计算机科学与技术
班级10计本2班
学号
姓名
联系方式
指导教师江家宝
2011年12月26
目录
1、数据结构课程设计任务书1
1.1、题目1
1.2、要求1
2、总体设计1
2.1、功能模块设计1
2.2、所有功能模块的流程图1
3、详细设计1
3.1、程序中所采用的数据结构及存储结构的说明1
3.2、算法的设计思想2
4、调试与测试:
2
4.1、调试方法与步骤:
2
4.2、测试结果的分析与讨论:
2
4.3、测试过程中遇到的主要问题及采取的解决措施:
3
5、源程序清单和执行结果3
6、C程序设计总结7
7、致谢7
8、参考文献7
1、数据结构课程设计任务书
1.1、题目
成绩管理系统
1.2、要求
对一个班级的多门课程的成绩进行管理,能够实现一个班级学生信息的输入、输出、查找、删除、修改、排序、求平均分和及格率等操作。
2、总体设计
2.1、功能模块设计
根据课程设计题目的功能要求,各个功能模块的组成框图如下
2.2、所有功能模块的流程图
3、详细设计
3.1、程序中所采用的数据结构及存储结构的说明
定义一个学生类,其中包括学生的个人信息等私有成员,含有输入信息,查询信息等成员函数。
classstudent{
public:
student();
student(inta,stringb,stringc,intd,inte,intf,intg);
student(student&s);
intgetstudent();
intchange();
voidinput();
staticintgetcountp(){returncountp1;}
intgetnumber(){returnnumber;}
intgetsub(){returnChinese+Math+English;}
staticvoidswap(student&s1,student&s2);
private:
staticintcountp1;
intnumber;
stringname;
stringgender;
intage;
intChinese;
intMath;
intEnglish;
};
3.2、算法的设计思想
1、首先建立一个学生类,包含他的所有信息,比如学(number)、姓名(name)、性别(gender)、年龄(age)和各科的成绩(Chinese,math,English);
2、然后在编写相应的各个小的函数段,主要有添加(student(inta,stringb,stringc,intd,inte,intf,intg)),查找(intgetstudent()),修改(intchange()),排序等;
3、最后在main()函数中再利用switch()的选择功能对所需要执行的操作进行选择,主要有:
1、添加一个学生的信息
2、查询一个学生的信息
3、更改一个学生的信息
4、查看所有学生的信息
5、查看一个学生的总成绩
6、查看全班的平均分
7、查看排名后的结果
8、查看该班的及格率
9、退出该操作系统
4、调试与测试:
4.1、调试方法与步骤:
第一步:
添加学生信息
第二步:
查询一个学生信息
第三步:
更改一个学生信息
第四步:
查看所有学生信息
第五步:
查看一个学生的总成绩
第六步:
查看全班平均分
第七步:
查看排名后结果
第八步:
查看全班的及格率
第九步:
退出该操作系统
4.2、测试结果的分析与讨论:
(见下页)
4.3、测试过程中遇到的主要问题及采取的解决措施:
1、所输入的格式不符合要求,可能会导致输出的错误,这时应该重新输入
2、当输入的学号有重复的时候,在查找过程中就会发现,故而希望不要输入相同的学号
3、改程序还只是一些简单的处理过程的程序,若要想将其变得更加的完美,还希望大家多多帮忙
5、源程序清单和执行结果
#include
#include
usingnamespacestd;
classstudent{//类的定义
public:
student();//默认构造函数
student(inta,stringb,stringc,intd,inte,intf,intg);//构造函数
student(student&s);//复制构造函数
intgetstudent();//读取学生信息
intchange();//更改学生信息
voidinput();//输入学生信息
staticintgetcountp(){returncountp1;}//计算学生数
intgetnumber(){returnnumber;}//读取学生学号
intgetsub(){returnChinese+Math+English;}//读取学生总成绩
staticvoidswap(student&s1,student&s2);//交换学生信息
private:
staticintcountp1;//计数器(学生数)
intnumber;//学号
stringname;//姓名
stringgender;//性别
intage;//年龄
intChinese;//语文成绩
intMath;//数学成绩
intEnglish;//英语成绩
};
intstudent:
:
countp1=0;//静态常量
student:
:
student(){//默认构造函数的实现
number=0;name="wang";gender="nan";age=21;Chinese=0;Math=0;English=0;
}
student:
:
student(inta,stringb,stringc,intd,inte,intf,intg){//构造函数的实现
number=a;name=b;gender=c;age=d;Chinese=e;Math=f;English=g;
}
student:
:
student(student&s){//复制构造函数的实现
number=s.number;name=s.name;gender=s.gender;age=s.age;Chinese=s.Chinese;Math=s.Math;English=s.English;
}
intstudent:
:
change(){//更改学生信息函数的实现
charxx;
cout<<"请输入要改变的数据"<cout<<"a代表number,b代表name,c代表gender,"<cout<<"d代表age,e代表Chinese,f代表Math,g代表English"<cin>>xx;
cout<<"将信息更改为:
";
switch(xx){
case'a':
cin>>number;break;
case'b':
cin>>name;break;
case'c':
cin>>gender;break;
case'd':
cin>>age;break;
case'e':
cin>>Chinese;break;
case'f':
cin>>Math;break;
case'g':
cin>>English;break;
}
return0;
}
intstudent:
:
getstudent(){//读取学生信息函数的实现
cout<return0;
}
voidstudent:
:
input(){//输入学生信息函数的实现
cin>>number>>name>>gender>>age>>Chinese>>Math>>English;
countp1++;
}
voidstudent:
:
swap(student&s1,student&s2){//交换学生信息函数的实现
students3;
if(s1.getsub()s3=s1;
s1=s2;
s2=s3;
}
}
intmain(){//主函数
inti,n,ava=0;//定义变量
intcountp=0;
floatava1;
doublek=0;
studenta[100];
cout<<"*************************************************"<cout<<"☆欢迎来到学生成绩管理系统☆"<cout<<"*************************************************"<for(i=0;n!
=9;i++){//循环的实现
cout<<"*************************************************"<cout<<"请选择您要执行的操作:
"<cout<<"1、添加一个学生的信息2、查询一个学生的信息"<cout<<"3、更改一个学生的信息4、查看所有学生的信息"<cout<<"5、查看一个学生的总成绩6、查看全班的平均分"<cout<<"7、查看排名后的结果8、查看该班的及格率"<cout<<"9、退出该操作系统"<cout<<"*************************************************"<cin>>n;
switch(n){//switch语句的实现
case1:
//添加一个学生的信息
if(countp<100){
cout<<"学号"<<"姓名"<<"性别"<<"年龄"<<"语文成绩"<<"数学成绩"<<"英语成绩"<a[countp].input();
countp=student:
:
getcountp();
}
break;
case2:
//查询一个学生的信息
intm1,p;
cout<<"请输入你要查看的学生的学号:
";
cin>>m1;
for(p=0;pif(m1==a[p].getnumber())
a[p].getstudent();
if(p>countp)
cout<<"您所输入的信息不对,无法查询"<break;
case3:
//更改一个学生的信息
intm2,p1;
cout<<"请输入你要修改的学生的学号:
";
cin>>m2;
for(p1=0;p1if(m2==a[p1].getnumber())
a[p1].change();
if(p1>countp)
cout<<"您所输入的信息不对,无法查询"<break;
case4:
//查看所有学生的信息
intm3;
for(m3=0;m3a[m3].getstudent();
break;
case5:
//查看一个学生的总成绩
intm4,p2;
cout<<"请输入你要查看的学生的学号:
";
cin>>m4;
for(p2=0;p2if(m4==a[p2].getnumber()){
cout<<"该学生的总成绩是:
";
cout<}
if(p>countp)
cout<<"您所输入的信息不对,无法查询"<break;
case6:
//查看全班的平均分
intm5;
for(m5=0;m5ava=ava+a[m5].getsub();
ava1=static_cast(ava);
cout<<"全班的平均成绩是:
"<<(ava1/countp)<break;
case7:
//查看排名后的结果
intm6,m7;
for(m6=0;m6for(m7=1;m7student:
:
swap(a[m6],a[m7]);
for(m6=0;m6cout<<"第"<"<a[m6].getstudent();
}
break;
case8:
//查看该班的及格率
intm8;
for(m8=0;m8if(a[m8].getsub()>=180)
k++;
}
cout<<"该班的及格率是:
"<<(k/countp)*100<<"%"<break;
case9:
//退出该操作系统
break;
}
}
return0;
}//主函数结束
6、C程序设计总结
本程序在刚开始调试时有许多错误,但在我的努力及同学的帮助下都被一一克服,现在在操作本程序时可根据提示进行相关操作,能正确输出结果。
在刚开始的几次调试中曾经出现过不能运行、不会正确输出结果、不能进行循环练习等等问题。
经过我的努力及同学的帮助,这些问题得到克服,并且使程序的功能也得到了一定的完善,并且给出正确答案。
在这次设计过程中,不仅复习课本上所学知识,还通过查资料、问同学学到了课本上没有的知识。
从而启发我,要想写好程序,在写好课本知识的同时还需要多读和专业有关的一些书籍,同时还需要多动脑子,尽量把所学的知识综合起来应用,力争写出完美的程序。
除此之外,我还得到了一些有用的教训:
写程序时必须要细心,不能输错一个字符标点,就连全角半角也得注意。
在修改时要有耐心,编译出错后必须逐个错误去改正,绝不能心急浮躁,否则修改之后还会有新的错误。
7、致谢
在本次课程设计中,江家宝老师对该课程设计从选题、构思到最后的各个环节给予信息指引和教导,使我最总得以完成该课程设计,在学习中,老师严谨的教学态度、丰富的渊博知识、敏锐的学术思维,精益求精的工作态度以及诲人不倦的师者风范,是我学习冬风楷模,导师们的高深精湛的造诣和严谨求实的治学精神将永远激励着我。
还有,能够完成这次课程设计必须感谢数据机构老师蔡敏和C++语言课程老师许荣泉。
最后,我还要向在百忙之中抽出时间为我批阅该设计报告的老给予最真诚的感谢。
8、参考文献
[1]郑莉,董渊,何江舟,C++语言程序设计,北京:
清华大学出版社,2010.7
[2]谭浩强,C程序设计(第二版),北京:
清华大学出版社,2001.1
[3]苏仕华,魏韦巍,数据结构课程设计(第二版),机械工业出版社,2010,3
[4]严蔚敏,吴伟民,数据结构(c语言版),北京,清华大学出版社,2010,10
[5]