大作业学生综合测评系统设计.docx
《大作业学生综合测评系统设计.docx》由会员分享,可在线阅读,更多相关《大作业学生综合测评系统设计.docx(16页珍藏版)》请在冰豆网上搜索。
大作业学生综合测评系统设计
学生综合测评系统设计
一、问题描述
每个学生装的信息为:
学号、姓名、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、德育成绩、任课教师评分、综合测评总分、综合测评名次。
考试平均成绩、学生互评分、德育成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%.
二、功能描述
试设计一程序,使之能提供以下功能:
1.系统以菜单方式工作
2.学生信息处理
(1)输入学生信息:
学号、姓名,按学号由小到大的顺序排列。
(2)增加学生信息;
(2)浏览学生信息;
(3)按学号删除学生信息。
输入一个学号,若存在该学号,则删除该学生信息;否则提示出错信息。
(4)修改学生信息。
输入一个学号,若存在该学号,则修改该学生信息;否则提示出错信息。
3.学生成绩数据处理
(1)按考试科目录入学生成绩并且按公式:
考试成绩=(语文+数学+外语)/3计算考试成绩,并计算考试名次。
(2)学生测评数据输入并计算综合测评总分及名次。
(3)学生成绩数据管理:
按学号修改、删除学生成绩数据
(4)学生成绩数据查询
按学号查询学生成绩数据
4.学生综合信息输出
输出每个学生的学号、姓名、三门课程程序、考试平均成绩、考试名次、同学互评分、德育成绩、任课教师评分、综合测评总分、综合测评名次。
三、算法提示
1.数据结构:
如果使用已学习的知识可使用多个数组分别存放学生学号、姓名信息和学生成绩,数组下标相同者为同一学生信息。
如果能自学结构体及结构体数组章节内容,则可以使用结构体数组存储学生信息和成绩信息。
四、测试数据
学生人数:
N=5
主函数
#include
#include"Boyson.h"
#include
#definem10
structstudents[m];
voidmain()
{
system("cls");
intchoice,n,k=0;
while
(1)
{
printf("[.......学生综合测评系统.......]\n");
printf(".....1.学生信息处理.....\n");
printf(".....2.学生成绩数据处理.....\n");
printf(".....3.学生综合成绩输出·.....\n");
printf(".....0.结束程序的使用.....\n");
printf("[.......学生综合测评系统.......]\n");
printf("请你选择一个你想进行服操作的choice=");
scanf("%d",&choice);
printf("\n");
if(choice==0)
{
printf("程序使用已经结束\n");
break;
}
elseif(choice>0&&choice<4)
switch(choice)
{
case1:
n=sdxxcl();
break;
case2:
k=sdcjcl(n);
break;
case3:
cjsc(s,k);
break;
}
}
}
intsdxxcl()
{
system("cls");
inti,n,choice,j;
structstudenttemp;
while
(1)
{
printf("[.......学生信息处理.......]\n");
printf(".....1.输入学生信息.....\n");
printf(".....2.增加学生信息并浏览学生信息.....\n");
printf(".....3.按学号删除学生信息.....\n");
printf(".....4.修改学生信息.....\n");
printf(".....0.结束程序的使用.....\n");
printf("[.......学生综合测评系统.......]\n");
printf("请你选择一个你想进行服操作的choice=");
scanf("%d",&choice);
printf("\n");
if(choice==0)
{
printf("程序使用已经结束\n");
break;
}
elseif(choice>0&&choice<5)
switch(choice)
{
case1:
n=input(s);
for(j=1;jfor(i=0;iif(s[i].number>s[i+1].number)
{
temp=s[i];
s[i]=s[i+1];
s[i+1]=temp;
}
printf("排序好的学生信息为:
\n");
printf("学号\t姓名\n");
for(i=0;iprintf("%d\t%s\n",s[i].number,s[i].name);
break;
case2:
n=insert(s,n);
printf("插入后学生的信息如下所示:
\n");
printf("学号\t姓名\n");
for(i=0;iprintf("%d\t%s\n",s[i].number,s[i].name);
break;
case3:
del(s,n);
break;
case4:
fix(s,n);
break;
}
}returnn;
}
intsdcjcl(intn)
{
system("cls");
intchoice,i;
while
(1)
{
printf("[.......学生成绩数据处理.......]\n");
printf(".....1.按考试科目语文,数学和英语输入考试成绩并计算平均分并计算考试名次.....\n");
printf(".....2.学生测评数据输入并及时综合测评总分及名次.....\n");
printf(".....3.学生成绩修改.....\n");
printf(".....4.学生成绩删除.....\n");
printf(".....5.学生成绩数据查询.....\n");
printf(".....0.结束程序的使用.....\n");
printf("[.......学生综合测评系统.......]\n");
printf("请你选择一个你想进行服操作的choice=");
scanf("%d",&choice);
printf("\n");
if(choice==0)
{
printf("程序使用已经结束\n");
break;
}
elseif(choice>0&&choice<6)
switch(choice)
{
case1:
averag(s,n);
break;
case2:
ceping(s,n);
break;
case3:
n=score(s,n);
printf("修改后学生的成绩如下所示:
\n");
printf("语文\t数学\t外语\t平均分\t学生互评\t德育成绩\t任课教师评分\t综合测评成绩\n");
for(i=0;iprintf("%d\t%d\t%d\t%f\t%d\t%d\t%d\t%f\n",s[i].score[0],s[i].score[1],s[i].score[2],s[i].average,s[i].score[3],s[i].score[4],s[i].score[5],s[i].scort_last);
break;
case4:
n=shanchu(s,n);
printf("删除后的成绩为下所示:
\n");
printf("语文\t数学\t外语\t平均分\t学生互评\t德育成绩\t任课教师评分\t综合测评成绩\n");
for(i=0;iprintf("%d\t%d\t%d\t%f\t%d\t%d\t%d\t%f\n",s[i].score[0],s[i].score[1],s[i].score[2],s[i].average,s[i].score[3],s[i].score[4],s[i].score[5],s[i].scort_last);
returnn;
break;
case5:
i=research(s,n);
printf("语文\t数学\t外语\t平均分\t学生互评\t德育成绩\t任课教师评分\t综合测评成绩\n");
printf("%d\t%d\t%d\t%f\t%d\t%d\t%d\t%f\n",s[i].score[0],s[i].score[1],s[i].score[2],s[i].average,s[i].score[3],s[i].score[4],s[i].score[5],s[i].scort_last);
break;
}
printf("\n");
}
}
intinput(structstudents[])
{
inti=0,j,n=0;
structstudenttemp;
printf("学号\t姓名\n");
while
(1)
{
scanf("%d%s",&s[i].number,s[i].name);
if(s[i].number==0)
break;
n++;
i++;
}
returnn;
}
intinsert(structstudents[],intn)
{
inti,k;
structstudenta[1];
printf("输入一个学生的信息\n");
printf("学号\t姓名\n");
scanf("%d%s",&a[0].number,a[0].name);
printf("\n");
for(i=0;iif(a[0].number
break;
k=i;
for(i=n-1;i>=k;i--)
s[i+1]=s[i];
s[k]=a[0];
n++;
returnn;
}
voiddel(structstudents[],intn)
{
inti,k;
printf("请输入一个你想删除的学生成绩信息的学号:
\n");
scanf("%d",&k);
printf("\n");
for(i=0;iif(k==s[i].number)
{
k=i;
n--;
for(i=k;is[i]=s[i+1];
printf("删除后学生的信息如下所示:
\n");
printf("学号\t姓名\n");
for(i=0;iprintf("%d\t%s\n",s[i].number,s[i].name);
}
if(k>s[i].number)
printf("所输入的这个学号不存在!
\n");
}
voidfix(structstudents[],intn)
{
inti,a;
printf("输入要修改信息的学生的学号\n");
scanf("%d",&a);
printf("\n");
for(i=0;iif(s[i].number==a)
{
printf("输入一个新的学生信息!
\n");
scanf("%d%s",&s[i].number,s[i].name);
printf("修改后学生的信息如下所示:
\n");
printf("学号\t姓名\n");
for(i=0;iprintf("%d\t%s\n",s[i].number,s[i].name);
}
if(s[i].numberprintf("所输入的这个学号不存在!
\n");
}
intaverag(structstudents[],intn)
{
structstudenttemp;
inti=0,j;
printf("语文\t数学\t外语\n");
for(i=0;iscanf("%d%d%d",&s[i].score[0],&s[i].score[1],&s[i].score[2]);
printf("\n");
for(i=0;is[i].average=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3.0;
for(j=1;jfor(i=0;iif(s[i].average
{
temp=s[i];
s[i]=s[i+1];
s[i+1]=temp;
}
for(i=0;is[i].rank1=i+1;
for(i=0;iif(s[i].average==s[i+1].average)
s[i+1].rank1=s[i].rank1;
printf("语文\t数学\t外语\t平均分\t考试名次\n");
for(i=0;iprintf("%d\t%d\t%d\t%f\t%d\n",s[i].score[0],s[i].score[1],s[i].score[2],s[i].average,s[i].rank1);
returnn;
}
intceping(structstudents[],intn)
{
structstudenttemp;
inti=0,j,k=0;
printf("学生互评\t德育成绩\t任课教师评分\n");
for(i=0;iscanf("%d%d%d",&s[i].score[3],&s[i].score[4],&s[i].score[5]);
for(i=0;is[i].scort_last=s[i].average*(0.6)+s[i].score[3]*(0.1)+s[i].score[4]*(0.1)+s[i].score[5]*(0.2);
for(j=1;jfor(i=0;i{
if(s[i].scort_last
{
temp=s[i];
s[i]=s[i+1];
s[i+1]=temp;
}
}
for(i=0;is[i].rank2=i+1;
for(i=0;iif(s[i].scort_last==s[i+1].scort_last)
s[i+1].rank2=s[i].rank2;
printf("学生平均成绩学生互评德育成绩任课教师评分综合得分综合名次\n");
for(i=0;iprintf("%f\t%d\t%d\t%d\t\t%f\t%d\n",s[i].average,s[i].score[3],s[i].score[4],s[i].score[5],s[i].scort_last,s[i].rank2);
returnn;
}
intscore(structstudents[],intn)
{
inti,k;
printf("请输入一个你想修改的学生成绩信息的学号:
\n");
scanf("%d",&k);
printf("\n");
for(i=0;iif(k==s[i].number)
{
printf("语文\t数学\t外语\n");
scanf("%d%d%d",&s[i].score[0],&s[i].score[1],&s[i].score[2]);
s[i].average=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3.0;
s[i].scort_last=s[i].average*(0.6)+s[i].score[3]*(0.1)+s[i].score[4]*(0.1)+s[i].score[5]*(0.2);
printf("\n");
returnn;
}
}
intshanchu(structstudents[],intn)
{
inti,k;
printf("请输入一个你想删除的学生成绩信息的学号:
\n");
scanf("%d",&k);
printf("\n");
for(i=0;iif(k==s[i].number)
{
for(i=i;is[i]=s[i+1];
n--;
returnn;
}
printf("没有这个学生的信息\n");
}
intresearch(structstudents[],intn)
{
system("cls");
inti,a;
printf("请输入需要查找的学生学号\n");
scanf("%d",&a);
printf("\n");
for(i=0;iif(a==s[i].number)
returni;
}
voidcjsc(structstudents[],intn)
{
system("cls");
inti;
printf("学生综合成绩如下所示:
\n");
printf("学号姓名语文数学外语平均分考试名次学生互评德育教师评分综合得分名次\n");
for(i=0;iprintf("%d%6s%5d%5d%5d%9.2f%5d%9d%6d%9d%9.2f%9d\n",s[i].number,s[i].name,s[i].score[0],s[i].score[1],s[i].score[2],s[i].average,s[i].rank1,s[i].score[3],s[i].score[4],s[i].score[5],s[i].scort_last,s[i].rank2);
}
头文件
structstudent
{
intrank1;
intrank2;
intnumber;
charname[20];
intscore[6];
floataverage;
intsort;
floatscort_last;
};
intsdxxcl();
intsdcjcl(intn);
voidcjsc(structstudents[],intn);
intinput(structstudents[]);
intinsert(structstudents[],intn);
voiddel(structstudents[],intn);
voidfix(structstudents[],intn);
intaverag(structstudents[],intn);
intceping(structstudents[],intn);
intscore(structstudents[],intn);
intresearch(structstudents[],intn);
intshanchu(structstudents[],intn);