C语言课程设计实验报告参考_第1页
C语言课程设计实验报告参考_第2页
C语言课程设计实验报告参考_第3页
C语言课程设计实验报告参考_第4页
C语言课程设计实验报告参考_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

PAGEPAGE2题目:学生成绩管理系统学号:专业:姓名:指导教师:完成日期:2010年7月8日一、目标1.进一步掌握和利用C语言进行程设计的能力;2、进一步理解和运用结构化程设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或N-S图表示算法;6、掌握书写程设计开发文档的能力(书写课程设计报告);二、内容及功能1、每一条记录包括一个学生的学号、姓名、3门成绩、平均成绩。2、输入功能:可以一次完成无数条记录的输入。3、输出功能:完成全部学生记录的显示。4、查找功能:完成按姓名查找学生记录,并显示。5、排序功能:按学生平均成绩进行排序。6、有一个清晰美观界面来调用各个功能三、各功能模块的算法处理流程及相关说明整个系统除了主函数外,另外还有4个函数,实现四大功能:输入功能、输出功能、查找功能、排序功能。各个函数的详细设计说明分别如下:1主函数intmain()主要实现“功能选择”的界面,利用switch()语句实现各函数的调用,系统根据输入的数字选项来调用相应的函数。在这个界面里有显示系统的四大功能,根据每个功能前面的序号进行选择。等执行完每一个函数功能后,按回车键回到主界面。流程如图3.1:2、输入函数voidinput(structstudent*p)主要实现对学生信息的输入,利用dowhile语句实现对多个学生信息的输入,用字符y/n来判断是否继续输入下一个学生的信息。如果输入字符y,则继续输入学生的信息;如果输入字符n,则退出输入界面回到主界面。流程如图3.2:3、输出函数voidshuchu(structstudent*p)主要实现对学生信息的输出,首先利用flag==0来判断是否存储有学生信息,如果没有,则输出“无学生成绩,请先录入学生信息“;如果已存在学生信息,则从主界面进入输出界面,显示出所有学生的相关信息。按回车键可返回主界面。流程如图3.3:4、排序函数voidaveg(structstudent*p)主要实现对学生成绩的排序,首先利用flag==0来判断电脑中是否存储有学生信息,如果没有,则输出“无学生成绩,请先录入学生信息“;如果有,则按照选择排序的方法按平均分由高到低对所有学生信息进行排序,然后输出排序后所有学生的信息。按回车键可返回主界面。流程如图3.4:5、查找函数voidfind(structstudent*p)主要实现对学生信息的查找,利用for循环和strcmp函数来实现查找功能,利用j>=flag来判断是否找到该学生的信息。如果该学生信息已找到,则输出该学生的相关信息;如果未找到,则输出"未找到该学生纪录,请核对后重新查找!"。按回车键可返回主界面。流程如图3.5:主界面主界面1择2345输入学生信息输出学生信息按平均分排序查找学生信息退出系统图3.1请输入第%d个请输入第%d个学生的信息YN返回主界面输入学生信息图3.2输出学生信息输出学生信息flag==0for循环无学生信息输出学生信息回车返回主界面图3.3按平均分排序按平均分排序flag==0选择排序无学生信息输出排序后的学生信息回车返回主界面图3.4查找学生信息查找学生信息j>=flag输入学号输出查找到的学生信息未找到学生信息回车返回主界面图3.5四、程序源代码#include<stdio.h>#include<stdlib.h>#include<string.h>#defineN100/*定义符号常量,代表学生人数最大值*/intflag=0;/*全局变量,用于记录数组的当前位置*/structstudent/*定义结构体类型,代表学生信息*/{charname[9];/*学生姓名*/charnumber[10];/*学生学号*/floatscore[3];/*一个学生三门课的成绩*/floatave;/*求平均分*/};voidinput(structstudent*p);/*定义输入学生信息函数*/voidshuchu(structstudent*p);/*定义输出函数*/voidaveg(structstudent*p);/*定义按平均分排序函数*/voidfind(structstudent*p);/*定义查找函数*//*********************系统界面************************/voidmain(){charbianhao;/*定义局部变量,用于记录用户选择的功能编号*/structstudentstu[N];/*定义结构体数组,用于记录学生信息*/do/*利用循环显示界面*/{system("cls");/*清屏函数*/printf("\n\n\n");printf("\t\t*************************************\n");printf("\t\t*学生成绩管理系统*\n");printf("\t\t**\n");printf("\t\t**\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**\n");printf("\t\t**\n");printf("\t\t*************************************\n");printf("\t\t请输入功能选择编号(1-5):");fflush(stdin);/*清空输入缓冲区*/scanf("%c",&bianhao);/*接受用户选择的功能编号*/switch(bianhao)/*输入不同功能编号调用相应函数来完成功能*/{case'1':input(stu);break;/*调用输入学生信息函数,参数为学生信息数组名*/case'2': shuchu(stu);break;/*调用输出函数*/case'3':aveg(stu);break;/*调用按平均分排序函数,参数是数组名*/case'4':find(stu);break;/*调用按学号查找学生信息函数*/}}while(bianhao!='5');/*判断是否退出*/printf("\n\n\t\t谢谢使用\n\n");}/**************************输入函数************************/voidinput(structstudent*p)/*定义输入学生信息函数*/{charch;/*用于接收用户指令*/do/*利用循环,由用户控制输入学生成绩*/{system("cls");printf("\n输入第%d个学生的信息:\n输入学号:",flag+1);scanf("%s",p[flag].number);printf("\n输入姓名:");scanf("%s",p[flag].name);printf("\n输入数学成绩:");scanf("%f",&p[flag].score[0]);printf("\n输入英语成绩:");scanf("%f",&p[flag].score[1]);printf("\n输入C语言成绩:");scanf("%f",&p[flag].score[2]);p[flag].ave=(p[flag].score[0]+p[flag].score[1]+p[flag].score[2])/3;printf("总分为:%.1f\n",p[flag].score[0]+p[flag].score[1]+p[flag].score[2]);printf("平均分为:%.1f",p[flag].ave);flag++;/*记录当前输入的学生资料的个数*/printf("\n是否继续输入(y/n)\n");fflush(stdin);/*清空输入缓冲区*/ch=getchar();}while(ch=='y'||ch=='Y');/*判断用户指令,是否继续输入*/}/*********************输出函数**********************/voidshuchu(structstudent*p)/*输出学生信息*/{inti ;/*定义循环变量i,j*/if(flag==0)/*判断数组中学生成绩是否存在*/printf("无学生成绩,请先录入学生信息\n");else{printf("\t学号\t姓名\t数学\t英语\tC语言\t总分\t平均分\n");for(i=0;i<flag;i++)/*输出学生成绩*/printf("\t%-6s\t%-4s\t%-6.1f\t%-6.1f\t%2.1f\t%4.1f\t%4.1f\n",p[i].number,p[i].name,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[0]+p[i].score[1]+p[i].score[2],p[i].ave);}printf("\n回车键返回主程序\n");fflush(stdin);/*清空输入缓冲区*/getchar();}/********************排序函数************************/voidaveg(structstudent*p)/*定义按平均分排序函数*/{inti,j,k;/*定义循环变量i,j,最小数位置k*/structstudentt;/*定义交换临时变量*/if(flag==0)/*判断数组中学生成绩是否存在*/printf("无学生成绩,请先录入学生信息\n");else{for(i=0;i<flag-1;i++)/*用选择法按平均分对学生成绩排序*/{k=i;for(j=i+1;j<flag;j++)/*k为p[i]到p[flag-1]中最小数的位置*/if((p[k].score[0]+p[k].score[1]+p[k].score[2])/3<(p[j].score[0]+p[j].score[1]+p[j].score[2])/3)k=j;if(k!=i)/*如果最小数不是比较数列中第一个,对调*/{t=p[k];p[k]=p[i];p[i]=t;}}printf("\n按平均分排序:\n\n");printf("\t学号\t姓名\t数学\t英语\tC语言\t总分\t平均分\t名次\n");for(j=0;j<flag;j++)/*输出按平均分排序后的学生成绩和名次*/printf("\t%-6s\t%-4s\t%-6.1f\t%-6.1f\t%2.1f\t%4.1f\t%4.1f\t%-5d\n",p[j].number,p[j].name,p[j].score[0],p[j].score[1],p[j].score[2],p[j].score[0]+p[j].score[1]+p[j].score[2],p[j].ave,j+1);}printf("\n回车键返回主程序\n");fflush(stdin);/*清空输入缓冲区*/getchar();}/************************查找函数*************************/voidfind(structstudent*p)/*定义查找函数*/{intj;charnumber[10];/*用于接收用户输入的学生学号*/system("cls");/*清屏函数*/printf("\n请输入学号:\n");scanf("%s",number);for(j=0;j<flag;j++)/*使用字符串比较函数查找出符合条件的学生成绩*/{if(strcmp(number,p[j].number)==0){printf("\n\t学号\t姓名\t数学\t英语\tC语言\t总分\t平均分\t名次\n");p[j].ave=(p[j].score[0]+p[j].score[1]+p[j].score[2])/3;printf("\t%-4s\t%-6s\t%-6.1f\t%-6.1f\t%-8.1f%-6.1f\t%.1f\t%d\n",p[j].number,p[j].name,p[j].score[0],p[j].score[1],p[j].score[2],p[j].score[0]+p[j].score[1]+p[j].score[2],p[j].ave,j+1);break;}}if(j>=flag)/*如果没找到,会从循环条件退出*/printf("\n未找到该学生纪录,请核对后重新查找!\n");fflush(stdin);/*清空输入缓冲区*/printf("\n回车键返回上一功能菜单\n");getchar();}五、心得体会学习这门课程后,我有许多的心得与体会。下面我就来谈一谈我上这门课后所得的收获。经过一个星期的上机实践学习,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对

温馨提示

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

评论

0/150

提交评论