学生作业完成情况管理程序知识讲解文档格式.docx
- 文档编号:21685919
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:16
- 大小:91.46KB
学生作业完成情况管理程序知识讲解文档格式.docx
《学生作业完成情况管理程序知识讲解文档格式.docx》由会员分享,可在线阅读,更多相关《学生作业完成情况管理程序知识讲解文档格式.docx(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.程序设计组成框图
2.程序流程图
三、详细设计
1.函数的入口和出口
cout<
<
"
-------------------输入操作1-78退出-------------------\n\n"
;
cout<
(1)通过键盘输入某位学生某次作业的分数,请按1\n"
(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){//得到作业完成情况函数
returnhomework[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++;
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:
输出平均分数\n"
//7号功能
{
tol+=students[i].getTotal();
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
(六)DIY手工艺品的“创作交流性”4
小饰品店往往会给人零乱的感觉,采用开架陈列就会免掉这个麻烦。
“漂亮女生”像是个小超市,同一款商品色彩丰富地挂了几十个任你挑,拿上东西再到收银台付款。
这也符合女孩子精挑细选的天性,更保持了店堂长盛不衰的人气。
给定某位学生的学号,修改该学生的作业完成信息为未完成
我们长期呆在校园里,没有工作收入一直都是靠父母生活,在资金方面会表现的比较棘手。
不过,对我们的小店来说还好,因为我们不需要太多的投资。
综上所述,DIY手工艺品市场致所以受到认可、欢迎的原因就在于此。
我们认为:
这一市场的消费需求的容量是极大的,具有很大的发展潜力,我们的这一创业项目具有成功的前提。
88unfinished100unfinishedunfinishedunfinished
unfinishedunfinishedunfinishedunfinished
十字绣□编制类□银饰制品类□串珠首饰类□输入操作1-78退出
5
给定某位学生的学号,删除该学生的信息
(3)优惠多输入操作1-78退出
而手工艺制品是一种价格适中,不仅能锻炼同学们的动手能力,同时在制作过程中也能体会一下我国传统工艺的文化。
无论是送给朋友还是亲人都能让人体会到一份浓厚的情谊。
它的价值是不用金钱去估价而是用你一颗真诚而又温暖的心去体会的。
更能让学生家长所接受。
(2)缺乏经营经验六、参考文献
精明的商家不失时机地打出“自己的饰品自己做”、“DIY(DoItYourself)饰品、真我个性”的广告,推出“自制饰品”服务,吸引了不少喜欢标新立异、走在潮流前端的年轻女孩,成为上海的时尚消费市场。
其市场现状特点具体表现为:
[1]《数据结构》.王红梅.清华大学出版社
[2]《数据结构学习辅导与实验指导》.王红梅.清华大学出版社
[3]《C++程序设计》.钱能.清华大学出版社
[4]《C++程序设计试验指导》.钱能.清华大学出版社
[5]《C++程序设计》.谭浩强.清华大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 作业 完成 情况 管理程序 知识 讲解