赞
踩
注:实验用书为 数据结构 C语言版 第2版,人民邮电出版社出版。
实验题目:学生管理系统的设计与实现
实验环境:Visual C++ 6.0或其他C++环境
一、实验目的
1、掌握线性表的定义;
2、掌握线性表的基本操作,如建立、查找、插入和删除等。
二、实验内容
定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表,使其具有如下功能:
1、根据指定学生个数,逐个输入学生信息;
2、逐个显示学生表中所有学生的相关信息;
3、根据姓名进行查找,返回此学生的学号和成绩;
4、根据指定的位置可返回相应的信息(学号,姓名,成绩);
5、给定一个学生信息,插入到表中指定的位置;
6、删除指定位置的学生记录;
7、统计表中学生个数。
三、实验提示
1、学生信息的定义
typedef struct {
char no[8]; //8位学号
char name[20]; //姓名
int price; //成绩
}Student;
2、顺序表的定义
typedef struct {
Student *elem; //指向数据元素的基地址
int length; //线性表的当前长度
}SqList;
3、链表的定义
typedef struct LNode{
Student data; //数据域
struct LNode *next; //指针域
}LNode,*LinkList;
四、代码
顺序表方法:
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <cmath>
#include <cstdlib>
using namespace std;
#define MAXSIZE 100//假设的表的最大长度;
typedef struct{
char no[8]; //8位学号
char name[20]; //姓名
int price; //成绩
}Student,ElemType;
typedef struct {
Student *elem=NULL; //指向数据元素的基地址
int length; //线性表的当前长度
}SqList;
SqList L;//声明一个数据表
void InitList()
{
//构造一个空的顺序表
L.elem=new ElemType[MAXSIZE];
if(!L.elem) exit(0);//存储分配失败退出
L.length=0;
}
int menu_select()//选择菜单函数
{
char s[3];
int c;
printf("\n ***************主菜单**************\n");
printf(" * 1. 录入新记录 *\n");
printf(" * 2. 浏览显示所有记录 *\n");
printf(" * 3. 按姓名查询记录并显示 *\n");
printf(" * 4. 按编号查询记录并显示 *\n");
printf(" * 5. 插入记录 *\n");
printf(" * 6. 删除记录 *\n");
printf(" * 7. 统计记录 *\n");
printf(" * 8. 退出 *\n");
printf(" ***********************************\n\n");
do
{
printf(" 请选择操作(1-8):");
scanf("%s",s);
c=atoi(s);
}while(c<0||c>8); /*选择项不在~8之间重输*/
return(c); /*返回选择项,主程序根据该数调用相应的函数*/
}
/*数据表取值*/
void Create()
{
//新建学生数据
int n;
cout<<"根据指定学生个数,逐个输入学生信息:"<<endl;
cout<<"学生个数n=";
cin>>n;
if(n<1||L.length+n>MAXSIZE){
cout<<"创建失败"<<endl;
return ;
}
for(int i=0;i<n;i++)//逐个添加数据
{
cout<<"第"<<i+1<<"个学生数据"<<endl<<"姓名:";
cin>>L.elem[L.length].name;
cout<<"学号:";
cin>>L.elem[L.length].no;
cout<<"成绩:";
cin>>L.elem[L.length].price;
L.length++;//每创建成功一个,则更新一次数量
}
cout<<"***操作成功***"<<endl;
}
void ShowAllDate()
{
if(L.length<1)
{
cout<<endl<<" 很遗憾,空表中没有任何记录可供显示!"<<endl;
return ;
}
cout<<"************ STUDENT ************"<<endl;
cout<<" 编号 姓名 学号 成绩"<<endl;
cout<<"---------------------------------"<<endl;
for(int i=0;i<L.length;i++)
{
cout<<" "<<i+1<<" "<<L.elem[i].name<<" "<<L.elem[i].no<<" "<<L.elem[i].price<<endl
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。