您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 学生信息管理系统c语言
0学生信息管理系统1课程设计目的与要求1.1课程设计目的本课程设计是在学习C语言基本理论之后的实践教学环节。该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。学生通过课程设计在下述各方面得到锻炼:1.能根据实际问题的具体情况,结合C语言的基本理论和基本技巧,正确分析问题,并能设计出解决问题的有效算法与程序。2.提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法和程序的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改,进一步提高程序设计水平。1.2课程设计要求通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。特别是作为本科生,更要注重实践这一环节,只有这样我们才能成为合格的计算机人材。通过这次课程设计,进一步巩固所学的语句,如语句嵌套等;加深对循环,分支等结构的运用。具体如下:(1)数据组织方面尽量使用到:数组、链表、结构体、文件;(2)程序结构方面做到函数调用,尽量采用指针运算;(3)代码编写规范,形成良好的编程习惯;(4)程序须有一定的健壮性和必要的提示信息,考虑问题的多种可能和边界数据。(5)课设完成须进行答辩,提交课设报告电子稿、装订的打印稿。课设报告内容包括以下几个方面:程序的总体设计和算法分析。程序流程图、函数说明1源程序代码清单测试数据和测试过程记录遇到的问题及解决方法分析课程设计小结1.3课程设计的评价通过此次课程设计,我的知识面得到了扩展,发现课本上的东西是远远不够的,需要上网找资料寻找补充,而且小组合作的形式可以互相交流知识,弥补自己的不足。通过课程设计,加深对结构化程序设计思想的理解,能进行一个系统功能需求分析,并设计合理的模块化结构。提高程序开发能力。22问题描述设计一个学生信息管理系统,其中包括:学生基本信息:如学号、姓名、性别、年龄、地址、电话等。功能包括:1.系统菜单形式显示2.学生信息录入功能—输出3.学生信息浏览功能—输出4.查询、排序功能—算法按学号查询按姓名查询5.学生信息的删除与修改33总体设计3.1功能分析3.1.1菜单模块通过while语句给出信息提示;清屏;绘制菜单(包含输入,浏览,查询,修改,删除,排序,保存,退出);提示菜单选择并读入到变量;根据读入变量的值调用不同的模块函数;3.1.2信息录入模块打开文件While(){清屏;按照提示输入各种信息;While显示各种信息;通过选择1.确认并继续2.重新填写3.放弃并返回4.确认并返回选择四种功能;}}3.1.3信息浏览模块打开文件While(){清屏;用for语句依次按照顺序输出学生信息通过选择可以翻页1.上一页2.下一页0.退出4}3.1.4信息查询While(){通过菜单式的选择是学号查询还是姓名printf(******学生信息管理系统******);printf(\n----------检索----------);printf(\n您想要:);printf(\n1.按学号检索);printf(\n2.按姓名检索);printf(\n3.返回主菜单);printf(\n****************************\n);}如果选择学号进入学号模块通过输入学号If(学号存在继续){输出学生信息}Else输出无此学生如果选择姓名进入姓名模块If(根据比较姓名判断学生是否存在){输出学生信息}Else输出无此学生3.1.5删除模块while(继续删除)5{提示并读入待删除的学生的学生号;显示要删除的信息}删除成功3.1.6信息修改模块输入要修改学生信息的学号:If(判断是否有此学生){菜单形式显示要修改的项目printf(\n1.姓名2.年龄3.性别4.出生年月5.地址6.电话7.E-mail\n);printf(\n8.数学9.英语\n);}Swich(){选择要修改的项目进行修改}3.1.7打开文件模块voidfileopen(){FILE*fp;intn;if((fp=fopen(data,r+))==NULL)fp=fopen(data,w+);for(n=0;n100;n++)fread(&stu[n],sizeof(structstudent),1,fp);fread(&stunum,4,1,fp);fclose(fp);6}3.1.8保存文件模块voidfilesave(){intn;FILE*fp;fp=fopen(data,r+);for(n=0;n100;n++)fwrite(&stu[n],sizeof(structstudent),1,fp);fwrite(&stunum,4,1,fp);fclose(fp);printf(保存成功!pressEntertocontinue..);getch();}3.1.9退出模块case'8':ma=0;break;用的是跳出while语句回到安全模块3.1.10排序模块通过冒泡排序法for(m=0;my-1;m++)for(x=m+1;xy;x++)7if(stu[m].sumstu[x].sum){stu[99]=stu[m];stu[m]=stu[x];stu[x]=stu[99];stu[99].id=stu[x].id;stu[x].id=stu[m].id;stu[m].id=stu[99].id;}printf(排序后的顺序为:\n);然后显示排序好后的学生信息;3.2系统主要函数多功能计算器采用结构化程序设计思想,程序中除主函数外,共设计了23个函数,函数原型及功能说明如表3.2.1所示。表3.2.1函数原型及功能说明序号函数原型功能说明1voidcalculate1()调用整数运算的相关函数2voidzhengshu()整数的运算的头文件3voidcalculate2()调用实数运算的相关函数4voidshishu()实数的运算的头文件5voidcalculate3()调用分数运算的相关函数6voidfenshu()分数的运算的头文件7typedefstructfushu抽象数据类型定义8floatreal数据对象9floatimage定义构造复数的函数10fushuComplexNumberInput(floata,floatb)构造复数二元组11fushuComplexNumberAdd(fushuc1,fushuc2)复数的求和运算12fushuComplexNumberSub(fushu复数的求差运算8c1,fushuc2)13fushuComplexNumberMul(fushuc1,fushuc2)复数的求积运算14fushuComplexNumberDiv(fushuc1,fushuc2)复数的求商运算15voidComplexNumberOutput(fushuc)输出复数的运算结果16voidfushi()复数的运算的头文件17typedefstructLinknode定义链表节点的数据类型为Node18structLinknode*next定义链表节点的数据类型为Node19Node*createlink()创建链表并读入多项式的指数和系数20voidSum(Node*pa,Node*pb)两个一元多项式相加21voidmus(Node*pa,Node*pb)两个一元多项式相减22voidprint(Node*p)输出程序中所有的项23voidyiyuanduoxiangshi()一元多项式的运算的头文件94详细设计主模块学生基本信息管理系统信息录入信息浏览信息查询信息排序信息删除信息修改信息添加退出系统输入学生的相关信息显示学生的相关信息按姓名查询按学号查询更新保存的学生信息对新加的学生进行信息录入菜单选择104.1程序总体结构图开始菜单选择信息输入浏览信息输入信息浏览查询按学号按姓名删除修改信息删除信息修改添加信息添加排序保存文件结束11主函数4.2主函数流程图各部分模块结束开始显示主页菜单功能选择录入学生信息浏览学生信息修改学生信息按照总成绩排序退出信息管理查询学生信息删除学生信息保存学生信息124.3信息的录入流程图4.4学生信息浏览流程图开始结束打开文件返回主菜单文件中有无信息输出所有信息YNNY134.5按姓名或学号查询流程图4.6信息的删除流程图145功能测试5.1系统主界面5.1系统主界面5.2录入学生信息功能5.2.1录入学生信息界面155.2.2录入学生信息界面5.2信息浏览功能5.2信息浏览界面165.3信息修改功能5.3.1信息修改界面5.4信息检索功能5.4.1信息检索界面175.4.2按学号检索界面5.4.4按姓名检索界面186程序设计调试情况分析1.问题:c程序运行不出来,几个头文件中出现了相同的函数;解决方法:改变头文件中相同名字的函数名。2.问题:调用检索函数一闪而过。解决方法:添加getchar()语句使程序暂停。3.问题:无法有效的控制输出函数循环终止。解决方法:添加全局变量“stunum”,使用该全局变量来记录学生总数,从而控制输出循环的次数4.问题:查询函数数据量过多时同时输出,先输出的内容无法查看,或需用户自行查看。解决方法:添加getchar()语句使程序暂停,当用户按Enter时继续。5.问题:调试时,有的时候编译后没什么问题,就是在点击连接link时出现了错误;解决方法:将源程序保存,然后关掉MicrosoftVisualC++6.0,重新启动MicrosoftVisualC++6.0。197课程设计小结通过此次课程设计,我基本上对制作一个相对来说比较完整的程序有了一定的认识和了解。这一周多来的制作,不但对C语言的知识有了一定的巩固,还增加了我们的动手能力。学生信息管理系统,涉及到结构体,链表,文件和循环的知识,所以尤其对这几个方面有所加深和巩固。其中又包括结构体的赋值,写到文件中。从文件中赋值给结构体。等等。还能够通过编译时出现的出错提示信息,进行初步的纠错。完成一个程序的一般步骤为设计,录入,编译,如果出错,则修改,然后再编译,编译成功后,看看结果是否正确,如果结果不正确,则再重复以上步骤。小组成员分工组长:王彬冰负责信息浏览、信息删除模块和总流程图组员:汤璞君负责信息排序模块组员:刘帅负责信息录入模块参考文献[1]《C程序设计教程与实验》吉顺如清华大学出版社[2]《C程序习题集与课程设计》吉顺如计春雷电子工业出版社[3]《C程序设计思想与方法》尹宝林机械工业出版社20[4]百度文库附录系统源程序#includestdio.h#includeconio.h#includestring.h21#includestdlib.hintstunum=0;structstudent//结构体{intid;charname[30];intage;charsex[6];charbirthday[12];charadd[80];chartel[15];charemail[25];intmath;intenglish;intsum;}stu[100];voidcheck()//查询函数{voidjsid();voidjsname();inta;charch;while(a){system(cls);printf(******学生信息管理系统******);printf(\n----------检索----------);printf(\n您想要:);printf(\n1.按学号检索);printf(\n2.按姓名检索);printf(\n3.返回主菜单);printf(\n****************************\n);ch=getchar();22switch(ch){case'1':jsi
本文标题:学生信息管理系统c语言
链接地址:https://www.777doc.com/doc-2495962 .html