資源簡(jiǎn)介
線性表的基本操作-學(xué)生信息管理
實(shí)驗(yàn)要求:定義一個(gè)包含學(xué)生信息(學(xué)號(hào),姓名,成績(jī))的順序表和鏈表,使其具有如下功能:
(1) 根據(jù)指定學(xué)生個(gè)數(shù),逐個(gè)輸入學(xué)生信息;
(2) 逐個(gè)顯示學(xué)生表中所有學(xué)生的相關(guān)信息;
(3) 根據(jù)姓名進(jìn)行查找,返回此學(xué)生的學(xué)號(hào)和成績(jī);
(4) 根據(jù)指定的位置可返回相應(yīng)的學(xué)生信息(學(xué)號(hào),姓名,成績(jī));
(5) 給定一個(gè)學(xué)生信息,插入到表中指定的位置;
(6) 刪除指定位置的學(xué)生記錄;
(7) 統(tǒng)計(jì)表中學(xué)生個(gè)數(shù)。

代碼片段和文件信息
/*
?*?一個(gè)簡(jiǎn)單的學(xué)生信息處理程序
?*?311609000436???計(jì)算機(jī)一班?劉雨明
?*/
#include?
#include?
#include?
#include?
#include?
#include?
#include?
using?std::cin;
using?std::cout;
using?std::endl;
using?std::ofstream;
using?std::string;
struct?StuData //學(xué)生信息
{
string?stuID; //學(xué)生學(xué)號(hào)
string?stuName; //學(xué)生姓名
double?stuScore; //學(xué)生成績(jī)
};
class?linkList
{
public:
linkList(?)??{?} //構(gòu)造函數(shù),對(duì)成員變量初始化
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; //學(xué)生信息?
linkList?*previouslink; //指向前節(jié)點(diǎn)?
linkList?*nextlink; //指向后節(jié)點(diǎn)?
};
typedef?linkList*?linkPtr;
void?welcome(unsigned?&choose);
/*?功能:在控制臺(tái)輸出歡迎界面
?*?參數(shù):choose的引用
?*?返回值:無(wú)
?*/
void?headInsert(linkPtr?&head?StuData?&info);
/*
?*?功能:在鏈表頭部插入節(jié)點(diǎn)
?*?參數(shù):head:鏈表頭節(jié)點(diǎn)的引用??info:需要插入學(xué)生信息
?*?返回值:無(wú)
?*/
void?insert(linkPtr?&head?StuData?&info?int?order);
/*
?*?功能:在指定的位置插入學(xué)生信息
?*?參數(shù):head:鏈表頭節(jié)點(diǎn)的引用???info:需要插入的學(xué)生信息???order:?插入到鏈表中的位置】
?*?返回值:?無(wú)
?*/
void?add(linkPtr?&head?StuData?&info);
/*?
?*?功能:(在尾部)增加學(xué)生信息
?*?參數(shù):head:鏈表頭節(jié)點(diǎn)的引用??info:?需要增加的學(xué)生信息
?*?返回值:?無(wú)
?*/
linkPtr?search(linkPtr?&head?string?&target);
/*
?*?功能:對(duì)于輸入的ID/Name?遍歷查找各數(shù)據(jù)元素中是否存在相應(yīng)的數(shù)據(jù)項(xiàng)
?*?參數(shù):head:鏈表頭節(jié)點(diǎn)的引用????target:?需要查找的ID/Name
?*?返回值:如果存在對(duì)應(yīng)的匹配,返回其所在的節(jié)點(diǎn)指針,否則返回NULL
?*/
bool?isContain(const?linkPtr?&head?const?string?&target);
/*
?*?功能:判斷輸入的ID是否已經(jīng)存在,增強(qiáng)健壯性
?*?參數(shù):head:鏈表頭節(jié)點(diǎn)的指針的引用???target:輸入的學(xué)號(hào)
?*?返回值:若已經(jīng)存在相應(yīng)的學(xué)號(hào),返回true?否則返回false
?*/
void?deleteNode(linkPtr?&head?linkPtr?&discard);
/*
?*?功能:刪除指定的數(shù)據(jù)項(xiàng)
?*?參數(shù):head:鏈表頭節(jié)點(diǎn)指針的引用??discard:?需要?jiǎng)h除的數(shù)據(jù)項(xiàng)的指針的引用
?*?返回值:無(wú)
?*/
void?print(linkPtr?p?char?type=‘o‘);
/*
?*?功能:打印單個(gè)或所有信息
?*?參數(shù):p:?指向某個(gè)數(shù)據(jù)項(xiàng)???type:?打印類型,默認(rèn)輸出一個(gè)數(shù)據(jù)元素,為‘a(chǎn)‘時(shí)
?*????????表示輸出p后所有數(shù)據(jù)項(xiàng)
?*/
void?save(linkPtr?&head?ofstream?&allStuData);
/*
?*?功能:將輸入的所有數(shù)據(jù)項(xiàng)保存到文件中
?*?參數(shù):head:?鏈表頭節(jié)點(diǎn)指針的引用????allStuData:?文件輸出流,保存到其指向的文件
?*?返回值:無(wú)
?*/
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
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????7752??2017-10-20?07:02??SqList.c
?????文件???????10135??2017-10-29?11:56??li
評(píng)論
共有 條評(píng)論