您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 学生成绩管理系统C程序设计报告
学生成绩管理系统C程序设计报告一、设计要求:1.要求利用C语言面向过程的编程思想来完成系统的设计;2.突出C语言的函数特征,以多个函数实现每一个子功能;3.画出功能模块图;4.进行简单界面设计,能够实现友好的交互;5.具有清晰的程序流程图和数据结构的详细定义;6.熟练掌握C语言对文件的各种操作。二、设计的作用、目的通过程序设计,提高编程兴趣与编程水平。设计一个学生成绩管理系统,上学期的本班的学习成绩进行管理,可以用数组设计这个程序,具有查询和检索功能,并且能够对指定文件操作,也可将多个文件组成一个文件。通过对此程序的设计熟练掌握c语言。三、课题分析输入N个学生的学号和每个学生考试三门功课(数学、英语、计算机基础)的成绩。编程计算出每个学生的总分和平均分,并按学生成绩优劣排序。要求:含有:登记学生资料、删除学生资料、查询学生资料、修改学生资料、保存学生资料、退出系统等各项功能。四、设计的具体实现1、系统的组成模块结构及功能(1)、当前学生信息:通过结构体structstudent来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息.具体使用的程序结构如下: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-data.name);getchar();printf(请你输入性别:);scanf(%s,p-data.sex);getchar();printf(请你输入c语言成绩:);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;/*信息输入已经完成*/(2)、学生成绩查询:输入一个学号,在文件中查找此学生,若找到则输出此学生的全部信息和成绩;若找不到则输出查找失败的信息.同时也可以全部把各科的平均成绩,最高和最低分输出。使用的函数结构: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);(3)、学生资料删除:输入要删除的学生学学号,若找到则根据提示进行删除;若找不到则提示没有资料删除。使用的函数结构: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;}(4)、学生资料修改:输入要修改的学生号,若找到则输入新的学生信息,并提示资料修改成功;若找不到则输出查找失败的信息。使用的程序结构: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-data.name);scanf(%s,p-data.name);getchar();printf(请你输入新性别(原来是%s):,p-data.sex);scanf(%s,p-data.sex);printf(请你输入新的c语言成绩(原来是%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);(5)、学生成绩的排序,并统计单科的最高分。(6)、退出系统。2、系统程序流程图图1.1总流程图开始登记学生资料查询学生资料删除学生资料修改学生资料保存学生资料退出系统图1.2登记学生资料输入学生学号是否存在转为修改新建结束开始图1.3查询学生资料输入是否合法按学号查询?退出输入学号按姓名查询显示结果输入姓名显示结果开始结束图1.4删除学生资料删除的是否合法选择1?输入删除学生学号输入删除学生姓名删除成功退出开始结束图1.5修改学生资料输入是否存在输入学生新信息修改成功退出输入要修改的学生学号开始结束图1.6保存文件与退出系统3、重要函数介绍数据输入函数“cin()”查看数据函数“lookdata()”插入数据的函数“insert()”查看数据的函数“find()”更新数据的函数“update()”保留数据函数“save()”主函数main()文件是否存在输入文件新信息导入成功是否创建文件退出是否保存?保存成功退出开始结束利用无限次循环for(;;)和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。初始化函数STUDENT*init()这是一个无参函数,里面只有一个语句,它的作用是使链表初始化,使head的值为NULL。比如:没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示一些乱码!菜单选择函数intmenu_select();这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的九大功能,根据每个功能前面的序号进行选择,中间还显示系统当前的时间。等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!输入记录函数STUDENT*create()这是一个无参函数,用来执行第学生成绩记录的输入,当学生为0时停止输入,函数结束后,带回一个指向链表头的指针head。算法:先声明一个首节点head,并将head-next设为NULL。每输入一个数据就声明一个新节点p,把p-next设为NULL,并且链接到之前列表的尾端。在定义数据类型时,由于学生成绩管理信息需要由不同类型的数据反映出来。如:姓名、性别都需要用char型数据,而学号和成绩则需要用int型数据,并且每位同学的以上信息都需要一次性输入,所以采用结构体类型定义。如:typedefstructstudent/*定义结构体*/{charname[20];--------------------定义char型姓名intnum[10];--------------------定义int型学号charsex--------------------定义char型性别intcgrade;--------------------定义int型英语成绩intmgrade;--------------------定义int型数学成绩integrade;--------------------定义int型计算机成绩totle;structstudent*next;--------------------结构体指针}stu;五、程序运行背景:VC++VC++简介现在说的VC就是指的VC++。是指编程工具.vc++就和tc差不多,是一个调试,运行的环境,是微软开发的visual组件.VC++是微软公司开发的一个IDE(集成开发环境),换句话说,就是使用c++的一个开发平台.有些软件就是这个编出来的...另外还有VB,VF.只是使用不同语言...但是,vc++是Windows平台上的C++编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较大。Windows下编程需要了解Windows的消息机制以及回调(callback)函数的原理;MFC是Win32API的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等等;COM是代码共享的二进制标准,需要掌握其基本原理等等。VC作为一个主流的开发平台一直深受编程爱好者的喜爱,但是很多人却对它的入门感到难于上青天,究其原因主要是大家对他错误的认识造成的,严格的来说VC++不是门语言,虽然它和C++之间有密切的关系,如果形象点比喻的话,可以C++看作为一种”工业标准”,而VC++则是某种操作系统平台下的”厂商标准”,而”厂商标准”是在遵循”工业标准”的前提下扩展而来的。VC++应用程序的开发主要有两种模式,一种是WINAPI方式,另一种则是MFC方式,传统的WINAPI开发方式比较繁琐,而MFC则是对WINAPI再次封装,所以MFC相对于WINAPI开发更具备效率优势。六、调试问题及解决方法:问题一、学生初始信息模块:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算计相关信息;可用函数cin(stu*p1)来实现此操作。当正确输入存在的学生学号,系统进行判断时,提示不存在此学生。解决办法及步骤:1、一个个输出所有的学生的学号,检查文件中是否有此学生,发现有。2、既然有此学生,那么检查循环判断是否有此学生的语句发现没有错3、输出用于循环检查语句中的学生信息,发现乱码4、仔细分析乱码的原因,最后发现是变量的类型错误,错将学生类型的结构体指针变量定义为了其他类型的指针变量。问题二、查询模块:可用stu*lookdata(stu*p1)来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。当正确输入查找信息时,系统却不能够得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。解决办法及步骤:1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入查找信息看能否得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。2、检查当我们在输入查找信息时,看是否我们输入的信息有误,若是这样的话,我们应当仔细输入查找信息。七、心得课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,
本文标题:学生成绩管理系统C程序设计报告
链接地址:https://www.777doc.com/doc-6347151 .html