C语言学生成绩查询系统_第1页
C语言学生成绩查询系统_第2页
C语言学生成绩查询系统_第3页
C语言学生成绩查询系统_第4页
C语言学生成绩查询系统_第5页
免费预览已结束,剩余18页可下载查看

下载本文档

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

文档简介

1、实训目的能力目标全面熟悉、掌握C语言基本知识,掌握C程序设计中数组、函数、指针 的操作,把编程和实际结合起来,增强对不同的问题运用和灵活选择合 适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握 分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机 解决实际问题的能力,规范编程思想,为以后在专业课程中应用计算机 系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。实训要求:(1)掌握C语言中的基本数据输入、输出;(2)熟练使用C语言中的数组;(3)熟练使用C语言中的函数;(4)熟练使用C语言中的指针;(5)熟练使用C语言中的结构体。实训内容(过程及步骤)设计题目:学

2、生成绩查询系统1、基本思路:以数组为基础,加以函数和结构体。然后程序分由“ 输入学生成绩”,“输出学生成绩 “查询学生成绩”/修改学生成绩”,“查看成绩排序”/查看成绩统计保存数据 “读取数据”等等这几大部分组成。这五部分各自用一个程序列出,然后在用其他函数将他们连接起来。2、程序:#include <stdafx.h>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <conio.h>#define N 10/* 定义结构体*typedef struct

3、 students /* 标记为 students*/ char num10;/* 学生学号 */char name10;/* 学生姓名 */int age; /* 年龄*/charsex10;/*性别*/floatcyy;/*C语言成绩*/floatcomputer;/*计算机成绩*/floatenglish;/*英语成绩*/floatpj;/*平均成绩*/STU;STU temp;void sort(STU students口,int n);/ 排序void save(STU students口,int n); / 导出int Locate(STU students口,int n); /

4、查询/* 显示菜单*/char displaymenu()char k;system( "cls");printf("n");printf("n");printf("1printf("2printf("3printf("4printf("5printf("6printf("7printf("8printf("9printf("学生成绩管理应用菜单输入学生成绩nn");输出学生成绩nn");查询学生成绩nn"

5、);修改学生成绩nn");查看成绩排序nn");查看成绩统计nn");保存数据nn");读取数据nn");退出系统nn");请选择你想进行的操作:");k=getchar();return k;/* 定义输出函数*/void printheader() /*格式化输出表头*/printf(printf("nn*学生成绩管理系统*nnn""|学号|姓名|年龄|性别| C语言成绩|计算机成绩|英语成绩|平均成绩| n"););void printdata(STU pp) /*格式化输出表中

6、数据*/STU* p;p=&pp;printf( "| %-5s| %-5s| %-4d| %-4s|%-6.0f|%-6.0f| %-5.0f| %-6.0f|n"x,p->cyy,p->computer,p->english,p->pj);/* 添力口学生信息*/,p->num,p->name,p->age,p->seint add(STU students口 , int *n) int i=0;system( "cls");printf( " n");printf(&quo

7、t;请输入学生信息n");printf("退出请在学生号处输入:0 n");printf("请输入学生学号:n ");scanf( "%s" ,studentsi.num);while(strcmp(studentsi.num,"0") ) /当输入的学号为时结束输入printf("请输入学生姓名:n ");scanf("%s" ,);printf("*nnn");printf("请输入学生年龄:n &quo

8、t;);scanf("%d" ,&studentsi.age);printf("*nnn");printf("请输入学生性别:n");scanf("%s",studentsi.sex);printf("*nnn");printf("请输入C语言成绩:n ");scanf("%f" ,&studentsi.cyy);printf("*nnn");printf("请输入计算机成绩:n ");scanf(&

9、quot;%f" ,&puter);printf("*nnn");printf("请输入英语成绩:n ");scanf("%f" ,&studentsi.english);printf("*nnn");studentsi.pj=(studentsi.cyy+puter+studentsi.english)/3;printf(i+; printf( printf( scanf(*n=i;”学生平均成绩:%-8.0fn" ,stud

10、entsi.pj);“*nnn");"请输入学生学号:n ");"%s",studentsi.num);save(students ,i);return i;/*查询学生信息函数*/int Locate(STU students口, int n) int k,m=-1;char num10,name20;int i=0;system( "cls");printf("退出请输入:0 n");printf("请选择以什么方式查询:1).按学生学号查询2).按学生姓名查询n");scanf(

11、 "%d",&k);if (k=1) printf("请输入你要查询的学生学号:n");scanf( "%s",num);while (i<n)if (strcmp(studentsi.num,num)=0) /* 若找到学号 */printf( ">>学生学号:sn*学生姓名:sn*学生年龄:dn*学生性别:sn>C语言成绩:%-8.0fn> 计 算机成绩:%-8.0fn>> 英语成绩:%-8.0fn>> 平均成绩:-8.0fn" ,studentsi

12、.num,,studentsi.age,studentsi.sex,studentsi.cy y,puter,studentsi.english,studentsi.pj);m=i;getchar();break;i+;if (i>=n)printf("没有所找学生信息n");getchar(); else if (k=2) printf("请输入你要查询的学生姓名:n");scanf( "%s",name); while (i<n)if (strcmp(student

13、,name)=0) /* 若找到姓名 */ printf( "学生学号:sn学生姓名:%sn学生年龄:dn学生性别:sn学生C语言成绩:-8.0fn计算 机成绩:%-8.0fn英语成绩:%-8.0fn平均成绩:-8.0fn",studentsi.num,,studentsi.age,studentsi.sex,studentsi.cyy,puter,studentsi.english,studentsi.pj);m=i;getchar(); break; i+; if (i>=n) printf(&q

14、uot;没有所找学生信息n");return m;/*返回一个根n#于修改学生信息*/ getchar();/* 显示函数*/void input(STU students口,int n)int i;system( "cis" ); / 清屏if (n=0)/*表示没有学生信息记录*/printf( "n没有学生记录!n"); printf( "nn");printheader(); /*输出表格头部*/ i=0; while (i<n)/*逐条输出数组中存储的学生信息*/printdata(studentsi); i

15、+; getchar();/*修改子程序*/void Modify(STU students口, int n)int i;if (n<=0)system( "cls");printf( " n 退出请输入:0 n");printf( "nnot found!n");getchar();return ;system( "cls");printf( "修改学生信息");input(students,n);i=Locate(students,n); /*查询到该数组元素,并返回下标值*/if (

16、i!=-1)/*若i!=-,表明已经找到该数组元素*/printf("请输入新的学生信息:n");printf("学号:");scanf( "%s",studentsi.num);printf("姓名:");scanf( "%s" ,);printf("年龄:");scanf( "%d",&studentsi.age);printf("性别:");scanf( "%s",stude

17、ntsi.sex);printf("C 语言:");scanf( "%f" ,&studentsi.cyy);printf(" 英语:");scanf( "%f" ,&studentsi.english);printf(" 计算机:");scanf( "%f" ,&puter);studentsi.pj=(studentsi.cyy+studentsi.english+puter)/3;printf(

18、 "平均成绩:%-9.0fn" ,studentsi.pj);save(students ,n);printf( "n 修改成功!n");elseprintf( "not found!n" );getchar();/*学生成绩排序子程序 *void sort(STU students口,int n)int i,j,a,b,c,d,e,f,k;float p;printf( " n 退出请输入:0 n"););printf("成绩排序方式选择:1.按C吾言2.按英语3.按平均n " scanf(

19、"%d",&k);if (k=1)/*用选择法对印言排序*/for (i=0; i<n; i+) for (j=0;j<n-1;j+)if (studentsi.english<studentsj+1.english) temp=studentsi;studentsi=studentsj+1;studentsj+1=temp;else if (k=2) /*英语用冒泡法*/for (a=0; a<n-1; a+) c=a;for (b=a+1; b<n; b+)if (studentsb.cyy>studentsc.cyy) c=

20、b;if (c!=a) temp=studentsa;studentsa=studentsc;studentsc=temp; if (k=3)/*平均成绩用插入法*/for (d=1;d<n;d+)p=studentsd.pj;for (e=0;e<d;e+)if (studentse.pj<p)break ;if (e=d)continue ;for (f=d;f>e;f-)studentsf=studentsf-1;studentse=temp;input(students,n); /*显示排序后的所有记录*/save(students ,n);printf( &q

21、uot;n 排序完成!n");/*统计学生分数在各等级的人数子程序*/void Tongji(STU students口, int n)int count6085=0,count85=0,count60=0;int i=0;system( "cls");printf( " n 退出请输入:0 n");input(students,n);i=0;while (i<n)if (studentsi.pj>85)count85+;i=i+1;if (studentsi.pj>=60&&studentsi.pj<=

22、85) count6085+;i=i+1;<85*/if (studentsi.pj<60)count60+;i=i+1;<60*/ printf( printf( printf( printf( printf( printf( printf(n*统计结果*nn");平均成绩高于分的人数:%d n" ,count85);n"平均成绩在分和分之间的人数:%d n" ,count6085);n"平均成绩低于分的人数:d n" ,count60);n"continue ;/* 平均成绩=>85*/conti

23、nue ;/*60< 平均成绩continue ;/*平均成绩);););统计结束*");printf( "nn*getchar();/* 导出或保存数据*/void save(STU students口,int n)FILE* fp;int i=0;fp=fopen( "students" , "wb+"); /*以读写方式打开创建一个二进制文件*/if (fp=NULL) /*打开文件失败*/printf( "n*打开文件错误!*n");return ;for (i=0;i<n;i+)*/if (f

24、write(&studentsi, sizeof (STU),1,fp)=1) /*每次写一条记录或一个结构数组元素至文件 continue ;elsebreak;if (i>0)getchar();printf( "nn* 共导出 df学生信息*n" ,i);getchar();elsesystem( "cls");printf( "*没有信息导出*n");getchar();fclose(fp); /*关闭此文件*/* 导入数据*/void Read(STU students口, int * n)FILE* fp;i

25、nt i=0;fp=fopen( "students","廿);/*以只读方式打开一个已有的二进制文件*/if (fp=NULL) /*打开文件失败*/printf( 、*打开文件错误!*n");exit(0);for (i=0;i<N;i+)if (fread(&studentsi,sizeof (STU),1,fp)=1) /*每次读一条记录或一个结构数组元素至文件*/continue ;elsebreak;*n=i;if (i>0)printf(,nn*共导入:%d个学生信息*n",i);getchar();else

26、system("cls");printf(*没有信息导入! *n");getchar();getchar();fclose(fp);/*关闭此文件*/* 主函数 */ void main() STU studentsN;int n;char s13,s23="1"int i,k;printf("nn");printf("*口);printf("A欢迎使用本软件>Ann");printf("A版本:修改版>Annn");printf("a姓名:邢曾智 &l

27、t;班级:09511002< 学号 >:0951100201An");printf("AAn,);printf("*、口);printf("nn");for (i=0;i<3;i+) printf( "n请输入密码:");gets(sl);if (strcmp(s1,s2)=0)break ;elseprintf( "n>密码错误,请重新输入");if (i>2)printf( "n您已连续次输错,系统将退出!n");exit(0);elsewhile (

28、1)k=displaymenu();switch (k) case '1' : add(students,&n); break;case '2' : Read(students,&n);input(students,n) ;break ;case '3' : Read(students,&n);Locate(students,n);break ;case '4' : Read(students,&n);Modify(students,n);break ;case '5' : Read

29、(students,&n);sort(students,n);break ;case '6' : Read(students,&n);Tongji(students,n);break ;case '7' : save(students,n) ;break ;case '8' : Read(students,&n);break ;case '9' : system( "cls");printf( "n * 谢谢您的使用 *n");exit(0); break;defau

30、lt : printf( "nn输入错误,输入必须是9之间的一个数字!请重新输入 n" );getchar();getchar();3、运行结果(截图):第一步:输入本软件的使用密码。第二步:登陆后的画面圆J C:W;ndovjsm32,cmd.exc学生成廷管理 一应用篥量一 输入学生成绩 输出学生成绩 查询学生碰责 修改学生成绩 查看成绩排序 查看成绩统计 保存数据 读取数据 退出系统请选择你想进行的操作:第三步:输入学生成绩的画面第四步:输出学生成绩这个是随便输入后保存的有关数据33 C:Windom 3 2cmd, exe黑蜒蓑H:舞施聂时:MM:M:E 生成与声言王里;二充舞舞髯:M X 舞M词ME X X X舞舞菊花舞 * M父学号R2 01智 三1:百 姓张邢年龄!性别;C语言成绩I计算机成绩;英语成绩I平均成绩第五步:查询成绩FCT C:Mndow5与ystem32cmd.exe退出请神人;清选择因十以方式查询中.按学生学号查询 2).按学生姓名查询请输入你要查询的学生学号二1学生学号二01学生姓刍:用曾智 学生年售:25 季较价男 靖高成获:65 h56;墟长绩:6S) 平均成绩第六步:修改原来的信息厘 CW ndowssystem 32cmd.exe共导出2个学生

温馨提示

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

评论

0/150

提交评论