資源簡介
線性表的基本操作-學生信息管理
實驗要求:定義一個包含學生信息(學號,姓名,成績)的順序表和鏈表,使其具有如下功能:
(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)
評論
共有 條評論