学生成绩管理系统实习报告.docx
- 文档编号:4007793
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:31
- 大小:227.16KB
学生成绩管理系统实习报告.docx
《学生成绩管理系统实习报告.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统实习报告.docx(31页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统实习报告
高级语言(C语言)课程设计说明书
起止日期:
2012年07月2日至2012年07月14日
题目
学生成绩管理系统
学生姓名
班级
学号
成绩
一、课程设计要求
(1)界面菜单主菜单,具体要求如下:
***************MENU***************"
1.Enterlist/*输入记录*/
2.Deletearecordfromlist/*从表中删除记录*/
3.printlist/*显示单链表中所有记录*/
4.Searchrecordonname/*按照姓名查找记录*/
5.computethescore/*计算所有学生的总分和均分*/
6.sortbyscore/*排序*/
7.Quit/*退出*/
(2)需要定义多个函数对应菜单
/*以下是函数原型对应以上菜单*/
STUDENT*create();/*输入记录*/
STUDENT*delete(STUDENT*h);/*删除记录*/
voidprint(STUDENT*h);/*显示所有记录*/
voidsearch(STUDENT*h);/*查找*/
voidcomputer(STUDENT*h);/*计算总分和均分*/
STUDENT*sort(STUDENT*h);/*排序*/
intmenu_select();/*菜单函数*/
(3)要求设计流程图
(4)要求功能框图
(5)代码编写
二、程序的功能设计
总体的设计框图如下。
三、程序的数据结构
classstucopy//此类用于拷贝student的数据,用于排序功能的实现
{
public:
charid[20];
charsex[10];
charname[10];
doublegrade[5];
doublesumsum;//总成绩
doubleaverage;//平均成绩
};
classstudent//用于保存学生信息的类
{
friendclasslist;
public:
charid[20];//保存学号
charsex[10];//保存性别
charname[10];//保存名字
doublegrade[5];//保存成绩
student()
{
next=0;
for(inti=0;i<20;i++)id[i]=0;
for(i=0;i<10;i++)sex[i]=0;
for(i=0;i<10;i++)name[i]=0;
}
voids();
voidsetid(charid1[20])
{
for(inti=0;i<20;i++)
id[i]=id1[i];
}
voidsetsex(charsex1[10])
{
for(inti=0;i<10;i++)
sex[i]=sex1[i];
}
voidsetname(charname1[10])
{
for(inti=0;i<10;i++)
name[i]=name1[i];
}
voidsetgrade(doublegrade1[5])
{
for(inti=0;i<5;i++)
grade[i]=grade1[i];
}
student*next;//next指向下一个学生,构成链表
char*outid(){returnid;};
char*outsex(){returnsex;};
char*outname(){returnname;};
doubleoutsum()
{
doublesum=0;
for(inti=0;i<5;i++)
sum+=this->outgrade(i);
returnsum;
}
doubleoutav(){returnthis->outsum()/5;}
doubleoutgrade(inti){returngrade[i];};
voidintgrade(int);
};
四、程序的函数设计
1.函数的功能描述
每个函数的具体功能:
voidinstu();//新建一个学生的数据
voidoutstu(char*);//根据姓名输出一个学生的信息
intdelstu(char*n);//根据姓名删除一个学生的信息
voidoutstu1(char*);//根据学号输出一个学生的信息
intdelstu1(char*n);//根据学号删除一个学生的信息
voidoutsum(char*);//根据姓名输出一个学生的总成绩和平均成绩
voidoutsum1(char*);//根据学号输出一个学生的总成绩和平均成绩
voidthink();//用于输出班级成绩的统计分析
voidsearch(chars[10],int);//根据姓名修改一个学生的成绩
voidsearch1(chars[20],int);//根据学号修改一个学生的成绩
doublehi(inti);//求某门课的最高分
doublelo(inti);//求某门课的最低分
voidav(inti);//求某门课的平均分
voidev(inti);//用于班级成绩统计分析的人数分布输出
voidscanall();//输出所有学生的信息
2.函数的调用关系
voids();
voidsetid(charid1[20])
{
for(inti=0;i<20;i++)
id[i]=id1[i];
}
voidsetsex(charsex1[10])
{
for(inti=0;i<10;i++)
sex[i]=sex1[i];
}
voidsetname(charname1[10])
{
for(inti=0;i<10;i++)
name[i]=name1[i];
}
voidsetgrade(doublegrade1[5])
{
for(inti=0;i<5;i++)
grade[i]=grade1[i];
}
student*next;//next指向下一个学生,构成链表
char*outid(){returnid;};
char*outsex(){returnsex;};
char*outname(){returnname;};
doubleoutsum()
{
doublesum=0;
for(inti=0;i<5;i++)
sum+=this->outgrade(i);
returnsum;
}
doubleoutav(){returnthis->outsum()/5;}
doubleoutgrade(inti){returngrade[i];};
voidintgrade(int);
};
voidstudent:
:
intgrade(intj)//用于修改学生的成绩
{
switch(j)
{
case1:
cout<<"请输入数学成绩:
\n";
cin>>grade[0];break;
case2:
cout<<"请输入英语成绩:
\n";
cin>>grade[1];break;
case3:
cout<<"请输入物理成绩:
\n";
cin>>grade[2];break;
case4:
cout<<"请输入C语言成绩:
\n";
cin>>grade[3];break;
case5:
cout<<"请输入工程制图成绩:
\n";
cin>>grade[4];break;
}
}
五、源程序代码
#include
#include
#include
#include
constintM=20;
classstucopy//此类用于拷贝student的数据,用于排序功能的实现
{
public:
charid[20];
charsex[10];
charname[10];
doublegrade[5];
doublesumsum;//总成绩
doubleaverage;//平均成绩
};
classstudent//用于保存学生信息的类
{
friendclasslist;
public:
charid[20];//保存学号
charsex[10];//保存性别
charname[10];//保存名字
doublegrade[5];//保存成绩
student()
{
next=0;
for(inti=0;i<20;i++)id[i]=0;
for(i=0;i<10;i++)sex[i]=0;
for(i=0;i<10;i++)name[i]=0;
}
voids();
voidsetid(charid1[20])
{
for(inti=0;i<20;i++)
id[i]=id1[i];
}
voidsetsex(charsex1[10])
{
for(inti=0;i<10;i++)
sex[i]=sex1[i];
}
voidsetname(charname1[10])
{
for(inti=0;i<10;i++)
name[i]=name1[i];
}
voidsetgrade(doublegrade1[5])
{
for(inti=0;i<5;i++)
grade[i]=grade1[i];
}
student*next;//next指向下一个学生,构成链表
char*outid(){returnid;};
char*outsex(){returnsex;};
char*outname(){returnname;};
doubleoutsum()
{
doublesum=0;
for(inti=0;i<5;i++)
sum+=this->outgrade(i);
returnsum;
}
doubleoutav(){returnthis->outsum()/5;}
doubleoutgrade(inti){returngrade[i];};
voidintgrade(int);
};
voidstudent:
:
intgrade(intj)//用于修改学生的成绩
{
switch(j)
{
case1:
cout<<"请输入数学成绩:
\n";
cin>>grade[0];break;
case2:
cout<<"请输入英语成绩:
\n";
cin>>grade[1];break;
case3:
cout<<"请输入物理成绩:
\n";
cin>>grade[2];break;
case4:
cout<<"请输入C语言成绩:
\n";
cin>>grade[3];break;
case5:
cout<<"请输入工程制图成绩:
\n";
cin>>grade[4];break;
}
}
voidstudent:
:
s()//用于录入学生的信息
{
cout<<"请输入学号:
\n";
cin>>id;
cout<<"请输入姓名:
\n";
cin>>name;
cout<<"请输入性别:
\n";
cin>>sex;
cout<<"请输入数学成绩:
\n";
cin>>grade[0];
cout<<"请输入英语成绩:
\n";
cin>>grade[1];
cout<<"请输入物理成绩:
\n";
cin>>grade[2];
cout<<"请输入C语言成绩:
\n";
cin>>grade[3];
cout<<"请输入工程制图成绩:
\n";
cin>>grade[4];
}
classlist//此类为链表
{
private:
doublehigh[5],low[5];
public:
student*last,*first;//链表的开头和结尾
doubletotoal;
list(){last=0;first=0;};
~list();
voidinstu();//新建一个学生的数据
voidoutstu(char*);//根据姓名输出一个学生的信息
intdelstu(char*n);//根据姓名删除一个学生的信息
voidoutstu1(char*);//根据学号输出一个学生的信息
intdelstu1(char*n);//根据学号删除一个学生的信息
voidoutsum(char*);//根据姓名输出一个学生的总成绩和平均成绩
voidoutsum1(char*);//根据学号输出一个学生的总成绩和平均成绩
voidthink();//用于输出班级成绩的统计分析
voidsearch(chars[10],int);//根据姓名修改一个学生的成绩
voidsearch1(chars[20],int);//根据学号修改一个学生的成绩
doublehi(inti);//求某门课的最高分
doublelo(inti);//求某门课的最低分
voidav(inti);//求某门课的平均分
voidev(inti);//用于班级成绩统计分析的人数分布输出
voidscanall();//输出所有学生的信息
};
list:
:
~list()//析构函数,将所有创建的学生对象删掉
{
if(first!
=0)
{
student*p=first,*temp;
while(p!
=NULL){
temp=p;
p=p->next;
deletetemp;
cout<<"ok\n";
}}}
voidlist:
:
instu()
{student*p=newstudent();
p->s();
if(first==0){first=last=p;}else{last->next=p;last=p;}
}
voidlist:
:
outstu(char*n)
{
if(first==0){cout<<"班级无成员!
查无此人!
"< student*temp=first;for(;temp! =NULL;temp=temp->next) if(strcmp(temp->outname(),n)==0) { cout< <<"英语"< cout< < (1)< (2)< < cout<<"查无此人! "< return; } voidlist: : outstu1(char*n) { if(first==0){cout<<"班级无成员! 查无此人! "< student*temp=first;for(;temp! =NULL;temp=temp->next) if(strcmp(temp->outid(),n)==0) { cout< <<"英语"< cout< < (1)< (2)< < cout<<"查无此人! "< return; } intlist: : delstu(char*n) { if(first==0){cout<<"无数据! "< student*temp=first; student*p; if(strcmp(first->outname(),n)==0) {first=first->next;deletetemp; cout<<"\n删除成功\n";return0;} elsefor(;temp->next! =NULL;temp=temp->next) {if(strcmp(temp->next->outname(),n)==0) {p=temp->next;temp->next=temp->next->next;deletep; cout<<"\n删除成功\n";return0;}} cout<<"\n查无此人,删除失败\n"; return0; } intlist: : delstu1(char*n) { if(first==0){cout<<"无数据! "< student*temp=first; student*p; if(strcmp(first->outid(),n)==0) {first=first->next;deletetemp; cout<<"\n删除成功\n";return0;} elsewhile(temp->next! =NULL) {if(strcmp(temp->next->outid(),n)==0) {p=temp->next;temp->next=temp->next->next;deletep; cout<<"\n删除成功\n";return0;} elsetemp=temp->next;} cout<<"\n查无此人,删除失败\n"; return0; } voidlist: : think() { if(first==0){cout<<"无数据! "< inti=0; student*p=first; while(p! =NULL) { p=p->next; i++; } totoal=i; cout<<"人数: "< cout<<"数学\n"; cout<<"最高分: "< "< "; av(0); ev(0); cout<<"英语\n"; cout<<"最高分: "< (1)<<""<<"最低分: "< (1)<<""<<"平均分: "; av (1); ev (1); cout<<"物理\n"; cout<<"最高分: "< (2)<<""<<"最低分: "< (2)<<""<<"平均分: "; av (2); ev (2); cout<<"C语言\n"; cout<<"最高分: "< "< "; av(3); ev(3); cout<<"工程制图\n"; cout<<"最高分: "< "< "; av(4); ev(4); } doublelist: : hi(inti) { high[i]=0.00; student*temp=first; while(temp! =0) {if(temp->outgrade(i)>high[i]) high[i]=temp->outgrade(i); temp=temp->next; } returnhigh[i]; } doublelist: : lo(inti) { low[i]=100; student*temp=first;while(temp! =0) {if(temp->outgrade(i) low[i]=temp->outgrade(i); temp=temp->next; } returnlow[i]; } voidlist: : av(inti) { doubleaver=0; student*temp=first; while(temp! =NULL) { aver+=temp->outgrade(i); temp=temp->next; } cout< } voidlist: : ev(inti) {inta=0,b=0,c=0,d=0,e=0,f=0; student*temp=first;while(temp! =0) {switch((int)temp->outgrade(i)/10) { case10: a++;break;case9: a++;break; case8: b++;break;case7: c++;break; case6: d++;break;case5: e++;break; default: f++; } temp=temp->next; } cout<<"100-90的人数:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 实习 报告