C程序设计-小型学生成绩信息管理系统方案设计_第1页
C程序设计-小型学生成绩信息管理系统方案设计_第2页
C程序设计-小型学生成绩信息管理系统方案设计_第3页
C程序设计-小型学生成绩信息管理系统方案设计_第4页
C程序设计-小型学生成绩信息管理系统方案设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、计算机科学与工程学院c语言程序设计方案课程名称:C程序设计班级:20121421学号:2012142128姓名:张宗超任课教师:付老师二O 一四年1月1日题目小型学生成绩信息管理系统功能、录入功能:能录入学生期末考试信息,信息的录入可能是多次录入,每次录入学生个数可能 不同。、显示功能:完成录入的全部学生成绩信息记录的显示。、查询功能:完成按学号查询或按平均分数段查询,并显示查找到的信息记录。、排序功能:按平均分排序模块,完成按平均分降序和升序排序,并输出排序结果。存储功能:以文件的方式存储全部录入的班级学生考试成绩信息。要求、每一条记录包括学号、姓名、数学成绩、语文成绩、英语成绩、总分共6个

2、属性;利用结构体数组存放学生成绩信息;、系统具有录入信息、显示信息、存储信息、查询信息、排序的功能;(4、)系统的各个功能模块都用函数的形式来实现;设计内容整个程序除了主函数外,另外还有6个函数,实现3大主要功能:录入信息功能、查询信息功能、排 序功能,以及存储信息和显示信息等两个功能。各个函数的详细设计说明分别如下:录入信息功能:添加学生成绩的信息查询信息功能:查询根据学号或者成绩平均分数段所需要的同学成绩详细信息排序功能:按平均分排序,可以完成按平均分降序和升序排序存储信息功能:将所有录入学生成绩信息以文件的方式存储显示信息功能:显示录入的全部学生成绩详细信息4.1主函数mai n()调用

3、菜单选择函数,显示系统欢迎主界面,也是“功能选择”的界面,系统根据输入的数字选项来调 用相应的函数模块。4.2录入信息函数void myinput ()这是一个无参函数,其作用是往结构体数组中录入一个结构体(学生成绩信息)。算法:利用for语句进行信息的统计和记录。4.3存储信息函数void mysave ()定义一个指针文件来完成对录入信息的存储。4.4读取文件信息函数void ReadFromFile ()用if条件语句来实现信息的读取。4.5信息排序函数void mysort ()定义变量,再利用冒泡法对学生信息进行排序。4.6信息查询函数void search ()这是一个无参函数,利

4、用输入功能和for循环功能搜索一遍,如果没有找到当前记录则显示提示语句。 算法:for语句循环查找数组中的记录。4.7显示信息函数void myshow()利用for语句从第一条记录开始显示算法:for语句逐渐加1,显示每条记录。调试分析#i nclude 的预处理指令。/输入和输出函数#in clude /字符串预处理指令。#i nclude 预处理指令。/文件退出函数的#defi ne N70/称代表一个常量。typedef struct student/指定用一个符号名型。构造一个结构体类(char num6;/字符长度为六。定义学生的学号,char n ame8;/字符长度为八。定义学

5、生的姓名,float math;/的学生的数学成绩。定义双精度类型float Chi nese;/的学生的语文成绩。定义双精度类型float En glish;/的学生的英语成绩定义双精度类型float all;/的学生的总成绩。定义双精度类型float average;/的平均成绩。STU;/定义双精度类型录入学生的信息模块 void myinput(STU student,int *n)新的结构体变量。(char key;/用来判断是否停止录入信息。int i;/输入一个字符,int coun t=0;/息的人数。定义一个变量。for(i=0;1;i+)记录录入成绩信(printf(-请您

6、输入第d个学生的基本信息:n,count +1);printf(该同学的学号:n); scan f(%s,stude nti.nu m);/号Oprintf(-该同学的姓名:n);sca nf(%s,stude nti. name);/名。prin tf(该同学的数学成绩:n);scan f(%f, &stude nti .math);/学成绩。prin tf(该问学的语文成绩:n);scan f(%f, &stude nti .Chi nese);/文成绩。prin tf(该同学的英语成绩:n);scan f(%f, &stude nti.E nglish);/语成绩。printf(该同学的

7、总分:n);输入学生的学输入学生的姓输入学生的数输入学生的语输入学生的英分,.1fstude nti.all=stude nti.Ch in ese+stude nti.E nglish+stude nti.math;prin tf(%.1fn,stude nti .all);控制小数位,最后保留一位小数。/显示学生的总stude nti.average=(stude nti.Ch in ese+stude nti.E nglish+stude nti.math)/3;/计算该同学的平均成绩printf(” 平均分 n%.2fn,studenti.average); /显示该学生的平均成绩,%

8、.2f控制小数位,最后保留两位小数。count +;key=getchar();printf(-按T或者t停止录入,按两次回车继续录入或者按任意键+回车键继续录入);scan f(%c,&key);getchar();/if(key = T | key = t)(break;/*n = count; /存储录入的学生信息模块void mysave(STU stude nt,i nt n)(FILE *fp;/处理回车符。终止循环。定义一个文件指针。int i;为了输出正常结束判断关闭fp所指初始化。打开以保存提示文件不能检查文关闭fp所指定义一个变if(fp=fope n(stude nt.t

9、xt,ab)=NULL) wb数据,打开一个二进制文件,ab向二进制文件尾追加数据。(printf(”对不起,打开此文件失败! n);exit(O);/for(i=0;i n;i+)(fwrite(&stude nti ,sizeof(STU),1,fp);/sizeof数据类型或者表达式长度符。fclose(fp);/向的文件,缓放文件缓冲区。读取文件中学生信息模块void ReadFromFile(STU stude nt,i nt *n)(FILE *fp;int i; TOC o 1-5 h z *n =0;/if(fp=fope n( stude nt.txt,rb)=NULL)/的

10、 student.txt 文件。(printf(-对不起,打开此文件失败!n);/打开。exit(0);for(i=0;!feof(fp);i+)/feof件是否结束。(fread( &stude nti ,sizeof(STU),1,fp);(* n)+;(*n)-;fclose(fp);/向的文件,缓放文件缓冲区。显示录入所有学生信息模块void myshow(STU stude nt,i nt n)(int i;/量。for(i=0;i n; i+)(printf(学号:4s姓名:4s数学成绩1f语文成绩1f英语成绩1f总分:%.1f平均分:.2fn,stude nti. nu m,st

11、ude nti. name,stude nti.math,stude nti.Ch in ese,stude nti.E nglish,stude nti.all,stude nti.average);此函数为查询学生某条信息记录模块void display(STU student,int m) (printf(-学号:4s姓名:4s数学成绩:.1f语文成绩:.1f英语成绩%1f总分:%.1f平均分:%.2fn,stude ntm. nu m,stude ntm. name,stude ntm.math,stude ntm.Chi nese,st ude ntm.E nglish,stude

12、ntm.all,stude ntm.average);查询学生的成绩信息模块void search(STU stude nt,i nt n, char j)(int i;/定义一个变量。for(i=0;i n;i+)(if(strcmp(j,stude nti. nu m)=0)/定义的变量1用于记录查询的学生学号,strcmp比较和判断两个字符串的大小,若str1=str2则返回0(display(stude nt,i);elseII提示没有该定义两个定义一个(printf(无此学生n”;)学生信息。II使用冒泡法求出学生平均成绩升序的排序模块 int mysort(STU student,

13、int n)(int i,j;II变量i和j。float a,b;STU x;II变量x用来实现排序时的交换。for(i=0;i b) /语句,比较字符串的大小,然后交换。(x=stude ntj;stude ntj=stude ntj+1;stude ntj+1=x;return 0;/按学生平均成绩的降序排序模块int mysort2(STU student,int n)(int i,j;float a,b;STU x;for(i=0;i n-1;i+)(for(j=i;j n-1-i;j+)(a=(stude ntj.Ch in ese+stude ntj.E nglish+stude

14、ntj.math)/3;b=(stude ntj+1.Chi nese+stude ntj+1.E nglish+stude ntj+1.math)/3; if(a b) (x=stude ntj;stude ntj=stude ntj+1;stude ntj+1=x;return 0;/按平均成绩分数段查询学生信息模块int search2(STU student, int p1, int p2, int n)(int i;float average;for(i= 0;i=p1 & average=p2)(printf(平均成绩为 %.1fn, average);display(stude

15、nt, i);return 0;int/主函数(STU stude ntN;int/用来记录输入的学生的数目char key;char nu mber6;int p1;in t p2;/ 3; /mai n()n;while(1)(prin tf(nnnnnn);prin tf(tt n);prin tf(tt 欢迎进入我的小型学生成绩信息管理系统 n);prin tf(tt n);prin tf(tt 2012142128 张宗超 n);prin tf(tt n);printf(tt 2014年 01 月 01 日 n);prin tf(tt n);printf(录入信息(L)n);prin

16、tf(显示所有信息(X)n);printf(”按平均成绩分数段查询(P)n);printf(-按学生学号查询(H)n”)printf(”按平均成绩升序排序(S)n);printf(”按平均成绩降序排序(J)n);printf(-退出(E)n);scanf(%c, &key);getchar();处理回车符。switch(key)(case L:case T:myin put(stude nt, &n);mysave(stude nt, n);printf(”录入第d条数据n, n);break;case x:case X:ReadFromFile(stude nt, &n); myshow(s

17、tude nt,显示所录入的信息。n);break;case P:case p:ReadFromFile(stude nt, &n);printf(-请您输入需要查询的平均成绩分数段-开始:);scan f(%d, & p1);printf(-请您输入需要查询的平均成绩分数段-结束:);scan f(%d, & p2);getchar();search2(stude nt,p1,p2, n);调用按平均成绩分数段查询学生信息模块的函数。break;case h:case H:ReadFromFile(stude nt,&n);prin tf(请您输入需要查询信息的学生学号:”);sca nf(%s, nu mber);getchar();search(stude nt, n,nu mber);调用查询学生的成绩信息模块的函数。break;case s:case S:ReadFromFile(stude nt,&n);mysort(stude nt,n);调用使用冒泡法求出学生平均成绩升序的排

温馨提示

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

评论

0/150

提交评论