欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++實(shí)現(xiàn)歌手比賽評(píng)分系統(tǒng)

 更新時(shí)間:2022年03月17日 10:16:33   作者:m0_62236835  
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)歌手比賽評(píng)分系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C++實(shí)現(xiàn)歌手比賽評(píng)分系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

(一) 需求和規(guī)格說(shuō)明

對(duì)一次歌手比賽的成績(jī)進(jìn)行管理,功能要求:

1、輸入每個(gè)選手的數(shù)據(jù)包括編號(hào)、姓名、十個(gè)評(píng)委的成績(jī),根據(jù)輸入計(jì)算

出總成績(jī)和平均成績(jī)(去掉最高分,去掉最低分)。

2、顯示主菜單如下:

1)輸入選手?jǐn)?shù)據(jù)

2)評(píng)委打分

3)成績(jī)排序(按平均分)

4)數(shù)據(jù)查詢

5)追加選手?jǐn)?shù)據(jù)

6)寫入數(shù)據(jù)文件

7)退出系統(tǒng)。

(二) 設(shè)計(jì)

根據(jù)上述需求,運(yùn)用鏈表存儲(chǔ)歌手的數(shù)據(jù),

1.數(shù)據(jù)的生成

歌手比賽選手首先我們需要歌手的基本信息,將每一位用戶的編號(hào)、姓名輸入系統(tǒng)中,然后進(jìn)行評(píng)委打分,之后我們對(duì)數(shù)據(jù)進(jìn)行處理分析,計(jì)算出總分和平均值,并以.txt文件的格式儲(chǔ)存起來(lái)。

2.數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)

考慮到一個(gè)宿舍的人員是有限的,所以可以用鏈表進(jìn)行存儲(chǔ)。宿舍的人員設(shè)計(jì)為結(jié)構(gòu)體變量:

struct singer{undefined

long lNum;
char name[20];
float fScore[10];
float sum1, sum2, max, min, average;
struct singer *pNext;

};

其中包含選手編號(hào)、姓名、評(píng)委打分、總分(去除最高分和最低分)、最高分?jǐn)?shù)、最低分?jǐn)?shù)和平均分。然后我們?cè)谥骱瘮?shù)當(dāng)中定義一個(gè)結(jié)構(gòu)指針struct singer *spHead,作為鏈表的頭結(jié)點(diǎn),然后依次創(chuàng)建下一個(gè)結(jié)構(gòu)體對(duì)他們進(jìn)行遍歷輸入存儲(chǔ)。

3.功能的設(shè)計(jì)

函數(shù)功能的介紹

接收選手?jǐn)?shù)據(jù) :struct singer *CreatLiList(void);

評(píng)委打分:void score(struct singer *);

遍歷輸出數(shù)歌手?jǐn)?shù)據(jù):void TraverLiList(struct singer *);

追加選手?jǐn)?shù)據(jù):int AppendNode(struct singer *,long , char *, float*);

刪除數(shù)據(jù):int DeleteNode(struct singer *,long);

搜索數(shù)據(jù):int SearchNode(struct singer *,long );

退出系統(tǒng),刪除鏈表數(shù)據(jù):struct singer *ReleaseLiList(struct singer *);

鏈表數(shù)據(jù)根據(jù)平均分排序:struct singer* SortList(struct singer* );

將數(shù)據(jù)寫入文件:將數(shù)據(jù)寫入文件:void input(struct singer *);

(1)輸入選手?jǐn)?shù)據(jù)

用戶選擇功能1之后,我們對(duì)輸入的歌手的編號(hào)和姓名進(jìn)行統(tǒng)計(jì)存儲(chǔ),直到用戶輸入-1時(shí),我們默認(rèn)接受數(shù)據(jù)完畢,返回主程序功能頁(yè)面。

(2)評(píng)委打分

用戶選擇功能1之后,我們要根據(jù)用戶輸入的歌手的編號(hào)先對(duì)鏈表進(jìn)行查找,如果歌手編號(hào)輸入錯(cuò)誤,則提醒用戶重新輸入。找到該歌手之后,提醒用戶輸入的10評(píng)委的打分成績(jī),同時(shí)將他們存進(jìn)結(jié)構(gòu)體里面的數(shù)組,我們一邊接受一邊對(duì)成績(jī)進(jìn)行統(tǒng)計(jì),將總分最高分和最低分計(jì)算出來(lái),然后用總分減去最高分和最低分,然后除以8得到歌手的實(shí)際平均分?jǐn)?shù),這將作為我們下一步進(jìn)行排序的重要依據(jù)。

(3)成績(jī)排序(按平均分)

根據(jù)第二部統(tǒng)計(jì)出的平均分?jǐn)?shù),我們對(duì)鏈表數(shù)據(jù)進(jìn)行插入排序。

思路: 插入排序,顧名思義就是在兩個(gè)節(jié)點(diǎn)之間插入另一個(gè)節(jié)點(diǎn),并且保持序列是有序的。如果當(dāng)前要將節(jié)點(diǎn)cur插入到節(jié)點(diǎn)pre之后,我們只需要知道cur的前驅(qū)和插入位置(其實(shí)就是要插在哪個(gè)節(jié)點(diǎn)之后)就可以了。

(4)歌手?jǐn)?shù)據(jù)查詢

根據(jù)輸入編號(hào),對(duì)鏈表進(jìn)行遍歷循環(huán),直到找到相應(yīng)的歌手編號(hào),并對(duì)他的成績(jī)和個(gè)人信息進(jìn)行輸出。

(5)追加選手?jǐn)?shù)據(jù)

輸入待追加的選手編號(hào),我們將開辟在鏈表的最后開辟新的結(jié)構(gòu)體變量?jī)?nèi)存單元,并對(duì)選手的姓名和評(píng)分進(jìn)行錄入。

(6)寫入數(shù)據(jù)文件

  我們對(duì)歌手信息進(jìn)行接受整理和排序之后將歌手的信息存入桌面下的txt文件中例如:C:\\Users\\fengling\\Desktop\\歌手比賽打分?jǐn)?shù)據(jù)統(tǒng)計(jì).txt。這樣可以在桌面打開,然后查看歌手排序好的信息。

(7)遍歷顯示數(shù)據(jù)

考慮到對(duì)歌手的信息可能進(jìn)行多次的修改,我們要檢測(cè)程序運(yùn)行的準(zhǔn)確性。所以每一步操作之后,都可以選擇功能7,對(duì)選手?jǐn)?shù)據(jù)進(jìn)行遍歷輸出。

(8)刪除選手?jǐn)?shù)據(jù)

考慮到對(duì)歌手可能退賽并沒(méi)有參加比賽也沒(méi)有相應(yīng)的分?jǐn)?shù),所以我們可以從鏈表中刪除該選手的編號(hào)和姓名信息,達(dá)到節(jié)約內(nèi)存、方便顯示管理的目的。

(9)退出系統(tǒng)

退出系統(tǒng)時(shí)對(duì)鏈表內(nèi)存進(jìn)行釋放,然后結(jié)束退出程序循環(huán)。

代碼

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <fstream>
#include <string>
using namespace std;
?
struct singer{
?? ?long lNum;
?? ?char name[20];
?? ?float fScore[10];
?? ?float sum1, sum2, max, min, average;
?? ?struct singer *pNext;
};
?
const int SIZE = ?sizeof(struct singer);
?
//界面優(yōu)化
class Interface
{
private:
? ? int line;//操作數(shù)的行數(shù)
? ? string *name;
? ? static int nowline;
public:
? ? void GetMessage(int line1,string *name1)
? ? {
? ? ? ? line=line1;
? ? ? ? name=new string [line];
? ? ? ? name=name1;
? ? ? ??
? ? }
? ? static void AddNowLine()
? ? {
? ? ? ? nowline++;
? ? }
? ? void ShowHead()
? ? {
? ? ? ? ShowSpace();
? ? ? ? for(int i=0;i<50;i++)
? ? ? ? {
? ? ? ? ? ? if(i==0)
? ? ? ? ? ? ? ? cout<<"╔";
? ? ? ? ? ? else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if(i==49)
? ? ? ? ? ? ? ? ? ? cout<<"╗";
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? cout<<"═";
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? cout<<endl;
? ? ? ? AddNowLine();
? ? }
? ? void ShowSpace()
? ? {
? ? ? ? for(int x=0;x<12;x++)
? ? ? ? ? ? cout<<" ";
? ? }
? ? void ShowOrderLine(int x)
? ? {
? ? ? ? int *number=new int[line];
? ? ? ? for(int i=0,j=1;i<line;j++,i++)
? ? ? ? ? ? number[i]=j;
? ? ? ? int length;
? ? ? ? length=name[x].length();
?
? ? ? ? cout<<"║";
? ? ? ? cout<<number[x]<<'.';
? ? ? ? for(int temp=0;temp<46-length;temp++)//46-length==48-length-2
? ? ? ? ? ? cout<<"-";
? ? ? ? cout<<name[x];
? ? ? ? cout<<"║";
? ? }
? ? void ShowSpaceLine()
? ? {
? ? ? ? cout<<"║";
? ? ? ? for(int k=0;k<48;k++)
? ? ? ? ? ? cout<<" ";
? ? ? ? cout<<"║"<<endl;
? ? }
? ? void ShowEmptyLine()
? ? {
? ? ? ? if(nowline<14)
? ? ? ? {
? ? ? ? ? ? for(int i=nowline;i<=14;i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? ShowSpace();
? ? ? ? ? ? ? ? AddNowLine();
? ? ? ? ? ? ? ? ShowSpaceLine();
? ? ? ? ? ? ? ? AddNowLine();
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? void ShowBody()
? ? {
? ? ? ? for(int i=0,j=1;i<line;i++,j++)
? ? ? ? {
? ? ? ? ? ? ShowSpace();//前排的空格
? ? ? ? ? ? AddNowLine();
? ? ? ? ? ? ShowOrderLine(i);
?
? ? ? ? ? ? cout<<endl;
?
? ? ? ? ? ? ShowSpace();//前排的空格
? ? ? ? ? ? AddNowLine();
? ? ? ? ? ? ShowSpaceLine();
? ? ? ? }
?
? ? }
? ? void ShowReturn()
? ? {
? ? ? ? ShowSpace();
? ? ? ? AddNowLine();
? ? ? ? cout<<"║9.";
? ? ? ? for(int i=0;i<42;i++)
? ? ? ? ? ? cout<<"-";
? ? ? ? cout<<"退出║"<<endl;
? ? }
? ? void ShowEndLine()
? ? {
? ? ? ? ShowSpace();
? ? ? ? for(int i=0;i<50;i++)
? ? ? ? {
? ? ? ? ? ? if(i==0)
? ? ? ? ? ? ? ? cout<<"╚";
? ? ? ? ? ? else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if(i==49)
? ? ? ? ? ? ? ? ? ? cout<<"╝";
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? cout<<"═";
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? cout<<endl;
? ? ? ? AddNowLine();
? ? }
? ? void ShowSurface()
? ? {
? ? ? ? ShowHead();
? ? ? ? ShowBody();
? ? ? ? ShowEmptyLine();
? ? ? ? ShowReturn();
? ? ? ? ShowEndLine();
? ? }
};
?
int Interface::nowline=0;
?
//接收選手?jǐn)?shù)據(jù)?
struct singer *CreatLiList(void);
struct singer *CreatLiList(void)
{
?? ?struct singer *spHead,*spPre,*spCur;
?? ?long lv;
?? ?spPre = new struct singer;
?? ?//spPre ?= (struct singer *)malloc(SIZE);//頭結(jié)點(diǎn)
?? ?if (spPre == NULL){
?? ??? ?return NULL;
?? ?}
?? ?spHead = spPre;
?? ?spHead -> pNext = NULL;
?? ?
?? ?do{
?? ??? ?cout << "請(qǐng)輸入歌手編號(hào):";
?? ??? ?cin >> lv;
?? ??? ?if (lv != -1){
?? ??? ??? ?spCur = new struct singer;
?? ??? ??? ?//spCur = (struct singer *)malloc(SIZE);
?? ??? ??? ?spCur -> lNum = lv;
?? ??? ??? ?spCur -> sum1 = 0;
?? ??? ??? ?getchar();
?? ??? ??? ?cout << "請(qǐng)輸入姓名:";?
?? ??? ??? ?cin.getline(spCur -> name, 20);
?? ??? ??? ?spCur -> pNext = NULL;
?? ??? ??? ?spPre -> pNext = spCur;
?? ??? ??? ?spPre = spCur;
?? ??? ?}
?? ?}while(lv != -1 );//以-1結(jié)束。
?? ?return spHead;
}
?
//評(píng)委打分
void score(struct singer *);
void score(struct singer *sp)
{
?? ?long lv;
?? ?struct singer *spCur;?? ?
?? ?do{
?? ??? ?spCur = sp;
?? ??? ?cout << "輸入歌手編號(hào):";
?? ??? ?cin >> lv;
?? ??? ?while(spCur -> pNext != NULL && spCur -> lNum != lv)
?? ??? ?{
?? ??? ??? ?spCur = spCur -> pNext;
?? ??? ?}
?? ? ? ?if (spCur ->lNum == lv){
?? ??? ? ? ?spCur -> sum1 = 0;
?? ??? ? ? ?cout << "請(qǐng)輸入相應(yīng)10位評(píng)委成績(jī):" ;
?? ??? ? ? ?for(int i = 0; i < 10; i++)
?? ??? ? ? ?{
?? ??? ? ? ??? ?cin >> spCur -> fScore[i];
?? ??? ? ? ? ? ?spCur -> sum1 += spCur -> fScore[i];
?? ??? ? ? ? ? ?if(i == 0)
?? ? ? ? ? ? ? ?{
?? ? ? ? ? ? ? ??? ?spCur -> min = spCur -> fScore[0];
?? ??? ? ? ? ? ??? ?spCur -> max = spCur -> fScore[0];
?? ??? ? ? ? ? ?}
?? ??? ? ? ? ? ?else if(spCur -> fScore[i] > spCur -> max)
?? ??? ? ? ? ? ?{
?? ??? ? ? ? ? ??? ?spCur -> max = spCur -> fScore[i];
?? ??? ? ? ? ? ?}
?? ??? ? ? ? ? ?else if(spCur -> fScore[i] < spCur -> min)
?? ??? ? ? ? ? ?{
?? ??? ? ? ? ? ??? ?spCur -> min = spCur -> fScore[i];
?? ??? ? ? ? ? ?}
?? ??? ? ? ?}
?? ??? ? ? ?spCur -> sum2 = (spCur -> sum1) - (spCur -> max) - (spCur -> min);
?? ??? ? ? ?spCur -> average = spCur -> sum2 / 8.0f;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?cout << "歌手編號(hào)輸入錯(cuò)誤,請(qǐng)重新";?
?? ??? ?}
?? ?} while (lv != -1 );//以-1結(jié)束。
}?
?
//遍歷輸出數(shù)歌手?jǐn)?shù)據(jù)?
void TraverLiList(struct singer *);
void TraverLiList(struct singer *sp)
{
?? ?struct singer *spCur;
?? ?spCur = sp -> pNext;
?? ?while (spCur != NULL){
?? ??? ?cout << "ID:" << setw(6) << spCur -> lNum << endl;
?? ??? ?cout << "姓名: ?" << spCur -> name << endl;
?? ??? ?cout << "十位評(píng)委打分成績(jī)?yōu)椋? << endl;
?? ??? ?for(int i = 0; i < 10; i++)
?? ??? ?cout << "第" << i + 1 << "評(píng)委打分為:" << setw(5) << fixed << setprecision(1) << spCur -> fScore[i] << endl;?
?? ??? ?cout << "去除最高分和最低分的總分為:" << spCur -> sum2;
?? ??? ?cout << " ?平均分?jǐn)?shù)為:" << spCur -> average << endl;
?? ??? ?cout << endl;
?? ??? ?spCur = spCur -> pNext;
?? ?}
}
?
//追加選手?jǐn)?shù)據(jù)?
int AppendNode(struct singer *,long , char *, float*);
int AppendNode(struct singer *sp,long lArg, char *m, float *fArg)
{
?? ?struct singer *spCur,*spNew;
?? ?spCur = sp;
?? ?int i = 0, j = 0;
?? ?while(spCur -> pNext != NULL){
?? ? ? ? spCur = spCur -> pNext;
?? ?}
?? ?spNew = new struct singer;
?? ?if (spNew == NULL){
?? ??? ?return 1;
?? ?}
?? ?spNew -> lNum = lArg;
?? ?for(m, j; *m; m++, j++)
?? ?{
?? ??? ?spNew -> name[j] = *m;
?? ?}
?? ?spNew -> name[j] = '\0';
?? ?for(i = 0; i < 10; i++)
?? ?{
?? ??? ?spNew -> fScore[i] = fArg[i];
?? ?}
?? ?for(i = 0; i < 10; i++)
?? ?{
?? ??? ?
?? ? ? ?spNew -> sum1 += spNew -> fScore[i];
?? ??? ?if(i == 0)
?? ? ? ?{
?? ? ? ? ? ?spNew -> min = spNew -> fScore[0];
?? ??? ? ? ?spNew -> max = spNew -> fScore[0];
?? ??? ?}
?? ??? ?else if(spNew -> fScore[i] > spNew -> max)
?? ? ? ?{
?? ??? ? ? ?spNew -> max = spNew -> fScore[i];
?? ??? ?}
?? ??? ?else if(spNew -> fScore[i] < spNew -> min)
?? ??? ?{
?? ??? ? ? ?spNew -> min = spNew -> fScore[i];
?? ??? ?}
?? ??? ?}
?? ??? ?spNew -> sum2 = (spNew -> sum1) - (spNew -> max) - (spNew -> min);
?? ? ? ?spNew -> average = spNew -> sum2 / 8.0f;
?? ?spNew -> pNext = NULL;
?? ?spCur -> pNext = spNew;
?? ?return 0;
}
?
//刪除數(shù)據(jù)
int DeleteNode(struct singer *,long);
int DeleteNode(struct singer *sp,long lArg)
{
?? ?struct singer *spCur,*spT;
?? ?spCur = sp;
?? ?while(spCur -> pNext != NULL && spCur -> pNext ->lNum != lArg){
?? ??? ?spCur = spCur -> pNext;
?? ?}
?? ?if (spCur -> pNext == NULL){
?? ??? ?return 1;
?? ?}
?? ?spT = spCur -> pNext;
?? ?spCur -> pNext = spCur -> pNext -> pNext;
?? ?delete spT;//刪除歌手的數(shù)據(jù)?
?? ?return 0;
}
?
//搜索數(shù)據(jù)?
int SearchNode(struct singer *,long );
int SearchNode(struct singer *sp,long lArg)
{
?? ?struct singer *spCur;
?? ?spCur = sp;
?? ?while(spCur -> pNext != NULL && spCur -> lNum != lArg){
?? ??? ?spCur = spCur -> pNext;
?? ?}
?? ?if (spCur ->lNum == lArg){
?? ??? ?cout << "ID:" << setw(12) << spCur -> lNum << endl;
?? ??? ?cout << "name: ?" << spCur -> name << endl;
?? ??? ?cout << "評(píng)委成績(jī)?yōu)椋? << endl;?
?? ??? ?for(int i = 0; i < 10; i++)
?? ??? ?{
?? ??? ??? ?cout ?<< setw(8) << fixed << setprecision(1) << spCur -> fScore[i] << endl;
?? ??? ?}
?? ??? ?cout << "去除最高分和最低分的總分為:" << spCur -> sum2;
?? ??? ?cout << " ?平均分?jǐn)?shù)為:" << spCur -> average << endl;
?? ??? ?return 0;
?? ?}
?? ?else
?? ?{
?? ??? ?return 1;
?? ?}
}
?
//退出系統(tǒng),刪除鏈表數(shù)據(jù)
struct singer *ReleaseLiList(struct singer *);
struct singer *ReleaseLiList(struct singer *sp)
{
?? ?struct singer *spCurr,*spPrv;
?? ?spPrv = sp;
?? ?while (spPrv -> pNext != NULL){
?? ??? ?spCurr = spPrv -> pNext;
?? ??? ?delete spPrv;
?? ??? ?spPrv = spCurr;
?? ?}
?? ?delete sp;
?? ?return NULL;
}
?
//鏈表數(shù)據(jù)根據(jù)平均分排序
struct singer* SortList(struct singer* );
struct singer* SortList(struct singer* head) {
? ? ? ? if(!head || !head->pNext)?
?? ??? ?return head;
? ? ? ? struct singer* dummy = NULL;
? ? ? ? dummy = new singer[1];
? ? ? ? dummy -> pNext = head;
? ? ? ? struct singer* pre = head; // 當(dāng)前節(jié)點(diǎn)的前驅(qū)
? ? ? ? struct singer* cur = head->pNext;
? ? ? ? while(cur != NULL){
? ? ? ? ? ? struct singer* tmp = dummy;
? ? ? ? ? ? if(pre-> average >= cur->average){ //需要進(jìn)行插入
? ? ? ? ? ? ? ? while(tmp->pNext->average < cur->average) //從第一個(gè)節(jié)點(diǎn)開始尋找插入位置
? ? ? ? ? ? ? ? ? ? tmp = tmp->pNext; // cur應(yīng)該插入在tmp后面
? ? ? ? ? ? ? ? pre->pNext = cur->pNext; //斷開節(jié)點(diǎn)cur
? ? ? ? ? ? ? ? cur->pNext = tmp->pNext; //插入
? ? ? ? ? ? ? ? tmp->pNext = cur;
? ? ? ? ? ? ? ? cur = pre->pNext; //繼續(xù)處理下一個(gè)節(jié)點(diǎn)
? ? ? ? ? ? }
? ? ? ? ? ? else{ //無(wú)需插入
? ? ? ? ? ? ? ? pre = pre->pNext;
? ? ? ? ? ? ? ? cur = cur->pNext;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? cout << "歌手按平均分排序成功!請(qǐng)選擇功能7遍歷查看。";
?? ? ? ?system("Pause");
? ? ? ? return dummy->pNext;
? ? }
?
//將數(shù)據(jù)寫入文件
void input(struct singer *);
void input(struct singer *sp)
{
?? ?fstream outFile;
?? ?outFile.open("C:\\Users\\fengling\\Desktop\\歌手比賽打分?jǐn)?shù)據(jù)統(tǒng)計(jì).txt", ios::out);
?? ?if (!outFile){
?? ??? ?cout << "Destination file open error!";
?? ??? ?cout << "文件寫入錯(cuò)誤";
?? ??? ?exit(1);
?? ?}
?? ?else
?? ?{
?? ??? ?cout << "文件寫入中......" << endl;
?? ?}
?? ?struct singer *spCur;
?? ?spCur = sp -> pNext;
?? ?while (spCur != NULL){
?? ??? ?outFile << "ID:" << setw(6) << spCur -> lNum << endl;
?? ??? ?outFile << "姓名: ?" << spCur -> name << endl;
?? ??? ?outFile << "十位評(píng)委打分成績(jī)?yōu)椋? << endl;
?? ??? ?for(int i = 0; i < 10; i++)
?? ??? ?outFile << "第" << i + 1 << "評(píng)委打分為:" <<setw(5) << fixed << setprecision(1) << spCur -> fScore[i] << endl;
?? ??? ?outFile << "去除最高分和最低分的總分為:" << spCur -> sum2;
?? ??? ?outFile << " ?平均分?jǐn)?shù)為:" << spCur -> average << endl;
?? ??? ?outFile << endl;
?? ??? ?spCur = spCur -> pNext;
?? ?}
?? ?outFile.close();
?? ?cout << "文件寫入成功!請(qǐng)?jiān)谧烂嫦麓蜷_查看。";
?? ?system("Pause");
}
?
int main(void)
{
?? ?struct singer *spHead = NULL;
?? ?int iIndex, iStatus = 0;
?? ?long lID;
?? ?float fScore[10];
?? ?system("color 5E");
?? ?do{
?? ??? ?system("CLS");
?? ??? ?cout << " ? ? ? ? ? ? ——————————*歌手評(píng)分系統(tǒng)*————————" << endl;?
?? ??? ?Interface x;
? ? ? ? string *per=new string[10];
? ? ? ? per[0]="輸入選手?jǐn)?shù)據(jù)";
? ? ? ? per[1]="評(píng)委打分";
? ? ? ? per[2]="成績(jī)排序(按平均分)";
? ? ? ? per[3]="歌手?jǐn)?shù)據(jù)查詢";
? ? ? ? per[4]="追加選手?jǐn)?shù)據(jù)";
? ? ? ? per[5]="寫入數(shù)據(jù)文件";
? ? ? ? per[6]="遍歷顯示數(shù)據(jù)";
? ? ? ? per[7]="刪除選手?jǐn)?shù)據(jù) ";
? ? ? ? x.GetMessage(8,per);
? ? ? ? x.ShowSurface();
?? ??? ?cout << "輸入選擇項(xiàng):";
?? ??? ?cin >> iIndex;
?
?? ??? ?switch(iIndex)
?? ??? ?{
?? ??? ?case 1://輸入選手?jǐn)?shù)據(jù)。
?? ??? ??? ?system("CLS");
?? ??? ??? ?if (spHead != NULL){
?? ??? ? ? ??? ?ReleaseLiList(spHead);
?? ??? ??? ??? ?spHead = NULL;
?? ??? ??? ?}
?? ??? ??? ?cout << "以空格分隔輸入歌手遍號(hào)、姓名后回車確認(rèn)(輸入-1結(jié)束)\n";
?? ??? ??? ?spHead = CreatLiList();
?? ??? ??? ?break;
?? ??? ?case 2://評(píng)委打分。
?? ??? ??? ?system("CLS");
?? ??? ??? ?if (spHead == NULL){
?? ??? ??? ??? ?cout << "歌手?jǐn)?shù)據(jù)未錄入,請(qǐng)選擇1輸入數(shù)據(jù)!";
?? ??? ??? ??? ?system("Pause");
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?score(spHead);
?? ??? ??? ?break;
?? ??? ?case 3://成績(jī)排序。
?? ??? ??? ?system("CLS");
?? ??? ??? ?if (spHead == NULL){
?? ??? ??? ??? ?cout << "歌手?jǐn)?shù)據(jù)未錄入,請(qǐng)選擇1輸入數(shù)據(jù)!";
?? ??? ??? ??? ?system("Pause");
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?SortList(spHead);
?? ??? ??? ?break;
?? ??? ?case 4: //數(shù)據(jù)查詢。
?? ??? ??? ?system("CLS");
?? ??? ??? ?if (spHead == NULL){
?? ??? ??? ??? ?cout << "歌手信息未錄入,請(qǐng)選擇1輸入數(shù)據(jù)!";
?? ??? ??? ??? ?system("Pause");
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?cout << "輸入需要查找的歌手編號(hào):";
?? ??? ??? ?cin >> lID;
?? ??? ??? ?iStatus = SearchNode(spHead,lID);
?? ??? ??? ?if (iStatus == 1){
?? ??? ??? ??? ?cout << "The Id is not found!\n";
?? ??? ??? ?}
?? ??? ??? ?system("Pause");
?? ??? ??? ?break;?
?? ??? ?case 5://追加選手?jǐn)?shù)據(jù)。
?? ??? ??? ?system("CLS");
?? ??? ??? ?if (spHead == NULL){
?? ??? ??? ??? ?cout << "歌手信息未錄入,請(qǐng)選擇1輸入數(shù)據(jù)!";
?? ??? ??? ??? ?system("Pause");
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?char str[20];
?? ??? ??? ?cout << "請(qǐng)輸入編號(hào):";
?? ??? ??? ?cin >> lID; ?
?? ??? ??? ?getchar();
?? ??? ??? ?cout << "請(qǐng)輸入姓名:";
?? ??? ??? ?cin.getline(str,80);
?? ??? ??? ?cout << "請(qǐng)輸入分?jǐn)?shù):";
?? ??? ??? ?for(int i = 0; i < 10; i++)
?? ??? ??? ?{
?? ??? ??? ??? ?cin >> fScore[i];
?? ??? ??? ?}
?? ??? ??? ?iStatus = AppendNode(spHead, lID, str, fScore);
?? ??? ??? ?if (iStatus == 1){
?? ??? ??? ??? ?cout << "添加失敗!\n";
?? ??? ??? ?}
?? ??? ??? ?else{
?? ??? ??? ??? ?cout << "添加成功!\n";
?? ??? ??? ?}
?? ??? ??? ?break;
?? ??? ?case 6://寫入文件
?? ??? ? ? ?system("CLS");
?? ??? ??? ?if (spHead == NULL){
?? ??? ??? ??? ?cout << "歌手信息未錄入,請(qǐng)選擇1輸入數(shù)據(jù)!";
?? ??? ??? ??? ?system("Pause");
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?input(spHead);
?? ??? ??? ?break;?
?? ??? ?case 7://遍歷顯示數(shù)據(jù)。
?? ??? ??? ?system("CLS");
?? ??? ??? ?if (spHead == NULL){
?? ??? ??? ??? ?cout << "歌手信息未錄入,請(qǐng)選擇1輸入數(shù)據(jù)!";
?? ??? ??? ??? ?system("Pause");
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?cout << "歌手的數(shù)據(jù)為:\n";
?? ??? ??? ?TraverLiList(spHead);
?? ??? ??? ?system("pause");
?? ??? ??? ?break;
?? ??? ?case 8://刪除選手?jǐn)?shù)據(jù)。
?? ??? ??? ?system("CLS");
?? ??? ??? ?if (spHead == NULL){
?? ??? ??? ??? ?cout << "歌手信息未錄入,請(qǐng)選擇1輸入數(shù)據(jù)!";
?? ??? ??? ??? ?system("Pause");
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?cout << "輸入要?jiǎng)h除結(jié)點(diǎn)的選手編號(hào):";
?? ??? ??? ?cin >> lID;
?? ??? ??? ?iStatus = DeleteNode(spHead,lID);
?? ??? ??? ?if (iStatus == 1){
?? ??? ??? ??? ?cout << "刪除失敗!\n";
?? ??? ??? ?}
?? ??? ??? ?else{
?? ??? ??? ??? ?cout << "刪除成功!\n";
?? ??? ??? ?}
?? ??? ??? ?system("Pause");
?? ??? ??? ?break;
?? ??? ?case 9://退出系統(tǒng)?
?? ??? ??? ?if (spHead != NULL){//釋放鏈表
?? ??? ??? ??? ?ReleaseLiList(spHead);
?? ??? ??? ??? ?spHead = NULL;
?? ??? ??? ?}
?? ??? ??? ?exit(0);
?? ??? ?default:
?? ??? ??? ?cout << "選擇錯(cuò)誤,請(qǐng)重新輸入選擇項(xiàng)!\n";
?? ??? ??? ?system("Pause");
? ? ? ? }
?? ?} while(1);?
?? ?
? ? return 0;?
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于C語(yǔ)言的庫(kù)封裝發(fā)布技術(shù)詳解

    基于C語(yǔ)言的庫(kù)封裝發(fā)布技術(shù)詳解

    在編程的過(guò)程中,使用已經(jīng)封裝好的庫(kù)函數(shù)是十分方便的,也是十分高效的,這篇文章主要給大家介紹了關(guān)于C語(yǔ)言庫(kù)的封裝和使用的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • 異步http listener 完全并發(fā)處理懲罰http懇求的小例子

    異步http listener 完全并發(fā)處理懲罰http懇求的小例子

    異步http listener 完全并發(fā)處理懲罰http懇求的小例子,需要的朋友可以參考一下
    2013-05-05
  • c++判斷文件是否存在的方法匯總

    c++判斷文件是否存在的方法匯總

    這篇文章主要介紹了c++判斷文件是否存在的方法匯總,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 掌握C++:揭秘寫時(shí)拷貝與淺深拷貝之間的關(guān)系

    掌握C++:揭秘寫時(shí)拷貝與淺深拷貝之間的關(guān)系

    探索C++的奧秘,本指南將揭秘寫時(shí)拷貝與淺深拷貝之間的微妙關(guān)系,摸索這些復(fù)雜概念背后的邏輯,讓你的編程技能瞬間提升,來(lái)吧,讓我們一起進(jìn)入這個(gè)引人入勝的C++世界!
    2024-01-01
  • C語(yǔ)言實(shí)現(xiàn)求解素?cái)?shù)的N種方法總結(jié)

    C語(yǔ)言實(shí)現(xiàn)求解素?cái)?shù)的N種方法總結(jié)

    哈嘍各位友友們,今天又學(xué)到了很多有趣的知識(shí),現(xiàn)在迫不及待的想和大家分享一下!本文將手把手帶領(lǐng)大家探討利用試除法、篩選法求解素?cái)?shù)的n層境界!都是精華內(nèi)容,可不要錯(cuò)過(guò)喲
    2023-01-01
  • C/C++表格組件Qt?TableWidget應(yīng)用詳解

    C/C++表格組件Qt?TableWidget應(yīng)用詳解

    本文詳細(xì)講解了C/C++中使用列表框組件Qt?TableWidget的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • C語(yǔ)言當(dāng)函數(shù)執(zhí)行成功時(shí)return1還是0

    C語(yǔ)言當(dāng)函數(shù)執(zhí)行成功時(shí)return1還是0

    本文主要介紹了C語(yǔ)言當(dāng)函數(shù)執(zhí)行成功時(shí)return1還是0,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C++實(shí)現(xiàn)重載矩陣的部分運(yùn)算符

    C++實(shí)現(xiàn)重載矩陣的部分運(yùn)算符

    這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)重載矩陣的部分運(yùn)算符,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C++有一定幫助,需要的可以參考一下
    2022-10-10
  • C語(yǔ)言實(shí)現(xiàn)俄羅斯方塊的六種模式詳程建議收藏

    C語(yǔ)言實(shí)現(xiàn)俄羅斯方塊的六種模式詳程建議收藏

    遲早一定會(huì)掛掉的俄羅斯方塊,為什么至今仍是世界游戲之王?它是怎么編寫的?本文將給大家詳細(xì)介紹六種模式的實(shí)現(xiàn),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值
    2022-02-02
  • C++實(shí)現(xiàn)車票管理系統(tǒng)

    C++實(shí)現(xiàn)車票管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)車票管理系統(tǒng),連接數(shù)據(jù)庫(kù)MySQL,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評(píng)論