学生成绩管理程序设计
学生成绩管理系统程序分析

学生成绩管理分析系统设计报告本次作业的任务是设计一个学生成绩管理分析系统,通过此次设计任务达到基本掌握面向过程程序设计的基本思路和方法,熟练使用C语言的知识和技能来解决简单的程序设计问题。
一、需求分析1.功能需求为了实现学生成绩的管理与分析,需要输入学生的基本信息和学习信息,要保证信息的准确性,需要提供包含添加、删除等修改功能,在此基础上,提供统计与分析手段。
因此,通过对需求的分析,本程序设计的功能需求如下:a)信息输入b)信息显示c)信息修改d)信息分析2. 系统需求根据任务要求,实现学生成绩的管理与分析需要使用标准C语言进行编程;由于本程序满足任务要求的功能需求计算简单,信息的显示均为文本类型,且无通讯方面的需求,因此占用计算机的资源较少。
本程序的数据量大小取决于管理学生数量的多少,根据中国各高校情况分析,在校学生少则数百人,多则数万人,而每一名学生记录仅需要数十字节,因此数据的存取量需求最大不会超过10GB。
综上所述,本程序对系统的需求,目前一台普通计算机即可满足使用。
本程序设计拟采用VC 编制,在Windows 2000操作系统下开发实现。
二、总体设计本程序设计采用模块化设计,每一个模块实现一项功能。
按照不同的功能对学生成绩管理分析系统进行模块划分,其总体设计如下:数据录入模块。
每个学生的基本信息和成绩用一个结构体来表示,称为一条记录,可以增加或者删除记录。
为简化问题,能对学生的总成绩进行排序,这里约定相同系别的学生所选科目的数量一致,不同系别的学生所选科目可以不同。
数据查询模块。
对已经录入的学生基本信息和成绩进行查询,可以查询单个学生的基本信息和成绩,比如通过学号、姓名等关键字查询,也可以查询某类数据,比如通过系别关键字查询该系所有学生的资料、通过科目名称查询参加该科考试的所有学生的成绩。
数据修改模块。
对学生基本信息或成绩进行修改,并保存记录。
数据分析模块。
包括对每系或每班的单科成绩的分析,如求平均成绩、及格率、优秀率等;对选修某科的所有学生成绩进行分析,包括求平均分、最高分、最低分等;对同一学期每个班的学生总成绩进行排序。
学生成绩管理系统c语言课程设计报告

学生成绩管理系统c语言课程设计报告一、引言学生成绩管理系统是一个为学校或教育机构提供学生学业成绩管理的重要工具。
通过该系统,可以方便地记录和查询学生的各项成绩,帮助教师和学生了解学生的学业表现,及时作出教学和学习的调整和改进。
本文将介绍一个基于C语言的学生成绩管理系统的设计与实现。
二、需求分析1. 学生信息管理:包括学生基本信息的录入、修改和删除。
2. 成绩信息管理:包括成绩的录入、修改和删除。
3. 成绩查询与统计:可以按照学生学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份:能够将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
三、系统设计1. 学生信息管理模块:设计一个结构体来存储学生的基本信息,包括学号、姓名、性别、年龄等。
通过菜单选择,可以实现学生信息的录入、修改和删除功能。
2. 成绩信息管理模块:设计一个结构体来存储学生的成绩信息,包括科目名称和成绩。
通过菜单选择,可以实现成绩信息的录入、修改和删除功能。
3. 成绩查询与统计模块:通过学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份模块:设计文件操作函数,将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
四、系统实现1. 使用C语言编写程序代码,通过结构体和数组等数据结构实现学生信息和成绩信息的存储。
2. 利用文件操作函数实现数据的读取和存储,包括学生信息和成绩信息的存储和备份。
3. 设计菜单界面,通过用户选择来实现各个功能模块的调用。
五、系统测试与优化1. 针对各个功能模块进行测试,验证系统的正确性和稳定性。
2. 根据测试结果优化程序代码,提高系统性能和用户体验。
3. 完善系统功能,考虑异常情况的处理,提高系统的容错性和健壮性。
六、总结与展望通过本次课程设计,我们成功实现了一个基于C语言的学生成绩管理系统。
该系统能够方便地记录和查询学生的成绩信息,帮助教师和学生进行教学和学习的分析和改进。
C语言程序设计学生成绩管理系统实验报告

移通学院C语言程序设计报告书设计名称:学生成绩管理系统专业:指导老师:班级:姓名:学号:座号:时间一、实验目的1.在编辑应用程序过程中,逐步加深对C语言编程的理解;2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固;3.培养初步编程的能力,为以后的学习奠定基础;二、实验内容运用所学的C语言知识编辑一个应用程序:学习成绩管理系统三.系统软件环境:本程序主要运行在: Visual C++ 6.0Turbo C/C++ 3.0四.课程设计题目:学生成绩管理系统程序说明:有N个学生,每个学生的数据包含学号不重复、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:1主菜单2各菜单项功能①成绩录入:输入学生的学号、姓名及三门课的成绩;②成绩查询:按学号查询学生记录;③成绩统计:计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序后输出;④退出系统:退出整个系统即主菜单;五.数据结构设计描述:↓int num; /定义学号,变量为整型/char name; /定义姓名,变量为字符型/int score; /定义课程的成绩,变量为整型/float average; /定义平均分,变量为浮点型/七.系统各函数的功能,、相互调用关系1.函数实现功能说明:1menu函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择;2input函数是定义用于输入学生信息;3select 函数是定义用于查询学生信息;包括学号、姓名及各科成绩;4statistics 函数计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序输出;2.相互调用关系:Main函数调用menu函数;Menu 函数可以调用input 函数、select函数和statistics 函数八.心得体会C语言是一种较为基础和普遍的编程语言,应用相当广泛,这次课程设计的要求与C语言的广泛应用相比较还有很大的差距;我们对于C语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,我想我们也要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序; 九.程序:include <stdio.h>include <stdlib.h>include <conio.h>define N 3 /学生人数/define M 3 /课程门数/struct student{int num; /学号/char name20; /姓名/int score3; /三门课成绩/float average;}stuN; /学生数/void input; /查询/void select; /统计/void menu;void input{int i,j;printf"\t\t①成绩录入\n\n";fori=0;i<N;i++{printf"请输入学号:";scanf"%d",&stui.num;printf"请输入姓名:";scanf"%s",&;forj=0;j<M;j++{printf"第%d门成绩的分数:",j+1;scanf"%d",&stui.scorej;}printf"\n\n";}printf"\n\n";printf"输入完毕按任意键返回主菜单";}/2.查询/void selectint no{int i;printf"学生%d号: \n",no; printf"学号: %d\n",stuno-1.num; printf"姓名: %s\n",;for i=0;i<M;i++{printf"第%d门课程的成绩为: ",i+1; printf"%d\n",stuno-1.scorei;}printf"\n按任意键返回主菜单";getch;}/3.统计/void statistics{float temp=0;int i=0;/学生成绩平均分/temp=0;printf"\t\t③成绩统计\n\n";forj=0;j<N;j++{fori=0;i<M;i++{temp=temp+stuj.scorei;}stuj.average=temp/N;printf"\n学生%s的成绩平均成绩为:",;printf"%0.2f分",stuj.average;temp=0;}/排序/for j=0;j<N;j++fori=0;i<N-j-1;i++ifstui.average<stui+1.average{ temp=stui.average;stui.average=stui+1.average;stui+1.average=temp;}printf"\n\n学生平均成绩前三名:";fori=0;i<3;i++{printf"\n第%d名:%0.2f分",i+1,stui.average;}printf"\n\n按任意键返回主菜单";getch;}void menu{ int num=0;int n=0;printf"\n\t\t\t学生成绩管理系统\n\n";printf"\n\t\t\t①成绩录入\n\t\t\t②成绩查询\n\t\t\t③成绩统计\n\t\t\t④退出系统\n";printf"\t\t\tchoose:";scanf"%d",#switchnum{case 1:system"cls";input;break;case 2:system"cls";printf"\t\t②成绩查询\n\n"; printf"请输入要查询的学生号1~3:";scanf"%d",&n;selectn;break;case 3:system"cls";statistics;break;case 4:exit0;default:;}}void main{while1{system"cls"; /清屏/menu;}}。
成绩管理系统(c课程设计)

成绩管理系统(c 课程设计)一、教学目标本课程的教学目标是使学生掌握C语言程序设计的基本原理和方法,能够运用C语言设计简单的应用程序,培养学生的编程思维和解决问题的能力。
具体分为以下三个方面的目标:1.知识目标:使学生掌握C语言的基本语法、数据类型、运算符、控制结构、函数、数组和字符串等基本概念,了解C语言的编译和链接过程。
2.技能目标:培养学生具备使用C语言编写程序的能力,能够阅读和理解简单的C语言程序,学会使用调试工具对程序进行调试和优化。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,增强学生的自信心和自主学习能力,培养学生的团队合作精神和创新意识。
二、教学内容根据教学目标,本课程的教学内容主要包括以下几个部分:1.C语言的基本语法和数据类型:包括变量、常量、数据类型、运算符、表达式等基本概念。
2.控制结构:包括顺序结构、选择结构和循环结构,以及相关的函数调用和参数传递。
3.数组和字符串:包括一维数组、多维数组、字符串的基本操作和应用。
4.函数:包括函数的定义、声明、调用和返回值,以及函数的递归调用和静态局部变量。
5.指针:包括指针的概念、指针的运算、指针与数组、指针与函数的关系等。
6.结构体和文件:包括结构体的定义和应用,文件的打开、读写、关闭等操作。
三、教学方法为了实现教学目标,本课程将采用以下几种教学方法:1.讲授法:教师通过讲解和演示,向学生传授C语言的基本知识和编程技巧。
2.案例分析法:教师通过分析典型的案例,引导学生运用C语言解决实际问题。
3.实验法:学生通过上机实验,动手编写C语言程序,巩固所学知识,提高编程能力。
4.小组讨论法:学生分组讨论和合作完成项目,培养学生的团队合作精神和沟通能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将采用以下教学资源:1.教材:《C程序设计语言》(K&R)或《C Primer Plus》。
2.参考书:《C语言程序设计教程》(清华大学出版社)等。
简单学生成绩管理系统程序设计报告

简单学生成绩管理系统程序设计报告一、概述本文将介绍一个简单的学生成绩管理系统的程序设计报告。
该系统旨在帮助学校管理学生的成绩信息,包括录入学生信息、录入学生成绩、查询学生成绩等功能。
以下是本文的内容结构:1.概述2.系统需求分析1.功能需求2.数据需求3.系统设计1.数据库设计2.后端设计3.前端设计4.系统实现5.遇到的问题与解决方法6.总结与展望二、系统需求分析1. 功能需求该系统应具备以下功能:•录入学生信息:包括学生姓名、学号、班级等基本信息•录入学生成绩:包括考试科目、考试成绩等信息•查询学生成绩:可以按学生姓名、学号等条件查询学生成绩•修改学生成绩:可以修改学生的考试成绩•删除学生成绩:可以删除某个学生的成绩信息2. 数据需求该系统需要存储以下数据:•学生信息:包括学生姓名、学号、班级等基本信息•学生成绩:包括学号、科目、成绩等信息三、系统设计1. 数据库设计根据系统的需求,我们设计了以下数据库表:•学生表(students):包括学号(id)、姓名(name)、班级(class)等字段•成绩表(scores):包括学号(id)、科目(subject)、成绩(score)等字段2. 后端设计后端部分主要负责与数据库进行交互,实现系统的各种功能。
我们使用Python语言开发后端程序,使用Flask框架进行搭建。
后端程序主要包括以下模块:•学生管理模块:负责学生信息的增删改查操作•成绩管理模块:负责成绩信息的增删改查操作•数据库连接模块:负责与数据库进行连接和数据交互的操作3. 前端设计前端部分主要负责与用户进行交互,提供友好的界面供用户使用系统的各种功能。
我们使用HTML、CSS和JavaScript语言开发前端界面。
前端界面主要包括以下模块:•学生信息录入界面:提供表单供用户输入学生的基本信息•成绩信息录入界面:提供表单供用户输入学生成绩信息•成绩查询界面:提供表单供用户查询学生成绩•成绩修改界面:提供表单供用户修改学生成绩•成绩删除界面:提供表单供用户删除学生成绩四、系统实现我们根据系统设计的需求,实现了一个简单的学生成绩管理系统。
小学生考试成绩的管理方案

小学生考试成绩的管理方案1. 引言为了提高小学生考试成绩的管理效率,确保考试成绩的公正、透明,我们特制定本方案。
本方案主要包括考试成绩的收集、整理、分析、反馈和存档等环节。
2. 考试成绩的收集1. 考试结束后,各科任课老师将学生的考试成绩整理成电子表格或纸质表格,包括学生姓名、班级、学号、各科目成绩等信息。
2. 班主任负责收集各科任课老师的考试成绩,并进行初步核实。
3. 考试成绩的整理1. 班主任将收集到的考试成绩进行整理,确保数据准确无误。
2. 对考试成绩进行排序,按照班级、科目、学生姓名等维度进行分类。
4. 考试成绩的分析1. 班主任和各科任课老师共同分析考试成绩,从整体和个体两个层面进行。
2. 分析内容包括:学生的总体成绩水平、各科目的成绩分布、优秀学生、待提高学生等。
3. 针对分析结果,制定针对性的教学改进措施。
5. 考试成绩的反馈1. 班主任将分析后的考试成绩反馈给学生和家长,以便他们了解学生的学习情况。
2. 各科任课老师针对学生的考试成绩,给予个性化的指导和建议。
6. 考试成绩的存档1. 班主任将整理好的考试成绩存档,以便日后查询和分析。
2. 存档材料包括:纸质成绩单、电子表格、分析报告等。
7. 持续改进1. 定期回顾和评估考试成绩管理方案的有效性,根据实际情况进行调整。
2. 鼓励教师分享优秀教学经验和案例,不断提升教学质量。
8. 附则本方案自发布之日起实施,如有未尽事宜,可根据实际情况予以调整。
---以上就是小学生考试成绩的管理方案,希望对您有所帮助。
如有其他问题,请随时提问。
C语言课程设计报告(学生成绩管理系统)

C语言课程设计报告:学生成绩管理系统系统需求一、当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息。
二、学生成绩查询: 输入一个学号,在文件中查找此学生, 若找到则输出此学生的全部信息和成绩;若找不到则输出查找失败的信息。
同时也可以全部把各科的平均成绩,最高和最低分输出.三、新生插入:通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来.四、输出全部学生信息和全部学生成绩。
五、退出系统.六、附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓来先进行模糊查询,以便后面精确查找。
总体设计一、仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。
2、查询模块:可用stu *lookdata(stu *p1)来实现。
找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。
3、插入模块:可用insert( )函数来实现。
其中通过学号的大小来比较的,并且以此来排序.4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage()、maverage()、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。
5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。
二、系统主模块结构图:详细设计一、界面设计此系统界面采用图形和数字化菜单设计。
主界面设计如下:学生成绩管理系统请选择相应的数字执行相应的功能:1:是否输入其他数据2:查看数据3:插入数据4:查找数据5:更新数据6:保留数据7:显示或打印数据8:语文成绩状况9:数学成绩状况10:英语成绩状况11:计算机成绩状况12:?13:退出系统二、数据结构设计:程序设计中用到的结构体类型:学生信息结构体类型:typedef struct student{char name[MAX];int num[MAX];char sex[MAX];int chinese;int mathematic;int english;int computer;struct student *next;}程序代码://原始密码是123456#include"stdio.h”#include"stddef.h"#include"stddef。
学生学籍成绩管理系统设计报告

综合应用所学的C 语言程序设计知识,自行设计并实现一个较为完整的小型管理信息系统。
通过系统分析、系统设计、编程实现,写实验报告等环节,初步掌握软件系统的设计方法和步骤,提高灵便运用程序语言进行软件开辟的技能,提高程序设计水平和分析问题、解决问题的能力。
1):熟悉C 语言的开辟环境,按照给定的上机步骤练习完成;2):熟悉C 程序的编辑,编译,链接和运行的过程。
3):编译一个应用系统程序,形成一个软件系统。
三、学籍成绩管理系统功能设计要求:1. 输入记录:将每一个学生的姓名、学号以及数学、物理、化学、英语、网络课程的成绩作为一个记录。
该软件能建立一个新的数据文件或者给已建立好的数据文件增加记录。
2. 显示记录:根据用户提供的记录或者根据学生姓名显示一个或者几个学生的各门功课的成绩和平均成绩。
3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改先后对记录内容进行显示。
4.查找记录:可以对数据文件的任意记录的数据进行查找并在查找先后对记录内容进行显示。
5. 删除记录:可删除数据文件中的任一记录。
6.恢复记录:能恢复被删除的任一记录。
7.添加记录:可以在数据文件中添加记录并添加记录后对记录内容进行显示。
8. 统计: (A)计算各门课程全班平均成绩及总成绩; (B) 统计其课程全班得:100 分、 90~99 分、80~89 分、 70~79 分、 60~69 分、 59 分以下学生人数及全班总人数的百分比; (C)按字符表格形式打印全部学生的平均成绩( 包括各课总的平均成绩)。
9.保存数据文件功能。
10.打开数据文件功能。
经过逐层逐块、不断细化、求精过程,编写程序并进行测试、验证,可以逐个模块地分开调试,并通过文件包含或者用工程文件的形式进行逐步联合调试。
程序运行结果如下表所示(记录个数至少 8 个)。
1、算法设计学籍管理系统程序采用了结构化程序设计的思想,将程序分解成许多模块,再由主函数调用这些模块,实现不同的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生成绩管理程序设计目录摘要 (1)1.绪论 (1)2. 系统分析 (1)2.1功能需求 (1)2.2数据需求 (1)2.3性能需求 (2)3. 总体设计 (2)3.1功能模块设计 (2)3.2系统设计方案 (2)4总体设计 (3)4.1学生信息录入管理模块 (3)4.2学生成绩信息统计管理模块 (4)4.3学生排名管理模块 (4)4.4学生信息修改管理模块 (5)5. 调试与测试 (6)5.1调试 (6)5.2测试 (7)6. 结论 (7)结束语 (7)参考文献 (8)附录1-用户手册 (9)摘要学生成绩信息管理程序是一个学校不可缺少的部分,学校可以利用这套程序进行学生的成绩信息管理,也方便查询修改学生的成绩各项信息,可以提高管理工作的效率。
本系统使用C语言作为开发工具的,开发学生成绩信息管理系统,实现了录入学生成绩信息,按姓名、学号等条件删除学生成绩信息。
本文从分析课题的题目背景、题目意义、题目要求等出发,分别从需求分析、总体设计、详细设计、测试等各个方面详细介绍了系统的设计与实现过程,最后对系统的完成情况进行了总结。
关键词:学生成绩信息管理;删除; C语言1.绪论随着科技的发展,愈来愈多的学校选择了运用学生成绩信息管理程序来管理学生成绩信息。
学生成绩信息管理程序是一个学校不可缺少的部分,学校可以利用这套程序进行学生的成绩信息管理,也方便查询修改学生的各项信息,可以提高管理工作的效率和简化管理工作的程序。
有利的为公司节省了运作成本,优化资源利用率,这也正是编写本程序的目的所在。
根据课程设计任务书要求,本系统开发主要完成以下功能和性能。
1.录入学生数据信息(不用考虑学期),学生信息至少包括姓名、学号、语文、数学、英语成绩,学生信息应及时保存在文件中;2.根据学号删除某生信息;3.能够计算平均分并显示所有学生名次。
2. 系统分析2.1 功能需求本系统主要是企业对职工信息简单管理的系统。
该系统需要有录入信息,删除信息,统计信息,循环显示主菜单,保存信息的功能,并且利用显示函数将学生的所有信息显示出来。
2.2数据需求需要向系统输入学号,姓名,语文、数学、英语成绩等信息。
2.3 性能需求在运行本程序时只要按照正确的操作方法不会出现无法运行的情况,系统稳定性好,安全,可靠。
3. 总体设计3.1功能模块设计根据分析整个系统主要划分为5个功能模块,分别执行要求中的功能。
该系统需要有录入,利用显示函数将职工所有信息显示,删除,修改,按指定条件查询,统计,查询,保存信息,循环显示主菜单功能。
功能模块图如图1所示。
图1功能模块图(1)学生成绩信息录入管理模块该模块分为①学号号录入,姓名录入,姓名,语文、数学、英语成绩等信息②按‘0’键结束录入,实现模块退出,返回主菜单。
(2)成绩信息统计管理模块该模块是显示学生名次功能。
(3)主函数模块该模块是显示主菜单功能。
(4)成绩排名模块该模块是显示学生名次功能。
3.2系统设计方案设计一个总菜单,由于该系统涉及多个学生的成绩存储,因此,定义一个数据结构,用于存储这些信息。
现仅对学生语文成绩、数学成绩、英语成绩进行统计管理。
建立以下数据结构:class Student{public:char number[Max]; //存储学生学号char name[Max]; //存储学生姓名double chinese; //存储语文成绩double math; //存储数学成绩double english; //存储英语成绩double total; //总成绩double average; //平均成绩int rank; //排名};4. 详细设计4.1学生信息录入管理模块成绩录入就是对前面定义的类Student中的成员进行赋值。
其中,用户需要输入的是学生的学号、姓名两个基本信息和语文、数学和英语三门成绩,其余总成绩、平均成绩和排名由后续的计算函数来实现。
实现成绩录入模块的函数代码如下:void setData(Student &s) //成绩录入模块{cout<<"输入学号,姓名,语文,数学,英语成绩:"; //录入数据cin>>s.number>>>>s.chinese>>s.math>>s.english;s.total=0; //初始化s.average=0;s.rank=0;}该函数运行时其结果如下图所示:输入学生信息的个数可在主函数用修改相应数值。
图2 学生信息录入管理图4.2学生成绩信息统计管理模块成绩统计模块需要建立在成绩录入模块的基础之上,当系统中已经包含一些数据记录后才能对这些成绩求总分、平均分等操作。
否图3 学生成绩信息统计流程图4.3学生排名管理模块在获得整个班级的总分和平均分之后,就可以对该班级中的同学按照某个参数进行排名了。
在该系统中,使用每位同学的平均成绩对其进行排名,此处使用插入排序来实现。
插入排序的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止,其算法流程图如下:图4学生排名管理模块流程图4.4学生信息修改管理模块该系统中的成绩查询工嫩嫩个是根据用户输入的学生的学号作为关键字,在数据结构中进行查询,并将查询结果即该记录的位置返回,第一行代码函数的生命中,参数字符串n 即为用户输入的需要查询的学生学号,将该学号与所有数据元素进行比较,找到则返回该元素的位置,否则返回-1。
该函数执行的流程图如下图:图5 学生信息修改管理流程图5. 调试与测试5.1 调试调试是软件开发过程中的一个重要环节,也是最复杂,对软件开发者者来说也是最艰巨的任务。
调试的任务是及时改正测试过程中发现的软件错误。
具体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开始,首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误。
然后仔细研究推断代码以确定问题的原因,并设法改正。
调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。
本系统调试过程中遇到问题、原因和解决方法如下面介绍。
(1)程序不能运行定义的指针,很多次引用,过个函数里面,定义的不明确,造成错误连连发生。
(2)不能正确输出信息,有乱码现象原因是键入信息的时候,没有一一对应,逗号的位置不正确,后来,用的是信息逐一输入,保证了信息的一一对应和高度的准确性,使程序可以正常运行。
(3)程序运行途中,出现错误,被迫中止其中定义字符数组,却没有定义长度,导致定义类型变成了字符型,而不能接受字符串,因此出现了错误。
5.2 测试软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。
或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。
过度测试则会浪费许多宝贵的资源。
到测试后期,即使找到了错误,然而付出了过高的代价。
6. 结论系统实现功能:该系统实现对学生成绩管理功能,主要包括成绩录入、计算总分和平均分、成绩排名和成绩查询。
系统设计中的难点:在程序开发阶段,main函数定义、输出模块及数据结构方面存在一定难点,而后参考部分文献决绝该问题。
系统不足之处:为系统实现简单,并没有对班级进行分类,而且仅仅以三门学科进行数据统计。
结束语通过本次的课程设计,让我学会了把书本上的知识应用到了实际中来。
虽然在这几周中有过挫折和坎坷,有的问题一直到了最后才被解决,但是我认为这未必就不是好事,这样能锻炼我的意志,磨练我的耐心,失败是成功之母,这话一点都没错,没有失败就没有成功。
让我没有失去信心的是关怀我们的老师,当我们有了问题和疑问,老师就很耐心的给予讲解,让我们有了一个良好的学习氛围。
参考文献[1] 谭浩强. C语言程序设计(第三版).北京:清华大学出版社,2005.7附录1-用户手册首先输入3组同学数据信息1)打印所有排名2)打印出成绩在全班平均分以上的学生名单和数据信息3)任意输入一个学号,查找出该学生在班级中的排名及其考试成绩附录2-源程序#include "stdafx.h"#include<iostream>#include<cstdio>using namespace std;const int Max=5; //字符串最大长度class Student;//类声明void setData(Student &s); //设置对象s的数据void count(Student &s); //计算对象s的总分,平均分void sort(Student S[],int N);//把长度为N的对象数组S,按平均分排序double getAverage(Student S[],int N);//计算全班的平均分void print(Student &s); //打印信息int search(Student S[],int N,char *n);//从长度为M的对象数组中,查找学号n的位置class Student{public:char number[Max]; //学号char name[Max]; //姓名double chinese; //语文成绩double math; //数学成绩double english; //英语成绩double total; //总分double average; //平均分int rank; //只有比较才不为了0};void setData(Student &s) //成绩录入模块{cout<<"输入学号,姓名,语文,数学,英语成绩:";//录入数据cin>>s.number>>>>s.chinese>>s.math>>s.english;s.total=0;//初始化s.average=0;s.rank=0;}void count(Student &s) //成绩统计{s.total=s.chinese+s.math+s.english; //求三门课程的总分s.average=s.total/3; //求三门课程的平均分}void sort(Student S[],int N) //插入法排序(成绩排名){int index; //定义变量Student inserter; //创建对象for(int i=1;i<N;i++) //循环{inserter=S[i]; //对象初始化index=i-1; //变量初始化while(index>=0&&inserter.average>S[index].average)//比较{S[index+1]=S[index]; //元素后移index--;}S[index+1]=inserter; //插入该元素}for(int j=0;j<N;j++)S[j].rank=j+1; //设置排名}double getAverage(Student S[],int N) //求平均分函数{double Average=0; //变量定义并初始化for(int i=0;i<N;i++) //循环Average+=(S[i].chinese+S[i].math+S[i].english);//求所有学生的所有成绩和Average/=(N*3); //求所有学生的成绩平均值return Average; //返回该平均值}void print(Student &s) //输出结果{cout<<"排名"<<"\t"<<"学号"<<"\t"<<"姓名"<<"\t"<<"语文:"<<"\t"//定义输出格式<<"数学:"<<"\t"<<"英语:"<<"\t"<<"总分"<<"\t"<<"平均分"<<endl;cout<<s.rank<<"\t"<<s.number<<"\t"<<<<"\t"<<s.chinese<<"\t"//输出成员的值<<s.math<<"\t"<<s.english<<"\t"<<s.total<<"\t"<<s.average<<endl;}int search(Student S[],int N,char *n) //成绩查询模块{for(int i=0;i<N;i++) //在所有记录中查询{if(strcmp(S[i].number,n)==0) //找到return i; //返回结果所在的位置}return -1; //没有找到}int main() //系统集成{const int M=3;Student S[M];for(int i=0;i<M;i++){cout<<"下面输入第"<<i+1<<"位同学的数据:"<<endl;setData(S[i]);count(S[i]);cout<<endl;}sort(S,M);int order=1;while(order!=4){cout<<"*****************************命令菜单******************************"<<endl;cout<<"1.打印所有排名"<<endl;cout<<"2.打印出成绩在全班平均分以上的学生名单和数据信息"<<endl;cout<<"3.任意输入一个学号,查找出该学生在班级中的排名及其考试成绩"<<endl;cout<<"4.退出系统"<<endl;cout<<"*********************************************************** ********"<<endl;cout<<"输入命令选择:";cin>>order;switch(order){case 1:{for(int j=0;j<M;j++)print(S[j]);}break;case 2:{double compare=getAverage(S,M);for(int k=0;k<M;k++)if(S[k].average>compare)print(S[k]);}break;case 3:{char code[Max];cout<<"输入您要查找的学号:";cin>>code;int result=search(S,M,code);if(result==-1)cout<<"您输入的学号不存在"<<endl;elseprint(S[result]);}break;case 4:break;default:cout<<"输入的命令不存在"<<endl;}}return 0;}完成日期:2012年07月10日。