• 大小: 6KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: 其他
  • 标签: 链表  

资源简介

线性表的基本操作-学生信息管理 实验要求:定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表,使其具有如下功能: (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  linkList.cpp

评论

共有 条评论