c语言程序设计_学生成绩管理系统.doc_第1页
c语言程序设计_学生成绩管理系统.doc_第2页
c语言程序设计_学生成绩管理系统.doc_第3页
c语言程序设计_学生成绩管理系统.doc_第4页
c语言程序设计_学生成绩管理系统.doc_第5页
已阅读5页,还剩24页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计课程设计报告中南民族大学工商学院电子信息与计算机技术系项目名称: 学生成绩管理系统 学生姓名: 学 号: 班 级: 指导教师: 20年月日学生成绩管理系统目录1.序言22.设计目的及意义22.1 目的22.2 意义23.功能模块详细设计23.1系统功能模块描述23.2 录入函数功能设计33.3 查找函数功能设计43.4统计函数功能设计53.5添加函数功能设计63.6更新函数功能设计73.7执行流程介绍84.系统性能测试94.1主菜单测试94.2录入功能测试94.3浏览功能测试104.4查找功能测试114.5排序功能测试124.6统计功能测试124.7更新功能测试134.8 添加功

2、能测试14设计小结15致谢15参考文献:15附录:源代码161.序言随着科学教育事业的发展,学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。2.设计目的及意义2.1 目的对初学C语言的人的一个很好的锻炼,能够更加深刻认识到C语言的重要性和广泛应用性。通过此次实验设计,巩固C语言程序设计的

3、基本知识,更熟练和灵活地能够综合运用学的知识。能够更加熟练地使用基本数据类型,基本控制结构,数组,指针,函数,结构体,加深对C语言中变量、数据类型的认识。2.2 意义巩固和加深学生对C语言课程的基本知识的理解和掌握 ,对自己学习C语言的一次比较好的应用,它要求学者掌握C语言编程和程序调试的基本技能 ,利用C语言进行基本的软件设计 ,掌握书写程序设计说明文档的能力 ,提高运用C语言解决实际问题的能力3.功能模块详细设计3.1系统功能模块描述学生成绩管理系统统计学生信息查找学生信息浏览学生信息录入学生信息更新学生信息从文件录入从键盘录入对所有学生成绩进行浏 览按学号查找按姓名查找对总分排序分类排序

4、删除学生信息添加学生信息图3-1学生成绩管理系统模块图3.2 录入函数功能设计首先会给定一个要输入的人数界限,根据自己要输入的人数进行输入,系统会提示你输入学生的信息,其中包括姓名、性别、各科目的分数,系统会自动生成一个有序数列,即学号。其执行流程图如下所示:开始按提示进行输入人数是否在1-50之间 否 是 按提示输入学生信息 调用浏览函数显示输入结果 录入函数结束 图3-2录入函数设计3.3 查找函数功能设计查找函数有两种查找方法,分别为按姓名和学号查找,当输入为flag=1时,系统会提示按照姓名查找,当输入为flag=2时,系统则提示按照学号查找,其流程图为: 开始 按提示输入1或者2 判

5、断输入数字 Flag=1 Flag=2 按学号查找按姓名进行查找判断学号是否正确 不 不判断名字是否存在 存 正 在 确 存在 正确结束查找操作 图 3-3查找函数设计3.4统计函数功能设计统计函数会统计各科目的最高分、最低分以及平均分的统计,并且按照操作进行科目统计。会有4中选择,当flag=1时,对数学进行统计;当flag=2时,对英语进行统计,当flag=3时,对c成绩进行统计,当flag=4时,统计函数功能结束。跳出循环。如图3-4所示:开始 选择四个选择进行操作根据选择进行操作 Flag=4 Flag=1 flag=3 flag=2对c成绩统计进行英语统计进行数学统计结

6、束统计操作 图 3-4 统计函数设计3.5添加函数功能设计添加函数主要是对额外的学生记录进行添加,同前面一样,也是对其信息的输入,并且输入完成之后,再对学生成绩进行排序和统计,如图所示开始输入学生的信息:名字、性别、各科目成绩等等。判断是否继续输入 Flag=Y flag=N停止输入学生信息选择继续输入 结束添加功能 图 3-5 添加函数设计3.6更新函数功能设计开始更新函数包含了两个子函数,分别是修改和删除两项,修改主要是修改录入函数里面错误的内容,而删除主要是删除一些不必要的学生信息,其功能流程如图3-6所示按照提示选择是修改还是删除判断操作和选择 Flag=1 Flag=2进行学生信息的

7、删除进行学生信息的修改 按照提示进行查找按提示进行查找查找后输入修改信息查找后进行信息删除判断是否删除(Y/N)是否确认修改(Y/N) 修改成功 Flag=Y Flag=Y 结束操作 Flag=N Flag=N 图3-6 更新函数设计 3.7执行流程介绍 主要是主函数调用子函数来进行操作和子函数相互之间的调用来完成执行,如图:开始以可读方式打开一个可读文件调用菜单函数进入while(1)循环输入1-6中的各个数值,选择相应操作输入是否为8 否 调用函数,进入操作 是 结束 图3-7流程执行图4.系统性能测试4.1主菜单测试进入系统后,主函数调用menu函数,显示主菜单,并提示用户根据屏幕输入选

8、择。截图如下图4-1所示: 图4-1主菜单测试4.2录入功能测试主函数调用此函数后,屏幕依次提示用户输入人数,姓名、性别、计算机分数、数学分数和英语分数信息,截图如下图4-2所示: 图4-2录入功能测试4.3浏览功能测试进入此功能后屏幕显示菜单,提示用户根据需要输入选择。并观看全部信息。截图如下图4-3所示: 图4-3浏览功能测试4.4查找功能测试4.4.1 按姓名查找按屏幕提示输入所要查找的姓名,如有符合条件的信息记录,则全部显示出来。截图如下图4-4所示: 图4-4按姓名查找测试4.4.2 按学号查找 按屏幕提示输入所要查找的学号,有符合的学生则显示此学生信息。截图如下图5-4所示: 图4

9、-4按学号查找测试4.5排序功能测试按屏幕操作对学生记录进行排序。截图如下图4-5所示: 图4-5排序功能测试4.6统计功能测试按操作对学生的各们科目的最大,和最小以及平均分进行统计,截图如下图4-6所示: 图4-6统计功能测试4.7更新功能测试4.7.1 修改功能测试根据输入的学号找到指定的信息记录,然后可以选择修改的项。如下图4-7所示: 图4-7修改功能测试4.7.2 删除功能测试根据指定的学号找到相应的信息记录,进行删除的操作。截图如下图4-7所示:图4-7删除功能测试4.8 添加功能测试添加若干各学生的信息,同样包括他的名字,性别,学号及各科目分数。截图如下4-8: 图4-8添加功能

10、测试设计小结其实这个程序对我来说还是有比较大的难度,其中链表的一些算法自己都不是很懂,这根平时没有认真听讲是有关的,所以导致在写这个程序时总出现一下基本的错误,这次课程设计是对平时学习的一个考验和总结,经过了这个课程设计之后,我发现我很多都没有做到,发现自己很多的不足,对定义理解不是很透彻,许多都是一知半解,还有就是缺乏锻炼,找不到熟悉的感觉,总感觉是那么回事,但是一做就是出错。这次课程设计其中有些事通过借鉴同学的代码,但是自己能够看懂,但是逛看懂这些还不够,自己应该把别人的东西看懂看透,然后将它变为自己的东西,才会有用,因此当看懂了之后,自己应该尝试着自己写这个程序,直到自己能够将它写出来那

11、才是真正的进步和掌握。总的来说,课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学生来说掌握计算机开发技术是十分重要的,因此,要学好这门课程,掌握这门课程!致谢其实自己还是有很多不懂的地方,经过谭立文和马赟的讲解之后才慢慢掌握,慢慢弄懂了,最后在经过胡成松老师的考察下,明白了论文的许多错误,才纠正过来!因此比较感谢他们!参考文献:1雷于生,胡成松.C语言程序设计.武汉:中山大学出版社,2009.2杨路明.C语言程序设计

12、教程.北京邮电大学出版社.2009.7.- 15 -C语言程序设计课程设计报告附录:源代码#include <stdio.h>#include"string.h"#include"time.h"#include"stdlib.h"int menu();void save();void incre();void load();void luru();int chazhao();void liulan();void tianjia();void paixu();void tongji();void shanchu_xiugai

13、();#define N 50int cout10;int K; /定义全局变量struct student /定义结构体变量studentchar name20;char sexN;int id;float score3;float sum;stuN,stu1;int menu() /菜单函数int i,flag;system("cls"); /运行前清屏for(i=0;i<80;i+)printf("*");printf("n- - - - - - - - - - - - - - - -学习信息管理系统- - - - - - - -

14、- - - - - - - n");printf(" t|1.录入学生信息|ttt|2.浏览学生信息 |n");printf(" t|3.查找学生信息|ttt|4.对学生信息排序|n");printf(" t|5.统计学生信息|ttt|6.添加学生信息 |n");printf(" t|7.更新学生信息|ttt|8.退出程序 |n");printf("n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

15、 - -n");for(i=0;i<80;i+)printf("*");printf("nt输入选择类型1-8:");scanf("%d",&flag);return flag;void save()FILE *fp;if(fp=fopen("c:student","wb")=NULL)printf("Can not open the file!n");exit(0);fputc(K,fp);for(int i=0;i<K;i+)if(fwrit

16、e(&stui,sizeof(struct student),1,fp)!=1)printf("File can not be saved!n ");exit(0);fclose(fp);void incre()FILE *fp;if(fp=fopen("c:student","ab")=NULL)printf("Can not open the file!n");exit(0);if(fwrite(&stuK,sizeof(struct student),1,fp)!=1)printf("

17、;File can not be saved!n ");exit(0);fclose(fp);void load()FILE *fp;if(fp=fopen("c:student","rb")=NULL)printf("Can not open the file!n");exit(0);K=fgetc(fp);for(int i=0;i<K;i+)if(fread(&stui,sizeof(struct student),1,fp)!=1)printf("File can not be saved!n

18、 ");exit(0);fclose(fp);void luru() /录入函数int i,j;int m,x,num;system("cls"); printf("请输入要录入的学生人数,在(1-50)之间:");while(1) scanf("%d",&num); /用来控制需要录入学生的数目(用当循环是为了保证需要录入的学生数合法(1-100)if(1<=num&&num<=50)break;elseprintf("t请重新输入人数(1-50):");for(i=

19、K;i<num+K;i+)printf("t请输入学生信息:");printf("ntName %d:",i+1);scanf("%s",); /输入姓名srand(long)time(NULL); /提供不重复的seedwhile(1) /保证产生的随机数不重复m=0;x=rand()%10000+2010000; /控制随机数产生的范围for(j=0;j<i;j+)if(stuj.id=x)m=1;break;if(m=0)break;stui.id=x; printf("tID:%ldn&

20、quot;,x); /输出产生的随机数printf("tSex:");scanf("%s",stui.sex); /输入性别stui.sum=0;printf("t数学:");scanf("%f",&stui.score0); /输入分数printf("t英语:");scanf("%f",&stui.score1);printf("tc :");scanf("%f",&stui.score2);for(j=0;j

21、<3;j+) /求出学生的总成绩stui.sum+=stui.scorej;K+=num; /这样是为了达到重复批量录入的效果save();liulan();system("pause");void liulan() /浏览函数int i,j;load();printf("-n");printf("姓名t性别t学号tt数学tt英语ttC语言t总和n");for(i=0;i<K;i+)printf("n%st%st%d",,stui.sex,stui.id); /打印学生的信息for(j

22、=0;j<3;j+)printf("tt%.f",stui.scorej);printf("t%.fn",stui.sum);printf("-n");system("pause>null");int chazhao() /查找函数load();char name20;int i,j=0,k,x=0,flag;long number;printf("t你能够根据学生姓名或者学号来查找信息:1.名字,2,学号:");scanf("%d",&flag);if(

23、flag=1) /当key=1时按name查找给学生printf("t请输入学生名字:");scanf("%s",name);for(j=0,i=0;i<K;i+)if(strcmp(name,)=0)coutj+=i;x=1;else if(flag=2) printf("t请输入学生学号:");scanf("%ld",&number);for(j=0,i=0;i<K;i+)if(stui.id=number)coutj+=i;x=1;elsex=2;if(x=1) /当x=

24、1时表示 查找到学生 printf("该学生的信息为:n");for(i=0;i<j;i+)printf("姓名t性别t学号tt数学t英语tC语言t总和n",couti+1);printf("%s %s %ld",,stucouti.sex,stucouti.id);for(k=0;k<3;k+)printf("t%.f",stucouti.scorek);printf(" %.fn",stucouti.sum);else if(x=0)printf(&qu

25、ot;tt对不起没有找到您需要的学生信息!n");elseprintf("t请输入 (1-2)!n");j=chazhao();system("pause>null");return j;void paixu() /排序函数load();int i,j;for(i=0;i<K-1;i+)for(j=0;j<K-i-1;j+)if(stuj.sum<stuj+1.sum) /以总分为标准按照冒泡法对学生的信息进行排序 stu1=stuj;stuj=stuj+1;stuj+1=stu1;save();printf("

26、;t按总分排序成功!n");liulan(); /排序成功后自动调用浏览函数 将排序结果输出void tongji() /统计函数 load();int i,flag;float max,min,average,sum;printf("t1.英语tt2.数学tt3.Ct4.back.n");float num1,num2,num3,num4,num5; /用来统计各分数段学生的数目while(1)num1=num2=num3=num4=num5=0; /注意赋初值0应该放在当循环里面 printf("tt请选择要统计科目:(1-4):");sc

27、anf("%d",&flag); /用来选择所需要统计分数段的科目if(1<=flag&&flag<=3)sum=0;for(i=0;i<K;i+)if(90<=stui.scoreflag-1&&stui.scoreflag-1<=100)num1+;else if(80<=stui.scoreflag-1)num2+;else if(70<=stui.scoreflag-1)num3+;else if(60<=stui.scoreflag-1)num4+;else num5+;min

28、=max=stu0.scoreflag-1; /假设第一个学生的各门成绩既是最大值也是最小值if(stui.scoreflag-1>max) /求单门科目中的最高分max=stui.scoreflag-1;if(stui.scoreflag-1<min) /求单门科目中的最小值min=stui.scoreflag-1;sum+=stui.scoreflag-1;average=sum/K;printf("ttmax=%.2fn",max);printf("ttmin=%.2fn",min);printf("ttaverage=%.2

29、fn",average);else if(flag=4)break;else /当输入超过4或小于1时提示输入错误printf("t请重新输入 (1-4)!n");void tianjia()load();char flag;int i,j;int m,x; for(i=K;i<N;i+)incre();K+;printf("t请输入学生信息:");printf("ntName %d:",i+1);scanf("%s",); /输入姓名srand(long)time(NULL);

30、/提供不重复的seedwhile(1) /保证产生的随机数不重复m=0;x=rand()%10000+2010000; /控制随机数产生的范围for(j=0;j<i;j+)if(stuj.id=x)m=1;break;if(m=0)break;stui.id=x; printf("tID:%ldn",x); /输出产生的随机数printf("tSex:");scanf("%s",stui.sex); /输入性别stui.sum=0;printf("t数学:");scanf("%f",&am

31、p;stui.score0);printf("t英语:");scanf("%f",&stui.score1);printf("tc :");scanf("%f",&stui.score2);for(j=0;j<3;j+) /求出学生的总成绩stui.sum+=stui.scorej;printf("t请选择(Y(continue/N(back):");getchar();flag=getchar();if(flag='Y')continue;elsebrea

32、k;save();void xiugai()int i,j,answ,number,flag=0;liulan();j=chazhao();if(j=1)number=cout0;flag=1;else if(j>1)while(1)printf("t请输入名字:");scanf("%d",&number);number-;for(i=0;i<j;i+)if(number=couti)flag=1;if(flag=0)printf("tThe student is not you need amend,please chec

33、k out and input again!n");elsebreak;if(flag=1)printf("t确定要修改该学生的信息么?(Y(continue)/N(back)!");getchar();answ=getchar();if(answ='Y'&&flag=1)printf("t请输入修改后的学生信息:");printf("ntName %d:",number+1);scanf("%s",); /输入姓名printf("t

34、ID:%ldn",stunumber.id);printf("t Sex:");scanf("%s",stunumber.sex);stunumber.sum=0;printf("t数学:");scanf("%f",&stui.score0);printf("t英语:");scanf("%f",&stui.score1);printf("tc :");scanf("%f",&stui.score2);for(j=0;j<3;j+) /求出学生的总成绩stunumber.sum+=stunumber.scorej;printf("tt该学生的信息已

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论