1.需求分析
【实验目的】
通过这个实验的算法设计,可以巩固所学的有关各种排序与选择的基本知识,学会比较各种排序与选择算法的优劣,学会针对所给问题选用最适合的算法,掌握利用常用的排序与选择算法的思想来解决一般问题的方法和技巧。
【基本要求】
设计一个学生信息管理系统,学生对象至少要包含:学号、姓名、性别、成绩1、成绩2、总成绩等信息。要求实现以下功能:
1.总成绩要求自动计算;
2.查询;分别给学生学号、姓名、性别能够查找到学生的基本信息;
3.排序:分别按学生的学号、成绩1、成绩2、总成绩进行排序。
2.算法设计
1)为了实现上述程序功能,需要定义单链表的抽象数据类型:
定义每个记录(数据元素)的结构 RecordType
学号 int S_num
姓名 string S_name
性别 string S_cass
成绩1 int S_age1
成绩2 int S_age2
总分 int S_age3
定义顺序表的结构 SqList
存储顺序表的向量 RecordType r[ MAXSIZE +1 ]
顺序表的长度 int length
2)本程序用到的主要函数:
void CreatList(SqList &ST)//创建学生的相关信息
void Traverse(SqList &ST)//遍历
void Insert_ONum(SqList &ST)//按学号插入排序
void Chose_OName(SqList &ST)//按姓名选择排序
void Search_Num(SqList &ST,int m,int symble)//查询信息
3.调试分析
刚开始那个查找是用的二个函数,感觉太复杂乱了。后来就用一个变量和if语句就把它们放到一个函数里去了。感觉这样看上去清楚多了。
4.经验收获和体会
这一次编程让我学到了另外一种格式,就是反覆用switch函数,这样可以很清楚地看到我们所要做的操作,同时也可以重复执行程序。这样就减少了很多麻烦。比如说以前一下小心输入错了还在重新从头来过,现在哪里错了就在哪里重来就好了。
5.测试数据及结果
输入3个学生信息
第1个学生学号01 姓名 张三 性别 男 成绩1 85 成绩2 81
第2个学生学号02 姓名 李四 性别 男 成绩1 78 成绩2 84
第3个学生学号03 姓名 王五 性别 女 成绩1 78 成绩2 98
6.附录
#include "iostream"
#include
#include
using namespace std;
# define MAXSIZE 100 //设记录不超过20个
typedef struct //定义每个记录(数据元素)的结构
{
int S_num; // 学号
string S_name;//姓名
string S_cass;//性别
int S_age1;//成绩1
int S_age2;//成绩2
int S_age3;//总分
}RecordType;
typedef struct //定义顺序表的结构
{
RecordType r[ MAXSIZE +1 ]; //存储顺序表的向量
int length ; //顺序表的长度
}SqList;
void CreatList(SqList &ST)//创建学生的相关信息
{
cout<<"输入学生个数"< cin>>ST.length;
for(int i=0;i {
cout<<"输入第"< cout<<"学号"< cin>>ST.r[i].S_num;
cout<<"姓名"< cin>>ST.r[i].S_name;
cout<<"性别"< cin>>ST.r[i].S_cass;
cout<<"成绩1"< cin>>ST.r[i].S_age1;
cout<<"成绩2"< cin>>ST.r[i].S_age2;
ST.r[i].S_age3=ST.r[i].S_age1+ST.r[i].S_age2;
&nb
学生信息管理(一)由毕业论文网(www.huoyuandh.com)会员上传。