学生成绩管理系统.docx
《学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统.docx(20页珍藏版)》请在冰点文库上搜索。
![学生成绩管理系统.docx](https://file1.bingdoc.com/fileroot1/2023-5/10/aa3df20e-f52f-4915-95f0-d707a776efa4/aa3df20e-f52f-4915-95f0-d707a776efa41.gif)
学生成绩管理系统
学生成绩管理系统,功能:
查询、显示记录,删除、添加记录.环境VC++6.0.
本系统由1个ACCESS数据库、3个查询、14个表单、1个菜单、6个程序组成。
1)数据库组成:
数据表3个:
学生表:
Student(5个字段:
编号,学号,姓名,班级名称),其中有两个班各5名学生的记录;
课程表:
Text(3个字段:
编号,班级名称,课程名称),其中有4门课的记录;
成绩表:
Grade(5个字段:
编号,学号,姓名,课程名称,成绩),其中有12条学生成绩的记录。
2)查询组成:
查询学生、按班级查询成绩、按课程查询成绩
3)表单组成:
主界面表单、退出表单、学生表单、课程表单、成绩表单(按学好分类和安课程分类)、查询学生表单、查询成绩表单、总浏览表单、浏览学生表单、浏览成绩表单、系统信息表单、设置口令表单集、修改表单界面。
4)菜单组成:
主菜单由系统、基本信息、视图、窗口、帮助和退出组成。
5)程序组成:
主程序、统计全体学生概况、按班级统计学生概况、统计全体成绩概况、按班级统计各门课成绩、按课程统计各班学生的成绩。
环境VC++6.0.
#include
#include
#include
structstud
{
longnum;
charname[20];
doublescore;
};
typedefstructstucode
{
structstudstudent;
structstucode*next;
}L;
voidmenu();
voidcreatelist(structstucode**r);
voidout(structstucode*r);
voidsearch1(structstucode*r);
voidsearch2(structstucode*r);
voiddel(structstucode**r);
voidinsert(structstucode**r);
voidsort(structstucode**r);
voidmain()
{
charchoose;
intflag=1;
structstucode*r=NULL;
while(flag)
{
system("cls");
menu();
choose=getchar();
switch(choose)
{
case'1':
createlist(&r);
out(r);
printf("Testingfunction1\nPressanykeytocontinue\n");
getchar();
getchar();
break;
case'2':
search1(r);
printf("Testingfunction1\nPressanykeytocontinue\n");
getchar();
getchar();
break;
case'3':
search2(r);
printf("Testingfunction1\nPressanykeytocontinue\n");
getchar();
getchar();
break;
case'4':
del(&r);
out(r);
printf("Testingfunction1\nPressanykeytocontinue\n");
getchar();
getchar();
break;
case'5':
insert(&r);
out(r);
printf("Testingfunction1\nPressanykeytocontinue\n");
getchar();
getchar();
break;
case'6':
sort(&r);
out(r);
printf("Testingfunction1\nPressanykeytocontinue\n");
getchar();
getchar();
break;
case'7':
out(r);
printf("Testingfunction7\nPressanykeytocontinue\n");
getchar();
getchar();
break;
case'0':
flag=0;
printf("Theend.\n");
break;
default:
printf("\nWrongSelection!
(选择错误,请重选!
)\n");getchar();getchar();
}
}
}
voidcreatelist(structstucode**r)
{
structstucode*p,*t;
longn;
chara[20];
doubles;
if(*r)*r=NULL;
printf("\n请输入:
\n学号(请按学号升序排列)姓名分数(若要结束请输入三个为零)\n");
scanf("%ld%s%lf",&n,a,&s);
if(n==0)return;
p=(L*)malloc(sizeof(L));
p->student.num=n;
strcpy(p->student.name,a);
p->student.score=s;
p->next=NULL;
*r=p;
scanf("%ld%s%lf",&n,a,&s);
while(n)
{
t=p;
p=(L*)malloc(sizeof(L));
p->student.num=n;
strcpy(p->student.name,a);
p->student.score=s;
p->next=NULL;
t->next=p;
scanf("%ld%s%lf",&n,a,&s);
}
}
voidsearch1(structstucode*r)
{
longx;
if(!
r)
{
printf("没有学生信息可查询!
\n");
return;
}
printf("请输入要查询的学生信息的学生学号:
\n");
scanf("%ld",&x);
while(r&&r->student.num!
=x)
r=r->next;
if(r==NULL)
printf("Error!
Nosuchstudent!
\n");
else
printf("%ld%s%.2lf\n",r->student.num,r->student.name,r->student.score);
}
voidsearch2(structstucode*r)
{
charm[20];
if(!
r)
{
printf("没有学生信息可查询!
\n");
return;
}
printf("请输入要查询的学生信息的学生姓名:
\n");
scanf("%s",m);
while(r&&strcmp(r->student.name,m))
r=r->next;
if(r==NULL)
printf("Error!
Nosuchstudent!
\n");
else
printf("%ld%s%.2lf\n",r->student.num,r->student.name,r->student.score);
}
voiddel(structstucode**r)
{
longk;
structstucode*p=*r,*t;
if(!
(*r))
{
printf("没有学生信息可删除!
\n");
return;
}
printf("请输入要删除的学生信息的学生学号:
\n");
scanf("%ld",&k);
if(p->student.num==k)
*r=(*r)->next,free(p);
else
{
while(p->next&&p->next->student.num!
=k)
p=p->next;
if(p->next==NULL)
printf("Error!
Nosuchstudent!
\n");
else
{
t=p->next;
p->next=p->next->next;
free(t);
}
}
}
voidinsert(structstucode**r)
{
longn;
chara[20];
doubles;
L*p,*t,*k;
printf("请输入要插入的学生信息的学生学号姓名分数:
\n");
scanf("%ld%s%lf",&n,a,&s);
p=(L*)malloc(sizeof(L));
p->student.num=n;
p->student.score=s;
strcpy(p->student.name,a);
if(!
(*r))
{
*r=p;
(*r)->next=NULL;
return;
}
if(p->student.num<(*r)->student.num)
p->next=(*r),(*r)=p;
else
{
t=*r;
k=t;
while(t->next&&t->next->student.num<=p->student.num)
t=t->next;
p->next=t->next;
t->next=p;
*r=k;
}
}
voidsort(structstucode**r)
{
structstucode*t,*p,*q,*z;
if(!
r)
{
printf("没有学生信息可排序!
\n");
return;
}
if(!
(*r)||!
(*r)->next)
return;
t=*r;
p=t->next;
t->next=NULL;
while(p)
{
q=p->next;
if(p->student.score>t->student.score)
{
p->next=t;
t=p;
}
else
{
z=t;
while(z->next&&z->next->student.score>=p->student.score)
z=z->next;
p->next=z->next;
z->next=p;
}
p=q;
}
*r=t;
}
voidout(structstucode*r)
{
printf("\n\n");
if(!
r)
{
printf("没有学生信息可输出!
\n");
return;
}
while(r)
{
printf("%ld%s%.2lf\n",r->student.num,r->student.name,r->student.score);
r=r->next;
}
printf("\n\n");
}
voidmenu()
{
printf("\n学生信息管理系统\n");
printf("\n菜单\n\n");
printf("\n1建立链表并显示\n");
printf("\n2查找某学号的学生信息\n");
printf("\n3查找某姓名的学生信息\n");
printf("\n4删除某学号的学生信息\n");
printf("\n5插入新的学生信息\n");
printf("\n6按分数降序排列输出\n");
printf("\n7输出\n");
printf("\n0退出\n");
printf("\n请选择您要执行的选项:
\n");
}
要求:
1、要求有学生成绩的查询,修改
2、不同专业的课程表各不相同(基础课相同,专业课不同)
3、能查询某一专业的学生成绩
4、试用随机产生学生的成绩,记录数达10条左右
学号姓名年龄基础课专业课
ps:
要C++的,要使用类模板
//class.h:
定义学生模板类
template
classstudent{
public:
student(){}
student(tnamename,tbclassbclass,tsclasssclass,tsubsub){
sname=name;
basic_class=bclass;
spec_class=sclass;
subject=sub;
}
tnameget_name(){//姓名查询
returnsname;
}
tbscoreget_bscore(){//基础课成绩查询
returnbscore;
}
tsscoreget_sscore(){//专业课成绩查询
returnsscore;
}
tsubget_subject(){//专业查询
returnsubject;
}
voidset_bccore(tbscorenewscore){//基础课成绩修改
bscore=newscore;
}
voidset_sccore(tsscorenewscore){//专业课成绩修改
sscore=newscore;
}
voidset_snum(tnumnum){//学号设定
snum=num;
}
voidset_age(tageage){//年龄设定
sage=age;
}
private:
tnumsnum;//学号
tnamesname;//姓名
tagesage;//年龄
tbclassbasic_class;//基础课
tbscorebscore;//基础课成绩
tsclassspec_class;//专业课
tsscoresscore;//专业课成绩
tsubsubject;//专业
};
#include"stdafx.h"
#include"iostream"
#include"class.h"
#include"string"
#include"time.h"
#include"list"
#include"cassert"
usingnamespacestd;
int_tmain(intargc,_TCHAR*argv[])
{
srand((unsigned)time(NULL));
list>students;
list>:
:
iterator_ptr;
student*s[10];
s[0]=newstudent("学生1","高等数学","面向对象程序设计","计算机");
s[1]=newstudent("学生2","高等数学","面向对象程序设计","计算机");
s[2]=newstudent("学生3","高等数学","面向对象程序设计","计算机");
s[3]=newstudent("学生4","高等数学","马克思主义哲学","行政管理");
s[4]=newstudent("学生5","高等数学","马克思主义哲学","行政管理");
s[5]=newstudent("学生6","高等数学","马克思主义哲学","行政管理");
s[6]=newstudent("学生7","高等数学","马克思主义哲学","行政管理");
s[7]=newstudent("学生8","高等数学","电路分析","电子信息");
s[8]=newstudent("学生9","高等数学","电路分析","电子信息");
s[9]=newstudent("学生10","高等数学","电路分析","电子信息");
for(inti=0;i<10;i++){//随机产生学生的成绩
s[i]->set_snum(rand()%100);
s[i]->set_age(rand()%10+15);
s[i]->set_bccore(rand()%61+40);
s[i]->set_sccore(rand()%71+30);
}
for(inti=0;i<10;i++){
students.push_back(*s[i]);
}
intchoose;
cout<<"请选择操作:
\n1.查询\n2.修改\n3.删除\n4.打印\n5.退出\n";
cin>>choose;
assert(!
cin.fail());
while(choose!
=5){
switch(choose){
case1:
{
intsn;
intcnt=0;
cout<<"输入学号:
";
cin>>sn;
assert(!
cin.fail());
_ptr=students.begin();
while(_ptr!
=students.end()){
if(_ptr->get_snum()==sn){
_ptr->print();
cnt++;
}
_ptr++;
}
cout<break;
}
case2:
{
intsn;
cout<<"输入学号:
";
cin>>sn;
assert(!
cin.fail());
_ptr=students.begin();
while(_ptr!
=students.end()){
if(_ptr->get_snum()==sn){
cout<<"找到记录!
\n请输入新的成绩(如果不修改请输入-1):
";
ints;
cin>>s;
if(cin.fail())break;
if(s==-1)break;
else{
_ptr->set_bccore(s);
cout<<"记录修改成功!
\n";
break;
}
}
_ptr++;
}
break;
}
case3:
{
intsn;
intcnt=0;
cout<<"输入学号:
";
cin>>sn;
assert(!
cin.fail());
for(_ptr=students.begin();_ptr!
=students.end();_ptr++){
if(_ptr->get_snum()==sn){
list>:
:
iteratortemp=students.erase(_ptr);
cnt++;
_ptr=temp;
}
}
cout<break;
}
case4:
{
_ptr=students.begin();
while(_ptr!
=students.end()){
_ptr->print();
_ptr++;
}
break;
}
default:
{cout<<"请输入有效选择!
\n";break;}
}
cout<<"请选择操作:
\n1.查询\n2.修改\n3.删除\n4.打印\n5.退出\n";
cin>>choose;
assert(!
cin.fail());
}
return0;
}用c++设计一个大学教师和学生管理程序,教师包括编号(a),姓名(c),职称(d)和教研室数据(b)的数据输入输出;大学生包括编号(m),姓名(s),性别(t),班号(n),英语(e),高等数学(f)和数据结构(g)三门课程成绩输入输出和计算机平均分(ave);研究生包括编号,姓名,性别,班号,指导教师和研究方法数据输入输出;博士后数据的输入输出;博士后既是教师也是研究生.(用派生,继承的方法可以做)
谢谢大家的帮助,我将给出100分的奖励,请技术人员帮帮忙~!
#include
#include
typedefstruct
{charname[10];
intnumber;
c