高级语言程序设计
设计报告
题 目 学生信息管理系统
班 级 xxxxxxxxxx
姓 名 xxx
学 号 xxxxxxxxxxxx
完成日期 2022 年 5 月 3 0 日
信息工程学院
1
一、需求分析
1. 输入:用户要输入学生的总人数n,程序就会创建链表录入这n名同学的信息,包
括学号(int型)、姓名(字符型)、性别(字符型)、出生日期(字符型)、语文成绩
(int型)、英语成绩(int型)、数学成绩(int型)。
2. 输出:用户通过选择让程序执行相应的功能(共8个)。
3. 本学生信息管理系统能实现的功能:
(1)录入学生信息; (2)计算学生平均分; (3)按成绩平均分从高到低输出学生信息;(4)
按学生姓名的字典顺序输出学生基本信息;(5)按姓名查找学生信息;(6) 对每门课程分别
统计每个类别的人数以及所占的百分比。(7)增加新的学生信息且和已有学号不重复;
(8)按学号删除学生信息。
4. 测试的数据:
规定学生人数n=8;
第一个学生:学号:420 姓名:xiaoli 性别:女 出生日期: 20020109
语数英三科成绩:100 90 82
第二个学生:学号:421 姓名:lili 性别:女 出生日期:20010915
语数英三科成绩: 89 91 90
第三个学生:学号:422 姓名:jianghua 性别:男 出生日期:20011118
语数英三科成绩:96 88 94
第四个学生:学号:423 姓名:chunchun 性别:女 出生日期:20010113
语数英三科成绩:96 95 97
第五个学生:学号:424 姓名:liuchang 性别:男 出生日期:20020523
语数英三科成绩:81 86 78
第六个学生:学号:425 姓名:zhangyou 性别:男 出生日期:20020617
语数英三科成绩:50 57 63
第七个学生:学号:426 姓名:aza 性别:女 出生日期:20011213
语数英三科成绩:67 71 72
第八个学生:学号:427 姓名:luyu 性别:男 出生日期:20020606
语数英三科成绩:70 71 76
二、概要设计
2
为实现上述程序功能,我们可以用链表来实现。
1. 链表的抽象数据类型定义为:
ADT List
{
数据对象:D= {ai|aiGElemSet,i=1,2,...,n, n>= 0}
数据关系: Rl={〈ai-1,ai〉|ai-1,aiGD,i=2,...,n}
基本操作:
CreatList(&s)
操作结果:创建链表。
InsertList(&s)
操作结果:插入节点。
TraverseList(LinkList L)
操作结果:遍历链表。
DeleteLinkList(&s)
操作结果:删除节点
}ADT Stack
2.本程序包含四个模块
1)主程序模块
int main() {
功能菜单;
用户可任意选择这些功能;
return 0;
}
2)增加和删除学生信息模块
int addinformation(LinkList &L,int n){ }
int deletebyID(LinkList &L){ }
3)其他各大功能模块
void luruList(LinkList &L, int n);//1.录入学生信息(即创建链表)
void average(LinkList L); //2.计算学生平均分
int avgSort(LinkList L); //3.按成绩平均分从高到低输出学生信息
3
int dic_out(LinkList L); //4.按学生姓名的字典顺序输出学生基本信息
int findbyname(LinkList &L); //5.按姓名查找学生信息
int percentage(LinkList L); //6.对每门课程分别统计每个类别的人数以及所占的
百分比
int shuchuList(LinkList L); //输出学生信息(即输出链表)
LNode *LocateNum(LinkList L, int num); //查找学生信息
4)头文件模块
包含预处理,常量定义,类型定义,函数声明
各模块之间的调用关系如下:
图1 模块调用关系图
三、详细设计
1. //--------在头文件里进行类型定义------(学生的相关信息)
typedef struct LNode
{
char name[Max]; //学生姓名
int ID; //学生学号
char data[Max]; //学生出生日期
char sex[Max]; //学生性别
float score1; //学生数学成绩
- 1
- 2
- 3
前往页