C语言实验学生成绩管理系统中南大学.docx
- 文档编号:12545847
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:27
- 大小:264.09KB
C语言实验学生成绩管理系统中南大学.docx
《C语言实验学生成绩管理系统中南大学.docx》由会员分享,可在线阅读,更多相关《C语言实验学生成绩管理系统中南大学.docx(27页珍藏版)》请在冰点文库上搜索。
C语言实验学生成绩管理系统中南大学
XX大学
CSU
C语言程序设计实践报告
题目学生成绩管理系统
学生姓名剽悍的小白兔
指导教师TZ
学院信息科学与工程学院
专业班级电气信息类XXXX班
完成时间20XX年X月
一、设计目的
通过课程设计使学生综合使用所学过的C语言程序设计知识,掌握结构化程序设计的基本思路和方法,在所掌握的基本知识和技能的基础上,进一步提高自学能力和查找资料的能力,解决一定程度的复杂的结构化程序设计问题,加深对所学知识的理解与掌握,增强学生我们利用自己所学知识解决实际问题的能力,为以后的程序开发打下基础。
二、系统分析
随着科学技术的不断发展,对人们的工作水平要求也越来越高,然而计算机就成了帮助人们解决这个问题的工具,熟练的运用计算机,它能为人们解决许多工作上的难题。
对与一个管理人员来说,快而迅速的了解各种信息是很关键的。
使用计算机在C语言环境下编写相关的管理系统就能达到对相关信息的录入、显示;对记录的查询极其修改等目的。
基于同样的C语言环境,对其提供的头文件*h(stdio.h,stdlib.h,string.h,malloc.h,mem.h,ctype.h,conio.h等)的不同组合,能为我们解决许许多多的问题,因此,用它来编写成绩管理管理系统是可行的。
三、学生成绩管理系统主要功能
✧数据的录入:
如录入学生的基本信息,以及该学生选修课程的基本信息;
✧数据的修改:
如修改指定学号、或者指定姓名的学生信息,或者修改其选修课程信息;
✧数据的插入:
插入某个学生信息;
✧数据的查询:
如按学号查询、按姓名查询等;
✧数据的删除:
如删除指定学号、或者指定姓名的学生及其选修课程信息;
✧平均成绩的计算:
计算每个学生各门功课的平均成绩,并按平均成绩从高到低的次序输出学生信息;
✧列出不及格学生清单(学号、姓名、不及格的课程和成绩)。
四、功能的实现与要求
1.数据录入:
数据录入的功能是将需要的数据进行录入,用于后面的各项操作。
实现:
用输入函数对数据进行录入,先确定学生的个数,再用一个循环进行输入,选修课程数量亦然。
2.数据修改:
数据修改的主要功能是为修改数据输入出现的错误,实现:
先指定该生的学号,找到该生,再输出该生当前的信息,用一个if语句对数据进行修改,再用一个循环语句对选修课信息进行修改。
3.数据插入:
数据插入的主要功能是在数据录入之后,为防止数据输入的遗漏,实现:
分为两个部分,第一个是插入第一个位置,第二是插入第一个位置之后,把当前的位置赋给后面的加以实现。
4.数据查询:
数据查询的主要功能是在数据输入之后进行分类再现,实现:
分为输出所有数据,按学号查询,按姓名查询,当输入的数据满足条件时即输出所要求的。
5.数据删除:
数据删除的主要功能是在数据录入、数据插入和数据修改完成之后对无用数据进行删除,实现:
输入学号,满足条件时即把后一个数值赋给前一个数值,达到删除的目的。
6.平均值计算:
平均值计算的主要功能是求平均值,再对其进行排序,实现:
用公式进行计算求平均值,之后便是排序问题,求最大值,然后依次输出各最大值,即实现了排序功能。
7.列出不及格学生清单:
这部分的主要功能是列出不及格学生清单,实现:
用一个判断语句,当分数小于60时,即输出相应的学生信息即可。
五、系统框图
六、系统流程图
七、界面设计
·系统运行界面(部分)如下:
图1——主界面
图2——主菜单
图3——录入数据
图4——修改数据
图5——插入数据
图6——数据查询
图7——计算平均成绩
图8——不及格学生统计
八、程序代码
#include
#include
#include
#include
main()
{
inti,w=0,u/*被选中学生的下标*/,f/*科目数量*/;into=0/*学生总数*/,p=0,g[50]/*每个学生的选修课程数量*/,a,x,b/*新增学生个数*/,xx/*当前学生班级*/;charxm[50]/*当前学生姓名*/,h[10];charoo/*判断是否继续*/,q;floats[50]/*平均成绩*/,max,al[50];longqq;
structstudent
{
inti;/*班级*/
longj;/*学号*/
charm[30];/*姓名*/
charn[10];/*性别*/
intx;/*年龄*/
}c[50];
structscore
{
intq;/*课程编号*/
charw[50];/*课程名称*/
floate;/*学分*/
floatr;/*考试成绩*/
floatt;/*平时成绩*/
doubley;/*综合成绩*/
}z[50][10];
printf("\n\n*******************************************************************************\n\n\n欢迎进入\n\n学生成绩管理系统\n\n\n设计者:
剽悍的小白兔090909XXXX\n\n指导教师:
TZ\n\nXX大学信息科学与工程学院电气09XX班\n\n\n2010年7月\n\n\n*******************************************************************************\nPressEntertoContinue");
getchar();system("CLS");
while
(1)
{
system("CLS");
printf("\n\n*******************************************************************************\n系统主菜单\n\n1.录入数据\n\n2.修改数据\n\n3.插入数据\n\n4.数据查询\n\n5.删除数据\n\n6.平均成绩计算\n\n7.列出不及格学生清单\n\n8.退出系统\n\n");
printf("请输入一个数字来选择目录:
\n\n");
scanf("%d",&i);
system("CLS");
if(i==1)/*1.录入数据*/
{
printf("录入数据\n\n");
while
(1)
{
printf("\n请输入要录入的学生个数:
\n");
scanf("%d",&b);
if(b<1)printf("\n输入错误!
!
!
\n请输入要录入的学生个数\n");
elseif(b>=1)
{
for(a=0;a
{
printf("\n请输入第%d个学生的基本信息:
\n\n班级学号姓名性别年龄\n",a+1);
scanf("%d%ld%s%s%d",&c[o+a].i,&c[o+a].j,&c[o+a].m,&c[o+a].n,&c[o+a].x);
printf("\n请输入此学生选修课程数量:
\n");
scanf("%d",&f);
g[o+a]=f;
for(i=0;i { printf("\n请输入该学生第%d门选修课程信息: \n\n课程编号课程名称学分考试成绩平时成绩\n",i+1); scanf("%d%s%f%f%f",&z[o+a][i].q,&z[o+a][i].w,&z[o+a][i].e,&z[o+a][i].r,&z[o+a][i].t); } } } o=p+b; p=b; getchar(); printf("\n是否继续输入y/n? \n"); scanf("%s",&h); if(strcmp(h,"n")==0)break; elseif(strcmp(h,"y")==0)system("CLS"); } } elseif(i==2)/*2.修改数据*/ { printf("修改数据\n"); if(o==0)printf("\n系统内没有学生信息"); else { while (1) { printf("\n请输入要修改数据的学生的学号: \n"); scanf("%ld",&qq);w=0; for(a=0;a { if(qq==c[a].j) { printf("该学生当前信息: 班级: %d学号: %ld姓名: %s性别: %s年龄: %d\n",c[a].i,c[a].j,c[a].m,c[a].n,c[a].x); u=a;w=w+1; } } if(w==0){printf("输入错误! ! ! ");break;} while (1) { printf("\n请输入数字选择要修改的数据: \n1.班级2.学号3.姓名4.性别5.年龄6.选修课程信息\n"); scanf("%d",&i); if(i! =6)printf("\n请输入修改后数据: \n"); if(i==1)scanf("%d",&c[u].i); elseif(i==2)scanf("%ld",&c[u].j); elseif(i==3)scanf("%s",&c[u].m); elseif(i==4)scanf("%s",&c[u].n); elseif(i==5)scanf("%d",&c[u].x); elseif(i==6) { printf("\n该学生选修课当前信息: "); for(i=0;i { printf("课程编号: %d课程名称: %s学分: %3.1f考试成绩: %3.1f平时成绩: %3.1f\n",z[u][i].q,z[u][i].w,z[u][i].e,z[u][i].r,z[u][i].t); } printf("\n请输入要修改的数据的当前选修课程编号: \n"); scanf("%d",&x);w=0; for(i=0;i { if(x==z[u][i].q) { printf("\n请输入数字选择要修改的数据: 1.课程编号2.课程名称3.学分4.考试成绩5.平时成绩\n"); scanf("%d",&xx); printf("\n请输入修改后数据: \n"); if(xx==1)scanf("%d",&z[u][i].q); elseif(xx==2)scanf("%s",&z[u][i].w); elseif(xx==3)scanf("%f",&z[u][i].e); elseif(xx==4)scanf("%f",&z[u][i].r); elseif(xx==5)scanf("%f",&z[u][i].t); elseprintf("输入错误! ! ! "); w=w+1; } } if(w==0)printf("输入错误! ! ! "); } else{printf("输入错误! ! ! ");break;} printf("\n\n是否继续修改此学生信息y/n? \n"); scanf("%s",&h); if(strcmp(h,"n")==0)break; elseif(strcmp(h,"y")==0)system("CLS"); } printf("\n\n是否继续下一学生信息y/n? \n"); scanf("%s",&h); if(strcmp(h,"n")==0)break; elseif(strcmp(h,"y")==0)system("CLS"); } } } elseif(i==3)/*3.插入数据*/ { printf("插入数据"); while (1) { printf("\n是否要将信息插入到第一个位置y/n? \n\n"); scanf("%s",&h); if(strcmp(h,"n")==0) { printf("\n请输入要插入位置前一个学生的学号: "); scanf("%ld",&qq); for(a=0;a { if(qq==c[a].j) { printf("\n请输入要添加的学生信息: \n班级学号姓名性别年龄\n"); for(u=o;u>a;u--) { c[u+1]=c[u]; for(i=0;i z[u+1][i]=z[u][i]; g[u+1]=g[u]; } scanf("%d%ld%s%s%d",&c[a+1].i,&c[a+1].j,&c[a+1].m,&c[a+1].n,&c[a+1].x); o=o+1; printf("是否添加该学生的选修课程信息y/n? "); scanf("%s",&h); if(strcmp(h,"y")==0) { printf("\n请输入此学生选修课程数量: \n"); scanf("%d",&f); g[a+1]=f; printf("\n请分别输入该学生选修课程信息: \n\n课程编号课程名称学分考试成绩平时成绩\n"); for(i=0;i { scanf("%d%s%f%f%f",&z[a+1][i].q,&z[a+1][i].w,&z[a+1][i].e,&z[a+1][i].r,&z[a+1][i].t); } } } } } elseif(strcmp(h,"y")==0) { printf("\n请输入要添加的学生信息: \n班级学号姓名性别年龄\n"); for(u=o;u>=0;u--) { c[u+1]=c[u]; for(i=0;i z[u+1][i]=z[u][i]; g[u+1]=g[u]; } scanf("%d%ld%s%s%d",&c[0].i,&c[0].j,&c[0].m,&c[0].n,&c[0].x); o=o+1; printf("是否添加该学生的选修课程信息y/n? \n"); scanf("%s",&h); if(strcmp(h,"y")==0) { printf("\n请输入此学生选修课程数量: \n"); scanf("%d",&f); g[0]=f; printf("\n请分别输入该学生选修课程信息: \n\n课程编号课程名称学分考试成绩平时成绩\n"); for(i=0;i { scanf("%d%s%f%f%f",&z[0][i].q,&z[0][i].w,&z[0][i].e,&z[0][i].r,&z[0][i].t); } } } printf("\n\n是否继续插入下一学生信息y/n? \n"); scanf("%s",&h); if(strcmp(h,"n")==0)break; elseif(strcmp(h,"y")==0)system("CLS"); } } elseif(i==4)/*4.数据查询*/ { printf("数据查询\n"); for(a=0;a { for(i=0;i { z[a][i].y=z[a][i].r*0.7+z[a][i].t*0.3; } } while (1) { printf("\n\n*******************************************************************************\n\n数据查询\n\n\n1.显示全部数据\n\n2.按学号查询\n\n3.按姓名查询\n\n4.返回主菜单"); printf("\n\n请输入一个数字来选择目录: \n\n"); scanf("%d",&p); if(p==1) { for(a=0;a { printf("班级: %d学号: %ld姓名: %s性别: %s年龄: %d\n",c[a].i,c[a].j,c[a].m,c[a].n,c[a].x); for(i=0;i printf("课程编号: %d课程名称: %s学分: %3.1f考试成绩: %3.1f平时成绩: %3.1f综合成绩: %3.1f\n",z[a][i].q,z[a][i].w,z[a][i].e,z[a][i].r,z[a][i].t,z[a][i].y); } } elseif(p==2) { printf("请输入要查询学生的学号: \n"); scanf("%ld",&qq);w=0; for(a=0;a { if(qq==c[a].j) { printf("班级: %d学号: %ld姓名: %s性别: %s年龄: %d\n",c[a].i,c[a].j,c[a].m,c[a].n,c[a].x); for(i=0;i printf("课程编号: %d课程名称: %s学分: %3.1f考试成绩: %3.1f平时成绩: %3.1f综合成绩: %3.1f\n",z[a][i].q,z[a][i].w,z[a][i].e,z[a][i].r,z[a][i].t,z[a][i].y); w=w+1; } } if(w==0)printf("此学号不存在! \n"); } elseif(p==3) { printf("请输入要查询学生的姓名: \n"); scanf("%s",&xm);w=0; for(a=0;a { if(strcmp(xm,c[a].m)==0) { printf("班级: %d学号: %ld姓名: %s性别: %s年龄: %d\n",c[a].i,c[a].j,c[a].m,c[a].n,c[a].x); for(i=0;i printf("课程编号: %d课程名称: %s学分: %3.1f考试成绩: %3.1f平时成绩: %3.1f综合成绩%3.1f\n",z[a][i].q,z[a][i].w,z[a][i].e,z[a][i].r,z[a][i].t,z[a][i].y); w=w+1; } } if(w==0)printf("此姓名不存在! \n"); } elseif(p==4) break; elseprintf("输入错误! ! ! \n"); printf("\n\n是否返回数据查询界面y/n? \n"); scanf("%s",&h); if(strcmp(h,"n")==0)break; elseif(strcmp(h,"y")==0)system("CLS"); } } elseif(i==5)/*5.删除数据*/ { printf("删除数据"); while (1) { printf("\n请输入要删除的学生的学号: \n"); scanf("%ld",&qq);w=0; for(a=0;a { if(qq==c[a].j) { for(i=a;i { c[i]=c[i+1]; for(u=0;u z[i][u]=z[i+1][u]; g[i]=g[i+1]; } printf("\n已删除\n\n");w=w+1; o=o-1; } } if(w==0)printf("\n该学生不存在! \n"); printf("\n\n是否继续删除学生数据y/n? \n"); scanf("%s",&h); if(strcmp(h,"n")==0)break; elseif(strcmp(h,"y")==0)system("CLS"); } } elseif(i==6)/*6.平均成绩计算*/ { printf("平均成绩计算"); printf("\n按平均成绩从高到低的次序输出学生信息: \n\n"); for(a=0;a { for(i=0;i { z[a][i].y=z[a][i].r*0.7+z[a][i].t*0.3; } } while (1) { for(a=0;a { al[a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 学生 成绩管理系统 中南 大学