资源简介
线性表的基本操作-学生信息管理
实验要求:定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表,使其具有如下功能:
(1) 根据指定学生个数,逐个输入学生信息;
(2) 逐个显示学生表中所有学生的相关信息;
(3) 根据姓名进行查找,返回此学生的学号和成绩;
(4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩);
(5) 给定一个学生信息,插入到表中指定的位置;
(6) 删除指定位置的学生记录;
(7) 统计表中学生个数。
代码片段和文件信息
/*
* 一个简单的学生信息处理程序
* 311609000436 计算机一班 刘雨明
*/
#include
#include
#include
#include
#include
#include
#include
using std::cin;
using std::cout;
using std::endl;
using std::ofstream;
using std::string;
struct StuData //学生信息
{
string stuID; //学生学号
string stuName; //学生姓名
double stuScore; //学生成绩
};
class linkList
{
public:
linkList( ) { } //构造函数,对成员变量初始化
linkList(StuData info linkList *previous linkList *next)
: stuInfo(info) previouslink(previous) nextlink(next)
{ }
linkList *getPreviouslink( ) //取值
{
return previouslink;
}
linkList *getNextlink( )
{
return nextlink;
}
StuData &getData( )
{
return stuInfo;
}
void setPreviouslink(linkList *pointer) //赋值
{
previouslink = pointer;
}
void setNextlink(linkList *pointer)
{
nextlink = pointer;
}
private:
StuData stuInfo; //学生信息
linkList *previouslink; //指向前节点
linkList *nextlink; //指向后节点
};
typedef linkList* linkPtr;
void welcome(unsigned &choose);
/* 功能:在控制台输出欢迎界面
* 参数:choose的引用
* 返回值:无
*/
void headInsert(linkPtr &head StuData &info);
/*
* 功能:在链表头部插入节点
* 参数:head:链表头节点的引用 info:需要插入学生信息
* 返回值:无
*/
void insert(linkPtr &head StuData &info int order);
/*
* 功能:在指定的位置插入学生信息
* 参数:head:链表头节点的引用 info:需要插入的学生信息 order: 插入到链表中的位置】
* 返回值: 无
*/
void add(linkPtr &head StuData &info);
/*
* 功能:(在尾部)增加学生信息
* 参数:head:链表头节点的引用 info: 需要增加的学生信息
* 返回值: 无
*/
linkPtr search(linkPtr &head string &target);
/*
* 功能:对于输入的ID/Name 遍历查找各数据元素中是否存在相应的数据项
* 参数:head:链表头节点的引用 target: 需要查找的ID/Name
* 返回值:如果存在对应的匹配,返回其所在的节点指针,否则返回NULL
*/
bool isContain(const linkPtr &head const string &target);
/*
* 功能:判断输入的ID是否已经存在,增强健壮性
* 参数:head:链表头节点的指针的引用 target:输入的学号
* 返回值:若已经存在相应的学号,返回true 否则返回false
*/
void deleteNode(linkPtr &head linkPtr &discard);
/*
* 功能:删除指定的数据项
* 参数:head:链表头节点指针的引用 discard: 需要删除的数据项的指针的引用
* 返回值:无
*/
void print(linkPtr p char type=‘o‘);
/*
* 功能:打印单个或所有信息
* 参数:p: 指向某个数据项 type: 打印类型,默认输出一个数据元素,为‘a‘时
* 表示输出p后所有数据项
*/
void save(linkPtr &head ofstream &allStuData);
/*
* 功能:将输入的所有数据项保存到文件中
* 参数:head: 链表头节点指针的引用 allStuData: 文件输出流,保存到其指向的文件
* 返回值:无
*/
int main(void)
{
linkPtr head = NULL;
StuData info;
unsigned choose;
while (true)
{
fflush(stdin);
system(“color 2F“);
char ans = ‘y‘;
welcome(choose);
switch (choose)
{
case 1:
{
system(“color 8F“);
while (ans == ‘y‘)
{
printf(“Please enter data:\n“);
printf(“ID: “);
cin >> info.stuID;
printf(“Name: “);
getchar();
getline(cin info.stuName);
printf(“Score: “);
cin >> info.stuScore;
add(head info);
fflush(stdin);
printf(“Continue![y]: “);
ans = getchar( );
if (ans==‘\n‘)
{
ans = ‘y‘;
}
system(“cls“);
}
break;
}
case 2:
{
system(“color 6F“);
string ID_Name;
linkPtr locate;
while (ans == ‘y‘)
{
printf(“Please give the stu
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7752 2017-10-20 07:02 SqList.c
文件 10135 2017-10-29 11:56 li
- 上一篇:springboot PPT分享
- 下一篇:模为十的计数器(verilog HDL)
相关资源
- c编写的数据结构创建顺序表、链表、
- 数据结构员工管理系统
- 链表实现学生管理
- 链表实现学生表的增删查改
- 实现两个有序单链表的合并
- 链表实现长整数相加减
- 2-路归并排序,写一个算法在链表结构
- 易语言链表操作类源码
- 将非递减有序的单链表中值相同的多
- 给定一个不带头结点的单链表,写出
- 实验2 用链表实现学生健康情况管理系
- 小商品管理系统
- 航班查询系统
- 用链表做的的商品管理系统
- 数据结构双向链表学生成绩管理系统
- 数据结构课程设计城市链表
- 双向循环链表-仿学生管理系统
- 链表初级学习范例(实现大数阶乘)
- 学生信息管理系统结构体数组+链表版
- 异质链表实现
- 实现循环单链表的各种基本运算的算
- 链表实现学生健康管理
- 链表习题答案
- 用链表与文件实现一个简单的学生成
- 1、 掌握图的结构特征以及四种存储结
- 操作系统实验——基于时间片轮转法
- 基于QT的相册制作
评论
共有 条评论