最新数据结构学生成绩管理系统Word格式.docx
- 文档编号:14308708
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:46
- 大小:298.11KB
最新数据结构学生成绩管理系统Word格式.docx
《最新数据结构学生成绩管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《最新数据结构学生成绩管理系统Word格式.docx(46页珍藏版)》请在冰豆网上搜索。
学生姓名_
指导教师__________
1系统分析
1.1系统性能分析
1、操作界面美观、友好,有必要的容错处理(如:
能判定学号位数和只能由0~9数字字符组成、能判定合理的成绩0~100等);
2、查询应根据查询条件合理选择先进的查询方法
3、排序算法要求采用堆排序实现;
4、分数段统计结果要求保存在单独的文件中;
1.2系统功能需求分析
本系统应具有以下功能:
1、提供身份验证,和使用系统的权限设置、判定。
2、(教师用户)能实现本班同学各学期各科成绩的录入、编辑,数据必须保存在文件中,以便反复使用。
3、(学生用户)提供对学号或姓名,各学科成绩的查询。
4、(学生和教师用户)能按各学期、各学科分数排序输出(每一科都要能排序输出)。
5、(教师用户)能统计各科成绩分数段的分布(60以下、60~70、70~80、80~90、90~100)情况,并输出。
1.3数据分析
1.3.1.问题分析和任务定义:
根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?
(而不是怎么做?
)限制条件是什么?
1.3.2.逻辑设计:
对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。
逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图;
1.3.3.详细设计:
定义相应的存储结构并写出各函数的伪码算法。
在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。
详细设计的结果是对数据结构和基本操作作出进一步的求精,写出数据存储结构的类型定义,写出函数形式的算法框架;
1.3.4.程序编码:
把详细设计的结果进一步求精为程序设计语言程序。
同时加入一些注解和断言,使程序中逻辑概念清楚;
1.3.5.程序调试与测试:
采用自底向上,分模块进行,即先调试低层函数。
能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。
调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果;
2系统设计
2.1总体设计
按系统分析的功能要求将系统划分为以下几个主要功能模块:
1---学生记录录入
2---学生成绩查询:
按学号查询、按姓名查询
3---删除记录
4---排序
5---修改数据
6---显示全部学生记录
7---统计
8---更换用户
9---保存记录
0---退出系统
2.2详细设计
2.2.1界面设计
1、菜单设计
菜单主要有学生成绩录入、成绩查询、成绩排序、更换用户……设计时主要采用switch-case这个结构,从而选择调用相应的函数。
子菜单也是利用这个原理方法设计的
2、信息显示界面的设计
信息显示主要用了for(;
;
)循环,输出信息,并设置好输出格式,运行时如下:
2.2.2各功能模块的设计
主函数主要作用是控制调用其它函数协调工作。
其流程图如下:
查询窗口
排序窗口
按总分排序
修改窗口
删除窗口
统计窗口
统计结果
2.2.2系统编码设计
3.1预处理命令及结构体类型的声明
#include"
stdio.h"
stdlib.h"
string.h"
windows.h"
#defineM100
3.2main函数
voidmain()
{
welcome();
IO_ReadInfo();
Login();
}
3.3程序代码
voidLogin();
/*<
<
***定义学生结构体***>
>
*/
typedefstructstu{
charStuID[12];
charStudName[12];
floatScore[5];
floatAv;
floatSum;
inttag;
}Stud;
Studstud[M];
intnum=0;
***计算总分***>
*/
floatsum(Studstud)
intj;
floatsum=0;
for(j=0;
j<
5;
j++)
{
sum+=stud.Score[j];
}
returnsum;
***通过学号返回数组下标***>
intStudent_SearchByIndex(charid[])
{
inti;
for(i=0;
i<
num;
i++)
{
if(strcmp(stud[i].StuID,id)==0)
{returni;
}
}
return-1;
***通过姓名返回数组下标***>
intStudent_SearchByName(charname[])
if(strcmp(stud[i].StudName,name)==0)
return-1;
***解决学号冲突***>
intConflictID(Studstud[],intn,charID[])
for(i=0;
i++)
if(i!
=n)
if(strcmp(stud[i].StuID,ID)==0)
{
returnTRUE;
break;
}
if(i==num)
{returnFALSE;
***显示单条学生记录***>
voidStudent_DisplaySingle(intindex)
printf("
\n*◆◆◆◆◆◆◆◆◆◆◆◆学生成绩单◆◆◆◆◆◆◆◆◆◆*\n"
);
\t\t姓名:
%s>
\t学号:
"
stud[index].StudName,stud[index].StuID);
\n\t\t计算机操作系统:
%.2f>
(&
stud[index])->
Score[0]);
\n\t\t大学英语:
Score[1]);
\n\t\t基础会计:
Score[2]);
\n\t\t数据结构:
Score[3]);
\n\t\tJava语言设计:
Score[4]);
\n\t\t总分:
Sum);
\n\t\t平均分:
\n\n\n"
Av);
***显示学生信息***>
voidStudent_Display()
\n%-4s%s\t%-8s%-10s%-10s%-10s%-10s%-10s%-9s\n"
"
编号"
学号"
姓名"
操作系统"
大学英语"
会计基础"
数据结构"
Java设计"
总分"
-------------------------------------------------------------------------------\n"
%-4d%s\t%-8s%-10.2f%-10.2f%-10.2f%-10.2f%-10.2f%-9.1f\n"
i+1,(&
stud[i])->
StuID,(&
StudName,(&
Score[0],(&
Score[1],(&
Score[2],(&
Score[3],(&
Score[4],(&
***插入学生信息***>
voidStudent_Insert()
charc;
\n"
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n\n\n"
while
(1)
printf("
请输入学号:
scanf("
%s"
&
stud[num].StuID);
while(ConflictID(stud,num,stud[num].StuID))
getchar();
学号已经存在\2\n请重新输入学号:
"
scanf("
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 数据结构 学生 成绩管理系统