版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计内容信息维护:要求:学生信息数据要以文件形式保留,能实现学生信息数据维护。此模块包含子模块有:增加学生信息、删除学生信息、修改学生信息信息查询:要求:查询时可实现按姓名查询、按学号查询成绩统计:要求:A输入任意一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段学生情况。排序:能对用户指定任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格形式显示排序后输出结果)(使用多个方法排序者,加分)(二)其它要求:(1)只能使用C/C++语言,源程序要有合适注释,使程序轻易阅读(2)最少采取文本菜单界面(假如能采取图形菜单界面愈加好)(3)学生可自动增加新功效模块(视情况可另外加分)(4)写出课程设计汇报,具体要求见相关说明文档二、课程设计要求和数据1、深入掌握和利用C语言进行程设计能力;2、深入了解和利用结构化程序设计思想和方法;3、初步掌握开发一个小型实用系统基础方法;4、学会调试一个较长程序基础方法;5、学会利用步骤图或N-S图表示算法;6、掌握书写程序设计开发文档能力。三、课程设计应完成工作1、编写完成对应题目标程序;2、编写课程设计汇报,课程设计汇报内容应包含以下6个部分:1)需求分析:包含设计题目、设计要求和系统功效需求分析;2)总体设计:包含系统总体设计框架和系统功效模块图;3)具体设计:包含关键功效模块算法设计思绪和对应工作步骤图;4)调试分析过程描述:包含测试数据、测试输出结果,和对程序调试过程中存在问题思索(列出关键问题犯错现象、犯错原因、处理方法及效果等,合适包含结果截图);5)总结:课程设计完成了哪些功效,有没有什么扩展功效?还有哪些地方需要改善?课程设计过程中学习体会和收获、对此次课程设计认识和自己提议等内容;6)附录:关键源程序代码,含必需注释。3、答辩:在试验室建立程序运行环境,并在指导老师监督下,独立解决问题、运行程序和回复老师提出问题。目录1设计目标和要求………………P42总体设计………………………P43具体设计………………………P53.1功效模块设计………………P53.1.1XX功效模块(可选)…………………P53.1.2YY功效模块(可选)…………………P63.1.3ZZ功效模块(可选)…………………P73.2数据结构设计……………P84调试分析……………………P94.1结构体……………………P94.2链表………………………P115碰到问题及处理方法分析…………………P126总结……………P137源文件…………P137.1链表………………………P137.2结构体……………………P281、目标和要求一目标:编制一程序实现对学生成绩管理,让自己既动手又动脑,独立实践,将书本上理论知识和实际应用问题进行有机结合,锻炼自己分析、处理实际问题能力,提升本身项目开发及程序调试能力。二要求:1、整个系统均用C语言实现;2、利用指针、结构体、链表来实现学生成绩数据结构设计;3、系统含有输入、显示、查询(查询时可实现按姓名查询、按学号查询)、删除、排序、插入,保留、读取基础功效;4、系统各个功效模块全部用函数形式来实现;5、学生信息数据要以文件形式保留,能实现学生信息数据维护。此模块包含子模块有:增加学生信息、删除学生信息、修改学生信息;6、能够输入任意一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段学生情况;7、能对用户指定任意课程名,按成绩升序或降序排列学生数据并显示排序结果;8、可自动增加新功效模块;9、能够将学生信息从文件中读取出来。2总体设计主函数main()利用if-else,While循环语句和switch()实现各函数调用,系统依据输入数字选项来调用对应函数。菜单选择函数voidmenu();这是一个无参函数,关键实现“功效选择”界面,在这个界面里有显示系统13大功效,依据每个功效前面序号进行选择。等实施完每一个函数功效后,按任‘0’键回到主界面也要经过这个函数提醒来实现!自定义函数voidprintstart()、voidWrong()、voidNofind()、voidprintc()、voidprinte(Node*p)用voidWrong()来提醒输入错误,用voidNofind()提醒没有找到学生资料,用voidprintc()来输出汉字,用voidprinte(Node*p)来输出汉字。main()voidAdd(Linkl)voidMaths(Linkl)voidQur(Linkl)voidEnglish(Linkl)voidDel(Linkl)voidselect(Linkl)voidModify(Linkl)voidSave(Linkl)voidDisp(Linkl)voidmenu()voidTongji(Linkl)voidprintc()voidChinese(Linkl)voidprinte(Node*p)3具体设计3.1功效模块设计3.1.1排序数学成绩功效模块函数voidMaths(Linkl)该函数用于对数学成绩进行降序,ll=(Link)malloc(sizeof(Node))用于做新链表连接,假如原链表为空话,返回;不为空话,p=l->next;建立接点用于保留信息,对指定链表地址进行排序。步骤图图所表示:Linkllll=(Link)malloc(sizeof(Node))用于做新连表l->next==NULL是否没有资料能够p=l->next排序while(p)returns=(Node*)malloc(sizeof(Node))rr=llwhile(rr->next!=NULL&&rr->next->data.mgrade>=p->data.mgrade)是rr->next==NULL否rr->next=ss->next=rr->next;rr->next=sp=p->next l->next=ll->next(排序完成)3.1.2显示学生资料功效模块函数voidDisp(Linkl)该函数负责显示学生资料,这是一个不返回值函数。算法:先将p结点指针指向第一个结点,将p结点(即第一个结点)数据输出。然后再将p结点指针指向p指针指针(即下一结点),将p结点(即第一结点)数据输出。反复实施此步聚直到p指针指向NULL为止。步骤图图所表示:原来链表是否为空是否提醒没有p指向下一结点p=p->next资料能够输出p指向结点,即学生信息显示returnp指向下一结点p=p->next3.1.3删除资料功效模块函数voidDel(Linkl)该函数用于有选择地删除学生资料,假如原来链表为空话,会返回;不为空话,选择用按哪种类型删除,假如按学号删除,就输入学号,后判定是否取得地址,取得就实施删除;按名字删除就输入名字,运行同学号一样。步骤图图所表示:原链表是否为空是否没有资料1按1学号还是2按名字?2能够删除输入你要删除学号输入你要删除名字P是否取得输入地址P是否取得输入地址是否否是Returnr指向下一Nofind()Nofind()r指向下一结点结点实施free(p)实施free(p)3.2数据结构设计(可选)一个结构体变量中能够存放一组数据(如一个学生学号、姓名、成绩等数据)。一个结构体变量指针就是该变量所占据内存段起始地址。能够设一个指针变量,用来指向一结构体变量,此时指针变量值是结构体起始地址。指针量变也能够用来指向一结构体数组中元素。structstudent{charnum[10];/*学号*/charname[20];charsex[4];intcgrade;intmgrade;integrade;inttotle;intave;charneartime[10];/*最近更新时间*/};typedefstructnode{structstudentdata;structnode*next;}Node,*Link;6总结经过一个多星期C语言课程设计,感觉自己收获不少!首先是:要达成这么功效,使用链表相当方便,但不轻易了解,所以在这方面我很了很多时间看书本,使C语言知识强化了不少。其次,在做课程设计过程中,发觉了平时很多没有注意到问题,比如:返回值函数和不返回值函数二者在主函数中调用是不一样…………更关键是,这次课程设计即使花了我不少时间,但正是这些时间,让我见识到了C语言关键性。这个学生成绩管理系统全部是在自己知识范围内完成,所以界面清楚简单,可能不是很好看,但绝对实用!从这里我也得到一个体会,做一个程序,或开发一个软件,应该着重从它后台制作入手,不能做出一个中看不中用程序或软件。相信这次课程设计使我C语言知识扎实了很多。因为这是第一次进行设计,写文档,难免会写得不好!7源程序7.1链表#include"stdio.h"#include"stdlib.h"#include"string.h"intshoudsave=0;/**/structstudent{charnum[10];/*学号*/charname[20];charsex[4];intcgrade;intmgrade;integrade;inttotle;intave;charneartime[10];/*最近更新时间*/};typedefstructnode{structstudentdata;structnode*next;}Node,*Link;voidmenu(){printf("********************************************************************************");printf("\t1登记学生资料\t\t\t\t\t2删除学生资料\n");printf("\t3查询学生资料\t\t\t\t\t4修改学生资料\n");printf("\t5显示学生资料\t\t\t\t\t6统计学生资料\n");printf("\t7排序语文成绩\t\t\t\t\t8排序数学成绩\n");printf("\t9排序英语成绩\t\t\t\t\t10选出分段分数\n");printf("\t11保留学生资料\t\t\t\t\t12帮助信息\t\t\n");printf("\t0退出系统\t\t\t\t\t\t\t\n");printf("********************************************************************************\n");}voidprintstart(){printf("-----------------------------------------------------------------------\n");}voidWrong(){printf("\n=====>提醒:输入错误!\n");}voidNofind(){printf("\n=====>提醒:没有找到该学生!\n");}voidprintc()/*本函数用于输出汉字*/{printf("学号\t姓名\t性别语文成绩数学成绩英语成绩总分平均分\n");}voidprinte(Node*p)/*本函数用于输出英文*/{printf("%-12s%s\t%s\t%d\t%d\t%d\t%d\t%d\n",p->data.num,p->,p->data.sex,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.totle,p->data.ave);}Node*Locate(Linkl,charfindmess[],charnameornum[])/*该函数用于定位连表中符合要求接点,并返回该指针*/{Node*r;if(strcmp(nameornum,"num")==0)/*按学号查询*/{r=l->next;while(r!=NULL){if(strcmp(r->data.num,findmess)==0)returnr;r=r->next;}}elseif(strcmp(nameornum,"name")==0)/*按姓名查询*/{r=l->next;while(r!=NULL){if(strcmp(r->,findmess)==0)returnr;r=r->next;}}return0;}voidAdd(Linkl)/*增加学生*/{Node*p,*r,*s;charnum[10];r=l;s=l->next;while(r->next!=NULL)r=r->next;/*将指针置于最末尾*/while(1){printf("请你输入学号(以'0'返回上一级菜单:)");scanf("%s",num);if(strcmp(num,"0")==0)break;while(s){if(strcmp(s->data.num,num)==0){printf("=====>提醒:学号为'%s'学生已经存在,若要修改请你选择'4修改'!\n",num);printstart();printc();printe(s);printstart();printf("\n");return;}s=s->next;}p=(Node*)malloc(sizeof(Node));strcpy(p->data.num,num);printf("请你输入姓名:");scanf("%s",p->);getchar();printf("请你输入性别:");scanf("%s",p->data.sex);getchar();printf("请你输入语文成绩:");scanf("%d",&p->data.cgrade);getchar();printf("请你输入数学成绩:");scanf("%d",&p->data.mgrade);getchar();printf("请你输入英语成绩:");scanf("%d",&p->data.egrade);getchar();p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;p->data.ave=p->data.totle/3;/*信息输入已经完成*/p->next=NULL;r->next=p;r=p;shoudsave=1;}}voidQur(Linkl)/*查询学生*/{intsel;charfindmess[20];Node*p;if(!l->next){printf("\n=====>提醒:没有资料能够查询!\n");return;}printf("\n=====>1按学号查找\n=====>2按姓名查找\n");scanf("%d",&sel);if(sel==1)/*学号*/{printf("请你输入要查找学号:");scanf("%s",findmess);p=Locate(l,findmess,"num");if(p){printf("\t\t\t\t查找结果\n");printstart();printc();printe(p);printstart();}elseNofind();}elseif(sel==2)/*姓名*/{printf("请你输入要查找姓名:");scanf("%s",findmess);p=Locate(l,findmess,"name");if(p){printf("\t\t\t\t查找结果\n");printstart();printc();printe(p);printstart();}elseNofind();}elseWrong();}voidDel(Linkl)/*删除*/{intsel;Node*p,*r;charfindmess[20];if(!l->next){printf("\n=====>提醒:没有资料能够删除!\n");return;}printf("\n=====>1按学号删除\n=====>2按姓名删除\n");scanf("%d",&sel);if(sel==1){printf("请你输入要删除学号:");scanf("%s",findmess);p=Locate(l,findmess,"num");if(p){r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf("\n=====>提醒:该学生已经成功删除!\n");shoudsave=1;}elseNofind();}elseif(sel==2){printf("请你输入要删除姓名:");scanf("%s",findmess);p=Locate(l,findmess,"name");if(p){r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf("\n=====>提醒:该学生已经成功删除!\n");shoudsave=1;}elseNofind();}elseWrong();}voidModify(Linkl){Node*p;charfindmess[20];if(!l->next){printf("\n=====>提醒:没有资料能够修改!\n");return;}printf("请你输入要修改学生学号:");scanf("%s",findmess);p=Locate(l,findmess,"num");if(p){printf("请你输入新学号(原来是%s):",p->data.num);scanf("%s",p->data.num);printf("请你输入新姓名(原来是%s):",p->);scanf("%s",p->);getchar();printf("请你输入新性别(原来是%s):",p->data.sex);scanf("%s",p->data.sex);printf("请你输入新语文成绩(原来是%d分):",p->data.cgrade);scanf("%d",&p->data.cgrade);getchar();printf("请你输入新数学成绩(原来是%d分):",p->data.mgrade);scanf("%d",&p->data.mgrade);getchar();printf("请你输入新英语成绩(原来是%d分):",p->data.egrade);scanf("%d",&p->data.egrade);p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;p->data.ave=p->data.totle/3;printf("\n=====>提醒:资料修改成功!\n");shoudsave=1;}elseNofind();}voidDisp(Linkl){intcount=0;Node*p;p=l->next;if(!p){printf("\n=====>提醒:没有资料能够显示!\n");return;}printf("\t\t\t\t显示结果\n");printstart();printc();printf("\n");while(p){printe(p);p=p->next;}printstart();printf("\n");}voidTongji(Linkl){Node*pm,*pe,*pc,*pt,*pa;/*用于指向分数最高接点*/Node*r=l->next;if(!r){printf("\n=====>提醒:没有资料能够统计!\n");return;}pm=pe=pc=pt=pa=r;while(r!=NULL){if(r->data.cgrade>=pc->data.cgrade)pc=r;if(r->data.mgrade>=pm->data.mgrade)pm=r;if(r->data.egrade>=pe->data.egrade)pe=r;if(r->data.totle>=pt->data.totle)pt=r;if(r->data.ave>=pa->data.ave)pa=r;r=r->next;}printf("------------------------------统计结果--------------------------------\n");printf("总分最高者:\t%s%d分\n",pt->,pt->data.totle);printf("平均分最高者:\t%s%d分\n",pa->,pa->data.ave);printf("英语最高者:\t%s%d分\n",pe->,pe->data.egrade);printf("数学最高者:\t%s%d分\n",pm->,pm->data.mgrade);printf("语文最高者:\t%s%d分\n",pc->,pc->data.cgrade);printstart();}voidChinese(Linkl){Linkll;Node*p,*rr,*s;ll=(Link)malloc(sizeof(Node));/*用于做新连表*/ll->next=NULL;if(l->next==NULL){printf("\n=====>提醒:没有资料能够排序!\n");return;}p=l->next;while(p){s=(Node*)malloc(sizeof(Node));/*新建接点用于保留信息*/s->data=p->data;s->next=NULL;rr=ll;while(rr->next!=NULL&&rr->next->data.egrade>=p->data.egrade)rr=rr->next;if(rr->next==NULL)rr->next=s;else{s->next=rr->next;rr->next=s;}p=p->next;}free(l);l->next=ll->next;printf("\n=====>提醒:排序已经完成!\n");}voidMaths(Linkl)/*对数学排序*/{Linkll;Node*p,*rr,*s;ll=(Link)malloc(sizeof(Node));/*用于做新连表*/ll->next=NULL;if(l->next==NULL){printf("\n=====>提醒:没有资料能够排序!\n");return;}p=l->next;while(p){s=(Node*)malloc(sizeof(Node));/*新建接点用于保留信息*/s->data=p->data;s->next=NULL;rr=ll;while(rr->next!=NULL&&rr->next->data.mgrade>=p->data.mgrade)rr=rr->next;if(rr->next==NULL)rr->next=s;else{s->next=rr->next;rr->next=s;}p=p->next;}free(l);l->next=ll->next;printf("\n=====>提醒:排序已经完成!\n");}voidEnglish(Linkl)/*对英语排序*/{Linkll;Node*p,*rr,*s;ll=(Link)malloc(sizeof(Node));/*用于做新连表*/ll->next=NULL;if(l->next==NULL){printf("\n=====>提醒:没有资料能够排序!\n");return;}p=l->next;while(p){s=(Node*)malloc(sizeof(Node));/*新建接点用于保留信息*/s->data=p->data;s->next=NULL;rr=ll;while(rr->next!=NULL&&rr->next->data.cgrade>=p->data.cgrade)rr=rr->next;if(rr->next==NULL)rr->next=s;else{s->next=rr->next;rr->next=s;}p=p->next;}free(l);l->next=ll->next;printf("\n=====>提醒:排序已经完成!\n");}voidselect(Linkl){inti;intj,k;Node*pc=l;//用于指向分数最高接点Node*r=l->next;if(!r){printf("\n=====>提醒:没有资料能够筛选!\n");return;}printf("输入课程名1.语文2.数学3.英语");scanf("%d",&i);if(i==1){printf("请输入筛选分数上限:");scanf("%d",&j);printf("请输入筛选分数下限:");scanf("%d",&k);printf("------------------------------筛选结果-----------------------------------------------------------\n");printf("学号\t姓名\t性别语文成绩数学成绩英语成绩总分平均分\n");printstart();while(r!=NULL){if(k<=(r->data.egrade)&&(r->data.egrade)<j)printe(r);r=r->next;}}elseif(i==2){printf("请输入筛选分数上限:");scanf("%d",&j);printf("请输入筛选分数下限:");scanf("%d",&k);printf("------------------------------筛选结果-----------------------------------------------------------\n");printf("学号\t姓名\t性别语文成绩数学成绩英语成绩总分平均分\n");printstart();while(r!=NULL){if(k<=(r->data.mgrade)&&(r->data.mgrade)<j)printe(r);r=r->next;}}elseif(i==3){printf("请输入筛选分数上限:");scanf("%d",&j);printf("请输入筛选分数下限:");scanf("%d",&k);printf("------------------------------筛选结果-----------------------------------------------------------\n");printf("学号\t姓名\t性别语文成绩数学成绩英语成绩总分平均分\n");printstart();while(r!=NULL){if(k<=(r->data.cgrade)&&(r->data.cgrade)<j)printe(r);r=r->next;}}elseWrong();}voidSave(Linkl){FILE*fp;Node*p;intflag=1,count=0;fp=fopen("c:\\student","wb");if(fp==NULL){printf("\n=====>提醒:重新打开文件时发生错误!\n");exit(1);}p=l->next;while(p){if(fwrite(p,sizeof(Node),1,fp)==1){p=p->next;count++;}else{flag=0;break;}}if(flag){printf("\n=====>提醒:文件保留成功.(有%d条统计已经保留.)\n",count);shoudsave=0;}fclose(fp);}voidmain(){Linkl;/*连表*/FILE*fp;/*文件指针*/intsel;charch;charjian;intcount=0;Node*p,*r;printf("\t\t\t\t学生成绩管理系统\n\t\t\t06自动化2班蔡晓庆\t\t\t\t\n");l=(Node*)malloc(sizeof(Node));l->next=NULL;r=l;fp=fopen("C:\\student","wb");loop:menu();printf("请你选择操作:");scanf("%d",&sel);if(sel==0){if(shoudsave==1){getchar();printf("\n=====>提醒:资料已经改动,是否将改动保留到文件中(y/n)?\n");scanf("%c",&ch);if(ch=='y'||ch=='Y')Save(l);}printf("\n=====>提醒:你已经退出系统,再见!\n");return;}switch(sel){case1:Add(l);gotoloop;break;/*增加学生*/case2:Del(l);gotoloop;break;/*删除学生*/case3:Qur(l);gotoloop;break;/*查询学生*/case4:Modify(l);gotoloop;break;/*修改学生*/case5:Disp(l);gotoloop;break;/*显示学生*/case6:Tongji(l);gotoloop;break;/*统计学生*/case7:Chinese(l);gotoloop;break;/*语文排序*/case8:Maths(l);gotoloop;break;/*数学排序*/case9:English(l);gotoloop;break;/*英语排序*/case10:select(l);gotoloop;break;/*选择分段分数*/case11:Save(l);gotoloop;break;/*保留学生*/case12:printf("\t\t\t==========帮助信息==========\n");gotoloop;break;default:Wrong();getchar();break;}}7.2结构体#include<stdio.h>#include<stdlib.h>#include<string.h>structstudent { charclass_0[20]; charnum[20]; charname[20]; floatmath; floatc_prog; floateng; floatpolity;floatsport; floatave;}stu[1000]; charj,h; /*函数申明*/voidluru();voidchaxun();voidcharu();voidtongji();voidxiugai();voidshanchu();voidpaixu();voidtuichu();FILE*fp;//指向学生信息文件指针voidmain(){loop: printf("\t\t***********************************************\t\t\n"); printf("\t\t欢迎使用学生信息管理系统\t\t\n"); printf("\t\t\t\t\n"); printf("\t\t制作人:电力4史素芬\t\t\n"); printf("\t\t\t\t\n"); printf("\t\t\t\t\n"); printf("\t\t***********************************************\t\t\n"); printf("\t\t1.录入学生成绩\n"); printf("\t\t2.排序学生成绩\n"); printf("\t\t3.统计输出成绩\n"); printf("\t\t4.查询学生成绩\n"); printf("\t\t5.插入学生成绩\n"); printf("\t\t6.修改学生成绩\n"); printf("\t\t7.删除学生成绩\n"); printf("\t\t8.退出管理系统\n"); intn;printf("请选择功效\n\n"); scanf("%d",&n); system("cls"); switch(n) {case1:printf("\t\t录入学生成绩\n\n");luru();gotoloop;case2:printf("\t\t排序学生成绩\n\n");paixu();gotoloop;case3:printf("\t\t统计输出学生成绩\n\n");tongji();gotoloop;case4:printf("\t\t查询学生成绩\n\n");chaxun();gotoloop;case5:printf("\t\t插入学生成绩\n\n");charu();gotoloop;case6:printf("\t\t修改学生成绩\n\n");xiugai();gotoloop;case7:printf("\t\t删除学生成绩\n\n");shanchu();gotoloop;case8:printf("\t\t程序退出。\t谢谢使用!\n\n");exit(0);default:printf("您输入有误,请重试!\n\n");fflush(stdin);gotoloop;}printf("\n按任意键返回......");}voidluru(){inti,m; FILE*fp; printf("请输入学生人数:"); scanf("%d",&m); if(m>1000||m<0){printf("\n错误\n\n");return;} else for(i=0;i<m;i++) {printf("\n请输入第%d位学生成绩:\n",i+1); printf("班级:"); scanf("%s",stu[i].class_0); printf("学号:"); scanf("%s",stu[i].num); printf("姓名:"); scanf("%s",stu[i].name); printf("高等数学成绩:"); scanf("%f",&stu[i].math); printf("C程序设计成绩:"); scanf("%f",&stu[i].c_prog); printf("大学英语成绩:"); scanf("%f",&stu[i].eng); printf("马克思主义政治经济学成绩:"); scanf("%f",&stu[i].polity); printf("大学体育成绩:"); scanf("%f",&stu[i].sport); stu[i].ave=(stu[i].c_prog+stu[i].eng+stu[i].math+stu[i].polity+stu[i].sport)/5; } fp=fopen("stud.c","w"); for(i=0;i<m;i++) if(fwrite(&stu[i],sizeof(structstudent),1,fp)!=1) printf("\n打开文件失败\n\n\n"); fclose(fp); fp=fopen("stud.c","r"); printf("\n已录入学生成绩:\n"); printf("\n班级学号姓名高等数学C程序设计大学英语马克思主义经济学大学体育平均分\n"); for(i=0;i<m;i++) {fread(&stu[i],sizeof(structstudent),1,fp); printf("\n%-6s%-6s%-6s%-9.2f%-10.2f%-9.2f%-17.2f%-9.2f%-6.2f\n",stu[i].class_0, stu[i].num,stu[i].name,stu[i].math,stu[i].c_prog,stu[i].eng, stu[i].polity,stu[i].sport,stu[i].ave); } fclose(fp); getchar();}voidpaixu(){loop: printf("\t=================1,平均成绩排序=================\n");printf("\t=================2,高数成绩排序=================\n");printf("\t=================3,C语言成绩排序================\n");printf("\t=================4,英语成绩排序=================\n");printf("\t=================5,马克思经济学成绩排序=========\n");printf("\t=================6,大学体育成绩排序=============\n");printf("\t=================7,学号排序=====================\n");printf("请输入你选择\n"); intt;scanf("%d",&t);if(t=1){FILE*fp;intx,y,z;structstudenttemp; if((fp=fopen("stud.c","r"))==NULL) {printf("\n无法打开文件\n\n\n");return;} for(x=0;fread(&stu[x],sizeof(structstudent),1,fp)!=0;x++) { } printf("\n"); fclose(fp); z=x; for(x=0;x<z;x++) for(y=x+1;y<z;y++) if(stu[x].ave<stu[y].ave) {temp=stu[x]; stu[x]=stu[y]; stu[y]=temp; } printf("\n排序后数据:\n"); printf("\n班级学号姓名高等数学C程序设计大学英语马克思主义经济学大学体育平均分\n"); fp=fopen("stud.c","w"); for(x=0;x<z;x++) {fwrite(&stu[x],sizeof(structstudent),1,fp); printf("\n%-6s%-6s%-6s%-9.2f%-10.2f%-9.2f%-17.2f%-9.2f%-6.2f\n",stu[x].class_0, stu[x].num,stu[x].name,stu[x].math,stu[x].c_prog,stu[x].eng, stu[x].polity,stu[x].sport,stu[x].ave); } printf("\n");getchar(); fclose(fp); return;}elseif(t=2){FILE*fp;intx,y,z;structstudentgaoshu; if((fp=fopen("stud.c","r"))==NULL) {printf("\n无法打开文件\n\n\n");return;} for(x=0;fread(&stu[x],sizeof(structstudent),1,fp)!=0;x++) { } printf("\n"); fclose(fp); z=x; for(x=0;x<z;x++) for(y=x+1;y<z;y++) if(stu[x].math<stu[y].math) {gaoshu=stu[x]; stu[x]=stu[y]; stu[y]=gaoshu; } printf("\n排序后数据:\n"); printf("\n班级学号姓名高等数学\n"); fp=fopen("stud.c","w"); for(x=0;x<z;x++) {fwrite(&stu[x],sizeof(structstudent),1,fp); printf("\n%-6s%-6s%-6s%-9.2f\n",stu[x].class_0, stu[x].num,stu[x].name,stu[x].math); } printf("\n");getchar(); fclose(fp); return;}elseif(t=3){FILE*fp;intx,y,z;structstudentyuyan; if((fp=fopen("stud.c","r"))==NULL) {printf("\n无法打开文件\n\n\n");return;} for(x=0;fread(&stu[x],sizeof(structstudent),1,fp)!=0;x++) { } printf("\n"); fclose(fp); z=x; for(x=0;x<z;x++) for(y=x+1;y<z;y++) if(stu[x].c_prog<stu[y].c_prog) {yuyan=stu[x]; stu[x]=stu[y]; stu[y]=yuyan; } printf("\n排序后数据:\n"); printf("\n班级学号姓名C语言\n"); fp=fopen("stud.c","w"); for(x=0;x<z;x++) {fwrite(&stu[x],sizeof(structstudent),1,fp); printf("\n%-6s%-6s%-6s%-9.2f\n",stu[x].class_0, stu[x].num,stu[x].name,stu[x].c_prog); } printf("\n");getchar(); fclose(fp); return;}elseif(t=4){FILE*fp;intx,y,z;structstudentying; if((fp=fopen("stud.c","r"))==NULL) {printf("\n无法打开文件\n\n\n");return;} for(x=0;fread(&stu[x],sizeof(structstudent),1,fp)!=0;x++) { } printf("\n"); fclose(fp); z=x; for(x=0;x<z;x++) for(y=x+1;y<z;y++) if(stu[x].eng<stu[y].eng) {ying=stu[x]; stu[x]=stu[y]; stu[y]=ying; } printf("\n排序后数据:\n"); printf("\n班级学号姓名英语\n"); fp=fopen("stud.c","w"); for(x=0;x<z;x++) {fwrite(&stu[x],sizeof(structstudent),1,fp); printf("\n%-6s%-6s%-6s%-9.2f\n",stu[x].class_0, stu[x].num,stu[x].name,stu[x].eng); } printf("\n");getchar(); fclose(fp); return;}elseif(t=5){FILE*fp;intx,y,z;structstudentmakesi; if((fp=fopen("stud.c","r"))==NULL) {printf("\n无法打开文件\n\n\n");return;} for(x=0;fread(&stu[x],sizeof(structstudent),1,fp)!=0;x++) { } printf("\n"); fclose(fp); z=x; for(x=0;x<z;x++) for(y=x+1;y<z;y++) if(stu[x].polity<stu[y].polity) {makesi=stu[x]; stu[x]=stu[y]; stu[y]=makesi; } printf("\n排序后数据:\n"); printf("\n班级学号姓名马克思经济学\n"); fp=fopen("stud.c","w"); for(x=0;x<z;x++) {fwrite(&stu[x],sizeof(structstudent),1,fp); printf("\n%-6s%-6s%-6s%-9.2f\n",stu[x].class_0, stu[x].num,stu[x].name,stu[x].polity); } printf("\n");getchar(); fclose(fp); return;}elseif(t=6){FILE*fp;intx,y,z;structstudenttiyu; if((fp=fopen("stud.c","r"))==NULL) {printf("\n无法打开文件\n\n\n");return;} for(x=0;fread(&stu[x],sizeof(structstudent),1,fp)!=0;x++) { } printf("\n"); fclose(fp); z=x; for(x=0;x<z;x++) for(y=x+1;y<z;y++) if(stu[x].sport<stu[y].sport) {tiyu=stu[x]; stu[x]=stu[y]; stu[y]=tiyu; } printf("\n排序后数据:\n"); printf("\n班级学号姓名大学体育\n"); fp=fopen("stud.c","w"); for(x=0;x<z;x++) {fwrite(&stu[x],sizeof(structstudent),1,fp); printf("\n%-6s%-6s%-6s%-9.2f\n",stu[x].class_0, stu[x].num,stu[x].name,stu[x].sport); } printf("\n");getchar(); fclose(fp); return;}else{FILE*fp;intx,y,z;structstudentxuehao; if((fp=fopen("stud.c","r"))==NULL) {printf("\n无法打开文件\n\n\n");return;} for(x=0;fread(&stu[x],sizeof(structstudent),1,fp)!=0;x++) { } printf("\n"); fclose(fp); z=x; for(x=0;x<z;x++) for(y=x+1;y<z;y++) if(stu[x].num<stu[y].num) {xuehao=stu[x]; stu[x]=stu[y]; stu[y]=xuehao; } printf("\n排序后数据:\n"); printf("\n班级学号姓名高等数学C程序设计大学英语马克思主义经济学大学体育平均分\n"); fp=fopen("stud.c","w"); for(x=0;x<z;x++) {fwrite(&stu[x],sizeof(structstudent),1,fp); printf("\n%-6s%-6s%-6s%-9.2f%-10.2f%-9.2f%-17.2f%-9.2f%-6.2f\n",stu[x].class_0, stu[x].num,stu[x].name,stu[x].math,stu[x].c_prog,stu[x].eng, stu[x].polity,stu[x].sport,stu[x].ave); } printf("\n");getchar(); fclose(fp); return; }}voidtongji(){ FILE*fp;inti,d,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;if((fp=fopen("stud.c","rb"))==NULL){printf("文件打开失败.\n");exit(1);}for(i=0;fread(&stu[i],sizeof(structstudent),1,fp)!=0;i++){};d=i;rewind(fp);for(i=0;i<d;i++) { if(0<=stu[i].ave&&stu[i].ave<10)j=j+1; elseif(10<=stu[i].ave&&stu[i].ave<20)k=k+1; elseif(20<=stu[i].ave&&stu[i].ave<30)l=l+1; elseif(30<=stu[i].ave&&stu[i].ave<40)m=m+1; elseif(40<=stu[i].ave&&stu[i].ave<50)n=n+1; elseif(50<=stu[i].ave&&stu[i].ave<60)o=o+1; elseif(60<=stu[i].ave&&stu[i].ave<70)p=p+1; elseif(70<=stu[i].ave&&stu[i].ave<80)q=q+1; elseif(80<=stu[i].ave&&stu[i].ave<90)r=r+1; elseif(90<=stu[i].ave&&stu[i].ave<100)s=s+1; }printf("0-10:");printf("\t%d\n",j);printf("10-20:");printf("\t%d\n",k);printf("20-30:");printf("\t%d\n",l);printf("30-40:");printf("\t%d\n",m);printf("40-50:");printf("\t%d\n",n);printf("50-60:");printf("\t%d\n",o);printf("60-70:");printf("\t%d\n",p);printf("70-80:");printf("\t%d\n",q);printf("80-90:");printf("\t%d\n",r);printf("90-100:");printf("\t%d\n",s);fclose(fp); getchar();return;}voidchaxun(){ intg1,k1,a1;FILE*fp;charnum1[10]; if((fp=fopen("stud.c","rb"))==NULL) {printf("\n无法打开文件\n\n\n");return;} for(g1=0;fread(&stu[g1],sizeof(structstudent),1,fp)!=0;g1++) { }; fclose(fp); k1=g1; printf("\n请输入要查询学生学号:\n"); scanf("%s",num1); for(a1=1,g1=0;a1&&g1<k1;g1++) {if(strcmp(num1,stu[g1].num)==0) a1=0; } if(!a1) {printf("\n你要查询学生成绩:\n"); printf("\n班级学号姓名高等数学C程序设计大学英语马克思主义经济学大学体育平均分\n"); printf("\n%-6s%-6s%-6s%-9.2f%-10.2f%-9.2f%-17.2f%-9.2f%-6.2f\n",stu[g1-1].class_0, stu[g1-1].num,stu[g1-1].name,stu[g1-1].math,stu[g1-1].c_prog,stu[g1-1].eng, stu[g1-1].polity,stu[g1-1].sport,stu[g1-1].ave); } else {printf("\n没有你要查询学生成绩:\n\n\n");return;} fclose(fp); getchar(); }voidcharu(){ FILE*fp;inti,e,n;structstudents; printf("请输入需要插入学生数据\n"); printf("班级:"); scanf("%s",s.class_0); printf("学号:"); scanf("%s",s.num); printf("姓名:"); scanf("%s",); printf("高等数学成绩:"); scanf("%f",&s.math); printf("C程序设计成绩:"); scanf("%f",&s.c_prog); printf("大学英语成绩:"); scanf("%f",&s.eng); printf("马克思主义政治经济学成绩:"); scanf("%f",&s.polity); printf("大学体育成绩:"); scanf("%f",&s.sport); s.ave=(s.c_prog+s.eng+s.math+s.polity+s.sport)/5; if((fp=fopen("stud.c","r"))==NULL) {printf("\n无法打开文件\n\n\n");return;} for(e=0;fread(&stu[e],sizeof(structstudent),1,fp)!=0;e++) {};n=e; printf("\n插入后学生成绩:\n");fp=fopen("stud.c","w"); fwrite(&s,sizeof(structstudent),1,fp); printf("\n班级学号姓名高等数学C程序设计大学英语马克思主义经济学大学体育平均分\n"); printf("\n%-6s%-6s%-6s%-9.2f%-10.2f%-9.2f%-17.2f%-9.2f%-6.2f\n",s.class_0, s.num,,s.math,s.c_prog,s.eng,s.polity,s.sport,s.ave); for(e=0;e<n;e++) { fwrite(&stu[e],sizeof(structstudent),1,fp); printf("\n%-6s%-6s%-6s%-9.2f%-10.2f%-9.2f%-17.2f%-9.2f%-6.2f\n",stu[e].class_0, stu[e].num,stu[e].name,stu[e].math,stu[e].c_prog,stu[e].eng, stu[e].polity,stu[e].sport,stu[e].ave); } fclose(fp); getchar(); }voidxiugai(){ intg2,k2,a2;FILE*fp;structstudents1; charnum[10]; if((fp=fopen("stud.c","rb"))==NULL) {printf("\n无法打开文件\n\n\n");r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 游乐设备技术分享
- 仓储物流作业流程标准化手册(标准版)
- 小升初考语文试卷及答案
- 绝缘制品制造工节假日后复工安全考核试卷含答案
- 铝电解操作工春节假期安全告知书
- 高速公路收费操作与维护指南(标准版)
- 2025年企业合规与法律法规手册
- 广安市友谊中学2025-2026学年高二上学期10月月考物理试题
- 2025康复考试题库及答案
- 睢县事业单位笔试试题2025
- 电力线路施工项目竣工验收与交付方案
- 《机器学习》期末考试复习题库(附答案)
- 深圳市第二高级中学2026届数学高一上期末综合测试模拟试题含解析
- 工信部网络安全技术考试题及答案详解
- 慢性踝关节不稳
- UWB定位是什么协议书
- 舞龙舞狮节活动方案
- 2026届广东省高考综合模拟考试政治练习题1(解析版)
- 物理学科组长年终工作总结
- 子宫肌瘤超声表现课件
- 风电项目设备调试技术方案
评论
0/150
提交评论