学生成绩管理系统
一、设计目的
通过课程设计,了解并初步掌握设计,实现较大系统的完整过程,包括系统分析,编码设计,系统集成,以及调试分析,熟练掌握数据结构的选择,设计,实现以及操作方法,为进一步的应用开发打好基础.
数据结构是实践性很强的课程.课程设计是加强学生实践能力的一个强有力手段.课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告.严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显着的促进作用.
二、问题描述
设计,实现一个管理学生成绩的程序,为用户提供以下几种操作:(1)对学员的成绩的录入和输出(2)实现插入,删除,查找,排序,浏览,分类合计,保存,读取等操作
三、需求分析
该程序目的在于实现一个小的管理软件,以对学生成绩进行一些基本操作,此程序规定:
1.在程序中输入学员的学生证号时,需输入长度在4位以内的数字,输入学员姓名时需输入一个字符串,输入学科成绩时需输入一个0到100的整型数据,在选择功能时,应输入与所选功能对应的一个整型数据.
2.程序的输出信息主要是:主菜单,子菜单提供功能选择,对所有学员的信息和成绩的打印和以表的形式排序输出.
3.程序的功能包括:提供对学员信息的录入,插入,删除,查找,其中删除和查找可根据学号与姓名进行分类选择,并提供了对成绩的分类统计,通过对平均成绩从高到低实现排序输出,数据的保存和读取以及程序的安全退出.
四、概要设计
系统用到的数据类型定义:
1.structstudent
{}stu[50],
数据对象:结构体
集合学生的系列属性,包括学号,姓名,3门课成绩,总分,平均分
1)系统中子程序及功能要求:
1.voidmune(),//主菜单函数
2.voidinput(),//录入函数
3.voidinsert(),//插入函数
4.voiddel(),//删除函数
5.voiddelNo(),//按学生证号删除
6.voiddelName(),//按姓名删除
7.voidselect(),//查找函数
8.voidselectNo(),//按学生证号查找
9.voidselectName(),//按姓名查找
10.voidsort(),//冒泡排序函数,以平均成绩从高到低排列所有学生信息
11.voiddisplay(),//制表格式函数,表格形式打印输出
12.voidtotal(),//分类合计函数,统计学科成绩,总成绩和平均成绩
13.voidse(),//保存函数,保存数据到指定文件
14.voidload(),//读取函数,读取指定文件的数据
2)子程序间的调用关系
子程序3:调用子程序1
子程序4:调用子程序5,子程序6
子程序7:调用子程序8,子程序9
3系统调用子程序的实现方法:
在主函数下,开关switch.通过对case0,1,2,3,4,5,6,7,8,9的选择,再通过子菜单的选择,调用相应的函数方法,每个函数基本上实现一个功能.
五、详细设计
创建学生成绩管理的伪码描述如下:
structstudent
{
学生证号,
姓名,,
微机原理成绩,
离散数学成绩,
数据结构成绩,
总成绩,
平均成绩,
}stu[50],/*定义一个学生的所有属性*/
//定义全局变量
IntI,j,
Intcount等于0,
(循环变量,数组下标变量)
//声明所有的函数.
voidmune(),//主菜单函数
voidinput(),//录入函数
voidinsert(),//插入函数
voiddel(),//删除函数
voiddelNo(),//按学生证号删除
voiddelName(),//按姓名删除
voidselect(),//查找函数
voidselectNo(),//按学生证号查找
voidselectName(),//按姓名查找
voidsort(),//冒泡排序函数
voiddisplay(),//制表格式函数
voidtotal(),//分类合计函数
voidse(),//保存函数
voidload(),//读取函数
//主函数入口/*主菜单界面*/
voidmain()
{
intin,//选择功能的变量
charch等于'y',//选择是否继续时的变量,(y/n)
do
{
mune(),//主菜单
scanf("%d",&,in),
if(in<,0||in>,9)
{
出错
continue,
}
elseif(in等于等于0){
退出程序
}
switch(in)
{
case1:
录入
case2:
插入
case3:
删除
case4:
查找
case5:
制表浏览
case6:
排序
case7:
分类合计
case8:
保存
case9:
读取
default:
break,
}
}while(1),
}
定义所有函数
选择0退出程序
选择1调用录入函数(voidinput()),开始输入学生信息数据
选择2调用插入函数(voidinsert()),开始插入数据
选择3调用删除函数(voiddel()),进入子菜单
继续选择
选择1:调用删除函数(voiddelNO()),按学生证号删除学员信息
选择2:调用删除函数(voiddelName()),按学生姓名删除学员信息
选择3:返回主菜单
选择4调用查找函数(voidselect()),进入子菜单
继续选择
选择1:调用查找函数(voidselectNO()),按学生证号查找学员信息
选择2:调用查找函数(voidselectName()),按学生姓名查找学员信息
选择3:返回主菜单
选择5调用浏览函数,(voiddisplay()),以表格形式输出未经排序的所有学生信息数据
选择6调用排序函数(voidsort()),以表格形式输出经过排序后的所有学生信息数据(按平均分)
选择7调用合计函数(voidtotal()),统计3门学科的成绩总分和平均分
选择8调用存储函数(voidse()),将数据存储到指定文件下
选择9调用读取函数(voidload()),提取指定文件下的数据
六、测试分析
按照附录中的测试数据,得出如下测试,分析结果:
****************************************
|学生成绩系统主菜单界面|
|1.录入学生成绩6.排序学生成绩|
|2.插入学生成绩7.合计学生成绩|
|3.删除学生成绩8.存储学生成绩|
|4.查找学生成绩9.读取学生成绩|
|5.浏览学生成绩0.安全退出系统|
|--------------->,学生成绩管理程序<,----------------|
****************************************
请在0~9之间选择:
录入学生成绩.
(选择y或者Y继续输入)
(选择Y或者y继续输入)
-----------------请输入学员信息---------------------------------
学生证号:(输入长度在4位以内的数字)1
姓名:(输入一个字符串)oo
微机原理(成绩):(输入一个0~100的数字)80
离散数学(成绩):(输入一个0~100的数字)80
数据结构(成绩):(输入一个0~100的数字)80
总成绩:240
平均成绩:80.000000
是否继续输入(y/n)n(选择Y或者y继续输入)
插入学生成绩.
(选择Y或者y继续插入)
-------------------请输入要插入的学员信息--- 5;-------------
学生证号:(输入长度在4位以内的数字)2
姓名:(输入一个字符串)we
微机原理(成绩):(输入一个0~100的数字)87
离散数学(成绩):(输入一个0~100的数字)87
数据结构(成绩):(输入一个0~100的数字)87
总成绩:261
平均成绩:87.000000
是否继续输入(y/n),(选择y或者Y继续插入)
删除学生成绩
************************
|1.按学生证号删除|
|2.学生按姓名删除|
|3.返回上一级菜单|
************************
请在1~3之间选择:
如果还没有输入信息,即学生人数为0时,提示"没有数据"
1).按学生证号删除(选择1)
(按Y或者y确认删除,确认后删除成功)
-------------------请输入要删除的学员的学生证号------------------
输入:1
学号姓名微机离散数构总分平均
1oo80808024080
确定要删除吗(y/n)(选择y或者Y删除)
删除成功!
2).按学生姓名删除(选择2)
(按Y或者y确认删除,确认后删除成功)
-------------------请输入要删除的学员的姓名------------------
输入:oo
学号姓名微机离散数构总分平均
1oo80808024080
确定要删除吗(y/n)(选择y或者Y删除)
删除成功!
查找学生成绩
************************
|1.按学生证号查找|
|2.学生按姓名查找|
|3.返回上一级菜单|
************************
请在1~3之间选择:
如果还没有输入信息,即学生人数为0时,提示"没有数据
1).按学生证号查找(选择1)
-------------------请输入要查找的学员的学生证号------------------
输入:1
学号姓名微机离散数构总分平均
1oo80808024080
2).按学生姓名查找
-------------------请输入要查找的学员的姓名------------------
输入:oo
学号姓名微机离散数构总分平均
1oo80808024080
浏览学生成绩
学号姓名微机离散数构总分平均
1oo80808024080
2we87878726187
3朱威86798424983
6.排序学生成绩:
学号姓名微机离散数构总分平均
2we87878726187
3朱威86798424983
1oo80808024080
合计学生成绩
微机原理离散数学数据结构
808080
878787
867984
合计:253246251
平均分:84.082.083.0
8.存储学生成绩
数据成功保存到程序下的student.txt文件中!
9.读取学生成绩
安全退出系统
确定要退出程序吗(y/n)(选择Y或者y退出)
谢谢您的使用,再见!Pressanykeytocontinue_
七、使用说明
运行程序,首先出现主界面.主界面包括10个选项:
选项一:录入学生成绩,选择该项可进行学生学号,姓名,3门学科成绩的输入,并得到总成绩及平均成绩,
选项二:插入学生成绩,选择该项可进行对漏点的学员补充录入,
选项三:删除学生成绩,选择该项弹出子菜单用户可根据输入的学生证号或者学生姓名删除学生信息,
选项四:查找学生成绩,选择该项项弹出子菜单用户可根据输入的学生证号或者学生姓名查找学生信
选项五:浏览学生成绩,选择该项可以表格的形式(非排序)浏览所有学员的信息
选项六:排序学生成绩,选择该项可以表格的形式排序(以平均成绩从高到低)输出所有学员的信息,
选项七:合计学生成绩,选择该项统计各学科成绩,总成绩及平均成绩
选项八:存储学生成绩,保存当前数据到指定文件下
选项零:安全退出系统,选择该项将退出程序
注意:运行程序后首先必须进行先选择1.录入学生成绩/2.插入学生成绩,否则系统将无法正常使用.(提示没有数据)
八.附录:测试数据
学生成绩表
学生证号姓名微机原理离散数学数据结构平均成绩1oo808080802we878787873朱威86798483