学生作业完成情况管理程序Word下载.doc

上传人:wj 文档编号:6985465 上传时间:2023-05-07 格式:DOC 页数:13 大小:125KB
下载 相关 举报
学生作业完成情况管理程序Word下载.doc_第1页
第1页 / 共13页
学生作业完成情况管理程序Word下载.doc_第2页
第2页 / 共13页
学生作业完成情况管理程序Word下载.doc_第3页
第3页 / 共13页
学生作业完成情况管理程序Word下载.doc_第4页
第4页 / 共13页
学生作业完成情况管理程序Word下载.doc_第5页
第5页 / 共13页
学生作业完成情况管理程序Word下载.doc_第6页
第6页 / 共13页
学生作业完成情况管理程序Word下载.doc_第7页
第7页 / 共13页
学生作业完成情况管理程序Word下载.doc_第8页
第8页 / 共13页
学生作业完成情况管理程序Word下载.doc_第9页
第9页 / 共13页
学生作业完成情况管理程序Word下载.doc_第10页
第10页 / 共13页
学生作业完成情况管理程序Word下载.doc_第11页
第11页 / 共13页
学生作业完成情况管理程序Word下载.doc_第12页
第12页 / 共13页
学生作业完成情况管理程序Word下载.doc_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

学生作业完成情况管理程序Word下载.doc

《学生作业完成情况管理程序Word下载.doc》由会员分享,可在线阅读,更多相关《学生作业完成情况管理程序Word下载.doc(13页珍藏版)》请在冰点文库上搜索。

学生作业完成情况管理程序Word下载.doc

2、2.输入输出的要求 6

3、3.测试数据 6

二、概要设计 7

4、1.程序设计组成框图 7

5、2.程序流程图 8

8

三、详细设计 8

6、1.函数的入口和出口 8

7、2.主函数 8

8、3.成员函数 9

四、调试分析 9

五、核心源程序清单和执行结果 10

9、1.程序清单 10

10、2.执行结果 14

六、参考文献 16

一、需求分析

1.程序的功能

设计一个学生作业完成情况程序,实现对学生作业完成情况的修改,对学生信息的删除,对总成绩的排序,输出平均分数。

2.输入输出的要求

必须符合输入输出函数的定义。

3.测试数据

系统保存的学生信息:

stu1("

1"

"

David"

1);

stu2("

2"

Mike"

stu3("

3"

Tom"

2);

学号第几次作业成绩

1122

1233

1344

2155

2266

2377

3188

3299

33100

二、概要设计

1.程序设计组成框图

在主函数main()中调用各函数

定义学生作业情况的一维数组

以菜单形式提示输入

用switch语句对输入作出反应实现输出

声明student类

各学生学号

学生班级

各学生姓名

在类中调用setPoint

等函数

学号、姓名、10次作业的完成情况

2.程序流程图

三、详细设计

1.函数的入口和出口

cout<

<

"

-------------------输入操作1-78退出-------------------\n\n"

;

cout<

(1)通过键盘输入某位学生某次作业的分数,请按1\n"

cout<

(2)给定学号,显示某位学生作业完成情况,请按2\n"

(3)给定某个班级的班号,显示该班所有学生的作业完成情况,请按3\n"

(4)给定某位学生的学号,修改该学生的作业完成信息,请按4\n"

(5)给定某位学生的学号,删除该学生的信息,请按5\n"

(6)按学生的最终平时成绩进行排序,请按6\n"

(7)输出平均分数,请按7\n"

(8)退出,请按8\n\n"

2.主函数

voidmain(){

stringname,id;

doublepoint;

intindex,i,cls;

intselect;

vector<

Student>

students;

Studentstu1("

0001"

Clark"

Studentstu2("

0002"

Mac"

Studentstu3("

0003"

Tim"

students.push_back(stu1);

students.push_back(stu2);

students.push_back(stu3);

3.成员函数

getTotal():

用来实现十次作业的情况输入和。

showHomework():

用来实现某个学生十次完成作业的情况。

getName():

让后面的类调用此函数,名字函数。

getId():

让后面的类调用此函数,学号函数,实现根据学号显示此学生的作业完成情况。

getSClass():

让后面的类调用此函数,班级函数,实现根据班级显示学生作业完成情况的功能。

SetPoint():

记录成绩函数,使后面的类调用此函数用来显示修改后的成绩。

getHomework():

获得作业完成情况函数,使后面的类调用此函数实现修改后的学生作业完成情况。

voidSort():

排序函数,使用快速排序实现对学生总成绩的排序。

四、调试分析

(1)在类中调用函数时,出现了一些错误,问题出现在调用时的函数变量和初始化函数时的变量不一致,然后又检查程序,将变量匹配。

(2)运用了快速排序的方法,到调用排序函数时出现变量不匹配,检查程序,并修改。

(3)在输出平均成绩的时候,循环出现错误,没有语法错误,但是输出结果与正确结果不一致,后来发现是最后输出在循环内,所以又进行了修改。

(4)运用了容器vector,在用之前并不熟悉这个功能,也出现了不少错误,比如它的定义,装载,输出,最后通过上网了解了容器的功能对程序加以修改直至没有错误。

(5)运用了map功能,这个功能适用于对这次设计的查询并修改的程序,使程序更优化。

(6)对数据结构有了进一步的理解,使用算法后可以使设计思路更加清晰,对所学过东西的结合,也学了新的东西vector,map。

五、核心源程序清单和执行结果

1.程序清单

#include<

iostream>

string>

vector>

//属于STL库,为了把c和c++分开

map>

//map是一种关联容器,它定义了一种数据结构,类似查表功能,每一个数据都有自己的键值,通过键值可以查找和排序相应的数据

usingnamespacestd;

classStudent{

stringid;

//学生学号

stringname;

//学生姓名

intsClass;

//学生所正在班级

doublesum;

//所有作业成绩之和

doublehomework[10];

//十次作业完成情况及成绩

enum{unfinished=-1};

//枚举类型,枚举初始化,将学生完成情况一一枚举出来,等待成绩赋值

public:

Student(stringid,stringna,intcls):

name(na),id(id),sClass(cls){//构造函数赋值

for(inti=0;

i<

10;

i++)

homework[i]=unfinished;

//初始化学生的10次作业都是未完成的

}

voidsetPoint(intindex,doublepoint){//录入成绩函数,index是每次作业计数,point是作业分数

homework[index-1]=point;

//把每次作业成绩赋给作业完成情况

doublegetHomework(intindex){//得到作业完成情况函数

return homework[index-1];

doublegetTotal(){//作业总成绩函数

sum=0;

i++)

if(homework[i]!

=unfinished)

sum+=homework[i];

returnsum;

voidshowHomework(){//显示最后学生作业完成情况函数

if(homework[i]==unfinished)

cout<

unfinished\t"

else

homework[i]<

\t"

cout<

\n"

stringgetName(){//初始化学生姓名函数

returnname;

stringgetId(){//初始化学生学号函数

returnid;

intgetSClass(){//初始化学生所在班级函数

returnsClass;

};

voidsort(ints,intt,doublea[],stringb[]){//快速排序,排序平均成绩

inti,j;

doublex;

stringy;

i=s;

j=t;

x=a[i];

y=b[i];

while(i!

=j)

{ while((j>

i)&

&

(a[j]>

=x))j--;

if(j>

i)

{a[i]=a[j];

b[i]=b[j];

i++;

}

while((j>

(a[i]<

=x))i++;

if(j>

i)

{a[j]=a[i];

b[j]=b[i];

j--;

}

a[i]=x;

b[i]=y;

i++;

if(j>

s)sort(s,j,a,b);

if(i<

t)sort(i,t,a,b);

//定义容器students

//把三个学生信息存到容器中

doublea[1000];

stringb[1000];

while(true){

输入操作1-78退出\n"

doubletol=0;

cin>

>

select;

switch(select){

case1:

cout<

输入某位学生学号某次作业的分数\n"

//1号功能

cin>

id>

index>

point;

for(i=0;

students.size();

if(id==students[i].getId())

students[i].setPoint(index,point);

break;

case2:

给定学号,显示某位学生作业完成情况\n"

//2号功能

id;

for(i=0;

students[i].showHomework();

case3:

给定某个班级的班号,显示该班所有学生的作业完成情况\n"

//3号功能

cls;

if(cls==students[i].getSClass()){

cout<

students[i].getName()<

}

case4:

给定某位学生的学号,修改该学生的作业完成信息为未完成\n"

//4号功能

index;

for(i=0;

students[i].setPoint(index,-1);

case5:

给定某位学生的学号,删除该学生的信息\n"

//5号功能

students.erase(&

students[i]);

case6:

按学生的最终平时成绩进行排序\n"

//6号功能

a[i+1]=students[i].getTotal(),b[i+1]=students[i].getName();

sort(1,students.size(),a,b);

for(i=students.size();

i>

=1;

i--){

b[i]<

a[i];

endl;

}

case7:

cout<

输出平均分数\n"

//7号功能

{

tol+=students[i].getTotal();

cout<

tol/students.size();

default:

return;

}//switch

}//while

2.执行结果

-------------------输入操作1-78退出-------------------

(1)通过键盘输入某位学生某次作业的分数,请按1

(2)给定学号,显示某位学生作业完成情况,请按2

(3)给定某个班级的班号,显示该班所有学生的作业完成情况,请按3

(4)给定某位学生的学号,修改该学生的作业完成信息,请按4

(5)给定某位学生的学号,删除该学生的信息,请按5

(6)按学生的最终平时成绩进行排序,请按6

(7)输出平均分数,请按7

(8)退出,请按8

输入操作1-78退出

1

输入某位学生学号某次作业的分数

22

2

33

3

44

55

66

77

88

99

100

6

按学生的最终平时成绩进行排序

Tom287

Mike198

David99

7

输出平均分数

194.667

给定学号,显示某位学生作业完成情况

556677unfinishedunfinishedunfinishedunfinish

edunfinishedunfinishedunfinished

给定某个班级的班号,显示该班所有学生的作业完成情况

David

223344unfinishedunfinishedunfinishedunfinish

Mike

4

给定某位学生的学号,修改该学生的作业完成信息为未完成

88unfinished100unfinishedunfinishedunfinished

unfinishedunfinishedunfinishedunfinished

5

给定某位学生的学号,删除该学生的信息

六、参考文献

[1]《数据结构》.王红梅.清华大学出版社

[2]《数据结构学习辅导与实验指导》.王红梅.清华大学出版社

[3]《C++程序设计》.钱能.清华大学出版社

[4]《C++程序设计试验指导》.钱能.清华大学出版社

[5]《C++程序设计》.谭浩强.清华大学出版社

12

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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