数据结构-学生成绩管理系统方案_第1页
数据结构-学生成绩管理系统方案_第2页
数据结构-学生成绩管理系统方案_第3页
数据结构-学生成绩管理系统方案_第4页
数据结构-学生成绩管理系统方案_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

...28/29课程设计课程名称___数据结构基础__题目名称_学生成绩管理系统学生学院____管理学院______专业班级_学号___学生姓名_指导教师__________目录1系统分析11.1系统性能分析11.2系统功能需求分析11.3数据分析12系统设计22.1总体设计22.2详细设计32.2.1界面设计32.2.2各功能模块的设计32.2.2系统编码设计83.1预处理命令及结构体类型的声明83.2main函数83.3程序代码95总结371系统分析1.1系统性能分析1、操作界面美观、友好,有必要的容错处理〔如:能判定学号位数和只能由0~9数字字符组成、能判定合理的成绩0~100等;2、查询应根据查询条件合理选择先进的查询方法3、排序算法要求采用堆排序实现;4、分数段统计结果要求保存在单独的文件中;1.2系统功能需求分析本系统应具有以下功能:1、提供身份验证,和使用系统的权限设置、判定。2、〔教师用户能实现本班同学各学期各科成绩的录入、编辑,数据必须保存在文件中,以便反复使用。3、〔学生用户提供对学号或姓名,各学科成绩的查询。4、〔学生和教师用户能按各学期、各学科分数排序输出<每一科都要能排序输出>。5、〔教师用户能统计各科成绩分数段的分布〔60以下、60~70、70~80、80~90、90~100情况,并输出。1.3数据分析1.3.1.问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?〔而不是怎么做?限制条件是什么?1.3.2.逻辑设计:对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。逻辑设计的结果应写出每个抽象数据类型的定义<包括数据结构的描述和每个基本操作的功能说明>,各个主要模块的算法,并画出模块之间的调用关系图;1.3.3.详细设计:定义相应的存储结构并写出各函数的伪码算法。在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。详细设计的结果是对数据结构和基本操作作出进一步的求精,写出数据存储结构的类型定义,写出函数形式的算法框架;.程序编码:把详细设计的结果进一步求精为程序设计语言程序。同时加入一些注解和断言,使程序中逻辑概念清楚;1.3.5.程序调试与测试:采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果;2系统设计2.1总体设计按系统分析的功能要求将系统划分为以下几个主要功能模块:1学生记录录入2学生成绩查询:按学号查询、按姓名查询3删除记录4排序5修改数据6显示全部学生记录7统计8更换用户9保存记录0退出系统2.2详细设计2.2.1界面设计1、菜单设计菜单主要有学生成绩录入、成绩查询、成绩排序、更换用户……设计时主要采用switch-case这个结构,从而选择调用相应的函数。子菜单也是利用这个原理方法设计的2、信息显示界面的设计信息显示主要用了for<;;>循环,输出信息,并设置好输出格式,运行时如下:2.2.2各功能模块的设计主函数主要作用是控制调用其它函数协调工作。其流程图如下:查询窗口排序窗口按总分排序修改窗口删除窗口统计窗口统计结果2.2.2系统编码设计3.1预处理命令及结构体类型的声明#include"stdio.h"#include"stdlib.h"#include"string.h"#include"windows.h"#defineM1003.2main函数voidmain<>{ welcome<>; IO_ReadInfo<>; Login<>;}3.3程序代码#include"stdio.h"#include"stdlib.h"#include"string.h"#include"windows.h"#defineM100voidLogin<>;/*<<<<<<<<<<<<***定义学生结构体***>>>>>>>>>>>>>>>>*/typedefstructstu{ charStuID[12]; charStudName[12];floatScore[5]; floatAv; floatSum; inttag;}Stud;Studstud[M];intnum=0;/*<<<<<<<<<<<<***计算总分***>>>>>>>>>>>>>>>>*/floatsum<Studstud>{intj;floatsum=0;for<j=0;j<5;j++>{sum+=stud.Score[j];}returnsum;}/*<<<<<<<<<<<<***通过学号返回数组下标***>>>>>>>>>>>>>>>>*/intStudent_SearchByIndex<charid[]>{inti;for<i=0;i<num;i++>{if<strcmp<stud[i].StuID,id>==0>{returni;}}return-1;}/*<<<<<<<<<<<<***通过姓名返回数组下标***>>>>>>>>>>>>>>>>*/intStudent_SearchByName<charname[]>{inti;for<i=0;i<num;i++>{if<strcmp<stud[i].StudName,name>==0>{returni;}}return-1;}/*<<<<<<<<<<<<***解决学号冲突***>>>>>>>>>>>>>>>>*/intConflictID<Studstud[],intn,charID[]>{inti;for<i=0;i<num;i++>{if<i!=n>{ if<strcmp<stud[i].StuID,ID>==0> { returnTRUE; break; }}}if<i==num>{returnFALSE;}}/*<<<<<<<<<<<<***显示单条学生记录***>>>>>>>>>>>>>>>>*/voidStudent_DisplaySingle<intindex>{ printf<"\n*◆◆◆◆◆◆◆◆◆◆◆◆学生成绩单◆◆◆◆◆◆◆◆◆◆*\n">;printf<"\t\t姓名:<%s>\t学号:<%s>",stud[index].StudName,stud[index].StuID>;printf<"\n\t\t计算机操作系统:<%.2f>",<&stud[index]>->Score[0]>;printf<"\n\t\t大学英语:<%.2f>",<&stud[index]>->Score[1]>;printf<"\n\t\t基础会计:<%.2f>",<&stud[index]>->Score[2]>;printf<"\n\t\t数据结构:<%.2f>",<&stud[index]>->Score[3]>;printf<"\n\t\tJava语言设计:<%.2f>",<&stud[index]>->Score[4]>;printf<"\n\t\t总分:<%.2f>",<&stud[index]>->Sum>;printf<"\n\t\t平均分:<%.2f>\n\n\n",<&stud[index]>->Av>;}/*<<<<<<<<<<<<***显示学生信息***>>>>>>>>>>>>>>>>*/voidStudent_Display<>{ inti; printf<"\n%-4s%s\t%-8s%-10s%-10s%-10s%-10s%-10s%-9s\n","编号","学号","姓名","操作系统","大学英语","会计基础","数据结构","Java设计","总分">; printf<"\n">;for<i=0;i<num;i++> { printf<"%-4d%s\t%-8s%-10.2f%-10.2f%-10.2f%-10.2f%-10.2f%-9.1f\n",i+1,<&stud[i]>->StuID,<&stud[i]>->StudName,<&stud[i]>->Score[0],<&stud[i]>->Score[1],<&stud[i]>->Score[2],<&stud[i]>->Score[3],<&stud[i]>->Score[4],<&stud[i]>->Sum>; printf<"\n">; }}/*<<<<<<<<<<<<***插入学生信息***>>>>>>>>>>>>>>>>*/voidStudent_Insert<>{ charc; printf<"\n">;printf<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n\n\n">; while<1> { printf<"请输入学号:">; scanf<"%s",&stud[num].StuID>; while<ConflictID<stud,num,stud[num].StuID>>{getchar<>;printf<"学号已经存在\2\n请重新输入学号:">;scanf<"%s",&stud[num].StuID>;}getchar<>; printf<"请输入学生姓名:">; scanf<"%s",&stud[num].StudName>; getchar<>; printf<"请输入计算机操作系统成绩<0~100>:">; scanf<"%f",&stud[num].Score[0]>; while<stud[num].Score[0]>100||stud[num].Score[0]<0> { getchar<>;printf<"输入有误\2请重新输入\n计算机操作系统成绩<0~100>:">;scanf<"%f",&stud[num].Score[0]>; } getchar<>; printf<"请输入大学英语成绩<0~100>:">; scanf<"%f",&stud[num].Score[1]>; while<stud[num].Score[1]>100||stud[num].Score[1]<0> { getchar<>;printf<"输入有误\2请重新输入\n大学英语成绩<0~100>:">;scanf<"%f",&stud[num].Score[1]>; } getchar<>; printf<"请输入基础会计成绩<0~100>:">; scanf<"%f",&stud[num].Score[2]>; while<stud[num].Score[2]>100||stud[num].Score[2]<0> { getchar<>;printf<"输入有误\2请重新输入\n基础会计成绩<0~100>:">;scanf<"%f",&stud[num].Score[2]>; } getchar<>; printf<"请输入数据结构基础成绩<0~100>:">; scanf<"%f",&stud[num].Score[3]>; while<stud[num].Score[3]>100||stud[num].Score[3]<0> { getchar<>;printf<"输入有误\2请重新输入\n数据结构基础成绩<0~100>:">;scanf<"%f",&stud[num].Score[3]>; } getchar<>; printf<"请输入Java语言设计成绩<0~100>:">; scanf<"%f",&stud[num].Score[4]>; while<stud[num].Score[4]>100||stud[num].Score[4]<0> { getchar<>;printf<"输入有误\2请重新输入\nJava语言设计成绩<0~100>:">;scanf<"%f",&stud[num].Score[4]>; } getchar<>; stud[num].Sum=sum<stud[num]>; stud[num].Av=stud[num].Sum/5;num++;printf<"是否继续?<y/n>">;scanf<"%c",&c>;getchar<>;if<c=='N'||c=='n'>{break;}}}/*<<<<<<<<<<<<***推排序***>>>>>>>>>>>>>>>>*/voidsift<Studr[],intt,intw,inttag>{ if<tag==1> { inti1,j1; Studx1; i1=t; x1=r[i1]; j1=2*i1+1; while<j1<=w> { if<<j1<w>&&<strcmp<r[j1].StuID,r[j1+1].StuID>>0>> j1++; if<<strcmp<x1.StuID,r[j1].StuID>>>0> { r[i1]=r[j1];i1=j1;j1=2*j1+1;} else break; } r[i1]=x1; } if<tag==2> { inti2,j2; Studx2; i2=t; x2=r[i2]; j2=2*i2+1; while<j2<=w> { if<<j2<w>&&<r[j2].Sum>r[j2+1].Sum>> j2++; if<x2.Sum>r[j2].Sum> { r[i2]=r[j2];i2=j2;j2=2*j2+1;} else break; } r[i2]=x2; } }voidheapsort<Studr[],intn,inttag>/*堆排序*/{ inti,xx=0; Studx; for<i=n/2-1;i>=0;i--> sift<r,i,n-1,tag>; for<i=n-1;i>0;i--> { x=r[0]; r[0]=r[i]; r[i]=x; sift<r,0,i-1,tag>; } printf<"\n%-4s%s\t%-8s%-10s%-10s%-10s%-10s%-10s%-9s\n","编号","学号","姓名","操作系统","大学英语","会计基础","数据结构","Java设计","总分">; printf<"\n">;for<i=num-1;i>=0;i--> {++xx; printf<"%-4d%s\t%-8s%-10.2f%-10.2f%-10.2f%-10.2f%-10.2f%-10.1f\n",xx,<&stud[i]>->StuID,<&stud[i]>->StudName,<&stud[i]>->Score[0],<&stud[i]>->Score[1],<&stud[i]>->Score[2],<&stud[i]>->Score[3],<&stud[i]>->Score[4],<&stud[i]>->Sum>; printf<"\n">; }}/*<<<<<<<<<<<<***按学号修改学生信息***>>>>>>>>>>>>>>>>*/voidStudent_ModifyByID<>{ while<1> { charid[20]; charc; intindex; printf<"请输入要修改的学生的学号:">; scanf<"%s",&id>; getchar<>; index=Student_SearchByIndex<id>; if<index==-1> {printf<"学生不存在!\n">;} else { printf<"你要修改的学生信息为:\n">; Student_DisplaySingle<index>; printf<"--请输入新值--\n">; printf<"请输入学号:">; scanf<"%s",stud[index].StuID>; getchar<>; printf<"请输入姓名:">; scanf<"%s",&stud[index].StudName>; getchar<>; printf<"是否要修改该学生的成绩?<Y/N>">; scanf<"%c",&c>;getchar<>; if<c==121||c==89>{ printf<"请输入计算机操作系统成绩<0~100>:">; scanf<"%f",&stud[index].Score[0]>; while<stud[index].Score[0]>100||stud[index].Score[0]<0> { getchar<>;printf<"输入有误\2请重新输入\n计算机操作系统成绩<0~100>:">;scanf<"%f",&stud[index].Score[0]>; } getchar<>; printf<"请输入大学英语成绩<0~100>:">; scanf<"%f",&stud[index].Score[1]>; while<stud[index].Score[1]>100||stud[index].Score[1]<0> { getchar<>;printf<"输入有误\2请重新输入\n大学英语成绩<0~100>:">;scanf<"%f",&stud[index].Score[1]>; } getchar<>; printf<"请输入基础会计成绩<0~100>:">; scanf<"%f",&stud[index].Score[2]>; while<stud[index].Score[2]>100||stud[index].Score[2]<0> { getchar<>;printf<"输入有误\2请重新输入\n基础会计成绩<0~100>:">;scanf<"%f",&stud[index].Score[2]>; } getchar<>; printf<"请输入数据结构基础成绩<0~100>:">; scanf<"%f",&stud[index].Score[3]>; while<stud[index].Score[3]>100||stud[index].Score[3]<0> { getchar<>;printf<"输入有误\2请重新输入\n数据结构基础成绩<0~100>:">;scanf<"%f",&stud[index].Score[3]>; } getchar<>; printf<"请输入Java语言设计成绩<0~100>:">; scanf<"%f",&stud[index].Score[4]>; while<stud[index].Score[4]>100||stud[index].Score[4]<0> { getchar<>;printf<"输入有误\2请重新输入\nJava语言设计成绩<0~100>:">;scanf<"%f",&stud[index].Score[4]>; } getchar<>; } stud[index].Sum=sum<stud[index]>; stud[index].Av=stud[index].Sum/5; } printf<"是否继续?<y/n>">; if<getchar<>=='n'> {break;} }}/*<<<<<<<<<<<<***按姓名修改学生信息***>>>>>>>>>>>>>>>>*/voidStudent_ModifyByName<>{ while<1> { charname[20]; charc; intindex; printf<"请输入要修改的学生的姓名:">; scanf<"%s",&name>; getchar<>; index=Student_SearchByName<name>; if<index==-1> {printf<"学生不存在!\n">;} else { printf<"你要修改的学生信息为:\n">; Student_DisplaySingle<index>; printf<"--请输入新值--\n">; printf<"请输入学号:">; scanf<"%s",stud[index].StuID>; getchar<>; printf<"请输入姓名:">; scanf<"%s",&stud[index].StudName>; getchar<>; printf<"是否要修改该学生的成绩?<Y/N>">; scanf<"%c",&c>;getchar<>; if<c==121||c==89>{ printf<"请输入计算机操作系统成绩<0~100>:">; scanf<"%f",&stud[index].Score[0]>; while<stud[index].Score[0]>100||stud[index].Score[0]<0> { getchar<>;printf<"输入有误\2请重新输入\n计算机操作系统成绩<0~100>:">;scanf<"%f",&stud[index].Score[0]>; } getchar<>; printf<"请输入大学英语成绩<0~100>:">; scanf<"%f",&stud[index].Score[1]>; while<stud[index].Score[1]>100||stud[index].Score[1]<0> { getchar<>;printf<"输入有误\2请重新输入\n大学英语成绩<0~100>:">;scanf<"%f",&stud[index].Score[1]>; } getchar<>; printf<"请输入基础会计成绩<0~100>:">; scanf<"%f",&stud[index].Score[2]>; while<stud[index].Score[2]>100||stud[index].Score[2]<0> { getchar<>;printf<"输入有误\2请重新输入\n基础会计成绩<0~100>:">;scanf<"%f",&stud[index].Score[2]>; } getchar<>; printf<"请输入数据结构基础成绩<0~100>:">; scanf<"%f",&stud[index].Score[3]>; while<stud[index].Score[3]>100||stud[index].Score[3]<0> { getchar<>;printf<"输入有误\2请重新输入\n数据结构基础成绩<0~100>:">;scanf<"%f",&stud[index].Score[3]>; } getchar<>; printf<"请输入Java语言设计成绩<0~100>:">; scanf<"%f",&stud[index].Score[4]>; while<stud[index].Score[4]>100||stud[index].Score[4]<0> { getchar<>;printf<"输入有误\2请重新输入\nJava语言设计成绩<0~100>:">;scanf<"%f",&stud[index].Score[4]>; } getchar<>; } stud[index].Sum=sum<stud[index]>; stud[index].Av=stud[index].Sum/5; } printf<"是否继续?<y/n>">; if<getchar<>=='n'> {break;} }}/*<<<<<<<<<<<<***按学生学号删除***>>>>>>>>>>>>>>>>*/voidStudent_DeleteByID<>{ inti;charid[20];intindex;printf<"请输入要删除的学生的学号:">;scanf<"%s",&id>;getchar<>;index=Student_SearchByIndex<id>;if<index==-1>{printf<"学生不存在!\n">;}else{ printf<"你要删除的学生信息为:\n">;Student_DisplaySingle<index>;printf<"是否真的要删除?<y/n>">;if<getchar<>=='y'>{ for<i=index;i<num-1;i++> { stud[i]=stud[i+1];} num--; printf<"删除成功!\n">;}getchar<>;}}/*<<<<<<<<<<<<***按学生姓名删除***>>>>>>>>>>>>>>>>*/voidStudent_DeleteByName<>{ inti;charname[20];intindex;printf<"请输入要删除的学生的姓名:">;scanf<"%s",&name>;getchar<>;index=Student_SearchByName<name>;if<index==-1>{printf<"学生不存在!\n">;}else{ printf<"你要删除的学生信息为:\n">;Student_DisplaySingle<index>;printf<"是否真的要删除?<y/n>">;if<getchar<>=='y'>{ for<i=index;i<num-1;i++> { stud[i]=stud[i+1];} num--; printf<"删除成功!\n">;}getchar<>;}}/*<<<<<<<<<<<<***按学生姓名查找***>>>>>>>>>>>>>>>>*/voidStudentName_Select<>{ charname[20];intindex;printf<"请输入要查询的学生的姓名:">;scanf<"%s",&name>;getchar<>;index=Student_SearchByName<name>;if<index==-1>{ printf<"学生不存在!\n">; }else{ printf<"\n你要查询的学生信息为:\n">;Student_DisplaySingle<index>;}}/*<<<<<<<<<<<<***按学生学号查找***>>>>>>>>>>>>>>>>*/voidStudentID_Select<>{ charid[20];intindex;printf<"请输入要查询的学生的学号:">;scanf<"%s",&id>;getchar<>;index=Student_SearchByIndex<id>;if<index==-1>{ printf<"学生不存在!\n">; }else{ printf<"\n你要查询的学生信息为:\n">;Student_DisplaySingle<index>;}}/*<<<<<<<<<<<<***统计学生个分数段***>>>>>>>>>>>>>>>>*/voidTongJi<>{ inta[5]={0},b[5]={0},c[5]={0},d[5]={0},e[5]={0};inti,k; for<i=0;i<num;i++> {for<k=0;k<5;k++>{ if<stud[i].Score[k]>=90&&stud[i].Score[k]<=100> a[k]++; if<stud[i].Score[k]>=80&&stud[i].Score[k]<=89> b[k]++; if<stud[i].Score[k]>=70&&stud[i].Score[k]> c[k]++; if<stud[i].Score[k]>=60&&stud[i].Score[k]<=69> d[k]++; if<stud[i].Score[k]>=0&&stud[i].Score[k]<60> e[k]++;} } printf<"\n\t****************成绩分数段统计如下****************\n\n">; printf<"\n\n成绩统计\n\n">;printf<"*********************计算机操作系统***************************\n">;printf<"90--100分人数:%d\t80--90分人数:%d\t\t\t\n",a[0],b[0]>;printf<"70--80分人数:%d\t60--70分人数:%d\t\t\t\n",c[0],d[0]>;printf<"60以下分人数:%d\t\t\t\t\t\n",e[0]>;printf<"************************************************************\n\n">;printf<"*************************大学英语*****************************\n">;printf<"90--100分人数:%d\t80--90分人数:%d\t\t\t\n",a[1],b[1]>;printf<"70--80分人数:%d\t60--70分人数:%d\t\t\t\n",c[1],d[1]>;printf<"60以下分人数:%d\t\t\t\t\t\n",e[1]>;printf<"************************************************************\n\n">;printf<"*************************基础会计*****************************\n">;printf<"90--100分人数:%d\t80--90分人数:%d\t\t\t\n",a[2],b[2]>;printf<"70--80分人数:%d\t60--70分人数:%d\t\t\t\n",c[2],d[2]>;printf<"60以下分人数:%d\t\t\t\t\t\n",e[2]>;printf<"************************************************************\n\n">;printf<"*************************数据结构*****************************\n">;printf<"90--100分人数:%d\t80--90分人数:%d\t\t\t\n",a[3],b[3]>;printf<"70--80分人数:%d\t60--70分人数:%d\t\t\t\n",c[3],d[3]>;printf<"60以下分人数:%d\t\t\t\t\t*\n",e[3]>;printf<"************************************************************\n\n">;printf<"***********************Java语言设计***************************\n">;printf<"90--100分人数:%d\t80--90分人数:%d\t\t\t\n",a[4],b[4]>;printf<"70--80分人数:%d\t60--70分人数:%d\t\t\t\n",c[4],d[4]>;printf<"60以下分人数:%d\t\t\t\t\t\n",e[4]>;printf<"*************************************************************\n\n">;}voidTongJiSave<>{ FILE*fp1; inta[5]={0},b[5]={0},c[5]={0},d[5]={0},e[5]={0};inti,k; for<i=0;i<num;i++> {for<k=0;k<5;k++>{ if<stud[i].Score[k]>=90&&stud[i].Score[k]<=100> a[k]++; if<stud[i].Score[k]>=80&&stud[i].Score[k]<=89> b[k]++; if<stud[i].Score[k]>=70&&stud[i].Score[k]> c[k]++; if<stud[i].Score[k]>=60&&stud[i].Score[k]<=69> d[k]++; if<stud[i].Score[k]>=0&&stud[i].Score[k]<60> e[k]++;} }fp1=fopen<"学生分数段统计表.txt","w">;fprintf<fp1,"\n\t****************成绩分数段统计如下****************\n\n">; fprintf<fp1,"\n\n成绩统计\n\n">;fprintf<fp1,"*********************计算机操作系统***************************\n">;fprintf<fp1,"90--100分人数:%d\t80--90分人数:%d\t\t\t\n",a[0],b[0]>;fprintf<fp1,"70--80分人数:%d\t60--70分人数:%d\t\t\t\n",c[0],d[0]>;fprintf<fp1,"60以下分人数:%d\t\t\t\t\t\n",e[0]>;fprintf<fp1,"************************************************************\n\n">;fprintf<fp1,"*************************大学英语*****************************\n">;fprintf<fp1,"90--100分人数:%d\t80--90分人数:%d\t\t\t\n",a[1],b[1]>;fprintf<fp1,"70--80分人数:%d\t60--70分人数:%d\t\t\t\n",c[1],d[1]>;fprintf<fp1,"60以下分人数:%d\t\t\t\t\t\n",e[1]>;fprintf<fp1,"************************************************************\n\n">;fprintf<fp1,"*************************基础会计*****************************\n">;fprintf<fp1,"90--100分人数:%d\t80--90分人数:%d\t\t\t\n",a[2],b[2]>;fprintf<fp1,"70--80分人数:%d\t60--70分人数:%d\t\t\t\n",c[2],d[2]>;fprintf<fp1,"60以下分人数:%d\t\t\t\t\t\n",e[2]>;fprintf<fp1,"************************************************************\n\n">;fprintf<fp1,"*************************数据结构*****************************\n">;fprintf<fp1,"90--100分人数:%d\t80--90分人数:%d\t\t\t\n",a[3],b[3]>;fprintf<fp1,"70--80分人数:%d\t60--70分人数:%d\t\t\t\n",c[3],d[3]>;fprintf<fp1,"60以下分人数:%d\t\t\t\t\t*\n",e[3]>;fprintf<fp1,"************************************************************\n\n">;fprintf<fp1,"***********************Java语言设计***************************\n">;fprintf<fp1,"90--100分人数:%d\t80--90分人数:%d\t\t\t\n",a[4],b[4]>;fprintf<fp1,"70--80分人数:%d\t60--70分人数:%d\t\t\t\n",c[4],d[4]>;fprintf<fp1,"60以下分人数:%d\t\t\t\t\t\n",e[4]>;fprintf<fp1,"*************************************************************\n\n">;fclose<fp1>;printf<"\n\n\t\t信息已经保存到"学生分数段统计表.txt"文件中了!\n\n">;}/*<<<<<<<<<<<<***将学生信息从文件读出***>>>>>>>>>>>>>>>>*/voidIO_ReadInfo<>{FILE*fp;inti;if<<fp=fopen<"StudentDatabase.txt","rb">>==NULL>{printf<"不能打开文件!\n">;return;}if<fread<&num,sizeof<int>,1,fp>!=1>{num=-1;}else{ for<i=0;i<num;i++> { fread<&stud[i],sizeof<stud>,1,fp>; }}fclose<fp>;}/*<<<<<<<<<<<<***将学生信息写入文件***>>>>>>>>>>>>>>>>*/voidIO_WriteInfo<>{FILE*fp;inti;if<<fp=fopen<"StudentDatabase.txt","wb">>==NULL>{printf<"不能打开文件!\n">;return;}if<fwrite<&num,sizeof<int>,1,fp>!=1>{printf<"写入文件错误!\n">;}for<i=0;i<num;i++>{if<fwrite<&stud[i],sizeof<stud>,1,fp>!=1>{printf<"写入文件错误!\n">;}}printf<"\n保存成功!\n">;fclose<fp>;}/*<<<<<<<<<<<<***统计窗口***>>>>>>>>>>>>>>>>*/voidSatement<>{ voidMenu_Teacher<>; ints;charc;lp0: {system<"cls">;printf<"\n\n\n\n\n\n">;printf<"☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n">;printf<"★☆\n">;printf<"☆1*各科成绩分数段统计★\n">;printf<"★☆\n">;printf<"☆2*保存统计表★\n">;printf<"★☆\n">;printf<"☆0*返回上一级★\n">;printf<"★☆\n">;printf<"☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n">; printf<"\n\n\n\n\n\n">; printf<"\n请选择操作:">;scanf<"%d",&s>;switch<s>{ case1: {system<"cls">;TongJi<>;break;} case2:{system<"cls">;TongJiSave<>;break;}case0:{system<"cls">;Menu_Teacher<>;break;}default:printf<"错误输入!!!\n">;}getchar<>;printf<"是否要返回继续〔Y/N:">;scanf<"%c",&c>;if<c==121||c==89>gotolp0; }}/*<<<<<<<<<<<<***排序窗口***>>>>>>>>>>>>>>>>*/voidSort<intx>{ voidMenu_Teacher<>; voidMenu_Student<>; ints;charc;lp0: {system<"cls">; printf<"\n\n\n\n\n\n">;printf<"☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n">;printf<"★☆\n">;printf<"☆1*按学号排序★\n">;printf<"★☆\n">;printf<"☆2*按总分排序★\n">;printf<"★☆\n">;printf<"☆0*返回上一级★\n">;printf<"★☆\n">;printf<"☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n">;printf<"\n\n\n\n\n\n">;printf<"\n请选择操作:">;scanf<"%d",&s>;switch<s>{ case1: {system<"cls">;heapsort<stud,num,s>;}break; case2:{system<"cls">;heapsort<stud,num,s>;}break;case0:{system<"cls">;if<x==4>Menu_Teacher<>;if<x==2>Menu_Student<>;}break;default:printf<"错误输入!!!\n">;}getchar<>;printf<"要返回排序菜单吗〔Y/N:">;scanf<"%c",&c>;if<c==121||c==89>gotolp0; }}/*<<<<<<<<<<<<***修改窗口***>>>>>>>>>>>>>>>>*/voidModify<>{ voidMenu_Teacher<>; ints;charc;lp0: {system<"cls">; printf<"\n\n\n\n\n\n">;printf<"☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n">;printf<"★☆\n">;printf<"☆1*按学号查找修改★\n">;printf<"★☆\n">;printf<"☆2*按姓名查找修改★\n">;printf<"★☆\n">;printf<"☆0*返回上一级★\n">;printf<"★☆\n">;printf<"☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n">; printf<"\n\n\n\n\n\n">;printf<"\n请选择操作:">;scanf<"%d",&s>;switch<s>{ case1: {system<"cls">;Student_ModifyByID<>;getchar<>;break;} case2:{system<"cls">;Student_ModifyByName<>;getchar<>;break;}case0:{system<"cls">;Menu_Teacher<>;break;}default:printf<"错误输入!!!\n">;}printf<"要返回修改界面继续修改吗〔Y/N:">;scanf<"%c",&c>;if<c==121||c==89>gotolp0; }}/*<<<<<<<<<<<<***删除窗口***>>>>>>>>>>>>>>>>*/voidDelect<>{ voidMenu_Teacher<>; ints;charc; lp1:{ system<"cls">;printf<"\n\n\n\n\n\n">;printf<"☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n">;printf<"★☆\n">;printf<"☆1*按学号查找删除★\n">;printf<"★☆\n">;printf<"☆2*按姓名查找删除★\n">;printf<"★☆\n">;printf<"☆0*返回上一级★\n">;printf<"★☆\n">;printf<"☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n">; printf<"\n\n\n\n\n\n">; printf<"\n请选择操作:">;scanf<"%d",&s>;switch<s>{ case1: {Student_DeleteByID<>;break;} case2:{Student_DeleteByName<>;break;}case0:{system<"cls">;Menu_Teacher<>;break;}default:printf<"错误输入!!!\n">;}printf<"要返回删除界面继续删除吗〔Y/N:">;scanf<"%c",&c>;if<c==121||c==89>gotolp1; }}/*<<<<<<<<<<<<***查询窗口***>>>>>>>>>>>>>>>>*/voidSearch<intx>{ voidMenu_Teacher<>; voidMenu_Student<>; ints;charc;lp0: {system<"cls">;printf<"\n\n\n\n\n\n">;printf<"☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n">;printf<"★☆\n">;printf<"☆1*按学号查询★\n">;printf<"★☆\n">;printf<"☆2*按姓名查询★\n">;printf<"★☆\n">;printf<"☆0*返回上一级★\n">;printf<"★☆\n">;printf<"☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n">; printf<"\n\n\n\n\n\n">; printf<"\n请选择操作:">;scanf<"%d",&s>;switch<s>{ case1: {system<"cls">;StudentID_Select<>;break;} case2:{system<"cls">;StudentName_Select<>;break;}case0:{system<"cls">;if<x==1>Menu_Student<>;elseif<x==2>Menu_Teacher<>;break;}default:printf<"错误输入!!!\n">;}printf<"要返回查找界面继续查询吗〔Y/N:">;scanf<"%c",&c>;if<c==121||c==89>gotolp0; }}/*<<<<<<<<<<<<***教师窗口***>>>>>>>>>>>>>>>>*/voidMenu_Teacher<>{loop:{//标志intx,i;intback;printf<"\n\n">;printf<"\t\t学生成绩管理系统\n">;printf<"\t\t☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n">;printf<"\t\t☆WelcomeToStudentScoreSystem!☆\n">;printf<"\t\t★Menu:★\n">;printf<"\t\t☆1学生成绩录入☆\n">;printf<"\t\t★2学生成绩查询★\n">;printf<"\t\t☆3删除学生记录☆\n">;printf<"\t\t★4学生成绩排序★\n">;printf<"\t\t☆5修改学生记录☆\n">;printf<"\t\t★6显示全部学生信息★\n">;printf<"\t\t☆7学生成绩统计☆\n">;printf<"\t\t★8更换用户★\n">;printf<"\t\t☆9保存☆\n">;printf<"\t\t★0退出★\n">;printf<"\t\t☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆\n">;printf<"\t\t\t请输入0--6\n">;printf<"\n">;printf<"请选择您所要的操作<选择<0>退出>:">;scanf<"%d",&x>;getchar<>;switch<x>{ case1:{system<"cls">;Student_Insert<>;break;} case2:{system<"cls">;Search<x>;break;} case3:{system<"cls">;Delect<>;}break; case4:{system<"cls">; printf<"\n\n*◆◆◆◆◆◆◆◆◆◆◆◆排序显示◆◆◆◆◆◆◆◆◆◆*\n\n\n\n">;Sort<x>;}break; case5:{printf<"\n">;Modify<>;}break; case6:{system<"cls">; printf<"\n\n\t*◆◆◆◆◆◆◆◆◆◆◆◆学生信息显示◆◆◆◆◆◆◆◆◆◆*\n\n\n">; Student_Display<>;}break; case7:{system<"cls">;Satement<>;}break; case8:{system<"cls">;Login<>;}break; case9:{IO_WriteInfo<>;}break; case0:{ printf<"\n要保存刚才修改的信息吗<按1保存>?">; scanf<"%d",&i>; if<i==1>IO_WriteInfo<>; system<"cls">;printf<"\n\n\n\n">;printf<"\n\t╔═╗╔═╗╔═╗╔═╗╔═╗╔═╗">;printf<"\n\t║感║║谢║║您║║的║║访║║问║">;printf<"\n\t╚═╝╚═╝╚═╝╚═╝╚═╝╚═╝">; exit<0>;} default:{printf<"选择无效,请重新输入!">; getchar<>; system<"cls">; gotoloop;}}printf<"\n\n按0键返主回菜单,按其他键结束程序\n">;printf<"请选择:">;scanf<"%d",&back>;if<!back>{system<"cls">;gotoloop;}}//标志结束位}/*<<<<<<<<<<<<***学生窗口***>>>>>>>>>>>>>>>>*/voidMenu_Student<>{loop:{//标志intx;intback;printf<"\n\n">;printf<"\t\t学生成绩管理系统\n">;printf<"\t\t☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n">;printf<"\t\t★WelcomeToStudentScoreSystem!☆\n">;printf<"\t\t☆Menu:★\n">;printf<"\t\t★1学生成绩查询☆\n">;printf<"\t\t☆2学生成绩排序★\n">;printf<"\t\t★3显示全部学生信息☆\n">;printf<"\t\t☆4更换用户★\n">;printf<"\t\t★0退出系统

温馨提示

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

评论

0/150

提交评论