C语言学生成绩查询系统_第1页
C语言学生成绩查询系统_第2页
C语言学生成绩查询系统_第3页
C语言学生成绩查询系统_第4页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

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 1

3、0/*定义结构体 */typedefstructstudents/* 标记为 students*/charnum10;/*学生学号 */charname10;/*学生姓名 */intage;/* 年龄 */charsex10;/*性别 */floatcyy;/*C 语言成绩 */floatcomputer;/*计算机成绩 */floatenglish;/*英语成绩 */floatpj;/*平均成绩 */STU;STU temp;void sort(STU students,intn);/ 排序void save(STU students,intn);/ 导出intLocate(STU stud

4、ents,intn);/ 查询/*-显示菜单 -*/char displaymenu()chark;system("cls");printf("学生成绩管理n" );printf("-应用菜单-n");printf("1输入学生成绩 nn" );printf("2输出学生成绩 nn" );printf("3查询学生成绩 nn" );printf("4修改学生成绩 nn" );printf("5查看成绩排序 nn" );printf(&q

5、uot;6查看成绩统计 nn" );printf("7保存数据 nn" );printf("8读取数据 nn" );printf("9退出系统 nn" );printf("请选择你想进行的操作:" );k=getchar();.精品文档returnk;/*定义输出函数 */void printheader()/* 格式化输出表头*/printf("nn*学生成绩管理系统*nnn");printf("|学号 |姓名 |年龄 |性别 | C 语言成绩 | 计算机成绩 |英语成绩

6、|平均成绩 | n");void printdata(STU pp)/* 格式化输出表中数据*/STU* p;p=&pp;printf("| %-5s| %-5s| %-4d| %-4s|%-6.0f|%-6.0f|%-5.0f|%-6.0f|n",p->num,p->name,p->age,p->sex,p->cyy,p->computer,p->english,p->pj);/*添加学生信息 */intadd(STU students ,int*n)inti=0;system("cls"

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

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

9、");printf(" 请输入计算机成绩:n ");scanf("%f" ,&puter);.精品文档printf("*nnn");printf(" 请输入英语成绩 :n " );scanf("%f" ,&studentsi.english);printf("*nnn");studentsi.pj=(studentsi.cyy+puter+studentsi.english)/3;printf(&q

10、uot; 学生平均成绩 : %-8.0fn",studentsi.pj);i+;printf("*nnn");printf(" 请输入学生学号:n ");scanf("%s" ,studentsi.num);*n=i;save(students ,i);returni;/*查询学生信息函数*/intLocate(STU students,intn)intk,m=-1;char num10,name20;inti=0;system( "cls");printf(" 退出请输入 :0 n"

11、);printf(" 请选择以什么方式查询:1). 按学生学号查询2).按学生姓名查询n");scanf("%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>计

12、算机成绩 :%-8.0fn>>英语成绩 :%-8.0fn>>平均成绩:%-8.0fn" ,studentsi.num,,studentsi.age,studentsi.sex,studentsi.cy y,puter,studentsi.english,studentsi.pj);m=i;getchar(); break ;i+;if (i>=n).精品文档printf(" 没有所找学生信息n" );getchar();elseif (k=2)printf(" 请输入你要

13、查询的学生姓名:n");scanf("%s" ,name);while (i<n)if (strcmp(,name)=0)/* 若找到姓名 */ printf(" 学生学号 :%sn 学生姓名 :%sn 学生年龄 :%dn 学生性别 :%sn 学生 C语言成绩 :%-8.0fn计算机成绩 :%-8.0fn英语成绩 :%-8.0fn平均成绩:%-8.0fn" ,studentsi.num,,studentsi.age,studentsi.sex,studentsi.cy y,stude

14、puter,studentsi.english,studentsi.pj);m=i;getchar(); break ;i+;if (i>=n)printf(" 没有所找学生信息n" );returnm; /* 返回一个根 m便于修改学生信息*/getchar();/*显示函数 */void input(STU students,intn)inti;system( "cls");/ 清屏if (n=0)/* 表示没有学生信息记录*/printf("n 没有学生记录 !n");printf("nn&quo

15、t;);printheader();/* 输出表格头部 */i=0;while (i<n)/* 逐条输出数组中存储的学生信息*/printdata(studentsi);i+;getchar();.精品文档/*修改子程序 */voidModify(STU students,int n)inti;if (n<=0)system("cls");printf(" n 退出请输入 :0 n");printf("n-not found!-n");getchar();return ;system("cls");pr

16、intf(" 修改学生信息 " );input(students,n);i=Locate(students,n);/* 查询到该数组元素 , 并返回下标值 */if (i!=-1)/*若 i!= , 表明已经找到该数组元素*/printf(" 请输入新的学生信息 : n");printf("学号:");scanf("%s" ,studentsi.num);printf("姓名:");scanf("%s" ,);printf("年龄:&qu

17、ot;);scanf("%d",&studentsi.age);printf("性别:");scanf("%s" ,studentsi.sex);printf(" C 语言:");scanf("%f" ,&studentsi.cyy);printf("英语:");scanf("%f" ,&studentsi.english);printf("计算机:");scanf( "%f" ,&s

18、puter); studentsi.pj=(studentsi.cyy+studentsi.english+puter)/3;printf(" 平均成绩 : %-9.0fn",studentsi.pj);save(students ,n);printf("n-修改成功 !-n");elseprintf("not found!n");.精品文档getchar();/*学生成绩排序子程序*/void sort(STU students,intn)inti,j,a,b,c,d,e,f,k;f

19、loatp;printf(" n退出请输入 :0 n");printf(" 成绩排序方式选择: 1.按 C语言2.按英语3.按平均n ");scanf("%d",&k);if (k=1)/* 用选择法对 C语言排序 */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;elseif (k=2) /*

20、 英语用冒泡法 */for (a=0; a<n-1; a+)c=a;for (b=a+1; b<n; b+)if (studentsb.cyy>studentsc.cyy)c=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

21、-)studentsf=studentsf-1;studentse=temp;input(students,n);/* 显示排序后的所有记录*/save(students ,n);printf("n排序完成 !n");/*统计学生分数在各等级的人数子程序*/voidTongji(STU students,int n)intcount6085=0,count85=0,count60=0;inti=0;system( "cls");printf(" n退出请输入 :0 n" );input(students,n);i=0;while (i

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

23、count85);printf("n");printf(" 平均成绩在分和分之间的人数 :%d n" ,count6085);printf("n");printf(" 平均成绩低于分的人数:%d n",count60);printf("n");.精品文档printf("nn*统计结束 *");getchar();/*导出或保存数据*/void save(STU students,intn)FILE* fp;inti=0;fp=fopen("students"

24、;, "wb+" ); /* 以读写方式打开创建一个二进制文件*/if (fp=NULL)/* 打开文件失败 */printf("n*打开文件错误 !*n");return;for (i=0;i<n;i+)if (fwrite(&studentsi,sizeof(STU),1,fp)=1)/* 每次写一条记录或一个结构数组元素至文件*/continue ;elsebreak ;if (i>0)getchar();printf("nn*共导出 %d个学生信息 *n" ,i);getchar();elsesystem(

25、"cls");printf("* 没有信息导出 *n" );getchar();fclose(fp);/* 关闭此文件 */*导入数据 */void Read(STU students,int* n)FILE* fp;inti=0;.精品文档fp=fopen("students", "rb" ); /* 以只读方式打开一个已有的二进制文件*/if (fp=NULL)/* 打开文件失败 */printf("n*打开文件错误 !*n");exit(0);for (i=0;i<N;i+)if (

26、fread(&studentsi, sizeof (STU),1,fp)=1) /* 每次读一条记录或一个结构数组元素至文件 */ continue ;elsebreak ;*n=i;if (i>0)printf( "nn* 共导入 :%d 个学生信息 *n" ,i); getchar();else system("cls");printf("*没有信息导入!*n");getchar();getchar();fclose(fp);/* 关闭此文件 */*主函数 */voidmain()STUstudentsN;intn;

27、chars13,s23="1" ;inti,k;printf("nn" );printf("*n");printf("<欢迎使用本软件 >nn");printf("<版本 :修改版 >nnn");printf(" < 姓名 >: 邢曾智<班级 >: 09511002 <学号 >:0951100201n");.精品文档printf("n");printf("*n");printf

28、("nn");for (i=0;i<3;i+)printf("n 请输入密码 :" );gets(s1);if (strcmp(s1,s2)=0)break ;elseprintf("n> 密码错误 , 请重新输入 ");if (i>2)printf("n 您已连续次输错,系统将退出!n");exit(0);elsewhile (1)k=displaymenu();switch (k)case'1': add(students,&n);break ;case'2&#

29、39;: 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(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("

温馨提示

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

评论

0/150

提交评论