学生成绩管理系统.docx
- 文档编号:5058434
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:32
- 大小:21.15KB
学生成绩管理系统.docx
《学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统.docx(32页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统
学生成绩管理系统
基本要求:
设计一个简易的学生成绩管理系统,采用数据文件存放学生的成绩,可对学生成绩进行输入、修改、删除、查找、输出等操作。
学生数据包括学号、姓名、语文、数学、外语、总分,平均分
三、设计方案:
1、数据分析:
(1)
每个学生的数据如下:
学号长整型
姓名字符串
各科成绩实数型
总分实数型
平均分实数型
采用结构体存放每个学生的数据
structstudent
{longnumber;
charname[10];
doubleChinese;
doublemath;
doubleEnglish;
doublesum;
doubleaverage;
}
(2)学生人数:
自己确定,<=50人即可,所有学生的信息采用结构体数组来存放。
2、数据文件的设计:
数据文件名:
score.txt,学生的信息需要写入到此文件中,并且能从文件中执行读操作。
数据文件结构:
一个记录对应—名学生,每个记录中依次存放名次、学号、姓名、各科成绩、总分
3、功能设计:
本系统功能如下:
(1)登录学生的学号、姓名、各科成绩,并计算总分、平均分。
(2)按学号修改学生信息。
(3)按学号删除学生信息。
(4)按学号查找学生信息。
(5)输出所有学生信息。
四、程序设计:
设计一个名为score.c的程序,该程序中的主函数显示系统菜单,并读入用户的选择,然后通过调用其它五个函数来实现系统的五项功能:
下面给出主函数和其他五个函数,
程序功能供参考(如下):
1、主函数
显示功能菜单,读入用户选择,并按用户选择调用相关子函数实现操作。
2、登录成绩记录的函数:
以追加方式打开存放成绩的数据文件,向该文件追加若干个学生的信息。
3、修改成绩记录的函数:
读入要修改成绩的学生的学号,打开存放成绩的数据文件,找到所要修改的记录并修改。
4、删除成绩记录的函数:
读入要删除成绩的学生的学号及其他信息,打开数据文件,循环读入每个记录,并依次存入一个临时文件中,当找到要删除的学生的信息后,不将该记录记入此临时文件。
5、查找成绩记录的函数:
读入要查找成绩的学生的学号,以只读方式打开存放成绩的数据文件,找到所要查找的记录并显示所有信息。
6、输出成绩表的函数:
以只读方式打开文件,循环读入每个学生信息,并进行输出。
五、“课程设计报告”内容的要求:
(1)概述所作系统的主要功能及用途
(2)分析和描述基本要求与内容
(3)绘制程序的流程图
(4)源程序代码
第一种
#include
#include
#include
classstu
{
charname[20];
doublemath,chinese,english,average,sum;
public:
stu()
{
}
stu(charn[20],doublema,doublechin,doubleeng)
{
strcpy(name,n);
math=ma;
chinese=chin;
english=eng;
}
doublegetsum()
{
sum=chinese+english+math;
returnsum;
}
doublegetaver()
{
average=getsum()/3;
returnaverage;
}
friendvoidmain();
};
voidmain()
{
cout<<"请选择您需要的操作!
"< cout<<"操作: "< cout<<"(0)数据录入"< cout<<" (1)增加人员"< cout<<" (2)删除人员"< cout<<"(3)修改数据"< cout<<"查询: "< cout<<"(4)按总成绩查询"< cout<<"(5)按姓名查询"< cout<<"(6)输出所有学生的数据"< cout<<"成绩名词"< cout<<"(7)按总分查询排名"< cout<<"(8)按语文查询排名"< cout<<"(9)按数学查询排名"< cout<<"(y)按英语查询排名"< cout<<"选择相关操作请输入相对的括号里的阿拉伯数字! "< charp;charw; stu*s[50]; ofstream*file[50]; inti=0; intj=0; boolflag2=0; do { cin>>p; if((p>='0'&&p<='10')) flag2=1; else cout<<"指令错误! 请重新输入: "< }while(flag2==0); do{ switch(p) { case'0': { charc; charname[20];doublemath,chinese,english; do{ cout<<"请输入姓名"< cin>>name; cout<<"请输入数学成绩: "< cin>>math; cout<<"请输入语文成绩: "< cin>>chinese; cout<<"请输入外语成绩: "< cin>>english; file[j]=newofstream("d: \\document",ios: : ate); *file[j]<<"姓名"< j++; s[i]=newstu(name,math,chinese,english); i++; cout<<"数据录入成功,想继续录入吗(y/n)"< cin>>c; flag2=0; do { if(c! ='y'&&c! ='n') { cout<<"指令错误! 请重新输入! "< cin>>c; } else flag2=1; }while(flag2==0); }while(c=='y'); break; } case'4': { doublet;charc; do { intflag1=0; cout<<"请输入你要查询学生的总成绩"< cin>>t; for(intq=0;q { if(s[q]->getsum()==t) { flag1=1; cout<<"您要查询的学生是: "<<(*s[q]).name< } } if(flag1==0) cout<<"对不起! 您要查询的学生不存在! "< cout<<"您想继续查询吗? (y/n)"< cin>>c; if(c! ='y'&&c! ='n') { cout<<"指令错误! 请重新输入! "< cin>>c; } } while(c=='y'); break; } case'5': { charn[20];intj=0;charc; do{ intflag=0; cout<<"请输入你要查询的学生姓名"< cin>>n; for(intj=0;j { if(strcmp(n,(*s[j]).name)==0) { flag=1; cout<<"您要查询的学生是: "<<(*s[j]).name< cout<<(*s[j]).name<<"的总成绩成绩是"<<(*s[j]).getsum()< "<<(*s[j]).getaver()< } } if(flag==0) cout<<"对不起! 您要查询的学生不存在! "< cout<<"您想继续查询吗? (y/n)"< cin>>c; if(c! ='y'&&c! ='n') { cout<<"指令错误! 请重新输入! "< cin>>c; } } while(c=='y'); break; } case'1': { charname[20];doublemath,chinese,english; charc; do { cout<<"请输入您要增加的学生的姓名: "< cin>>name; cout<<"请输入数学成绩: "< cin>>math; cout<<"请输入语文成绩: "< cin>>chinese; cout<<"请输入外语成绩: "< cin>>english; file[j]=newofstream("d: \\document",ios: : ate); *file[j]<<"姓名"< j++; s[i]=newstu(name,math,chinese,english); i++; cout<<"数据录入成功,想继续录入吗(y/n)"< cin>>c; if(c! ='y'&&c! ='n') { cout<<"指令错误! 请重新输入! "< cin>>c; } }while(c=='y'); break; } case'2': { charname[20];boolflag3=0;charc; do{ cout<<"请输入您要删除的学生姓名: "< cin>>name; for(inth=0;h { if(strcmp(name,s[h]->name)==0) { flag3=1; i--; do{ s[h]=s[h+1]; h++; }while(h<=i); } } if(flag3==0) cout<<"您要求删除的对象本来就不存在! 请检查输入的正确性! "; cout<<"要继续删除吗? (y/n)"< cin>>c; if(c! ='y'&&c! ='n') { cout<<"指令错误! 请重新输入! "< cin>>c; } }while(c=='y'); break; } case'3': { charname[20];doublemat,chin,eng;flag2=0; charc; do { cout<<"请输入您要修改的学生的姓名: "< cin>>name; for(inth=0;h { if(strcmp(name,s[h]->name)==0) { flag2=1; cout<<"请输入新的数学成绩: "< cin>>mat; cout<<"请输入新的语文成绩: "< cin>>chin; cout<<"请输入新的外语成绩: "< cin>>eng; s[h]->chinese=chin; s[h]->math=mat; s[h]->english=eng; cout<<"数据修改成功! "; } } if(flag2==0) { cout<<"您要修改的学生本来就不存在! 请检查重新输入! "< } cout<<"想继续修改吗(y/n)"< cin>>c; if(c! ='y'&&c! ='n') { cout<<"指令错误! 请重新输入! "< cin>>c; } }while(c=='y'); break; } case'6': { cout<<"本系统所有学生数据如下: "< if(i==0) cout<<"管理系统中没有录入数据或者数据已经被删除! "< for(intk=0;k { cout< "<<""< "语文: "<<""< "<<""< <<"外语: "<<""< "<<""<<(*s[k]).getsum() <<"平均分: "<<""<<(*s[k]).getaver()< } break; } case'7': { intt;stub; cout<<"本系统所以学生排名如下: "< for(intx=0;x { t=x; for(inty=x+1;y { if((s[t]->getsum())<(s[y]->getsum())) t=y; if(t! =x) { b=*s[x]; *s[x]=*s[t]; *s[t]=b; } } } if(i==0) cout<<"管理系统中没有录入数据或者数据已经被删除! "; for(intk=0;k { cout< "<<""< "语文: "<<""< "<<""< <<"外语: "<<""< "<<""< <<"平均分: "<<""< } break; } case'8': { intt;stub; cout<<"本系统所以学生语文排名如下: "< for(intx=0;x { t=x; for(inty=x+1;y { if((s[t]->chinese)<(s[y]->chinese)) t=y; if(t! =x) { b=*s[t]; *s[t]=*s[x]; *s[x]=b; } } } if(i==0) cout<<"管理系统中没有录入数据或者数据已经被删除! "; for(intk=0;k { cout< "<<""< "语文: "<<""< "<<""< <<"外语: "<<""< "<<""< <<"平均分: "<<""< } break; } case'9': { intt;stub; cout<<"本系统所以学生数学排名如下: "< for(intx=0;x { t=x; for(inty=x+1;y { if((s[t]->math)<(s[y]->math)) t=y; if(t! =x) { b=*s[t]; *s[t]=*s[x]; *s[x]=b; } } } if(i==0) cout<<"管理系统中没有录入数据或者数据已经被删除! "; for(intk=0;k { cout< "<<""< "语文: "<<""< "<<""< <<"外语: "<<""< "<<""< <<"平均分: "<<""< } break; } case'y': { intt;stub; cout<<"本系统所以学生英语排名如下: "< for(intx=0;x { t=x; for(inty=x+1;y { if((s[t]->english)<(s[y]->english)) t=y; if(t! =x) { b=*s[t]; *s[t]=*s[x]; *s[x]=b; } } } if(i==0) cout<<"管理系统中没有录入数据或者数据已经被删除! "; for(intk=0;k { cout< "<<""< "语文: "<<""< "<<""< <<"外语: "<<""< "<<""< <<"平均分: "<<""< } } break; } cout<<"您想继续进行其他操作吗? (y/n)"< boolflag4=0; do { cin>>w; if(w! ='y'&&w! ='n') cout<<"指令错误! 请重新输入! "< else flag4=1; }while(flag4==0); if(w=='y') cout<<"请输入操作代码(0录入/4按总分查询/5按姓名查询/1增加人员/2删除人员/3修改数据/6显示所有成员数据/7按总分排名/8按语文排名/9按数学排名/y按英语排名)"< cin>>p; }while(w=='y'); for(intx=0;x { deletes[x]; cout<<"deleteallmembers! "< } } 第二种 #include #include #include #include usingnamespacestd; structList { stringm_Name; stringm_ID;//可能有的学号里有字母,所以用string类型。 shortintm_Chinese; shortintm_Match; shortintm_English; structList*Next;//指针域。 }; typedefstructListNode; typedefNode*Link; //---------------函数声明------------------- LinkCreate(LinkHead); LinkSearch(LinkHead); LinkSearch_front(LinkHead); voidRelease(LinkHead); voidDisplay(LinkHead); voidDisplay_One(LinkHead); voidDisplay(LinkHead,fstream&ofile); LinkAddInfo(LinkHead); LinkDelInfo(LinkHead); LinkModify(LinkHead); voidGrade_Stat(LinkHead); LinkSort(LinkHead); //---------------函数实现------------------- LinkCreate(LinkHead) { /*构造一个头节点*/ Head=(Link)newNode; if(! Head) { cout<<"分配内存失败。 "< exit(-1); } Head->m_Name=""; Head->m_ID=""; Head->m_Chinese=0; Head->m_Match=0; Head->m_English=0; Head->Next=NULL; returnHead; } LinkSearch(LinkHead) { cout<<"1.按姓名查询2.按学号查询"< intselect; cin>>select; while(cin.fail()) { cout<<"请选择正确的菜单项: "; cin.clear(); fflush(stdin); cin>>select; } Linkptr; ptr=Head; if(select==1) { stringname; cout<<"请输入要查询的姓名: "; cin>>name; while(ptr! =NULL) { if(ptr->m_Name==name) { Display_One(ptr); returnptr; } ptr=ptr->Next; } cout<<"没找到,怎么办? "< } elseif(select==2) { stringID; cout<<"请输入要查询的学号: "; cin>>ID; while(ptr! =NULL) { if(ptr->m_ID==ID) { Display_One(ptr); returnptr; } ptr=ptr->Next; } cout<<"没找到,怎么办? "< } returnptr; } LinkSearch_front(LinkHead) {//返回前驱节点。 cout<<"1.按姓名删除2.按学号删除"< intselect; cin>name<<chinese<<"数学:mathenglish<<"总分:name<<chinese<<"数学:mathenglish<<"总分:getsum()getaver()<name<<chinese<<"数学:mathenglish<<"总分:getsum()getaver()<name<<chinese<<"数学:mathenglish<<"总分:getsum()getaver()<name<<chinese<<"数学:mathenglish<<"总分:getsum()getaver()<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统