您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 用C语言设计的学生成绩管理系统1
实训报告实训名称:“学生成绩管理系统”设计时间:2009年06月15日至2009年06月19日学生实训任务书一、题目“学生成绩管理系统”设计二、学生信息专业***技术学号***********姓名**********三、用户需求及约束条件1、用C语言实现基于Dos操作系统的“学生成绩管理系统”。2、系统启动进入后,弹出“学生成绩管理系统”的用户界面,用户通过界面选择成绩管理系统的各种功能,包括“退出”功能。(5分)3、用户界面可以用鼠标和键盘操作。(5分+5分)4、用户界面可以是图形或者文本模式(但成绩评定会因此受影响)。(10分或5分)5、用户界面尽可能美观、适宜。(5分)6、“学生成绩管理系统”具有以下功能:1)录入学生成绩(信息有:班级、姓名、学号、五门课程成绩);(10分)2)计算学生五门功课的平均成绩并存档。(5分)下面的功能必须是第2)项功能完成以后才能进行。3)输出学生的信息和对应的原始成绩以及平均成绩;(10分)4)按平均成绩进行排序,输出排序后的学生信息以及对应的课程成绩和平均成绩。(10分)5)对成绩修改,分别有两种模式,一种是按学号查找后进行修改;另一种是按姓名查找后进行修改;修改后重新排序学生的顺序,并输出学生信息和对应课程成绩和平均成绩。(10分)6)增补遗漏的学生以及对应的信息和对应的课程成绩,并计算出平均成绩,增补以后重新排序学生顺序,并输出学生信息和对应课程成绩和平均成绩。(10分)7)把学生信息和对应的课程成绩和平均成绩存入到文件中。(5分)8)输出文件中的内容。(5分)9)试着从文件中导入数据到成绩管理系统中,然后进行管理。(5分)四、设计要求、技术参数及设计规格1、学生自己设计一张原始成绩表,放在Excel表中;2、设计的系统能够运行,提交源程序、目标文件和可执行文件;3、提交实训报告,实训报告中列写:1)软件需求分析;2)软件规格说明和设计要求;3)对数据的管理方案;4)“学生成绩管理系统”设计的思路和整体框架;5)各功能或者模块实现的思路(或者用带注释的程序代替)并交待模块之间的接口关系;6)“学生成绩管理系统”设计的结果(可以用一些屏幕拷贝的图来补充说明)。7)装订顺序:封面、简单目录、任务书、实训进度日历、实训报告正文、实训感想、附件4、程序设计环境为TurboC++3.0五、考核形式、考核时间、考核指标及成绩评定实训成绩由下面构成:实训纪律、实训态度和平时表现占30%;实训结果占40%;实训报告占30%。考核形式:1)老师每日对学生的考察、评估和考核;2)最后对实训项目完成的质量进行考核和验收。完成期限:2009年06月19日指导教师签章:专业负责人签章:教学院长签章09年06月10日实训进度日历天/日期任务描述通过标准2009年6月15日上午:1)对涉及的知识点进行复习,归纳。2)熟悉系统功能,写出需求分析报告,完成整体框架方案设计,完成模块划分,选择数据结构。下午:1)完成界面设计方案。通过图表来表达平面布局,选择合适的技术实现方案。2)学习和复习界面设计需要的技术。3)晚自习继续对涉及的知识点进行浏览和回顾。方案通过;数据结构通过;设计的整体框架方案通过;设计的界面方案通过。2009年6月16日上午:1)定义个主要变量,定义主函数,完成主菜单的编码。2)完成求平均值的功能的编码。下午:1)完成查询菜单的编码。2)完成查询子菜单1的编码。3)调试保存要求数据传递接口正常,main函数能运行。2009年6月17日上午:1)回顾之前的程序,完成修改菜单的编码。2)完成修改子菜单2,3的编码。3)完成添加功能的编码。下午:1)完成文件的输入输出功能的编码。2)调试保存。各子函数调试通过,能被main函数成功调用,其子功能能实现。2009年6月18日上午:1)完成排序功能的编码(费了很大的功夫)。下午:1)整合各函数,使主函数成功调用。2)调试保存。各子函数调试通过,能被main函数成功调用,其子功能能实现。2009年6月19日上午:1)回顾任务书,对程序查漏补缺。2)设计视觉效果,菜单标志,实现系统的全面优化。。3)输出系统中的成绩到文件中保存;打印输出文件中的内容;从文件中导入数据到成绩管理系统中;下午:1)完成实训报告并且验收设计的项目。系统能正确运行,界面友好);各功能能够实现,性能良好操作方便。实训报告一、需求分析1、用C语言实现基于Dos操作系统的“学生成绩管理系统”。2、系统启动进入后,弹出“学生成绩管理系统”的用户界面,用户通过界面选择成绩管理系统的主菜单,通过主菜单的各选项用户可以方便直观的选择希望的操作,选定后进入相应界面再次执行相应的操作。3、用户界面可以用鼠标和键盘操作。4、用户界面可以是图形或者文本模式。5、用户界面尽可能美观、适宜。6、“学生成绩管理系统”具有以下功能:(1)录入学生成绩(信息有:班级、姓名、学号、五门课程成绩);(2)计算学生五门功课的平均成绩并存档。(3)输出学生的信息和对应的原始成绩以及平均成绩;(4)按平均成绩进行排序,排序后输出学生信息以及对应的课程成绩和平均成绩。(5)对成绩修改,有两种模式,一种是按学号查找后进行修改;另一种是按姓名查找后进行修改;修改后重新排序学生的顺序,并输出学生信息和对应课程成绩和平均成绩。(6)增补遗漏的学生以及对应的信息和对应的课程成绩,并计算出平均成绩,增补以后重新排序学生顺序,并输出学生信息和对应课程成绩和平均成绩。(7)把学生信息和对应的课程成绩和平均成绩存入到文件中。(8)输出文件中的内容。(9)试着从文件中导入数据到成绩管理系统中,然后进行管理。二、规格说明1、系统用户界面尽量居中、美观a)界面颜色要和谐搭配;b)表格框架要尽量美观;c)有一定数量的菜单标志,具有整体感;d)有载入延迟画面;e)要有清屏函数,使界面整洁。2、具有人机交互功能;f)菜单简洁、清晰,选择方便;g)最好实现鼠标键盘双重操作;h)具有文件存储功能。3、通过菜单选择功能;i)用户不用自己输口令来完成指定操作;j)每个菜单后的链接要包含用户要求的所有功能。4、只能由菜单退出系统;5、操作信息提示(界面友好);k)每步操作要有提示语,方便用户进行合理选择;l)数据的操作有最后确认提示,防止意外操作。6、拦截一些误操作错误;7、按原始成绩格式输出。三、数据管理方案1、学生的信息采用结构体变量数据类型,以方便包含所有信息Structstudent/*定义结构体变量*/{charno[11];/*学号为字符型*/charname[15];/*姓名为字符型*/charclass[10];/*班级为字符型*/intscore[5];/*整形数组记录学生五门成绩*/structstu*next;/*结构体指针类型连接链表中各节*/};2、退出函数exit(),需要includestdlib.h3、看程序运行结果用getch()函数4、清屏函数:clrscr()5、数据结构结构体{整型班级整型学号字符数组姓名整形数组5科成绩浮点数平均成绩}6、链表实现数据的输入、查询、删除等功能。7、用链表储存大量的数据。8、用save函数存储数据。四、系统设计1、主函数main()利用无限次循环for(;;)和switch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。2、初始化函数STUDENT*init()这是一个无参函数,里面只有一个语句,它的作用是使链表初始化,使head的值为NULL。比如:没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示一些乱码!3、菜单选择函数intmenu-select();这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的九大功能,根据每个功能前面的序号进行选择,中间还显示系统当前的时间。等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!4、输入记录函数STUDENT*create()这是一个无参函数,用来执行第学生成绩记录的输入,当学生为0时停止输入,函数结束后,带回一个指向链表头的指针head。算法:先声明一个首节点head,并将head-next设为NULL。每输入一个数据就声明一个新节点p,把p-next设为NULL,并且链接到之前列表的尾端。5、显示记录函数voidprint(STUDENT*h)这是一个不返回值的有参函数,形参为“链表头的指针”,负责对全部学生成绩记录的输出,不足之处就是不能对学生成绩进行分页显示。算法:先将p结点的指针指向第一个结点,将p结点(即第一个结点)的数据输出。然后再将p结点的指针指向p指针的的指针(即下一结点),将p结点(即第一结点)的数据输出。重复执行此步聚直到p指针指向NULL为止。6、查找记录函数voidsearch(STUDENT*h)这是一个不返回值的有参函数,形参为“链表头的指针”,实现按学号对某个学生进行查找,并显示所查找到的记录。算法:采用线性查找法往下一个节点查找。输入所要查找的学生的学号s,设一个指针变量p,先指向第一个结点,当strcmp(p-name,s)&&p!=NULL时,使p后移一个结点,如果p!=NULL,输出p所指的结点。7、删除记录函数STUDENT*delete(STUDENT*h)这是一个有参函数,形参为“链表头的指针”,先输入要删除的学生记录的学号,找到后显示该学生信息,等确认后便可按“Y”进行删除。算法:从p指向的第一个结点开始,检查该结点中的num值是否等于输入的要求删除的那个学号。如果相等就将该结点删除,如不相等,就将p后移一个结点,再如此进行下去,直到遇到表尾为止。8、排序函数STUDENT*sort(STUDENT*h)这是一个有参函数,形参为“链表头的指针”,按学生成绩的平均分高低进行排序,还可以显示名次。9、插入函数STUDENT*insert(STUDENT*h)这是一个有参函数,形参有两个,一个是“链表头的指针”,一个是“待插入指针”,按照原来成绩平均分的高低进行插入,插入后会重新进行排序,并返回。算法:先将学生的成绩按平均分由高分到低分进行排序,再插入一个新生的结点,要求按平均分的高低顺序插入。先用指针变量p0指向待插入的结点,p1指向第一个结点。如果p0-averagep1-average,则待插入的结点不应插在p1所指的结点之前。此时将p1后移,并使p2指向刚才p1所指的结点。重复以上的步骤,直到p0-average=p1-average为止。这时将p0指向的结点插到p1所指结点之前。但是如果p1所指的已是表尾结点,则p1就不应后移了。如果p0-average比所有结点的average都小,则应将p0所指的结点插到链表末尾。如果插入的位置既不在第一个结点之前,又不在表尾结点之后,则将p0的值赋给p2-,使p2-next指向待插入的结点,然后将p1的值赋给p0-next,使得p0-next指向p1指向的变量。如果插入位置为第一个结点之前,则将p0赋给head,将p1赋给p0-next。如果要插到表尾之后,应将p0赋给p1-next,NULL赋给p0-next。最后再调用排序的函数,将学生成绩重新排序.10、保存数据到文件函数voidsave(STUDENT*h)这是一个不返回值的有参函数,形参为“链表头的指针”,可以把学生记录保存在电脑上由自己任意命名的二进制文件。11、从文件读数据函数STUDENT*load()这是一个不返回值的有参函数,形参为“链表头的指针”,根据输入的文件地址进行读取。五、系统实现1、系统实现基本框架2、系统实现图解1)菜单界面的实现通过菜单选择函数menu_select实现“功能选择”的界面开始界面菜单输入输出排序输出计算平均值修改成绩增补排序输出排序输出退出2)输入数据定义create()函数来实现数据的输入3)删除记录用函数STUDENT*delete(STUDENT*h),输入学生对应的学号进行删除信息4)查找学生信息一种是按学号查找,另一种是按姓
本文标题:用C语言设计的学生成绩管理系统1
链接地址:https://www.777doc.com/doc-3612538 .html