版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上#include "stdafx.h" #include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#define N 100struct student char name10; int num; char sex10; float math; float yingyu; float zhengzhi; float ywen; float aver; float sum;stu;void menu() syste
2、m("cls"); printf(" * 欢迎使用学生成绩管理系统 * n"); printf(" * = * n"); printf(" * 请选择相应的功能: * n"); printf(" * 1.成绩录入 * n"); printf(" * 2.查询成绩 * n"); printf(" * 3.修改成绩 * n"); printf(" * 4.插入成绩 * n"); printf(" * 5.报表输出 * n"
3、;); printf(" * 6.删除操作 * n"); printf(" * 0.退出系统 * n" ); printf(" * = * n");printf(" nnnnnnnnn * * * * n");/成绩录入void input() system("cls"); FILE *fp; student xs; /*定义一个结构体变量来装从文件中读出来的数据*/int c=1;if(fp=fopen("student.dat","ab")=NULL)
4、 printf("can't open file!n");exit(0); printf("n 成绩录入 "); printf("n*"); while(c+) /*中间加油break,可使循环中断*/ printf("n 请输入您的姓名(姓名为end结束):"); scanf("%s",); if(strcmp(,"end")=0) break;/*判断姓名是否为end,用字符串判断*/ printf("n 请输入学号:&quo
5、t;); scanf("%d",&xs.num); printf("n 性别:"); scanf("%s",&xs.sex); printf("n 请输入数学的成绩:"); scanf("%f",&xs.math); printf("n 请输入英语的成绩:"); scanf("%f",&xs.yingyu); printf("n 请输入政治的成绩:"); scanf("%f",&
6、;xs.zhengzhi); printf("n 请输入语文的成绩:"); scanf("%f",&xs.ywen); xs.aver=0;/*给平均分变量赋初值*/ xs.aver=(xs.math+xs.yingyu+xs.zhengzhi+xs.ywen)/4; xs.sum=0; xs.sum=xs.math+xs.yingyu+xs.zhengzhi+xs.ywen; fwrite(&xs,sizeof(stu),1,fp); /将成绩信息写入文件 system("cls"); fclose(fp);void
7、 xingming() FILE *fp; student xs; char name10; printf("n 输入要查学生的姓名: ");scanf("%s",name); if(fp=fopen("student.dat","rb")=NULL) printf("can't open file!n");exit(0); while(!feof(fp) fread(&xs,sizeof(stu),1,fp); if(strcmp(,name)=0)/*按姓名查询
8、时判断输入的姓名是否存在,会循环从数据中找取*/ printf("n 学生的信息如下:n"); printf("n %10s %6s %6s %6s %6s %6s %6s %6s %6sn","姓名","学号","性别","数学","英语","政治 ","语文","平均成绩","总成绩"); printf("n %10s %6d%6s %6.2f %6.2f %6.
9、2f %6.2f %6.2f %6.2fn",,xs.num,xs.sex,xs.math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum); break; if(feof(fp) printf("n 查找失败!"); /*学生不存在*/ fclose(fp);void xuehao() FILE *fp; student xs; int num; printf("n 输入要查学生的学号: ");scanf("%d",&num); if(fp=fopen(&qu
10、ot;student.dat","rb")=NULL) printf("can't open file!n");exit(0); while(!feof(fp) fread(&xs,sizeof(stu),1,fp); if(xs.num=num)/*按学号查询时判断输入的学号是否存在,会循环从数据中找取*/ printf("n 学生的信息如下:n"); printf("n %10s %6s %6s %6s %6s %6s %6s %6s %6sn","姓名",&quo
11、t;学号","性别","数学","英语","政治 ","语文","平均成绩","总成绩"); printf("n %10s %6d%6s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2fn",,xs.num,xs.sex,xs.math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum); break; if(feof(fp) printf("
12、;n 查找失败!"); fclose(fp);/查询void search() char ch1; system("cls"); printf(" 请输入按何种方式查询:n"); printf("n 1-姓名,2-学号:"); ch1=getchar();/*用字符接收*/ switch(ch1)/*判断*/ case '1':xingming();break; case '2':xuehao();break; printf("n 按任意键返回主菜单 "); getch()
13、;/*让屏幕停留同时按任意键返回*/修改:输入学生的姓名,查找该学生,若找到则修改该生的成绩信息,并显示修改前后的结果;void modi() student xs; FILE *fp; char name10; system("cls"); printf("n 输入要修改的学生的姓名: ");scanf("%s",name); if(fp=fopen("student.dat","rb+")=NULL) printf("can't open file!n");exi
14、t(0); while(!feof(fp) fread(&xs,sizeof(stu),1,fp); if(strcmp(,name)=0)/*判断输入要修改的姓名是否存在*/ printf(" 修改前学生的信息如下:n"); printf("n %10s %6s %6s %6s %6s %6s %6s %6s %6sn","姓名","学号","性别","数学","英语","政治 ","语文",
15、"平均成绩","总成绩"); printf("n %10s %6d %6s %6.2f %6.2f %6.2f %6.2f %6.2fn",,xs.num,xs.sex,xs.math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum); printf("n 请输入该生的数学成绩:");scanf("%f",&xs.math); printf("n 英语成绩:");scanf("%f",&
16、;xs.yingyu); printf("n 政治成绩:");scanf("%f",&xs.zhengzhi); printf("n 语文成绩:");scanf("%f",&xs.ywen); xs.aver=(xs.math +xs.yingyu +xs.zhengzhi +xs.ywen)/4; xs.sum=xs.math +xs.yingyu +xs.zhengzhi +xs.ywen; break; if(!feof(fp) printf(" n 修改后的学生的信息如下:n&qu
17、ot;); printf("n %10s %6s %6s %6s %6s %6s %6s %6s %6sn","姓名","学号","性别","数学","英语","政治 ","语文","平均成绩","总成绩"); printf("n %10s %6d %6s %6.2f %6.2f %6.2f %6.2f %6.2fn",,xs.num,xs.sex,xs.math
18、,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum); fseek(fp,sizeof(stu),1);/*负号表示后退,1表示文件当前位置*/ fwrite(&xs,sizeof(stu),1,fp);/*再写入,同时把要修改的那个覆盖掉*/ else printf("n 学生不存在,修改失败!"); fclose(fp); printf("n 按任意键返回主菜单 ");getch();/插入:输入学生的平时的各项成绩,插入到指定位置;当指定的位置超出范围时,将其插入到全班的最后,并显示插入成功后的结果。
19、void insert() int i=0,j,k,lenth; FILE *fp; student s,xsN; system("cls"); printf("n 请输入插入的学生的姓名:");scanf("%s",&); printf("n 学生的学号:");scanf("%d",&s.num); printf("n 学生的性别:");scanf("%s",&s.sex); printf("n 数学成绩:&
20、quot;);scanf("%f",&s.math); printf("n 英语成绩:");scanf("%f",&s.yingyu); printf("n 政治成绩:");scanf("%f",&s.zhengzhi); printf("n 语文成绩:");scanf("%f",&s.ywen); s.aver=(s.math+s.yingyu+s.zhengzhi+s.ywen)/4; s.sum= s.math+s.y
21、ingyu+s.zhengzhi+s.ywen; printf("n 插入位置:");scanf("%d",&k);/ i=0; if(fp=fopen("student.dat","rb")=NULL) printf(" can't open file!n");exit(0); while(!feof(fp) fread(&xsi,sizeof(stu),1,fp);/*把数据读入到结构体数组中*/ if(feof(fp) break; i+; fclose(fp);
22、lenth=i; if(k<lenth && k>=0)/*k的位置要位于数组范围之内*/ /插入 for(j=lenth-1;j>=k;j-) xsj+1=xsj;/*一开始j是最大的,往后移一个这样移动避免数据被覆盖*/ /*循环是只循环这一句的*/ xsk=s;/*将输入的学生信息加入这个k位置*/ lenth+;/*长度+1*/ /写回 if(fp=fopen("student.dat","wb")=NULL) printf(" 不能建立文件!n");exit(0); for(i=0;i<
23、;lenth;i+) fwrite(&xsi,sizeof(stu),1,fp); else/*不再数组范围之内*/ if(fp=fopen("student.dat","ab")=NULL) printf(" 不能建立文件!n");exit(0); fwrite(&s,sizeof(stu),1,fp); printf("n 按任意键返回主菜单 "); fclose(fp);/显示void print() FILE *fp; student s; system("cls");
24、if(fp=fopen("student.dat","rb")=NULL) printf(" can't open file!n");exit(0); printf(" 学生成绩表 "); printf("n *"); printf("n %10s %10s%6s %6s %6s %6s %6s %6s %6s n","姓名","学号","性别","数学","英语",&
25、quot; 政治"," 语文"," 平均成绩","总成绩"); while(!feof(fp) fread(&s,sizeof(stu),1,fp);/从文件中读取成绩信息 if(feof(fp) break;/判断是否文件尾 printf("n %10s %6d %6s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2fn",,s.num,s.sex,s.math,s.yingyu,s.zhengzhi,s.ywen,s.aver,s.sum); fclose(f
26、p); printf("n 按任意键返回主菜单 ");getch();/统计void tongji() int i=0,j=0,k=0,l=0,m=0,n,p,q,r,t,u; FILE *fp; student sN, *p1N,*p2N,*p3N,*p4N;/*用指针数组*/ system("cls"); if(fp=fopen("student.dat","rb")=NULL) printf("cant't open file!n");exit(0); while(!feof(fp
27、) fread(&si+,sizeof(stu),1,fp);/*读入数据*/ if(feof(fp) break; t=i;i=0; for(u=0;u<t;u+)/*以下每个指针数组用于指向各分数段的学生信息*/ if(si.aver<60) p1j+=&si+;continue;/*每个学生信息只能位于一个分数段*/ if(si.aver>=60&&si.aver<80) p2k+=&si+;continue; if(si.aver>=80&&si.aver<90) p3l+=&si+;c
28、ontinue; if(si.aver>=90) p4m+=&si+;continue; printf(" 学生成绩单 "); printf("n 90以上的人有: 姓名 学号 平均分n"); for(r=0;r<m;r+) printf("n %10s %6d %6.2fn",p4r->name,p4r->num,p4r->aver); printf("n 80-89分的人有: 姓名 学号 平均分n"); for(q=0;q<l;q+) printf("n %
29、10s %6d %6.2fn",p3q->name,p3q->num,p3q->aver); printf("n 60-79分的人有: 姓名 学号 平均分n"); for(p=0;p<k;p+) printf("n %10s %6d %6.2fn",p2p->name,p2p->num,p2p->aver); printf("n 不及格的人有: 姓名 学号 平均分n"); for(n=0;n<j-1;n+) printf("n %10s %6d %6.2fn"
30、;,p1n->name,p1n->num,p1n->aver); fclose(fp); printf("n 按任意键返回主菜单 ");getch();/ if(si.aver<60) p1j+=&si+;continue;/*每个学生信息只能位于一个分数段*/ if(si.aver>=60&&si.aver<80) p2k+=&si+;continue; if(si.aver>=80&&si.aver<90) p3l+=&si+;continue; if(si.aver
31、>=90) p4m+=&si+;continue; printf(" 学生成绩单 "); printf("n 90以上的人有: 姓名 学号 平均分n"); for(r=0;r<m;r+) printf("n %10s %6d %6.2fn",p4r->name,p4r->num,p4r->aver); printf("n 80-89分的人有: 姓名 学号 平均分n"); for(q=0;q<l;q+) printf("n %10s %6d %6.2fn"
32、;,p3q->name,p3q->num,p3q->aver); printf("n 60-79分的人有: 姓名 学号 平均分n"); for(p=0;p<k;p+) printf("n %10s %6d %6.2fn",p2p->name,p2p->num,p2p->aver); printf("n 不及格的人有: 姓名 学号 平均分n"); for(n=0;n<j-1;n+) printf("n %10s %6d %6.2fn",p1n->name,p1n-
33、>num,p1n->aver); fclose(fp); printf("n 按任意键返回主菜单 ");getch();/删除:输入学生姓名,若该学生存在,则删除,并显示删除后余下的学生成绩信息void dele() student xsN; FILE *fp; char name10; int i=0,len,k=-1/*k<0是为后面if判断用的*/; system("cls"); printf("n 输入要删除的学生姓名: ");scanf("%s",name); if(fp=fopen(&
34、quot;student.dat","rb+")=NULL) printf(" can't open file!n");exit(0); while(!feof(fp) 删除:输入学生姓名,若该学生存在,则删除,并显示删除后余下的学生成绩信息void dele() student xsN; FILE *fp; char name10; int i=0,len,k=-1/*k<0是为后面if判断用的*/; system("cls"); printf("n 输入要删除的学生姓名: ");scan
35、f("%s",name); if(fp=fopen("student.dat","rb+")=NULL) printf(" can't open file!n");exit(0); while(!feof(fp) fread(&xsi,sizeof(stu),1,fp); if(feof(fp) break; if(strcmp(,name)=0) k=i; i+; fclose(fp);/以下是删除后重新写文件 len=i;/*结构体数组上限*/ if(k>=0)/*k>
36、;0说明找到删除学生位置*/ if(fp=fopen("student.dat","wb+")=NULL) printf(" can't open file!n");exit(0); for(i=0;i<len;i+) if(i=k) continue;/*从这个位置开始写入*/ fwrite(&xsi,sizeof(stu),1,fp); fclose(fp); else printf("n 删除失败!n");getch(); /*失败后重新返回菜单*/ printf("n 按任意
37、键返回主菜单 ");print();/菜单选择void main() char ch;system("color 3f"); while(1) menu();/ 显示菜单 ch=getch();/选择菜单 if(ch='0') break; switch(ch)/判断功能项 case'1':input();break; case '2':search();break; case '3':modi();break; case '4':insert();break; case '5
38、':print( );break; case '6':tongji();break; case '7':dele();break; #include "stdafx.h" #include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#define N 100struct student char name10; int num; char sex10; float math; float yingyu
39、; float zhengzhi; float ywen; float aver; float sum;stu;void menu() system("cls"); printf(" * 欢迎使用学生成绩管理系统 * n"); printf(" * = * n"); printf(" * 请选择相应的功能: * n"); printf(" * 1.成绩录入 * n"); printf(" * 2.查询成绩 * n"); printf(" * 3.修改成绩 * n&q
40、uot;); printf(" * 4.插入成绩 * n"); printf(" * 5.报表输出 * n"); printf(" * 6.删除操作 * n"); printf(" * 0.退出系统 * n" ); printf(" * = * n");printf(" nnnnnnnnn * * * * n");/成绩录入void input() system("cls"); FILE *fp; student xs; /*定义一个结构体变量来装从文件中
41、读出来的数据*/int c=1;if(fp=fopen("student.dat","ab")=NULL) printf("can't open file!n");exit(0); printf("n 成绩录入 "); printf("n*"); while(c+) /*中间加油break,可使循环中断*/ printf("n 请输入您的姓名(姓名为end结束):"); scanf("%s",); if(strcmp(,
42、"end")=0) break;/*判断姓名是否为end,用字符串判断*/ printf("n 请输入学号:"); scanf("%d",&xs.num); printf("n 性别:"); scanf("%s",&xs.sex); printf("n 请输入数学的成绩:"); scanf("%f",&xs.math); printf("n 请输入英语的成绩:"); scanf("%f",&a
43、mp;xs.yingyu); printf("n 请输入政治的成绩:"); scanf("%f",&xs.zhengzhi); printf("n 请输入语文的成绩:"); scanf("%f",&xs.ywen); xs.aver=0;/*给平均分变量赋初值*/ xs.aver=(xs.math+xs.yingyu+xs.zhengzhi+xs.ywen)/4; xs.sum=0; xs.sum=xs.math+xs.yingyu+xs.zhengzhi+xs.ywen; fwrite(&
44、xs,sizeof(stu),1,fp); /将成绩信息写入文件 system("cls"); fclose(fp);void xingming() FILE *fp; student xs; char name10; printf("n 输入要查学生的姓名: ");scanf("%s",name); if(fp=fopen("student.dat","rb")=NULL) printf("can't open file!n");exit(0); while(!fe
45、of(fp) fread(&xs,sizeof(stu),1,fp); if(strcmp(,name)=0)/*按姓名查询时判断输入的姓名是否存在,会循环从数据中找取*/ printf("n 学生的信息如下:n"); printf("n %10s %6s %6s %6s %6s %6s %6s %6s %6sn","姓名","学号","性别","数学","英语","政治 ","语文",&quo
46、t;平均成绩","总成绩"); printf("n %10s %6d%6s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2fn",,xs.num,xs.sex,xs.math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum); break; if(feof(fp) printf("n 查找失败!"); /*学生不存在*/ fclose(fp);void xuehao() FILE *fp; student xs; int num; printf(&
47、quot;n 输入要查学生的学号: ");scanf("%d",&num); if(fp=fopen("student.dat","rb")=NULL) printf("can't open file!n");exit(0); while(!feof(fp) fread(&xs,sizeof(stu),1,fp); if(xs.num=num)/*按学号查询时判断输入的学号是否存在,会循环从数据中找取*/ printf("n 学生的信息如下:n"); print
48、f("n %10s %6s %6s %6s %6s %6s %6s %6s %6sn","姓名","学号","性别","数学","英语","政治 ","语文","平均成绩","总成绩"); printf("n %10s %6d%6s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2fn",,xs.num,xs.sex,xs.math,xs.yi
49、ngyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum); break; if(feof(fp) printf("n 查找失败!"); fclose(fp);/查询void search() char ch1; system("cls"); printf(" 请输入按何种方式查询:n"); printf("n 1-姓名,2-学号:"); ch1=getchar();/*用字符接收*/ switch(ch1)/*判断*/ case '1':xingming();break; c
50、ase '2':xuehao();break; printf("n 按任意键返回主菜单 "); getch();/*让屏幕停留同时按任意键返回*/修改:输入学生的姓名,查找该学生,若找到则修改该生的成绩信息,并显示修改前后的结果;void modi() student xs; FILE *fp; char name10; system("cls"); printf("n 输入要修改的学生的姓名: ");scanf("%s",name); if(fp=fopen("student.dat&q
51、uot;,"rb+")=NULL) printf("can't open file!n");exit(0); while(!feof(fp) fread(&xs,sizeof(stu),1,fp); if(strcmp(,name)=0)/*判断输入要修改的姓名是否存在*/ printf(" 修改前学生的信息如下:n"); printf("n %10s %6s %6s %6s %6s %6s %6s %6s %6sn","姓名","学号",&qu
52、ot;性别","数学","英语","政治 ","语文","平均成绩","总成绩"); printf("n %10s %6d %6s %6.2f %6.2f %6.2f %6.2f %6.2fn",,xs.num,xs.sex,xs.math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum); printf("n 请输入该生的数学成绩:");scanf("%f&q
53、uot;,&xs.math); printf("n 英语成绩:");scanf("%f",&xs.yingyu); printf("n 政治成绩:");scanf("%f",&xs.zhengzhi); printf("n 语文成绩:");scanf("%f",&xs.ywen); xs.aver=(xs.math +xs.yingyu +xs.zhengzhi +xs.ywen)/4; xs.sum=xs.math +xs.yingyu +x
54、s.zhengzhi +xs.ywen; break; if(!feof(fp) printf(" n 修改后的学生的信息如下:n"); printf("n %10s %6s %6s %6s %6s %6s %6s %6s %6sn","姓名","学号","性别","数学","英语","政治 ","语文","平均成绩","总成绩"); printf("n %10s %
55、6d %6s %6.2f %6.2f %6.2f %6.2f %6.2fn",,xs.num,xs.sex,xs.math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum); fseek(fp,sizeof(stu),1);/*负号表示后退,1表示文件当前位置*/ fwrite(&xs,sizeof(stu),1,fp);/*再写入,同时把要修改的那个覆盖掉*/ else printf("n 学生不存在,修改失败!"); fclose(fp); printf("n 按任意键返回主菜单 &qu
56、ot;);getch();/插入:输入学生的平时的各项成绩,插入到指定位置;当指定的位置超出范围时,将其插入到全班的最后,并显示插入成功后的结果。void insert() int i=0,j,k,lenth; FILE *fp; student s,xsN; system("cls"); printf("n 请输入插入的学生的姓名:");scanf("%s",&); printf("n 学生的学号:");scanf("%d",&s.num); printf(&quo
57、t;n 学生的性别:");scanf("%s",&s.sex); printf("n 数学成绩:");scanf("%f",&s.math); printf("n 英语成绩:");scanf("%f",&s.yingyu); printf("n 政治成绩:");scanf("%f",&s.zhengzhi); printf("n 语文成绩:");scanf("%f",&
58、;s.ywen); s.aver=(s.math+s.yingyu+s.zhengzhi+s.ywen)/4; s.sum= s.math+s.yingyu+s.zhengzhi+s.ywen; printf("n 插入位置:");scanf("%d",&k);/ i=0; if(fp=fopen("student.dat","rb")=NULL) printf(" can't open file!n");exit(0); while(!feof(fp) fread(&xsi,sizeof(stu),1,fp);/*把数据读入到结构体数组中*/ if(feof(fp) break;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生产部薪酬考核制度
- 行政kpi考核制度
- 采购元绩效考核制度
- 医生与护士考核制度
- 空天院申请考核制度
- 班级目标考核制度
- 2025至2030数字营销行业市场发展分析及前景趋势与投资机会研究报告
- 2025至2030医药外包服务市场格局评估及未来趋势与投资价值研究报告
- 2025-2030新能源电动汽车行业市场规模现状供需评估投资前景规划分析报告
- 2025-2030新能源汽车零部件产业市场动态分析及发展方向与投资空间研究报告
- (一模)2026年合肥市高三第一次教学质量检测英语试卷(含答案)+听力音频+听力原文
- 老舍骆驼祥子第一章
- 康腾杯案例分析大赛作品
- 关于大学生就业创业指导课程的调查问卷
- 单片机在线系统AY-MPU89S51E课件
- 电休克治疗申请书
- 护理药理学(高职)PPT完整全套教学课件
- 压力容器制造工序质控点及检验内容一览表
- 检验科15项质量控制指标(检验科质控小组活动记录)
- 南京市2011版劳动合同
评论
0/150
提交评论