学生作业完成情况管理程序.docx

上传人:b****2 文档编号:24500339 上传时间:2023-05-28 格式:DOCX 页数:17 大小:67.45KB
下载 相关 举报
学生作业完成情况管理程序.docx_第1页
第1页 / 共17页
学生作业完成情况管理程序.docx_第2页
第2页 / 共17页
学生作业完成情况管理程序.docx_第3页
第3页 / 共17页
学生作业完成情况管理程序.docx_第4页
第4页 / 共17页
学生作业完成情况管理程序.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

学生作业完成情况管理程序.docx

《学生作业完成情况管理程序.docx》由会员分享,可在线阅读,更多相关《学生作业完成情况管理程序.docx(17页珍藏版)》请在冰豆网上搜索。

学生作业完成情况管理程序.docx

学生作业完成情况管理程序

天津城市建设学院

课程设计任务书

2011—2012学年第1学期

电子与信息工程系专业班级

课程设计名称:

数据结构课程设计

设计题目:

学生作业完成情况管理程序

完成期限:

自2012年1月2日至2012年1月6日共1周

设计依据、要求及主要内容(可另加附页):

一、设计目的

熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。

二、设计要求

(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;

(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。

凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩;

(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表;

(4)认真编写课程设计报告。

三、设计内容

1)请设计一个学生作业完成情况管理程序。

假设某门课程一学期要留10次作业,每次老师要进行批改,给出分数后还要进行登记。

学期期末要根据每次作业的成绩计算出最终的平时成绩(满分100)。

作业登记信息应该包含:

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

2)基本要求

该程序应该具有下列功能:

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

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

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

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

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

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

(7)输平均分数

 

一、需求分析

1.程序的功能

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

2.输入输出的要求

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

3.测试数据

系统保存的学生信息:

stu1("1","David",1);

stu2("2","Mike",1);

stu3("3","Tom",2);

学号第几次作业成绩

1122

1233

1344

2155

2266

2377

3188

3299

33100

二、概要设计

1.程序设计组成框图

2.程序流程图

三、详细设计

1.函数的入口和出口

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

cout<<"

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

cout<<"

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

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

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

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

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

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

cout<<"(8)退出,请按8\n\n";

2.主函数

voidmain(){

stringname,id;

doublepoint;

intindex,i,cls;

intselect;

vectorstudents;

Studentstu1("0001","Clark",1);

Studentstu2("0002","Mac",1);

Studentstu3("0003","Tim",2);

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

#include

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

#include//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){//得到作业完成情况函数

returnhomework[index-1];

}

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

sum=0;

for(inti=0;i<10;i++)

if(homework[i]!

=unfinished)

sum+=homework[i];

returnsum;

}

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

for(inti=0;i<10;i++)

if(homework[i]==unfinished)

cout<<"unfinished\t";

else

cout<

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>i)&&(a[i]<=x))i++;

if(j>i)

{a[j]=a[i];b[j]=b[i];j--;}

}

a[i]=x;

b[i]=y;

i++;j--;

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

if(i

}

voidmain(){

stringname,id;

doublepoint;

intindex,i,cls;

intselect;

vectorstudents;//定义容器students

Studentstu1("1","David",1);//把三个学生信息存到容器中

Studentstu2("2","Mike",1);

Studentstu3("3","Tom",2);

students.push_back(stu1);

students.push_back(stu2);

students.push_back(stu3);

doublea[1000];

stringb[1000];

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

cout<<"

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

cout<<"

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

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

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

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

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

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

cout<<"(8)退出,请按8\n\n";

while(true){

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

doubletol=0;

cin>>select;

switch(select){

case1:

cout<<"输入某位学生学号某次作业的分数\n";//1号功能

cin>>id>>index>>point;

for(i=0;i

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

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

break;

case2:

cout<<"给定学号,显示某位学生作业完成情况\n";//2号功能

cin>>id;

for(i=0;i

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

students[i].showHomework();

break;

case3:

cout<<"给定某个班级的班号,显示该班所有学生的作业完成情况\n";//3号功能

cin>>cls;

for(i=0;i

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

cout<

students[i].showHomework();

}

break;

case4:

cout<<"给定某位学生的学号,修改该学生的作业完成信息为未完成\n";//4号功能

cin>>id>>index;

for(i=0;i

for(i=0;i

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

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

break;

case5:

cout<<"给定某位学生的学号,删除该学生的信息\n";//5号功能

cin>>id;

for(i=0;i

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

students.erase(&students[i]);

break;

case6:

cout<<"按学生的最终平时成绩进行排序\n";//6号功能

for(i=0;i

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--){

cout<

cout<

}

break;

case7:

cout<<"输出平均分数\n";//7号功能

for(i=0;i

{

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

}

cout<

cout<

break;

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

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

1

1

22

输入操作1-78退出

1

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

1

2

33

输入操作1-78退出

1

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

1

3

44

输入操作1-78退出

1

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

2

1

55

输入操作1-78退出

1

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

2

2

66

输入操作1-78退出

1

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

2

3

77

输入操作1-78退出

1

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

3

1

88

输入操作1-78退出

1

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

3

2

99

输入操作1-78退出

1

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

3

3

100

输入操作1-78退出

6

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

Tom287

Mike198

David99

输入操作1-78退出

7

输出平均分数

194.667

输入操作1-78退出

2

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

2

556677unfinishedunfinishedunfinishedunfinish

edunfinishedunfinishedunfinished

输入操作1-78退出

3

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

1

David

223344unfinishedunfinishedunfinishedunfinish

edunfinishedunfinishedunfinished

Mike

556677unfinishedunfinishedunfinishedunfinish

edunfinishedunfinishedunfinished

输入操作1-78退出

4

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

3

2

输入操作1-78退出

2

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

3

88unfinished100unfinishedunfinishedunfinished

unfinishedunfinishedunfinishedunfinished

输入操作1-78退出

5

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

2

输入操作1-78退出

2

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

2

输入操作1-78退出

六、参考文献

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

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

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

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

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

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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