C语言学生成绩管理系统设计_第1页
C语言学生成绩管理系统设计_第2页
C语言学生成绩管理系统设计_第3页
C语言学生成绩管理系统设计_第4页
C语言学生成绩管理系统设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

实用标准沈阳航空航天大学课程设计报告大作业名称:C语言课程设计大作业题目:学生成绩管理系统设计院(系):计算机学院专 业:计算机科学与技术班 级:学 号:姓 名:指导教师:完成日期:2016年12月24日文案大全实用标准目 录第1章 概要设计 11.1题目的内容与要求 11.2总体结构 1第2章 详细设计 22.1主模块 22.2输入模块 32.3显示模块 32.4修改模块 42.5删除模块 42.6查询模块 52.7统计模块 6第3章 调试分析 7第4章 使用说明 8参考文献 12附 录(程序清单) 13文案大全实用标准第1章 概要设计1.1题目的内容与要求内容:学生成绩信息包括:姓名、学号、语文、数学、英语。实现的主要功能有:)信息维护。包括学生成绩的输入、按学号删除、按学号修改等。信息查询。输入学号或姓名,显示出该生三个科目的成绩,计算出三科总分并显示,按总分将所有学生成绩排序,显示出该生的名次。)成绩统计。先输入任意一个科目,接着选择a或b来分别显示平均分或统计分数段学生,若选择a,则直接显示出该科目的平均分;若选择b,则提示用户输入一个分数段,显示所有该科目属于该分数段内的学生信息,并给出学生总数。要求:)系统以菜单方式工作。在不同的界面为用户给出具体提示。)系统利用C语言实现,源程序要有适当的注释。)采用VC环境进行运行调试。1.2总体结构本程序主要分为七个模块( 功能模块图见图 1.1):结构体模块,输入模块,显示模块,修改模块,删除模块,查询模块,统计模块。结构体模块:建立一个结构体模块,为链表存信息用。输入模块:键盘输入每个学生的信息,并保存在文件中。显示模块:显示全部学生的具体信息。修改模块:修改某个学生的成绩信息。删除模块:删除某个学生的全部信息。查询模块:查询某个学生的具体信息。统计模块:通过功能选择,统计并显示某一科目的平均分或某分数段学生的具体信息。文案大全实用标准学生成绩管理系统主输显修删查统模入示改除询计块模模模模模模块块块块块块图1.1功能模块图第2章详细设计2.1主模块控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块,实现各项功能,流程如图 2.1所示。开始显示主菜单YN NY

选0退出选1-6执行具体功能显示结果结束图2.1 主模块流程图文案大全实用标准注释:显示主菜单;选择不同序号执行不同功能;2.2输入模块输入所有学生信息并保存,流程如图 2.2所示。input()printf("输入学号:");printf("输入姓名:");printf("第%d门成绩的分数: ",j+1);计算总分、平均分printf("\n\n信息保存成功 !恭喜!!\n\n");结束图2.2 输入模块流程图注释:循环输入每个学生的信息;保存所有信息2.3显示模块显示所有学生的具体信息,流程图如 2.3所示。Print()显示信息图2.3 显示模块流程图结束文案大全实用标准注释:选择号好功能;显示全部学生的具体信息。2.4修改模块修改某个学生各个科目的成绩,流程图如 2.4所示。xiugai()printf("\n 请输入要修改的同学的学号 :");printf("\n 请输入要修改学生修改后的的信息 \n");printf("\n修改成功!恭喜!!\n");Y是否继续修改?N结束图2.4 修改模块流程图注释:输入要修改学生的学号;输入要修改的科目信息;修改成功,是否要继续修改。是,继续;否,回到主菜单。2.5删除模块文案大全实用标准按学号删除某学生的全部信息,流程图如图 2.5所示。文案大全实用标准shanchu()printf("\n 请输入要删除的同学的学号 :");printf("\n该同学信息如下 :\n");Y是否删除?Yprintf("\n 删除成N功!恭喜!!\n");是否继续删除?N结束图2.5 删除模块流程图注释:输入要删除的学生的学号;显示该生信息,是否删除。是,删除;否,是否继续操作。是否继续删除。是,重复上述操作;否,退出回到主菜单。2.6查询模块输入要查询学生的学号,显示该生具体信息,流程图如图2.6所示。chaxun()printf("\n 请输入学生学号 :");显示该生具体信息是否继续查询?

YN

图2.6 查询模块流程图结束文案大全实用标准注释:输入要查询的学生的学号;显示该生的具体信息;是否继续查询。是,继续查询下一位;否,回到主菜单。2.7统计模块通过选择不同功能,显示某个科目的平均分或某分数段学生的具体信息,流程图如图2.7所示。tongji()printf("\n输入一个科目:");case‘a’: case‘b’:选择功能a或b计算该科目平printf("\n 请输入分数均分段:__空格__\n");printf("\n\n 该科目的平显示属于该分数段均成绩为:%.2f\n",ave);的学生;学生总数是否继续查询其他科目? YN结束图2.7 统计模块流程图注释:通过菜单选择科目;通过菜单选择a或b功能,分别显示该科目平均分或某分数段学生信息;是否继续查询?是,继续;否,回到主菜单。文案大全实用标准第3章 调试分析在这次课程设计中,程序编写的过程中遇到了很多问题,主要是函数实现方面问题较多。问题1:查询函数chaxun()中,会造成数据混乱,原因是 for循环中某行代码运用错误,如下:for(i=0;i<n;i++){if(stu[i].num==x){k=i;/* 找到要查询的同学学号 ,并用k记下其下标*/}OutputOneStudent(k);}将OutputOneStudent(k);拿出后,查询功能正常实现。正确编写如下:for(i=0;i<n;i++){if(stu[i].num==x){k=i;/* 找到要查询的同学学号,并用k记下其下标*/}}OutputOneStudent(k);问题2:统计函数tongji(),功能实现完后不能回到主菜单。解决方法是,把功能函数gongneng()其中的while循环删掉。文案大全实用标准第4章 使用说明运行截图如下:输入成绩信息显示文案大全实用标准修改信息删除信息文案大全实用标准查询信息6.1统计信息---- 科目平均分文案大全实用标准6.2统计信息---- 科目某分数段学生信息退出系统文案大全实用标准参考文献王敬华,《C语言程序设计教程(第二版)》,清华大学出版社,2009年8月谭浩强,《C语言程序设计教程(第二版)》,清华大学出版社,1999年12月谭浩强,《C语言程序设计题解与上机指导》,清华大学出版社,2000年11月田淑清,《C语言程序设计辅导与习题集》,中国铁道出版社,2000年1月张荣梅、梁晓林,《VisualC++实用教程》,冶金工业出版社,2004年附 录(程序清单)程序代码:#include<stdio.h>#include<string.h>#include<stdlib.h>#defineN3structstudent{intnum; // 学号charname[20]; // 姓名floatscore[3]; // 三门课成绩floatsum; // 总分floataver; // 平均分}stu[N];voidmenu();//主菜单功能voidinput();//输入信息到结构体中voidsave(intx);//保存stud.dat文件函数voidprint();//输出显示所有学生信息voidSaveAllStudent(intn);//保存全部学生信息voidxiugai(intn);//按学号修改成绩intshanchu(intn);//按学号删除voidOutputOneStudent(inti);//查询一个学生的信息文案大全实用标准voidchaxun(intn); // 按学号查询成绩voidtongji(); // 统计科目信息voidgongneng(intx); //a 或b功能分别显示科目平均分或分数段学生信息intmain(){printf("***********************************************************\n");printf("**\n");printf("* Hwadee &学生成绩管理系统&Hwadee *\n");printf("**\n");printf("******************************************************\n\n\n");printf("**************** ●●欢迎使用●●*******************\n");while(1){menu();}return0;}/*主菜单***********************************************************/voidmenu(){intchoice;intn=N;printf("\n 请选择功能:\n");printf("\n1:输入成绩\n2:显示信息\n3:修改成绩\n4:删除信息\n5:查询成绩\n6:成绩统计\n0:退出系统\n\n");printf("\n 请选择序号:\n");scanf("%d",&choice);文案大全实用标准switch(choice){case1:input();save(N);break;case2:print();break;case3:xiugai(n);break;case4:shanchu(n);break;case5:chaxun(n);break;case6:tongji();break;case0:printf("\n 谢谢使用,再见!\n\n");exit(-1);break;default:printf(" 输入错误!\n");break;}}/*写入函数****************************************************/voidinput(){inti,j;printf("\n 输入信息\n");for(i=0;i<N;i++){printf(" 输入学号:");scanf("%d",&stu[i].num);printf(" 输入姓名:");文案大全实用标准scanf("%s",&stu[i].name);for(j=0;j<N;j++){printf(" 第%d门成绩的分数:",j+1);scanf("%f",&stu[i].score[j]);}stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];stu[i].aver=stu[i].sum/3;printf("\n");}}/*写入文件***********************************************************/voidsave(intx){FILE*fp;/*定义文件指针用于向文件读入数据*/inti;if((fp=fopen("student.dat","rb+"))==NULL)/* 以二进制读,写方式打开文件*/{printf("cannotopenfile\n");exit(1);}for(i=0;i<N;i++){if(fwrite(&stu[i],sizeof(structstudent),1,fp)!=1){printf("filewriteerror\n");}}fclose(fp);printf("\n\n 信息保存成功!恭喜!!\n\n");}/*显示全部学生信息**************************************************/voidprint(){inti;printf(" 学号 姓名 语文 数学 英语 总分 平均分文案大全实用标准\n");for(i=0;i<N;i++)printf("%d %s %.2f %.2f %.2f %.2f %.2f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].aver);}/*保存全部学生信息******************************************8*/voidSaveAllStudent(intn){FILE*fp;if((fp=fopen("student.dat","wb"))==NULL){printf(" 文件打开失败!\n");exit(1);}fwrite(stu,sizeof(structstudent),n,fp);fclose(fp);}/*修改学生信息************************************************/voidxiugai(intn){structstudenttemp;intk=-1,x,i;charc1='y';while(c1=='y'){printf("\n 请输入要修改的同学的学号 :");scanf("%d",&x);for(i=0;i<n;i++){if(x==stu[i].num){k=i;/* 找到要修改的同学学号,并用 k记下其下标*/文案大全实用标准break;}}if(k<0){printf("\n 输入学号有误,请重新输入 !");}else{printf("\n 请输入要修改学生修改后的的信息 \n");printf(" 语文(空格)数学(空格)英语 \t\n");scanf("%f%f%f",&temp.score[0],&temp.score[1],&temp.score[2]);temp.sum=(temp.score[0]+temp.score[1]+temp.score[2]);temp.aver=(temp.score[0]+temp.score[1]+temp.score[2])/3;stu[k].score[0]=temp.score[0];/*修改该学生信息*/stu[k].score[1]=temp.score[1];stu[k].score[2]=temp.score[2];stu[k].sum=temp.sum;stu[k].aver=temp.aver;printf("\n 修改成功!恭喜!!\n");break;}SaveAllStudent(k);printf("\n 继续修改操作吗?");printf("\n 继续修改请按y;不进行修改请按 n\n");getchar();c1=getchar();}printf("\n 按任意键继续!\n");getchar();}/*删除学生信息*************************************************/intshanchu(intn)文案大全实用标准{inti,k=-1,x;charc1='y',c2;while(c1=='y'){c2='n';printf("\n 请输入要删除的同学的学号 :");scanf("%d",&x);for(i=0;i<n;i++){if(x==stu[i].num){k=i;/* 找到要删除的同学学号,并用 k记下其下标*/break;}}if(k<0){printf("\n 输入学号有误,请重新输入 !");}else{printf("\n 该同学信息如下:\n");OutputOneStudent(k);printf("\n\n 确定删除?\n");printf(" 确定进行删除请按 y;不进行删除请按 n\n");getchar();c2=getchar();if(c2=='y'){for(i=k;i<n;i++){stu[i]=stu[i+1];}n--;/* 学生人数减1*/文案大全实用标准printf("\n 删除成功!恭喜!!\n");}elseprintf("\n 取消删除!\n");printf("\n 继续删除操作吗?");printf("\n 继续删除请按y;不进行删除请按 n\n");getchar();c1=getchar();}}save(n);printf("\n 按任意键继续!\n");getchar();return(n);}/*查询一个学生信息********************************************/voidOutputOneStudent(inti){printf(" 学号:%d 姓名:%s\n",stu[i].num,stu[i].name);printf(" 语文:%.1f 数学:%.1f 英语:%.1f 总分:%.1f 平均分:%.2f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].aver);}/*按学号查询学生信息**************************************/voidchaxun(intn){inti,j,k,x;charc='y';while(c=='y'){k=-1;printf("\n 请输入学生学号:");文案大全实用标准scanf("%d",&x);if(x>3||x<1){break;}for(i=0;i<n;i++){if(stu[i].num==x){k=i;/* 找到要查询的同学学号,并用k记下其下标*/}}OutputOneStudent(k);stu[x-1].num=1;// 该生排名for(j=0;j<3;j++){if(stu[j].sum>stu[x-1].sum)stu[x-1].num++;}printf("\n 该生排名为第%d名。\n",stu[x-1].num);printf("\n\n 继续查询其他学生信息吗 ?");printf("\n 继续查询请按y;不进行查询请按 n\n");getchar();c=getchar();}printf("\n 按任意键继续!\n");getchar();}/*学生信息统计操作**********************************************/voidtongji(){charc='y';while(c=='y'){intx;文案大全实用标准printf("\n 输入一个科目:");printf("\n\n1 :语文\n2:数学\n3:英语\n0:退出");printf("\n\n 请选择序号:");scanf("%d",&x);if(x>0&&x<6){switch(x){case1:gongneng(x);break;case2:gongneng(x);break;case3:gongneng(x);break;case0:exit(-1);break;default:printf(" 输入错误!\n");}}printf("\n\n 继续查询其他科目信息吗 ?");printf("\n 继续查询请按y;不进行查询请按 n\n");getchar();c=getchar();}}/*选择a或b来分别显示该科平均分或统计分数段学生 ****************/voidgongneng(intx){printf("\n\n 请选择功能:\n");printf("\na :显示该科目平均分\nb:统计分数段学生

温馨提示

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

最新文档

评论

0/150

提交评论