广工物理《C语言课程设计之学生成绩管理系统》源代码-完美无暇多功能变色版_第1页
广工物理《C语言课程设计之学生成绩管理系统》源代码-完美无暇多功能变色版_第2页
广工物理《C语言课程设计之学生成绩管理系统》源代码-完美无暇多功能变色版_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、引用库函数 */char name10; /* int score5; /* Student;Student stu30; /*/*菜单选择#include<stdio.h> /*#include<stdlib.h> /#include<ctype.h> #include<string.h>typedef struct /*定义结构体数组 */ unsigned int num; /* 学号 */姓名 */成绩 */结构体数组变量 */printf(*n");printf("ttt请输入数字 1-9 加 enter 选择功能操

2、作:n");*system("cls"); /*运行前清屏 */printf("n*【学生成绩管理系统】by 广 工 10 电 子 2 曾 剑 浩*n");printf("tt | t1.输入记录|n");printf("tt | t2.显示记录|n");printf("tt | t3.挂科名单|n");printf("tt | t4.成绩排序|n");printf("tt | t5.查询记录|n");printf("tt | t6.删

3、除记录|n");printf("tt | t7.插入文档|n");printf("tt | t8.存入文档|n");printf("tt | t9.退出程序|n");int menu_select() /* 菜单函数 */ float c;char ch;H*scanf("%f",&c);while(c!=1&&c!=2&&c!=3&&c!=4&&c!=5&&c!=6&&c!=7&&c!

4、=8&&c!=9)while(ch=getchar()!='n')continue;printf(" 请输入整型数字 1-9 ! n"); scanf("%f",&c); continue; / 跳过输入的剩余部分return c; /*返回选择 */*输入 记录int Input(Student stud,int n) /*system("color B0");int i=0,j;char sign='Y',x10; /*x10 while(sign='Y'|s

5、ign='y') /* 输入若干条记录 */为清除多余的数据所用 */ 判断 */ttnt (输入学号时输入一个非数字的字符即可以返回到菜单界面) nttt 学号: "); /* 交互输入 */if(scanf("%u",&studn+i.num)!=1)break; printf("ttt 姓名: "); if(scanf("%s",studn+)!=1)break;printf("nttt 请依次输入:高数 物理 外语 C 语言 德育 的成绩: nttt"); fo

6、r(j=0;j<5;j+) scanf("%d",&studn+i.scorej); gets(x); /* 清除多余的输入 */ printf("ttt 是否继续输入? ( 确定 Y/y ,否定 N/n)n"); scanf("ttt%c",&sign); /*输入判断 */i+; return n+i;显示 记录 /*2.*void Display(Student stud,int n) /* 显示所有记录 */格式头 system("color A0"); int i; printf(&

7、quot;n"); /*/ printf(" 学 号 姓名 高数 物理 外语 C 语言 德育 n"); printf("n");for(i=1;i<n+1;i+) /* 循环输入 */ printf("%12u %-6s %d %d %d %d %dn",studi-1.num,studi-1 .name,studi-1.score0,studi-1.score1,studi-1.score2,studi-1.score3,stud i-1.score4);printf("n");system(&q

8、uot;pause");输出不及格学生名单* void Disqualified(Student stud,int n) system("color 47");int i,j;printf("nn");for(i=0;i<5;i+)switch(i)case 0:printf("tt高 数(不及格):学 号t姓 名t成绩n");break;case 1:printf("nnnttbreak; case 2: printf("nnntt break;物 理(不及格):外 语(不及格):学号t学号t姓

9、名 t姓 名 t成绩 n");成绩 n");case 3:printf("nnnttC语 言(不及格):学号t姓 名 t成绩 n");break;case 4:printf("nnntt德 育(不及格):学号t姓 名 t成绩 n");break;printf("n");for(j=0;j<n;j+) if(studj.scorei<60)printf("ttt %12u %8s %4dn",studj.num,,studj.scorei); printf(&quo

10、t;nntttt");成绩 排序/ /*void Sort(Student stud,int n) /*按成绩从高到低排序 */system("color E9");int h,i,j,k,t;int SCORE305;unsigned int NUM30,g;char T10;char NAME3010; for(h=0;h<n;h+)for(k=0;k<5;k+)SCOREhk=studh.scorek;NUMh=studh.num; strcpy(NAMEh,); for(k=0;k<5;k+)switch(k)brea

11、k;case 0:printf("t高数排名 t学号t姓名分数 n");break;case 1:printf("t物理排名 t学号t姓名分数 n");break;case 2:printf("t外语排名 t学号t姓名分数 n");break;case 3:printf("tC语言排名 t学号t姓名分数 n");break;case 4:printf("t德育排名 t学号t姓名分数 n");printf("-n");/* 起泡法排序 , 值大的排在后面 */for(i=0;i

12、<n-1;i+)for(j=0;j<n-1-i;j+) if(SCOREjk>SCOREj+1k)t=SCOREjk;SCOREjk=SCOREj+1k;SCOREj+1k=t;strcpy(T,NAMEj); strcpy(NAMEj,NAMEj+1);strcpy(NAMEj+1,T);g=NUMj; NUMj=NUMj+1;NUMj+1=g;for(t=1,h=n-1;h>=0;h-)printf("tt%3d 、%12u %6s %6dn",t+,NUMh,NAMEh,SCOREhk); printf("n");查询 记录

13、/*5.*void Query(Student stud,int n) /* 按姓名查找并显示一个记录 */ system("color 75");char ss10;int i=0;printf("nttt 请输入 nttt 该生的姓名: nttttt"); /*交互式输入 */scanf("%s",ss);while(strcmp(,ss)!=0&&i<n)i+;/* 查找判断 */if(i=n)printf("ttt 不存在此记录! n"); /* 返回失败信息 */

14、printf("ttt 该生的学号: t%un",studi.num); /* 输出该学生信息 */printf("ttt 该生的成绩: tnttt 高数 tt%dnttt 物理 tt%dnttt 外语 tt%dntttC 语 言 tt%dnttt 德 育 tt%dn",studi.score0,studi.score1,studi.score2,studi.score3,studi.score4);/*6.删除 记录*int Delete(Student stud,int n) /* system("color 81");char

15、s10;int i=0,j,k=0;按姓名查找,删除一条记录 */ttt 请输入想要删除的记录的学生姓名 nttt (输入一个非文字的字符即可以返回到菜 单界面) :n"); /*交互式寻问 */scanf("%s",s); while(strcmp(,s)!=0&&i<n)i+;/* 查找判断 */if(i=n)printf("ttt 不存在此记录! n"); /* 返回失败信息 */return n;for(j=i;j<n-1;j+) /*删除操作 */ studj.num=studj+1.n

16、um;strcpy(,studj+1.name); for(k=0;k<4;k+)studj.scorek=studj+1.scorek;printf("ttt 已删除! n"); /* 返回成功信息 */ return(n-1);插入 文件/ /*从文件中读入数据 */* int Add(Student stud,int n) /*system("color 74"); int i=0,num; FILE *fp; /* 定义文件指针 */char ch,filename20; /* 定义文件名 */printf("

17、 是否从文件中插入记录?(否定: N/n ,确定:其他任意健) n"); getchar();ch=getchar(); if(ch='N'|ch='n') return n;ttt 请输入想要插入的文件的: “文件路径 文件名称 . 后缀名称” n( 若直接输入“文件名 称. 后缀名称”则在与程序相同目录下打开新文件)n");scanf("%s",filename); /* 输入文件名 */ if(fp=fopen(filename,"rb")=NULL) /* 打开文件 */printf("

18、;ttt 不存在此文件! n"); /* 打开失败信息 */printf("ttt");getchar();return(n);fscanf(fp,"%d",&num); /*读入总记录量 */while(i<num) /* 循环读入数据 */ fscanf(fp,"%u %s %d %d %d %d %d",&studn+i.num,studn+,&studn+i.score 0,&studn+i.score1,&studn+i.score2,&studn+

19、i.score3,&studn+i.score 4);i+;n+=num;fclose(fp); /*关闭文件 */printf("ttt已插入! n");getchar();return n;/*8.存入 文件*int Write(Student stud,int n) /*将所有记录写入文件 */ system("color 72");getchar();int i=0;char ch;FILE *fp; /*定义文件指针 */char filename20; /*定义文件名 */ttt 将所有记录写入文件。 n"); /* 输入文

20、件名 */printf(" 是否创建新文件 (会覆盖原有同名文件) 并将全部记录存入该文件? (否定: N/n , 确定:其他任意健) n");ch=getchar(); if(ch='N'|ch='n')return 0;printf("ttt 请输入:“文件路径 文件名称 . 后缀名称” n( 若直接输入“文件名称 . 后缀 名称”则在与程序相同目录下生成新文件。 )n");scanf("ttt%s",filename); if(fp=fopen(filename,"w")=NU

21、LL) /* 打开文件 */printf("ttt 无法存入文件! n"); getchar(); fprintf(fp,"%dn",n); /* 循环写入数据 */ while(i<n) fprintf(fp,"%u %s %d %d %d %d %dn",studi.num,,studi.score0,st udi.score1,studi.score2,studi.score3,studi.score4);i+; fclose(fp); /* 关闭文件 */ printf(" 已存入! n&q

22、uot;); /* 返回成功信息 */主函数/ /* system("color 3F");int main( ) /* 主函数 */* 颜色属性由两个十六进制数字指定 - 第一个为背景, 第二个则为前景。 每个数字可以为以下任何值之一 :0 =黑色8 =灰色1 =蓝色9 =淡蓝色2 =绿色A =淡绿色3 =湖蓝色B =淡浅绿色4 =红色C =淡红色5 =紫色D =淡紫色6 =黄色E =淡黄色7 =白色F =亮白色*/int n=0;int menu_select();int Input(Student stud,int n) ; /* 输入若干条记录 */ void Di

23、splay(Student stud,int n); /* 显示所有记录 */void Disqualified(Student stud,int n); /* void Sort(Student stud,int n); /* void Query(Student stud,int n); /* int Delete(Student stud,int n); /* int Add(Student stud,int n); /* int Write(Student stud,int n); /*出不及格学生名单 */ 按成绩从高到低排序 */ 按姓名查找并显示一个记录 */ 按姓名查找,删除一条记录 */ 从文件中读入数据 */ 将所有记录写入文件 */for(;)switch(menu_select() /* 选择判断 */case 1:printf("ttt1. 输入记录 n"); n=Input(stu,n);break;case 2:printf("ttt2. 显示记录 n");Display(stu,n);break;case 3

温馨提示

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

评论

0/150

提交评论