10信科王炳松《数据结构课程设计报告》.docx

上传人:b****3 文档编号:26610783 上传时间:2023-06-20 格式:DOCX 页数:15 大小:180.25KB
下载 相关 举报
10信科王炳松《数据结构课程设计报告》.docx_第1页
第1页 / 共15页
10信科王炳松《数据结构课程设计报告》.docx_第2页
第2页 / 共15页
10信科王炳松《数据结构课程设计报告》.docx_第3页
第3页 / 共15页
10信科王炳松《数据结构课程设计报告》.docx_第4页
第4页 / 共15页
10信科王炳松《数据结构课程设计报告》.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

10信科王炳松《数据结构课程设计报告》.docx

《10信科王炳松《数据结构课程设计报告》.docx》由会员分享,可在线阅读,更多相关《10信科王炳松《数据结构课程设计报告》.docx(15页珍藏版)》请在冰豆网上搜索。

10信科王炳松《数据结构课程设计报告》.docx

10信科王炳松《数据结构课程设计报告》

福建农林大学计算机与信息学院

计算机类

课程设计报告

课程名称:

算法与数据结构

课程设计题目:

成绩管理系统

姓名:

王炳松

系:

信息与计算科学系

专业:

信息与计算科学

年级:

2010

学号:

102260003030

指导教师:

宁正元

职称:

教授

 

2011年1月20日

 

目录

1、数据结构课程设计任务书.............................................................................................1

1.1、题目....................................................................................................................1

1.2、要求....................................................................................................................1

2、总体设计......................................................................................................................1

2.1、功能模块设计......................................................................................................1

2.2、所有功能模块的流程图.........................................................................................2

3、详细设计.........................................................................................................................3

3.1、程序中所采用的数据结构及存储结构的说明.........................................................3

3.2、算法的设计思想....................................................................................................3

4、调试与测试:

.................................................................................................................4

4.1、调试方法与步骤:

.................................................................................................4

4.2、测试结果的分析与讨论:

.......................................................................................4

4.3、测试过程中遇到的主要问题及采取的解决措施:

..................................................6

5、源程序清单和执行结果...................................................................................................7

6、总结..............................................................................................................................11

7、参考文献......................................................................................................................11

 

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;p

if(m1==a[p].getnumber())

a[p].getstudent();

if(p>countp)

cout<<"您所输入的信息不对,无法查询"<

break;

case3:

//更改一个学生的信息

intm2,p1;

cout<<"请输入你要修改的学生的学号:

";

cin>>m2;

for(p1=0;p1

if(m2==a[p1].getnumber())

a[p1].change();

if(p1>countp)

cout<<"您所输入的信息不对,无法查询"<

break;

case4:

//查看所有学生的信息

intm3;

for(m3=0;m3

a[m3].getstudent();

break;

case5:

//查看一个学生的总成绩

intm4,p2;

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

";

cin>>m4;

for(p2=0;p2

if(m4==a[p2].getnumber()){

cout<<"该学生的总成绩是:

";

cout<

}

if(p>countp)

cout<<"您所输入的信息不对,无法查询"<

break;

case6:

//查看全班的平均分

intm5;

for(m5=0;m5

ava=ava+a[m5].getsub();

ava1=static_cast(ava);

cout<<"全班的平均成绩是:

"<<(ava1/countp)<

break;

case7:

//查看排名后的结果

intm6,m7;

for(m6=0;m6

for(m7=1;m7

student:

:

swap(a[m6],a[m7]);

for(m6=0;m6

cout<<"第"<

"<

a[m6].getstudent();

}

break;

case8:

//查看该班的及格率

intm8;

for(m8=0;m8

if(a[m8].getsub()>=180)

k++;

}

cout<<"该班的及格率是:

"<<(k/countp)*100<<"%"<

break;

case9:

//退出该操作系统

break;

}

}

return0;

}//主函数结束

6、总结

本程序在刚开始调试时有许多错误,但在我的努力及同学的帮助下都被一一克服,现在在操作本程序时可根据提示进行相关操作,能正确输出结果。

在刚开始的几次调试中曾经出现过不能运行、不会正确输出结果、不能进行循环练习等等问题。

经过我的努力及同学的帮助,这些问题得到克服,并且使程序的功能也得到了一定的完善,并且给出正确答案。

在这次设计过程中,不仅复习课本上所学知识,还通过查资料、问同学学到了课本上没有的知识。

从而启发我,要想写好程序,在写好课本知识的同时还需要多读和专业有关的一些书籍,同时还需要多动脑子,尽量把所学的知识综合起来应用,力争写出完美的程序。

除此之外,我还得到了一些有用的教训:

写程序时必须要细心,不能输错一个字符标点,就连全角半角也得注意。

在修改时要有耐心,编译出错后必须逐个错误去改正,绝不能心急浮躁,否则修改之后还会有新的错误。

7、参考文献

[1]严蔚敏,陈文博编著.数据结构及应用算法教程.北京:

清华大学出版社

[2]宁正元.数据结构-用C语言描述.北京:

中国水利水电出版社,2000

[3]苏仕华主编.数据结构自学辅导.北京:

清华大学出版社,2002

[4]宁正元,王秀丽.算法与数据结构.北京:

清华大学出版社,2006.

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1