新编程序4.docx_第1页
新编程序4.docx_第2页
新编程序4.docx_第3页
新编程序4.docx_第4页
新编程序4.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

#include typedef struct int Id;char name10;char sex6; int room;int tel; StudentInfo;typedef struct int Id;char courseNo10;char courseName20;double a; / 课程学分double b; / 平时成绩double c; / 实验成绩double d; / 卷面成绩double e; / 综合成绩double f; / 学分 GradeInfo;/ 定义结构数组为全局变量StudentInfo si100; / 学生信息结构数组GradeInfo gi500; / 学生成绩结构数组int sp=0; / 学生信息结构数组中学生数int gp=0; / 学生成绩结构数组中成绩数int flag;void ReadFile();void DisplayMainMenu();void DataInput();void DataQuery();void DataDelete();void DataSort();void QueryById(int );void QueryByRoom(int );void QueryGrade(int );void sort1();void sort2();void gradeput();/ 主程序的结构void main()int x;ReadFile(); / 从文件中读取数据对两个结构数组赋值, 采用子函数的形式可以使主程序结构清楚while (1) DisplayMainMenu(); / 因为要多次调用工作菜单,要采用子函数的形式scanf (%d,&x);switch (x)case 1 : DataInput(); break; /case 2 : DataQuery(); break; /case 3 : DataDelete(); break; /case 4 : DataSort(); break; / case 5 : flag = 0;void ReadFile( ) FILE *fp;fp = fopen(A.txt,r);while (!feof(fp)fscanf(fp,%d%s%s%d%d, &sisp.Id,,&sisp.sex,&sisp.room,&sisp.tel);sp+;fclose (fp);fp = fopen(B.txt,r);while (!feof(fp)fscanf (fp,%d%s%s%f%f%f%f,&gigp.Id,gigp.courseNo,gigp.courseName,&gigp.a,&gigp.b,&gigp.c, &gigp.d);if (gigp.c = -1) gigp.e = 0.3*gigp.b+0.7*gigp.d;else gigp.e = 0.15*gigp.b+0.15*gigp.c+0.7*gigp.d;if ( gigp.e = 90. ) gigp.f = gigp.a;else if ( gi gp.e = 80. ) gigp.f = gigp.a *0.8;else if ( gigp.e = 70. )gigp.f = gigp.a *0.75;else if ( gigp.e = 60. ) gigp.f = gigp.a *0.6;else gigp.f = 0;gp+;fclose(fp);void DisplayMainMenu()printf (n 1) 数据录入 n 2) 数据查询 n 3) 数据删除 n 4) 数据排序 n 5) 程序结束 n );void DataInput()printf (学生的学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩n);scanf (%d%s%s%f%f%f%f,&gigp.Id,gigp.courseNo,gigp.courseName,&gigp.a,&gigp.b,&gigp.c, &gigp.d);if (gigp.c = -1) gigp.e = 0.3*gigp.b+0.7*gigp.d;else gigp.e = 0.15*gigp.b+0.15*gigp.c+0.7*gigp.d;if ( gigp.e = 90. ) gigp.f = gigp.a;else if ( gi gp.e = 80. ) gigp.f = gigp.a *0.8;else if ( gigp.e = 70. )gigp.f = gigp.a *0.75;else if ( gigp.e = 60. ) gigp.f = gigp.a *0.6;else gigp.f = 0;gp+;void DataQuery()int x,y,z;printf( n 1) 学生基本情况查询n 2) 成绩查询n);scanf(%d,&x);if (x = 1) / 查询学生信息printf (1) 按学号查询 2) 按宿舍查询n);scanf(%d,&y);if (y = 1 ) printf ( 输入学号n); scanf (%d,&z);QueryById(z);if (y = 2) printf ( 输入宿舍号n); scanf (%d,&z);QueryByRoom(z);if ( x =2) / 查询成绩信息printf ( 输入学号n); scanf (%d,&y);QueryGrade(y);void DataDelete()int x;int i=0;int k,d;printf( 输入学号n);scanf( %d,&x);while( sii.Id != x) i+;if (isp-1) for ( k=i; ksp-1; k+)sik = sik+1; / 删除一个数据后,其他数据前移if ( isp) sp-;d = 0; / 成绩数组中,有多个相同的学号,都要删除,并且后面的数据需要前移for (k=0;kgp;k+)if ( gik.Id = x ) d+;else gik-d = gik;gp = gp - d;void QueryById(int x)int i;for (i=0;isp;i+)if ( sii.Id = x ) printf (n 学号 姓名 性别 宿舍号码 电话号码n);printf ( %d %s %s %d %dn,sii.Id,,sii.sex,sii.room,sii.tel);void QueryByRoom(int x)int i;for (i=0;isp;i+)if ( sii.room = x ) printf (n 学号 姓名 性别 宿舍号码 电话号码n);printf (t%dt%st%st%dt%dn,sii.Id,,sii.sex,sii.room,sii.tel);void QueryGrade(int x)int i;int sc=0;double sg=0;for (i=0;i=1;i-)for (j=0;jgij+1.e) / 排序 t=gij;gij = gij+1;gij+1 = t;gradeput();void sort2()int i,j;GradeInfo t;for (i=gp-1;i=1;i-)for (j=0;jgij+1.f) / 排序 t=gij;gij = gij+1;gij+1 = t;gradeput();void gradeput()int i;for( i=0;

温馨提示

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

评论

0/150

提交评论