学生成绩管理系统=附源码=附源码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题目2学生成绩管理系统
一、设计目的与内容
1.设计目的
用c语言编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。

可以建立函数输入二叉树。

要写明:存储结构、基本算法(可以使用程序流程图)、输入输出、源程序、测试数据和结果、算法的时间复杂度;
2.设计内容:
建立一个4个学生的信息登记表,每个学生的信息包括:学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。

程序运行时显示一个简单的菜单,如:
(1):信息输入
(2):总分统计
(3):平均分统计
(4):总分排序
(5):平均分排序
(6):查询
其中:
(1):对4个学生的信息进行输入;
(2):对每个学生的3门课程统计总分;
(3):对每个学生的3门课程统计平均分;
(4):对4个学生的总分按降序或升序排序并显示出来;
(5):对4个学生的平均分按降序或升序排序并显示出来;
(6):查询输入一个学号或姓名后,显示出该学生的有关信息;
二、算法的基本思想
程序分为6个功能模块:信息录入,总分统计,平均分统计,总分排序,平均分排序,查询。

其中总分排序功能模块还设了按总分降序和按总分升序两个菜单, 平均分排序功能模块还设了按平均分降序和按平均分升序两个菜单, 查询功能模块还设了按学号查询和按姓名查询两个菜单。

程度的总体设计思想如下图框架所示:
三、测试数据
第一个学生:
姓名:小张
学号:01
Fox得分:67
C得分:78 ENGLISH得分:87 第二个学生:
姓名:小李
学号:02
Fox得分:66
C得分:98 ENGLISH得分:78 第三个学生:
姓名:小王
学号:03
Fox得分:88
C得分:78 ENGLISH得分:65 第四个学生:
姓名:小陈
学号:04
Fox得分:65
C得分:79 ENGLISH得分:68 如图1-1所示:
(图1-1)
四、源程序及系统文件使用说明
1、进入系统并输入测试数据(如上图1-1)
2、测试总分统计(如图1-2)
(图1-2)
3、测试平均分统计(如图1-3)
(图1-3)
4、
(1)测试总分降序排序(如图1-4)
(图1-4)
(2)测试总分升序排序(如图1-5)
(图1-5)
5、
(1)测试平均分降序排序(如图1-6)
(图1-6)
(2)测试平均分升序排序(如图1-7)
(图1-7)
6、
(1)测试按学号查询(如图1-8)
(图1-8)
(2)测试按姓名查询(如图1-9)
(图1-9)
另附部分程序代码:
1、初试代码
char stu[4][10];//学生
char bb[3]={'0'};
int num[4][4];//学号,成绩
int t[4]={0,1,2,3};
int i,j,a,m,temp,b,c,d,aa=0,k=0;
int sum[4],sums[4],ave[4];//总分,平均分
for(i=0;i<4;i++)
sum[i]=0,sums[4]=0,ave[4]=0;
H1:
d=0;
printf(" ==============学生成绩信息管理=================\n"); printf(" 1.信息输入\n");
printf(" 2.总分统计\n");
printf(" 3.平均分统计\n");
printf(" 4.总分排序\n");
printf(" —>(1)按总分降序排序\n");
printf(" —>(2)按总分升序排序\n");
printf(" 5.平均分排序\n");
printf(" —>(1)按平均分降序排序\n");
printf(" —>(2)按平均分升序排序\n");
printf(" 6.查询\n");
printf(" —>(1)按学号查询\n");
printf(" —>(2)按姓名查询\n");
printf(" ================================================\n"); printf("请选择操作项:");
scanf("%d",&a);
2、信息输入
if(a==1){
for(i=0;i<4;i++)
{
printf("请输入第%d个学生的姓名:",i+1);
scanf("%s",stu[i]);
printf("学号:");
scanf("%d",&num[i][0]);
for(m=0;m<i;m++)
{
if(num[i][0]==num[m][0])
{
printf("学号重复,请重新输入不同的学号!\n");
printf("学号:");
scanf("%d",&num[i][0]);
}
}
printf("FOX得分:");
scanf("%d",&num[i][1]);
if(num[i][1]<0 || num[i][1]>100)
{
printf("输入数值不合法,请输入0到100之间的数\n");
printf("FOX得分:");
scanf("%d",&num[i][1]);
}
printf("C得分:");
scanf("%d",&num[i][2]);
if(num[i][2]<0 || num[i][2]>100)
{
printf("输入数值不合法,请输入0到100之间的数\n");
printf("C得分:");
scanf("%d",&num[i][2]);
}
printf("ENGLISH得分:");
scanf("%d",&num[i][3]);
if(num[i][3]<0 || num[i][3]>100)
{
printf("输入数值不合法,请输入0到100之间的数\n");
printf("ENGLISH得分:");
scanf("%d",&num[i][3]);
}
printf("\n");
}
3、总分统计
else if(a==2&&k==1)//总分统计
{
for(i=0;i<4;i++)
for(j=1;j<4;j++)
sum[i]=sum[i]+num[i][j];
printf("学号姓名总分\n");
for(i=0;i<4;i++)
printf("%d %s %d\n",num[i][0],stu[i],sum[i]);
printf("\n");
printf("总分统计完成!是否继续(1.继续/2.退出)\n");
scanf("%d",&c);
if(c==1)
goto H1;
else
exit(1);
}
else if(a==3&&k==1)//平均分统计
{
for(i=0;i<4;i++)
{for(j=1;j<4;j++)
sums[i]=sums[i]+num[i][j];
ave[i]=sum[i]/3;}
printf("学号姓名平均分\n");
for(i=0;i<4;i++)
printf("%d %s %d\n",num[i][0],stu[i],ave[i]);
printf("\n");
printf("平均分统计完成!是否继续(1.继续/2.退出)\n");
scanf("%d",&c);
if(c==1)
goto H1;
else
exit(1);
}
4、总分排序
else if(a==4&&k==1)//总分排序
{
printf("总分排序:\n1.降序\n2.升序\n");
scanf("%d",&aa);
if(aa==1)
{
printf("按总分降序排序如下:\n");//总分降序
for(i=0;i<4;i++)
for(j=i;j<4;j++)
if(sum[t[i]]<sum[t[j]])
{
temp=t[i];
t[i]=t[j];
t[j]=temp;
}
for(i=0;i<4;i++)
printf("%d %s %d\n",num[t[i]][0],stu[t[i]],sum[t[i]]);//输出学号姓名总分printf("\n");
printf("总分降序排序完成!是否继续(1.继续/2.退出)\n");
scanf("%d",&c);
if(c==1)
goto H1;
else
exit(1);
}
else if(aa==2)
{
printf("按总分升序排序如下:\n");//总分升序
for(i=0;i<4;i++)
for(j=i;j<4;j++)
if(sum[t[i]]>sum[t[j]])
{
temp=t[i];
t[i]=t[j];
t[j]=temp;
}
for(i=0;i<4;i++)
printf("%d %s %d\n",num[t[i]][0],stu[t[i]],sum[t[i]]);//输出学号姓名总分printf("\n");
printf("总分升序排序完成!是否继续(1.继续/2.退出)\n");
scanf("%d",&c);
if(c==1)
goto H1;
else
exit(1);
}
}
5、平均分排序
else if(a==5&&k==1)//平均分排序
{
printf("平均分排序:\n1.降序\n2.升序\n");
scanf("%d",&aa);
if(aa==1)
{
printf("按平均分降序排序如下:\n");//平均分降序
for(i=0;i<4;i++)
for(j=i;j<4;j++)
if(ave[t[i]]<ave[t[j]])
{
temp=t[i];
t[i]=t[j];
t[j]=temp;
}
for(i=0;i<4;i++)
printf("%d %s %d\n",num[t[i]][0],stu[t[i]],ave[t[i]]);//输出学号姓名总分printf("\n");
printf("平均分降序排序完成!是否继续(1.继续/2.退出)\n");
scanf("%d",&c);
if(c==1)
goto H1;
else
exit(1);
}
else if(aa==2)
{
printf("按平均分升序排序如下:\n");//平均分升序
for(i=0;i<4;i++)
for(j=i;j<4;j++)
if(ave[t[i]]>ave[t[j]])
{
temp=t[i];
t[i]=t[j];
t[j]=temp;
}
for(i=0;i<4;i++)
printf("%d %s %d\n",num[t[i]][0],stu[t[i]],ave[t[i]]);//输出学号姓名总分
printf("\n");
printf("平均分升序排序完成!是否继续(1.继续/2.退出)\n");
scanf("%d",&c);
if(c==1)
goto H1;
else
exit(1);
}
}
6、查询
else if(a==6&&k==1)//查询
{
printf("查询:\n1.学号\n2.姓名\n");
scanf("%d",&aa);
if(aa==1)
{
printf("请输入查询学号:");//学号查询
scanf("%d",&b);
for(i=0;i<4;i++)
if(num[i][0]==b)
{
printf("学号:%d 姓名:%s\n",num[i][0],stu[i]);
printf("FOX: %d C: %d ENGLISH: %d 总分:%d\n",num[i][1],num[i][2],num[i][3],sum[i]);
d=1;
printf("\n");
printf("查询完成!是否继续(1.继续/2.退出)\n");
scanf("%d",&c);
if(c==1)
goto H1;
else
exit(1);
}
if(d==0)
{
printf("没有该学生!\n");
printf("是否继续(1.继续/2.退出)\n");
scanf("%d",&c);
if(c==1)
goto H1;
else
exit(1);
}
}
else if(aa==2)
{
printf("请输入查询姓名:");//姓名查询
scanf("%s",bb);
for(i=0;i<4;i++)
if(strcmp(stu[i],bb)==0)
{
printf("学号:%d 姓名:%s\n",num[i][0],stu[i]);
printf("FOX: %d C: %d ENGLISH: %d 总分:%d\n",num[i][1],num[i][2],num[i][3],sum[i]);
d=1;
printf("\n");
printf("查询完成!是否继续(1.继续/2.退出)\n");
scanf("%d",&c);
if(c==1)
goto H1;
else
exit(1);
}
if(d==0)
{
printf("没有该学生!\n");
printf("是否继续(1.继续/2.退出)\n");
scanf("%d",&c);
if(c==1)
goto H1;
else
exit(1); } } }
五、心得体会
通过本课程设计让我对用C语言编程以及算法的应用有了进一步的认识,对数据统计,排序,查询反面的编程以及信息录入和界面友好性设计方面都有了不同程度的学习,巩固和提高,另外,程序中应用到了各种算法让我更加深了对算法的理解与应用。

最后感谢曹老师的支持让我得以进可能完善了程序。

六、参考文献
1、齐勇等编著. C语言程序设计. 西安:西安交通大学出版社,1994
2、姚菁编著. 数据结构(C语言版)北京:机械工业出版社,2000.2。

相关文档
最新文档