XX大学CSUC语言程序设计实践报告题目学生成绩管理系统学生姓名剽悍的小白兔指导教师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时,即输出相应的学生信息即可。五、系统框图六、系统流程图登录模块学生基本信息查询录入修改班机信息管理学生课程管理输入修改查询学生成绩管理输入修改查询退出系统开始结束选择操作输入数据排序显示数据查询删除主菜单插入数据退出系统按学号按姓名保存数据吧按景平均成绩选择7选择6选择5选择4选择3选择2选择1选择8按平均成绩高低i读取数据吧选择8班级学号性别姓名七、界面设计·系统运行界面(部分)如下:图1——主界面图2——主菜单图3——录入数据图4——修改数据图5——插入数据图6——数据查询图7——计算平均成绩图8——不及格学生统计八、程序代码#includestdio.h#includewindows.h#includestring.h#includestdlib.hmain(){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(b1)printf(\n输入错误!!!\n请输入要录入的学生个数\n);elseif(b=1){for(a=0;ab;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;if;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;ao;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;ig[u];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;ig[u];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;ao;a++){if(qq==c[a].j){printf(\n请输入要添加的学生信息:\n班级学号姓名性别年龄\n);for(u=o;ua;u--){c[u+1]=c[u];for(i=0;ig[u];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(