




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学生成绩记录簿设计程序/(1).头文件,对要调用的系统函数的声明#include <stdio.h> #include <stdlib.h>#include <conio.h>#include <string.h>#define N 8 /N 为学生结构体的总数struct student /学生结构体 long num; char name20;int score4;int sum; ;struct student stuN;int pl=0; /定义两个全变量,学生总数变量和增加的学生变量int t=1;/(2). 定义无参函数void s(
2、); /主菜单/*以下为定义无参函数*/void save(); /输入并保存void sav(); /保存void show(); /显示void delet(); /删除void preside(); /分段void fint(); /查找void change(); /修改void add(); /添加void output(); /退出void deleta(); /学号查找后 删除(新增功能)void deletb(); /姓名查找后 删除(新增功能)void finta(); /学号查找void fintb(); /姓名查找void changea(); /按学号改void cha
3、ngeb(); /按姓名改void arrange(); /排序/(3).主函数.void main() /主函数 system("cls"); s();/(4).显示菜单函数.void s() int select,w;char k; /定义变量system("cls"); printf("ntt O(_)O 学生成绩记录簿 O(_)Onttt 程序创作者nttt电子信息工程学院电气六班nttt 张三VS李四n"); /以下显示主菜单printf("t nn");printf("ttt1. 文件保存.t
4、2. 显示输出.tnnttt3. 查询成绩.t4. 添加成绩.nnttt5. 修改成绩.t6. 分段显示.nnttt7.删除成绩.t8.退出程序nn");printf("tt请选择(按1-8任意数字键): n ");scanf("%d",&select); switch(select) case 1: save(); break; /以下是选怿执行菜单上的哪个函数case 2: show(); break;case 3: fint(); break;case 4: add(); break;case 5: change(); break
5、;case 6: preside(); break;case 7: delet(); break;case 8: output(); break;default: w=1; if(w=1) printf("输入有误,按任意键重新选怿.n");k=getchar();getch();s(); /(5)保存函数,被调用void sav()FILE*fp;int i;if(fp=fopen("stu_list","wb")=NULL)printf("cannot open filen");return;for(i=0;i
6、<t;i+)if(fwrite(&stui,sizeof(struct student),1,fp)!=1)printf("file write errorn");fclose(fp);/(6)文件函数,将输入信息保存void save() /该函数为输入函数 int x,l,count=0,i,sum;char w,o,m,n; struct student *p; /定义变量和指向结构体的指针变量system("cls"); p=stu; /p指向结构体变量stuNprintf("ttt学生信息的录入.n");dop
7、l+;printf("请输入第%d个学生的信息.nn",t); /逐个步骤的实现学生信息的输入printf("学号:n"); scanf("%ld",&p->num); printf("n");printf("姓名:n"); scanf("%s",p->name); printf("n");printf("四门成绩:1.平时成绩.2.试验成绩.3.设计成绩4.期末成绩.n");for(i=0;i<4;i+)sc
8、anf("%d",&p->scorei);sum = (p->score0)*0.10+ (p->score1)*0.15 + (p->score2)*0.15+(p->score3)*0.60; /总分p->sum=sum;printf("sum为%d",sum );printf("nn是否要继续输入学生信息,如果是请按y;不是请按n.n");o=getchar(); /接收回车键w=getchar(); if(w='y' | w='Y') /选怿是否输入更
9、多的学生t+;x=1;p+;elsex=0;while(x=1);if(w='n' | w='N')printf("nn是否保存输入的信息,如果是请按y;不是请按n.n");m=getchar();n=getchar();if(n='y' | n='Y') sav();if(n='n' | n='N') l=1;printf("按任意键返回.n");getch();s();/(7)显示输入的成绩void show()int i,j;FILE*fp;system
10、("cls"); fp=fopen("stu_list","rb");i=0;while(1)if(fread(&stui,sizeof(struct student),1,fp)=0) break;printf("学号t 姓名 ");printf(" 平时成绩 实验成绩 设计成绩 期末成绩 总分n");printf("%-10d %-11s",stui.num,);for(j=0;j<4;j+)printf("%-12d"
11、,stui.scorej);printf("%-12d",stui.sum);printf("nnn");fclose(fp);printf("n按任意键返回");fflush(stdin);getch(); s();/(8). 对学生信息的查找。void fint() /对学生信息的查找。int i,m;char e;system("cls"); printf("nnnttt请选择用哪种方式进行查找.n");printf("nnntt 1.学号.nnntt 2.姓名.nnntt&qu
12、ot;);fflush(stdin);scanf("%d",&i); /输入是用姓名查找还是用学号查找switch(i) case 1: finta(); break;case 2: e=getchar();fintb(); break;default: m=1;if(m=1)printf("输入有误,请按任意键返回.n");fflush(stdin);getch();s();/(9). 查找函数(用学号进行查找)void finta() /查找函数(用学号进行查找)。 int i,j=t; long num_a;struct student *
13、p; char a,b;system("cls"); printf("nnttt 请输入要查找的学生学号:ntt");scanf("%ld",&num_a); /输入要查找学生的学号for(p=stu;p<stu+t;p+)j-; if(p->num=num_a) break; /判断该学生是否存在if(j=0)printf("nntt-_-| 不存在该学生,请按任意键返回.nn");a=getchar();getch();s(); printf("ntt你要查找的学生为:nn&quo
14、t;); /以下对已查找出的学生的显示printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10snn","学号","姓名","平时成绩","试验成绩","设计成绩","期末成绩","总分");printf("%-10ld%-10s",p->num,p->name);for(i=0;i<4;i+)printf("%-10d",p->scorei);
15、printf("%-10d",p->sum);printf("nnnttt查找完成,请按任意键返回.");b=getchar();getch();s();/(10). 查找(用姓名查找)void fintb() /查找(用姓名查找)。 char name_b20; int j=t,i; struct student *p; system("cls"); printf("nttt 请输入要查找的学生姓名:nttt");gets(name_b); /输入姓名for(p=stu;p<stu+t;p+) j-;
16、 if(strcmp(p->name,name_b)=0) break; /判断是否存在该学生if(j=0)printf("nnttt-_-| 不存在该学生,请按任意键返回.n");getch();s();printf("nttt你要查找的学生为:nn"); /显示已找出的学生printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10snn","学号","姓名","数学","语文","英语","
17、平均分","总分");printf("%-8ld%-8s",p->num,p->name);for(i=0;i<4;i+)printf("%-8d",p->scorei); printf("%-8d",p->sum);printf("nnnnt查找完成,请按任意键返回.");getch();s();/11,添加函数void add()int i,j,m=0;int l;char r,n;FILE*fp;struct student *p;system(&q
18、uot;cls"); printf(" %-10s%-10s%-11s%-11s%-10s%-12s%-10snn","学号","姓名","平时成绩","试验成绩","设计成绩","期末成绩","总分");fp=fopen("stu_list","rb");for(i=0;i<t;i+)fread(&stui,sizeof(struct student),1,fp);pri
19、ntf("%-10d %-10s",stui.num,);for(j=0;j<4;j+)printf("%-12d",stui.scorej);printf("%-12d",stui.sum);printf("nn");m+;fclose(fp);p=stu+t;printf("输入添加者的信息n");printf("学号:n"); scanf("%ld",&p->num); printf("n")
20、;printf("姓名:n");scanf("%s",p->name); printf("n");printf("四门成绩:1.平时成绩.2.试验成绩.3.设计成绩4.期末成绩.n");for(i=0;i<4;i+)scanf("%d",&p->scorei);p->sum = (p->score0)*0.10+ (p->score1)*0.15 + (p->score2)*0.15+(p->score3)*0.60; /总分printf(
21、"nn是否保存添加的信息,如果是请按y;不是请按n.n");r=getchar();n=getchar();t=t+1;if(n='y' | n='Y') sav();if(n='n' | n='N') l=1;printf("n按任意键返回");arrange();/(12). 对学生信息的修改。void change() /对学生信息的修改。 int i,m;char e;system("cls"); printf("ttt请选择用哪种方式进行修改.n&qu
22、ot;);printf("nntt 1.查找学号.nnntt 2.查找姓名.nnntt");scanf("%d",&i); /输入是用姓名查找还是用学号修改switch(i) case 1: changea(); break;case 2: e=getchar();changeb(); break;default: m=1;if(m=1)printf("输入有误,请按任意键返回.n");getch();s();/(13). 修改函数(用学号进行查找修改)void changea() /查找函数(用学号进行查找修改)。int i
23、,j=t; char m,n;long num_a;struct student *p; char a,b;system("cls"); printf("nnnttt 请输入要修改的学生学号:nntt");scanf("%ld",&num_a); /输入要修改学生的学号for(p=stu;p<stu+t;p+)j-; if(p->num=num_a) break;/判断该学生是否存在if(j=0)printf("nntt-_-| 不存在该学生,请按任意键返回.nn");a=getchar();g
24、etch();s(); printf("nntt你要修改的学生为:nn"); /以下对已查找出的学生的显示printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10snn"," 学号"," 姓名"," 平时成绩"," 试验成绩"," 设计成绩"," 期末成绩"," 总分");printf("%-10ld%-10s",p->num,p->name);for(i=
25、0;i<4;i+)printf("%-12d",p->scorei);printf("%-12d",p->sum);printf("n");printf("输入要修改的信息n");printf("学号:n"); scanf("%ld",&p->num); printf("n");printf("姓名:n"); scanf("%s",p->name); printf("n
26、");printf("四门成绩:1.平时成绩.2.试验成绩.3.设计成绩4.期末成绩.n");for(i=0;i<4;i+)scanf("%d",&p->scorei);p->sum = (p->score0)*0.10+ (p->score1)*0.15 + (p->score2)*0.15+(p->score3)*0.60; /总分printf("修改完毕,是否保存,如果是请按y;不是请按n.n");m=getchar();n=getchar();if(n='y&
27、#39; | n='Y') sav();if(n='n' | n='N')printf("nnnttt修改完成,请按任意键返回.");b=getchar();getch();s();/(14). 修改函数(用姓名查找修改)void changeb() char name_b20; int j=t,i;int sum;char m,n; struct student *p; system("cls"); printf("nttt 请输入要修改的学生姓名:nnttt");gets(name_
28、b); /输入姓名for(p=stu;p<stu+t;p+) j-; if(strcmp(p->name,name_b)=0) break; /判断是否存在该学生if(j=0)printf("nnnttt-_-| 不存在该学生,请按任意键返回.n");getch();s();printf("nnttt你要修改的学生为:nn"); /显示已找出的学生printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10snn","学号","姓名","数学&quo
29、t;,"语文","英语","平均分","总分");printf("%-8ld%-8s",p->num,p->name);for(i=0;i<4;i+)printf("%-10d",p->scorei); printf("%-10d",p->sum);printf("n");printf("输入要修改的信息n");printf("学号:n"); scanf("
30、%ld",&p->num); printf("n");printf("姓名:n"); scanf("%s",p->name); printf("n");printf("四门成绩:1.平时成绩.2.试验成绩.3.设计成绩4.期末成绩.n");for(i=0;i<4;i+)scanf("%d",&p->scorei);p->sum = (p->score0)*0.10+ (p->score1)*0.15 + (p
31、->score2)*0.15+(p->score3)*0.60; /总分printf("修改完毕,是否保存,如果是请按y;不是请按n.n");m=getchar();n=getchar();if(n='y' | n='Y') sav();printf("nnnnt修改完成,请按任意键返回.");if(n='n' | n='N') i=0;getch();s();/15.分段显示总成绩在不同区间段的学生信息void preside() int j; struct student *
32、p; system("cls"); printf("ttt分段显示总成绩在不同区间段的学生信息nn");printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8snn","学号","姓名","平时成绩","试验成绩","设计成绩","期末成绩","总分");printf("nn");printf("总分在60分以下nn");for(p=stu;
33、p<stu+t;p+) if(p->sum<60) printf("%-8ld%-8s",p->num,p->name); for(j=0;j<4;j+)printf("%-8d",p->scorej); printf("%-8d",p->sum);printf("nn");printf("总分在60分到79分nn");for(p=stu;p<stu+t;p+) if(p->sum)<79&&(p->sum)
34、>=60) printf("%-8ld%-8s",p->num,p->name); for(j=0;j<4;j+)printf("%-8d",p->scorej); printf("%-8d",p->sum);printf("nn");printf("总分在80分到89分nn");for(p=stu;p<stu+t;p+) if(p->sum)<89&&(p->sum)>=80) printf("%-8l
35、d%-8s",p->num,p->name); for(j=0;j<4;j+)printf("%-8d",p->scorej); printf("%-8d",p->sum);printf("nn");printf("总分90分以上nn");for(p=stu;p<stu+t;p+) if(p->sum)>=90)printf("%-8ld%-8s",p->num,p->name); for(j=0;j<4;j+)prin
36、tf("%-8d",p->scorej); printf("%-8d",p->sum);printf("nn");printf("n");printf("tt统计完成,请按任意键返回.n");getch();s();/(16). 删除函数(创新点)void delet() /删除函数。 int i,m;char e;system("cls"); printf("nnnttt请选择用哪种方式进行查找删除.n");printf("nnnn
37、ntt 1.学号.nnnntt 2.姓名.nnntt");scanf("%d",&i); /输入是用姓名查找还是用学号查找switch(i) case 1: deleta(); break;case 2: e=getchar();deletb(); break;default: m=1;if(m=1)printf("输入有误,请按任意键返回.n");getch();s();/(17). 删除函数(按学号查找删除)。void deleta() /删除函数(按学号查找删除)。 long num_a;int z,j;char c,x,m,b,
38、o; struct student *p; /定义变量,接收字符system("cls");do printf("请输入要删除的学号.n"); scanf("%ld",&num_a); /输入学号for(p=stu;p<stu+t;p+) /对学号判断if(p->num=num_a)break;if(p=stu+t)printf("不存在该学生,请按任意键返回.n");getch();s();printf("你要删除的学生为:n"); /显示要删除的信息printf(&quo
39、t;%-8s%-8s%-8s%-8s%-8s%-8s%-8snn","学号","姓名","平时成绩","试验成绩","设计成绩","期末成绩","总分");printf("%-8ld%-8s",p->num,p->name);for(j=0;j<4;j+)printf("%-8d",p->scorej);printf("%-8d",p->sum);print
40、f("n");printf("你确定要删除吗?如是请输入y;不是请输入n.n");x=getchar(); /接收回车键c=getchar(); if(c='y'|c='Y') /判断是否要删除该学生的信息 for(;p<stu+t;p+)*p=*(p+1); t-;if(c='n'|'N') z=0;printf("是否要继续删除:是请按 y.不是请按 n.n"); m=getchar();b=getchar();o=getchar();while(o='
41、y'|o='Y'); /是否继续删除学生信息printf("系统已为你删除信息,请按任意键返回.n");getch();sav();s();/(18). 删除函数(按姓名查找到后删除)。void deletb() /删除函数(按姓名查找到后删除)char name_b20,c,m,b,r,d; int j,z,f=t; struct student *p; system("cls"); do printf("请输入要删除的姓名.n");gets(name_b);/输入姓名r=getchar(); for(p=stu;p<stu+t;p+) if(strcmp(p->name,name_b)=0) /判断是否存在该学生break;if(p=stu+t)printf("不存在该学生,请按任意键返回.n"); getch();s();printf("你要删除的学生为:n"); /显示要删除的学生printf(&quo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园老师进餐管理制度
- 幼儿园防汛经费管理制度
- 广东幼儿园食膳管理制度
- 建筑公司临时会议室管理制度
- 录播班教室设备管理制度
- 循环经济示范园管理制度
- 户外广告牌城管管理制度
- 技师输送公司内部管理制度
- 护理压力性损伤管理制度
- 报警控制室设备管理制度
- 香菇种植可行性分析报告
- 2025年会考地理考试试题及答案
- 皮尔逊Ⅲ型曲线的离均系数Φ值表完整版
- 2025(统编版)语文二年级下册第六单元解析+任务目标+大单元教学设计
- 《直升机介绍》课件
- 医院预防职务犯罪讲座
- 吸脂术护理查房
- 国家开放大学《幼儿园课程与活动设计》期末大作业参考答案
- 2024年中英城市更新白皮书
- NB/T 11127-2023在用钢丝绳芯输送带报废检测技术规范
- 铁路网络安全概述
评论
0/150
提交评论