亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? stuinfomanager.cpp

?? 學生成績管理系統
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//StuInfoManager.cpp
#include<stdlib.h>
#include<fstream>
#include"stuinfomanager.h"
#include<iomanip>
using namespace std;
//定義靜態程序數據
char* StuInfoManager::subject_[] = {"語文","數學","英語","物理","化學"};

StuInfoManager::StuInfoManager(void)
{
	isModified = false;
	toRemvNodes = 0;
	start();
}

StuInfoManager::~StuInfoManager(void)
{
}

/*************************************
*  功能: 顯示歡迎界面,并開始進行用戶交互處理
*************************************/
void StuInfoManager::start()
{
	cout << "\n"
		 << "\t*****************************\n"
		 << "\t*          這是一個         *\n"
		 << "\t*       學生成績管理程序    *\n"
		 << "\t*  可以對學生成績進行管理   *\n"
		 << "\t*       歡迎使用管理程序    *\n"
		 << "\t*****************************\n"
		 << "\n" ;
	handleMenu();
}

/****************************************
*功能:顯示程序管理菜單,返回用戶選擇的選項
*返回:用戶選擇的選項,是0-9之間的一個字符
****************************************/
char StuInfoManager::menuSelect()
{
	cout << "\n"
		 << "0.顯示記錄\n"
		 << "1.查詢記錄\n"
		 << "2.增加記錄\n"
		 << "3.刪除記錄\n"
		 << "4.修改記錄\n"
		 << "5.記錄排序\n"
		 << "6.保存記錄\n"
		 << "7.讀取記錄\n"
		 << "8.新建學生信息文件\n"
		 << "9.結束運行\n"
		 << "\n左邊數字對應功能選擇,請選0-9: ";

	string str;
	char choice;

	while (true)
	{
		cin >> str;
		cin.ignore(); //從 cin中將回車符提取出來
		choice = str[0];
		if(choice<'0' || choice>'9' )
			cout << "\n輸入錯誤,重新選0-9: ";
		else 
			break;
	}
	return choice;
}

/*************************************************
* 功能:根據用戶選擇的項目調用相應的處理函數
**************************************************/
void StuInfoManager::handleMenu()
{
	while(true)
	{
		switch(menuSelect())
		{
		case '0':
			displayRecords();
			break;
		case '1':
			queryRecord();
			break;
		case '2':
			addRecord();
			break;
		case '3':
			removeRecord();
			break;
		case '4':
			modifyRecord();
			break;
		case '5':
			sortRecords();
			break;
		case '6':
			saveRecords();
			break;
		case '7':
			loadRecords();
			break;
		case '8':
			clear();
			addRecord();
			break;
		case '9':
			quit();
		}
	}
}

/****************************************
* 功能:打印顯示記錄信息時的表頭
****************************************/
void StuInfoManager::dispTable()
{
	cout << "學號 姓名 性別";
	for  (int j=0;j<NUM_SUBJECT;j++)
		cout << '\t'<< subject_[j];
	cout << " 總分 平均分 名次 刪除標志\n";
}

/********************************************
*功能:顯示指定記錄的信息
********************************************/
void StuInfoManager::dispRecord(Record* rec)
{
	//打印學生信息
	cout<<setw(4) << rec->number << setw(4) << rec->name << setw(4)<< rec->gender;
	for (int j=0;j<NUM_SUBJECT;j++)
		cout<<'\t'<<rec->score[j];
	cout.precision(3);
	cout<<setw(6)<<rec->sum<<setw(6)<<rec->average<<setw(6)<<rec->index;
	if (rec->toBeDeleted)
		cout << "\t*\n";
	else
		cout << '\n';
}

/*********************************
*功能:顯示所有記錄信息
*********************************/
void StuInfoManager::displayRecords()
{
	if (empty())
	{
		cout << "沒有記錄可以顯示" << endl;
		return;
	}
	dispTable();
	int num = size();
	for (int i=0; i<num; i++)
	{
		dispRecord(recVec[i]);
		//打印滿20個記錄后停下來
		if (i%20==0 && i!=0)
		{
			cout << "輸入任一個字符后繼續.......\n";
			cin.get();
			cout << endl;
			dispTable();
		}
	}
	cout << "一共有" << size() << "條記錄\n" << endl;
}

/**************************************************
*功能:首先檢查記錄是否已經保存,然后清空當前所有記錄
*注意:這函數覆蓋了基類中的函數
**************************************************/
void StuInfoManager::clear()
{
	char choi[5];
    if (toRemvNodes !=0)
	{
		cout << "現在還有被做了刪除標記但還沒有執行的記錄,是否執行刪除? (Y/N)";
		cin.getline(choi,5);
		if (choi[0]!='n' && choi[0]!='N' )
		{
			int num = removePerform();
			toRemvNodes = 0;
			cout << "一共刪除了" << num << "條記錄\n"
				<<"現在還剩下" << size() << "條記錄" <<endl;
			if (num!=0)
				isModified = true;
		}
	}
	if (isModified) //已改動,未保存
	{
		cout<< "學生信息已改動,是否保存? (Y/N):";
		cin.getline(choi,5);
		if (choi[0]!='n' && choi[0]!='N')
			saveRecords();
	}
	StuInfoVec::clear();
	isModified= false;
}

/***********************************************
*功能:查詢指定記錄
***************************************/
void StuInfoManager::queryRecord()
{
	if (empty())
	{
		cout << "記錄是空表,退出查詢操作!" << endl;
		return;
	}
	char choi[5];
	int type;
	char pattern[20];
	while(true)
	{
		//選擇獲取所需要查詢的記錄方式
		cout << "請輸入查詢的方式; (直接輸入回車則結束查詢) \n"
			 << "1.按學號\n"
			 << "2.按姓名\n"
			 << "3.按名次\n";
		cin.getline(choi,5);
		//直接輸入回車則結束查詢
		if (choi[0] == '\0') break;
		if (choi[0] == '1')
		{
			cout << "請輸入欲查詢的學生的學號: ";
			type = 0;
		} else if (choi[0] == '2' )
		{ 
			cout << "請輸入欲查詢學生的姓名: ";
			type = 1;
		}else
		{
			cout<< "請輸入欲查詢的學生的名次:";
			type=2;
		}
		cin.getline(pattern,20);
		int findCount = 0;
		//找到匹配的記錄
		Iterator it = findRecord(pattern,type,first());
		Iterator it_end = pastEnd();
		dispTable();
		while (it != it_end)
		{
			findCount++;
			dispRecord(*it);
			//取下一條匹配的記錄
			it = findRecord(pattern,type,++it);
		}
		cout << "一共找到了" << findCount << "條記錄\n" << endl;
	}
}
/***********************************************
*找出總分為sum在當前所有記錄中按升序排序的位置
*參數:sum, 欲找位置的總分
*返回:sum在當前所有記錄中按升序排序的位置
*結果:原有記錄中"名次"項也會依需要相應改變
**************************************************/
int StuInfoManager::getIndex(float sum)
{
	int ncount = 0; //總分大于sum的人數
	Iterator it;
	Iterator it_end = pastEnd();
	for (it = first(); it!=it_end; it++)
	{
		if ((*it)->sum < sum)
		{
			(*it)->index++;//總分小于sum的記錄名次增1
		} else if ((*it)->sum >sum)
		{
			ncount++;
		}
	}
	return ncount+1;
}

/*****************************************
*功能:向當前學生信息追加新的記錄
*注意:該函數重載了基類中的函數
******************************************/
void StuInfoManager::addRecord()
{
	if (empty())
		cout << "原來沒有記錄,現在建立新表" << endl;
	else
		cout << "下面在當前表的末尾增加新的信息" << endl;
	char choi[5];
	char name[20];
	Record* rec;
	float sum;
	int j;
	int ncount = 0; //記錄增加了的記錄數
	while(true)
	{
		cout << "您將要添加一組信息,確定嗎? (Y/N):";
		cin.getline(choi,5);
		if (choi[0] == 'n' || choi[0] == 'N') //不再添加新的信息
			break;
		rec = new Record;
		cout << "請輸入學號: " << flush;
		cin >> rec->number;
		cin.ignore();
		printf("請輸入姓名: ");
		cin.getline(name,20);
		rec->name = name;
		printf("請輸入性別 (0為女,1為男): ");
		cin.getline(choi,5);
		if (choi[0] == '0')
			rec->gender = "女";
		else 
			rec->gender = "男";
		sum = 0;
		for (j=0; j<NUM_SUBJECT; j++)
		{
			cout << "請輸入" << subject_[j] << "成績";
			cin >> rec->score[j];
			sum +=rec->score[j];
		}
		cin.ignore();
		rec->sum = sum;
		rec->average = sum/NUM_SUBJECT;
		rec->index = getIndex(sum);
		StuInfoVec::addRecord(rec);
		ncount++;
	}
	cout << "一共新增了" << ncount << "條記錄\n"
		 << "現在一共有" << size() << "條記錄" << endl;
	if (ncount != 0)
		isModified = true; //記錄已經改動,未保存
}
/********************************************************
*功能:進入"刪除記錄"子菜單,選擇執行相應的功能
*注意:該函數重載了基類中的函數
********************************************************/
void StuInfoManager::removeRecord()
{
	if(empty())
	{
		cout << "記錄已經空,退出刪除操作!" << endl;
		return;
	}
	cout << "1.標記待刪除的記錄\n"
		 << "2.執行標記\n"
		 << "3.取消指定記錄的刪除標記\n"
		 << "4.取消全部刪除標記"<< endl;
	string str;
	do
	{
		cout << "請選擇您要進行的操作(1-4): ";
		cin >> str;
	}while (str[0]<'1' || str[0]>'4');
	cin.ignore();

	switch (str[0])
	{
	case '1':
		removeNote(true);
		break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区三区| 色综合久久久久网| 91麻豆国产在线观看| 欧美一区二区精品在线| 亚洲欧美综合色| 精品亚洲欧美一区| 欧美日韩一区三区四区| 欧美国产亚洲另类动漫| 久久99国产精品麻豆| 欧美日韩综合在线免费观看| 中文字幕一区二区三区四区不卡| 麻豆精品久久精品色综合| 在线视频一区二区免费| 国产精品久久久久久久第一福利| 国产在线国偷精品免费看| 69p69国产精品| 亚洲一区二区美女| 91成人在线观看喷潮| 国产精品国产成人国产三级 | 欧美成人三级在线| 亚洲一区二区精品久久av| fc2成人免费人成在线观看播放| 日韩欧美不卡在线观看视频| 亚洲成av人在线观看| 欧美视频在线观看一区二区| 亚洲欧洲制服丝袜| 91麻豆国产精品久久| 中文字幕亚洲一区二区av在线| 国产精品一区二区免费不卡 | 在线观看国产91| 亚洲蜜臀av乱码久久精品| 99久久国产综合精品色伊| 18涩涩午夜精品.www| 91丝袜美女网| 亚洲精品亚洲人成人网| 色婷婷综合久色| 亚洲精品视频观看| 精品视频在线免费看| 婷婷国产在线综合| 欧美日韩国产小视频在线观看| 亚洲香肠在线观看| 日韩欧美资源站| 狠狠狠色丁香婷婷综合久久五月| 欧美大片一区二区| 国产a精品视频| 中文字幕一区在线观看视频| 99久久精品免费观看| 亚洲男人的天堂网| 色中色一区二区| 性久久久久久久久| 精品国产91乱码一区二区三区| 国产一区二区三区免费播放| 国产精品久久网站| 欧美视频在线观看一区| 丝袜美腿成人在线| wwwwww.欧美系列| 波多野结衣中文字幕一区 | 一区二区三区在线视频播放| 91传媒视频在线播放| 日产欧产美韩系列久久99| 欧美精品一区二区三区很污很色的 | 亚洲国产aⅴ天堂久久| 欧美一卡在线观看| 丰满岳乱妇一区二区三区| 亚洲乱码国产乱码精品精的特点 | 成人午夜激情在线| 亚洲一区二区在线免费观看视频| 91精品国产综合久久婷婷香蕉 | 欧美亚洲另类激情小说| 蜜臀久久99精品久久久久久9| 国产女同性恋一区二区| 欧美亚洲一区三区| 激情六月婷婷久久| 一区二区三区中文字幕精品精品 | 麻豆国产精品视频| 国产精品灌醉下药二区| 日韩视频国产视频| 一本大道久久精品懂色aⅴ| 精油按摩中文字幕久久| 亚洲精品乱码久久久久久黑人| 欧美一区二区三区在线电影| 不卡一卡二卡三乱码免费网站| 美女诱惑一区二区| 亚洲男人的天堂一区二区 | 欧美一级免费大片| 99麻豆久久久国产精品免费| 久久国产尿小便嘘嘘| 一区二区三区四区五区视频在线观看| 337p粉嫩大胆噜噜噜噜噜91av | 国产精品国产精品国产专区不片| 欧美一区二区三区四区在线观看| 色综合久久天天| 岛国av在线一区| 精一区二区三区| 亚洲成人av中文| 一个色在线综合| 国产精品美女久久久久久2018| 精品国产亚洲一区二区三区在线观看| 91精彩视频在线观看| aaa欧美日韩| 国产成人免费视频网站高清观看视频| 免费看欧美美女黄的网站| 一区av在线播放| 亚洲免费伊人电影| 亚洲三级小视频| 国产精品麻豆久久久| 国产亚洲va综合人人澡精品 | 精品一区二区成人精品| 日韩1区2区3区| 亚洲成人免费影院| 亚洲午夜精品久久久久久久久| 综合av第一页| 亚洲另类一区二区| 一区二区三区鲁丝不卡| 亚洲欧美福利一区二区| 亚洲人成精品久久久久久| 中文字幕亚洲电影| 亚洲男人天堂av| 亚洲一区二区三区四区在线免费观看 | 亚洲国产另类av| 五月婷婷激情综合网| 一二三区精品视频| 亚洲国产欧美在线| 日韩精品免费专区| 久久99九九99精品| 国产精品自在在线| 丁香六月综合激情| 91免费看`日韩一区二区| 在线视频你懂得一区二区三区| 在线精品视频免费观看| 7777精品伊人久久久大香线蕉完整版 | 成人久久久精品乱码一区二区三区| 国产麻豆成人精品| 99久久777色| 欧美日韩在线亚洲一区蜜芽| 88在线观看91蜜桃国自产| 精品国产污网站| 国产精品久久久久久福利一牛影视 | 欧美96一区二区免费视频| 狠狠色丁香久久婷婷综| 成人精品视频.| 欧美最新大片在线看| 欧美一区二区高清| 国产日韩亚洲欧美综合| 一区二区三区小说| 免费成人美女在线观看.| 国产99久久久国产精品潘金 | 欧美一区二区成人| 国产欧美一区二区三区在线看蜜臀| 亚洲日本乱码在线观看| 欧美a级理论片| 91在线国内视频| 日韩一级成人av| 亚洲欧洲精品成人久久奇米网| 图片区小说区国产精品视频| 国产999精品久久久久久绿帽| 在线免费亚洲电影| 久久精品一区八戒影视| 一区二区三区在线不卡| 国产一区二区美女| 欧美日韩视频不卡| 国产精品久久久久久一区二区三区 | 中文字幕乱码一区二区免费| 午夜免费欧美电影| 成人免费毛片aaaaa**| 69久久夜色精品国产69蝌蚪网| 国产精品国产成人国产三级| 欧美aa在线视频| 在线视频国内一区二区| 国产亚洲综合色| 日韩成人av影视| 色网站国产精品| 国产日韩精品一区| 麻豆免费看一区二区三区| 一本大道久久a久久综合婷婷| 久久日韩粉嫩一区二区三区 | 欧美疯狂性受xxxxx喷水图片| 国产精品私房写真福利视频| 免费在线成人网| 欧美性色黄大片| 亚洲欧美电影院| av中文字幕在线不卡| 欧美v亚洲v综合ⅴ国产v| 亚洲第一福利视频在线| 91碰在线视频| 亚洲国产电影在线观看| 国产真实精品久久二三区| 欧美成人精品1314www| 日韩高清欧美激情| 欧美亚洲图片小说| 亚洲一级二级三级在线免费观看| 成人av资源在线| 国产精品初高中害羞小美女文| 国产成人丝袜美腿| 国产欧美精品一区二区色综合| 久久激情五月婷婷| 欧美大胆一级视频| 卡一卡二国产精品| 欧美电影免费观看高清完整版在线| 三级久久三级久久久|