《C语言实验报告--学生成绩管理系统.doc》由会员分享,可在线阅读,更多相关《C语言实验报告--学生成绩管理系统.doc(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、. -X X 大学C S UC语言程序设计实践报告题 目 学生成绩管理系统 学生XX 剽悍的小白兔 指导教师 T Z 学 院 信息科学与工程学院 专业班级 电气信息类XXXX班 完成时间 20XX年X月 一、 设计目的通过课程设计使学生综合使用所学过的C语言程序设计知识,掌握构造化程序设计的根本思路和法,在所掌握的根本知识和技能的根底上,进一步提高自学能力和查找资料的能力,解决一定程度的复杂的构造化程序设计问题,加深对所学知识的理解与掌握,增强学生我们利用自己所学知识解决实际问题的能力,为以后的程序开发打下根底。二、系统分析随着科学技术的不断开展,对人们的工作水平要求也越来越高,然而计算机就成
2、了帮助人们解决这个问题的工具,熟练的运用计算机,它能为人们解决多工作上的难题。对与一个管理人员来说,快而迅速的了解各种信息是很关键的。使用计算机在C语言环境下编写相关的管理系统就能到达对相关信息的录入、显示;对记录的查询极其修改等目的。基于同样的C语言环境,对其提供的头文件*hstdio.h ,stdlib.h,string.h,malloc.h,mem.h,ctype.h,conio.h等的不同组合,能为我们解决多多的问题,因此,用它来编写成绩管理管理系统是可行的。三、学生成绩管理系统主要功能 数据的录入:如录入学生的根本信息,以及该学生选修课程的根本信息; 数据的修改:如修改指定学号、或者
3、指定XX的学生信息,或者修改其选修课程信息; 数据的插入:插入某个学生信息; 数据的查询:如按学号查询、按XX查询等; 数据的删除:如删除指定学号、或者指定XX的学生及其选修课程信息; 平均成绩的计算:计算每个学生各门功课的平均成绩,并按平均成绩从高到低的次序输出学生信息; 列出不及格学生清单学号、XX、不及格的课程和成绩。四、功能的实现与要求1数据录入:数据录入的功能是将需要的数据进展录入,用于后面的各项操作。实现:用输入函数对数据进展录入,先确定学生的个数,再用一个循环进展输入,选修课程数量亦然。2. 数据修改:数据修改的主要功能是为修改数据输入出现的错误,实现:先指定该生的学号,找到该生
4、,再输出该生当前的信息,用一个if语句对数据进展修改,再用一个循环语句对选修课信息进展修改。3. 数据插入: 数据插入的主要功能是在数据录入之后,为防止数据输入的遗漏,实现:分为两个局部,第一个是插入第一个位置,第二是插入第一个位置之后,把当前的位置赋给后面的加以实现。4数据查询: 数据查询的主要功能是在数据输入之后进展分类再现,实现:分为输出所有数据,按学号查询,按XX查询,当输入的数据满足条件时即输出所要求的。5数据删除:数据删除的主要功能是在数据录入、数据插入和数据修改完成之后对无用数据进展删除,实现:输入学号,满足条件时即把后一个数值赋给前一个数值,到达删除的目的。6平均值计算:平均值
5、计算的主要功能是求平均值,再对其进展排序,实现:用公式进展计算求平均值,之后便是排序问题,求最大值,然后依次输出各最大值,即实现了排序功能。7. 列出不及格学生清单:这局部的主要功能是列出不及格学生清单,实现:用一个判断语句,当分数小于60时,即输出相应的学生信息即可。五、系统框图登录模块学生根本信息查询录入修改班机信息管理学生课程管理输入修改查询学生成绩管理输入修改查询退出系统六、系统流程图开场完毕选择操作输入数据排序显示数据查询删除主菜单插入数据退出系统按学号按XX保存数据吧按景平均成绩选择7选择6选择5选择4选择3选择2选择1选择8按平均成绩上下i读取数据吧选择8班级学号性别XX七、 界
6、面设计系统运行界面局部如下: 图1主界面图2主菜单图3录入数据图4修改数据图5插入数据图6数据查询图7计算平均成绩图8不及格学生统计八、程序代码#include#include#include#include main()int i,w=0,u/*被选中学生的下标*/,f/*科目数量*/;int o=0/*学生总数*/,p=0,g50/*每个学生的选修课程数量*/,a,x,b/*新增学生个数*/,xx/*当前学生班级*/;char xm50/*当前学生XX*/,h10;char oo/*判断是否继续*/,q;float s50/*平均成绩*/,max,al50;long qq;struct s
7、tudentint i;/*班级*/long j;/*学号*/char m30;/*XX*/char n10;/*性别*/int x;/*年龄*/c50;struct scoreint q;/*课程编号*/char w50;/*课程名称*/float e;/*学分*/float r;/*考试成绩*/float t;/*平时成绩*/double y;/*综合成绩*/z5010;printf(nn*nnn 欢 迎 进 入nn 学生成绩管理系统nnn 设计者:剽悍的小白兔 090909XXXXnn指导教师:TZnnXX大学 信息科学与工程学院 电气09XX班nnn 2010年7月nnn*n Pres
8、s Enter to Continue);getchar();system(CLS);while(1)system(CLS);printf(nn*n 系统主菜单nn1.录入数据nn2.修改数据nn3.插入数据nn4.数据查询nn5.删除数据nn6.平均成绩计算nn7.列出不及格学生清单nn8.退出系统nn);printf(请输入一个数字来选择目录:nn);scanf(%d,&i);system(CLS);if(i=1)/*1.录入数据*/printf(录入数据nn);while(1)printf(n请输入要录入的学生个数:n);scanf(%d,&b);if(b=1)for(a=0;ab;a+
9、)printf(n请输入第%d个学生的根本信息:nn班级 学号 XX 性别 年龄n,a+1);scanf(%d %ld %s %s %d,&co+a.i,&co+a.j,&co+a.m,&co+a.n,&co+a.x);printf(n请输入此学生选修课程数量:n);scanf(%d,&f);go+a=f;for(i=0;if;i+)printf(n请输入该学生第%d门选修课程信息:nn课程编号 课程名称 学分 考试成绩 平时成绩n,i+1);scanf(%d %s %f %f %f,&zo+ai.q,&zo+ai.w,&zo+ai.e,&zo+ai.r,&zo+ai.t);o=p+b;p=b
10、;getchar();printf(n是否继续输入y/n?n);scanf(%s,&h);if(strcmp(h,n)=0) break;else if(strcmp(h,y)=0) system(CLS);else if(i=2)/*2.修改数据*/printf(修改数据n);if(o=0) printf(n系统没有学生信息);elsewhile(1)printf(n请输入要修改数据的学生的学号:n);scanf(%ld,&qq);w=0;for(a=0;ao;a+)if(qq=ca.j)printf(该学生当前信息:班级:%d 学号:%ld XX:%s 性别:%s 年龄:%dn,ca.i,
11、ca.j,ca.m,ca.n,ca.x);u=a;w=w+1;if(w=0)printf(输入错误!);break;while(1)printf(n请输入数字选择要修改的数据:n1.班级 2.学号 3.XX 4.性别 5.年龄 6.选修课程信息n);scanf(%d,&i);if(i!=6) printf(n请输入修改后数据:n);if(i=1)scanf(%d,&cu.i);else if(i=2)scanf(%ld,&cu.j);else if(i=3)scanf(%s,&cu.m);else if(i=4)scanf(%s,&cu.n);else if(i=5)scanf(%d,&cu.
12、x);else if(i=6)printf(n 该学生选修课当前信息:);for(i=0;igu;i+)printf( 课程编号:%d 课程名称:%s 学分:%3.1f 考试成绩:%3.1f 平时成绩:%3.1fn,zui.q,zui.w,zui.e,zui.r,zui.t);printf(n请输入要修改的数据的当前选修课程编号:n);scanf(%d,&x);w=0;for(i=0;igu;i+)if(x=zui.q)printf(n请输入数字选择要修改的数据:1.课程编号 2.课程名称 3.学分 4.考试成绩 5.平时成绩n);scanf(%d,&xx);printf(n请输入修改后数据:
13、n);if(xx=1)scanf(%d,&zui.q);else if(xx=2)scanf(%s,&zui.w);else if(xx=3)scanf(%f,&zui.e);else if(xx=4)scanf(%f,&zui.r);else if(xx=5)scanf(%f,&zui.t);else printf(输入错误!);w=w+1;if(w=0) printf(输入错误!);else printf(输入错误!);break;printf(nn是否继续修改此学生信息y/n?n);scanf(%s,&h);if(strcmp(h,n)=0) break;else if(strcmp(h
14、,y)=0) system(CLS);printf(nn是否继续下一学生信息y/n?n);scanf(%s,&h);if(strcmp(h,n)=0) break;else if(strcmp(h,y)=0) system(CLS);else if(i=3)/*3.插入数据*/printf(插入数据);while(1)printf(n是否要将信息插入到第一个位置y/n?nn);scanf(%s,&h);if(strcmp(h,n)=0)printf(n请输入要插入位置前一个学生的学号:);scanf(%ld,&qq);for(a=0;aa;u-)cu+1=cu;for(i=0;igu;i+)z
15、u+1i=zui;gu+1=gu;scanf(%d %ld %s %s %d,&ca+1.i,&ca+1.j,&ca+1.m,&ca+1.n,&ca+1.x);o=o+1;printf(是否添加该学生的选修课程信息y/n?);scanf(%s,&h);if(strcmp(h,y)=0)printf(n请输入此学生选修课程数量:n);scanf(%d,&f);ga+1=f;printf(n请分别输入该学生选修课程信息:nn课程编号 课程名称 学分 考试成绩 平时成绩n);for(i=0;i=0;u-)cu+1=cu;for(i=0;igu;i+)zu+1i=zui;gu+1=gu;scanf(%
16、d %ld %s %s %d,&c0.i,&c0.j,&c0.m,&c0.n,&c0.x);o=o+1;printf(是否添加该学生的选修课程信息y/n?n);scanf(%s,&h);if(strcmp(h,y)=0)printf(n请输入此学生选修课程数量:n);scanf(%d,&f);g0=f;printf(n请分别输入该学生选修课程信息:nn课程编号 课程名称 学分 考试成绩 平时成绩n);for(i=0;if;i+)scanf(%d %s %f %f %f,&z0i.q,&z0i.w,&z0i.e,&z0i.r,&z0i.t);printf(nn是否继续插入下一学生信息y/n?n)
17、;scanf(%s,&h);if(strcmp(h,n)=0) break;else if(strcmp(h,y)=0) system(CLS);else if(i=4)/*4.数据查询*/printf(数据查询n);for(a=0;ao;a+)for(i=0;iga;i+)zai.y=zai.r*0.7+zai.t*0.3;while(1)printf(nn*nn 数 据 查 询nnn1.显示全部数据nn2.按学号查询nn3.按XX查询nn4.返回主菜单);printf(nn请输入一个数字来选择目录:nn);scanf(%d,&p);if(p=1)for(a=0;ao;a+)printf(班
18、级:%d 学号:%ld XX:%s 性别:%s 年龄:%dn,ca.i,ca.j,ca.m,ca.n,ca.x);for(i=0;iga;i+)printf(课程编号:%d 课程名称:%s 学分:%3.1f 考试成绩:%3.1f 平时成绩:%3.1f 综合成绩:%3.1fn,zai.q,zai.w,zai.e,zai.r,zai.t,zai.y);else if(p=2)printf(请输入要查询学生的学号:n);scanf(%ld,&qq);w=0;for(a=0;ao;a+)if(qq=ca.j)printf(班级:%d 学号:%ld XX:%s 性别:%s 年龄:%dn,ca.i,ca.
19、j,ca.m,ca.n,ca.x);for(i=0;iga;i+)printf(课程编号:%d 课程名称:%s 学分:%3.1f 考试成绩:%3.1f 平时成绩:%3.1f 综合成绩:%3.1fn,zai.q,zai.w,zai.e,zai.r,zai.t,zai.y);w=w+1;if(w=0) printf(此学号不存在!n);else if(p=3)printf(请输入要查询学生的XX:n);scanf(%s,&xm);w=0;for(a=0;ao;a+)if(strcmp(xm,ca.m)=0)printf(班级:%d 学号:%ld XX:%s 性别:%s 年龄:%dn,ca.i,ca
20、.j,ca.m,ca.n,ca.x);for(i=0;iga;i+)printf(课程编号:%d 课程名称:%s 学分:%3.1f 考试成绩:%3.1f 平时成绩:%3.1f 综合成绩%3.1fn,zai.q,zai.w,zai.e,zai.r,zai.t,zai.y);w=w+1; if(w=0) printf(此XX不存在!n);else if(p=4)break;else printf(输入错误!n);printf(nn是否返回数据查询界面y/n?n);scanf(%s,&h);if(strcmp(h,n)=0) break;else if(strcmp(h,y)=0) system(C
21、LS);else if(i=5)/*5.删除数据*/printf(删除数据);while(1)printf(n请输入要删除的学生的学号:n);scanf(%ld,&qq);w=0;for(a=0;ao;a+)if(qq=ca.j)for(i=a;io;i+)ci=ci+1;for(u=0;ugi;u+)ziu=zi+1u;gi=gi+1;printf(n已删除nn);w=w+1;o=o-1;if(w=0) printf(n该学生不存在!n);printf(nn是否继续删除学生数据y/n?n);scanf(%s,&h);if(strcmp(h,n)=0) break;else if(strcmp
22、(h,y)=0) system(CLS);else if(i=6)/*6.平均成绩计算*/printf(平均成绩计算);printf(n按平均成绩从高到低的次序输出学生信息:nn);for(a=0;ao;a+)for(i=0;iga;i+)zai.y=zai.r*0.7+zai.t*0.3;while(1)for(a=0;ao;a+)ala=0;for(u=0;uga;u+)ala=ala+zau.t;sa=ala/ga;for(a=0;ao;a+)max=sa;for(u=a;umax) max=su;su=sa;sa=max;for(a=0;ao;a+)printf(平均成绩:%3.1f
23、班级:%d 学号:%ld XX:%s 性别:%s 年龄:%dn,sa,ca.i,ca.j,ca.m,ca.n,ca.x);for(i=0;iga;i+)printf( 课程编号:%d 课程名称:%s 学分:%3.1f 考试成绩:%3.1f 平时成绩:%3.1f 综合成绩%3.1fn,zai.q,zai.w,zai.e,zai.r,zai.t,zai.y);printf(nn是否返回主目录y/n?n);scanf(%s,&h);if(strcmp(h,y)=0) break;else if(strcmp(h,n)=0) system(CLS);else if(i=7)/*7.列出不及格学生清单*
24、/printf(列出不及格学生清单);for(a=0;ao;a+)for(i=0;iga;i+)zai.y=zai.r*0.7+zai.t*0.3;while(1)printf(nn不及格学生清单:nn);x=0;for(a=0;ao;a+)for(u=0;uga;u+)if(int)zau.y60)printf(学号:%ld XX:%s 不及格课程:%s 综合成绩:%3.1fn,ca.j,ca.m,zau.w,zau.y);x=x+1;if(x=0) printf(所有学生成绩均及格);printf(nn是否返回主目录y/n?n);scanf(%s,&h);if(strcmp(h,y)=0)
25、 break;else if(strcmp(h,n)=0) system(CLS);else if(i=8)/*8.退出系统*/break;else printf(输入错误!);getchar();九、心得体会通过本次C程序课程设计,我觉得对自己提高很大:克制了的偷懒的毛病,这在我以后的学习和工作中的心理定位与调节有很大的帮助。我感受到了编程是一项非常烦琐密的活动,他不但需要一个人密的思考问题的能力,处理问题的能力,还需要有足够的耐心和谨治学的作风,来不得半点马虎。通过本次课程设计,我初步学会了论文设计的根本法,学会了怎样去借鉴别人的法和经历,知道如去查找资料和整合处理这些资料的能力,这为以后的大学毕业设计论文打下了一个初步的根底使我收益最大的是享受到了一种成功的喜悦,在这两个星期之中从开场确实定论文题目,然后是上网和上图书馆查找资料,编写C语言原程序,然后是进展编译,这个环节是一个非常痛苦和困难的,常常会因为一小点的错误而在编译失败与再次修改的漫漫循环之路中,但失败的越多,对人的考验就越多,在编译运行成功之后的享受成功的喜悦也就越多,另外在调试程序的过程中不断的思考和运用已经学到的知识,这对于自己是有很大的提高的。由于所学的知识不多,自己的编程经历缺乏,仍存在一些错误,按现有的知识水平有些东西暂时还无法解决,还有待于在以后的学习中不断提高和改良!. . word.zl-