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

付费下载

下载本文档

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

文档简介

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>#def

3、ineN 10/* 定义结构体 */typedefstruct students/* 标记为 students*/char num10;/* 学生学号 */char name10;/* 学生姓名 */int age;/* 年龄 */charsex10;/* 性别 */float cyy;/*C 语言成绩 */float computer;/* 计算机成绩 */float english;/* 英语成绩 */float pj;/* 平均成绩 */STU;STU temp;void sort(STU students,int n); / 排序void save(STU students,int n

4、); / 导出int Locate(STU students,int n);/ 查询/*-显示菜单 -*/char displaymenu()chark;system( "cls" );printf( "学生成绩管理n" );printf( "-应用菜单 -n");printf( "1 输入学生成绩nn");printf( "2 输出学生成绩 nn");.专业专注.printf( "3查询学生成绩 nn");printf( "4修改学生成绩 nn");pr

5、intf( "5查看成绩排序 nn");printf( "6查看成绩统计 nn");printf( "7保存数据 nn");printf( "8读取数据 nn" );printf( "9退出系统 nn");printf( "请选择你想进行的操作:");k=getchar();return k;/* 定义输出函数 */void printheader()/* 格式化输出表头*/printf( "nn*学生成绩管理系统*nnn");printf( "

6、| 学号 |姓名| 年龄 | 性别 | C语言成绩 | 计算机成绩 | 英语成绩 | 平均成绩 | 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);/* 添加学生信息 */int add(STU st

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

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

9、 ");scanf( "%f" ,&studentsi.cyy);printf("*nnn");printf( " 请输入计算机成绩:n ");scanf( "%f" ,&puter);printf( "*nnn");printf( " 请输入英语成绩:n ");scanf( "%f" ,&studentsi.english);printf( "*nnn");studentsi

10、.pj=(studentsi.cyy+puter+studentsi.english)/3;printf( " 学生平均成绩 : %-8.0fn",studentsi.pj);i+;printf( "*nnn");printf( " 请输入学生学号:n ");scanf( "%s" ,studentsi.num);*n=i;save(students ,i);return i;/* 查询学生信息函数*/int Locate(STU students,int n)int k,m=-1;cha

11、r num10,name20;int i=0;system( "cls" );printf( " 退出请输入 :0 n");printf( " 请选择以什么方式查询:1).按学生学号查询2).按学生姓名查询n" );scanf( "%d" ,&k);if(k=1)printf( "请输入你要查询的学生学号:n" );scanf( "%s" ,num);while (i<n)if(strcmp(studentsi.num,num)=0)/* 若找到学号 */.专业

12、专注.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 ;

13、i+;if(i>=n)printf( " 没有所找学生信息n" );getchar();else if(k=2)printf( "请输入你要查询的学生姓名:n" );scanf( "%s" ,name);while (i<n)if(strcmp(,name)=0)/* 若找到姓名 */ printf( "学生学号 :%sn 学生姓名 :%sn 学生年龄 :%dn 学生性别 :%sn 学生 C语言成绩 :%-8.0fn 计算机成绩 :%-8.0fn 英语成绩 :%-8.0fn 平均成绩:

14、%-8.0fn" ,studentsi.num,,studentsi.age,studentsi.sex,studentsi.cyy,studentsi. computer,studentsi.english,studentsi.pj);m=i;getchar();break ;i+;if(i>=n)printf( " 没有所找学生信息n" );return m; /* 返回一个根 m便于修改学生信息*/getchar();/* 显示函数 */void input(STU students,int n)int i;system(

15、"cls" ); / 清屏if(n=0)/* 表示没有学生信息记录*/.专业专注.printf( "n 没有学生记录 !n");printf( "nn");printheader();/* 输出表格头部 */i=0;while (i<n)/* 逐条输出数组中存储的学生信息*/printdata(studentsi);i+;getchar();/* 修改子程序 */void Modify(STU students,int n)int i;if(n<=0)system( "cls" );printf( &q

16、uot; n退出请输入 :0 n");printf( "n-not found!-n");getchar();return ;system( "cls" );printf( " 修改学生信息 ");input(students,n);i=Locate(students,n);/* 查询到该数组元素,并返回下标值 */if(i!=-1)/* 若i!= ,表明已经找到该数组元素*/printf( "请输入新的学生信息: n");printf( "学号 : " );scanf( "

17、%s" ,studentsi.num);printf( "姓名 : " );scanf( "%s" ,);printf( "年龄 : " );scanf( "%d" ,&studentsi.age);printf( "性别 : " );scanf( "%s" ,studentsi.sex);printf( "C语言 : " );scanf( "%f" ,&studentsi.cyy)

18、;printf( "英语 : " );scanf( "%f" ,&studentsi.english);.专业专注.printf( "计算机 : " );scanf( "%f" ,&puter);studentsi.pj=(studentsi.cyy+studentsi.english+puter)/3;printf( "平均成绩 : %-9.0fn",studentsi.pj);save(students ,n);printf

19、( "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( "%d" ,&k);if (k=1)/* 用选择法对 C语言排序 */for (i=0; i&l

20、t;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=b;if (c!=a)temp=studentsa;studentsa=studentsc;students

21、c=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( "n排序完成 !n");/* 统计学生分数在各等级的人数子程序*/void Tongji(STU s

22、tudents,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;continue ;/* 平均成绩 =>85*/.专业专注.if(studentsi.pj>=60&&studentsi.pj<=85)count6085+;i=i+1;continu

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

24、unt60);printf( "n" );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(fwrite(&s

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

26、 i=0;fp=fopen( "students" ,"rb" );/* 以只读方式打开一个已有的二进制文件 */ if(fp=NULL) /* 打开文件失败 */printf( "n*打开文件错误 !*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 个学

27、生信息 *n" ,i); getchar();else system( "cls" );printf( "*没有信息导入 !*n");getchar();getchar();fclose(fp);/* 关闭此文件 */* 主函数 */void main().专业专注.STUstudentsN;int n;char s13,s23= "1" ;int i,k;printf("nn");printf("*n");printf("<欢迎使用本软件 >nn" )

28、;printf("<版本: 修改版 >nnn");printf( " <姓名 >: 邢曾智< 班级 >: 09511002< 学号 >:0951100201n");printf("n" );printf("*n");printf("nn");for (i=0;i<3;i+)printf( "n请输入密码 :");gets(s1);if(strcmp(s1,s2)=0)break ;elseprintf( "n&g

29、t;密码错误 ,请重新输入 ");if(i>2)printf( "n 您已连续次输错,系统将退出 !n");exit(0);elsewhile (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 ;

30、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' : syste

温馨提示

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

评论

0/150

提交评论