欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

學(xué)生管理系統(tǒng)C++(初學(xué)者,不使用鏈表)-創(chuàng)新互聯(lián)

學(xué)生管理系統(tǒng)
    • 題目
    • 主體思路
    • 讀入text信息
    • 統(tǒng)計(jì)并輸出這些學(xué)生中有多少男生,多少女生?
    • 統(tǒng)計(jì)并輸出這些學(xué)生有多少是 11 月份出生的?
    • 查找學(xué)生
    • 修改籍貫
    • 輸入新的學(xué)生信息
    • 按照出生日期排升序輸出學(xué)生的學(xué)號(hào)、姓名和出生日期
    • 完整代碼

成都創(chuàng)新互聯(lián)主營(yíng)神木網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app開(kāi)發(fā),神木h5小程序定制開(kāi)發(fā)搭建,神木網(wǎng)站營(yíng)銷推廣歡迎神木等地區(qū)企業(yè)咨詢題目

【題目】student.txt(GB2312 編碼)中存放了 20 個(gè)學(xué)生信息,包
括:學(xué)號(hào)、姓名、性別、籍貫、出生日期。這個(gè) 20 個(gè)同學(xué)沒(méi)有重名
的。編寫(xiě)一個(gè)學(xué)生信息管理小程序,實(shí)現(xiàn)下面的功能:

主體思路

我們要從一個(gè)txt中讀取信息,多組學(xué)生的信息顯然易見(jiàn)要存放在一個(gè)結(jié)構(gòu)體數(shù)組中。把代碼全部放在一個(gè)源文件實(shí)在太過(guò)冗雜,這里我們可以把main函數(shù)放在一個(gè)源文件,功能實(shí)現(xiàn)放在別的源文件中,通過(guò)自己寫(xiě)一個(gè)頭文件進(jìn)行連接。那么這個(gè)結(jié)構(gòu)體的定義就要寫(xiě)在頭文件中,不過(guò)結(jié)構(gòu)體數(shù)組要定義在源文件中并在頭文件中聲明。一個(gè)而多次使用的系統(tǒng)我們可以使用一個(gè)do while結(jié)構(gòu)來(lái)實(shí)現(xiàn)。

cout<< "歡迎使用學(xué)生管信息管理系統(tǒng)"<< endl;
	int a;
	do
	{menu1();
		cin >>a;
		switch (a)
		{case 0:
			cout<< "歡迎下次使用"<< endl;
			file.close();
			break;
		case 1:
			sexclass(total);
			break;

		case 2:
			monthclass(total);
			break;
		case 3:
			find(total);
			break;

		case 4:
			modify(total);
			goto begine;
			break;
		case 5:
			add(total);
			goto begine;

			break;
		case 6:
			sort(total);
				break;

		default:
			cout<< "輸入錯(cuò)誤,請(qǐng)重新輸入"<< endl;
			break;

		}
	} while (a);
	
讀入text信息

讀入 student.txt 的學(xué)生信息;要讀入一個(gè).txt類的文件儲(chǔ)存方式為ANSI格式在這里插入圖片描述
讀入文本文件分為5步
1.引頭文件
2.創(chuàng)建流對(duì)象
iftream file (ofstream–只寫(xiě)、ifstream–只讀、fstream–可讀可寫(xiě).)
3.打開(kāi)文件(并判斷文件是否成功打開(kāi))
file.open(“文件路徑”,打開(kāi)方式)
打開(kāi)方式分為

打開(kāi)方式對(duì)應(yīng)操作
ios::in為讀文件而打開(kāi)
ios::out為寫(xiě)文件而打開(kāi)
ios::ate文件尾為初始位置
ios::app追加內(nèi)容
ios::trunc重寫(xiě)文件
ios::binary二進(jìn)制形式讀寫(xiě)

注:不同的打開(kāi)方式配合 | 操作符使用。
4讀數(shù)據(jù)
5關(guān)閉文件

//讀入文件
	fstream file;
	file.open("D:\\student.txt", ios::in);
	
	char s[200] = {0 };
	int total = 0;
	while (file.getline(s, 200))
	{strcpy(stu[total].number, strtok(s, "\t"));
		strcpy(stu[total].name, strtok(NULL, "\t"));
		strcpy(stu[total].sex, strtok(NULL, "\t"));
		strcpy(stu[total].hometown, strtok(NULL, "\t"));
		strcpy(stu[total].date, strtok(NULL, "\t"));

		total++;
 		
	}

這里將數(shù)據(jù)先存在了一個(gè)char類的數(shù)組s之中,然后借用strcpy和strtok函數(shù)來(lái)實(shí)顯將數(shù)據(jù)存在一個(gè)結(jié)構(gòu)體數(shù)組之中;

這里拿一個(gè)total就可以確定學(xué)生人數(shù),而且會(huì)有妙用

統(tǒng)計(jì)并輸出這些學(xué)生中有多少男生,多少女生?

因?yàn)閿?shù)據(jù)全拿一個(gè)結(jié)構(gòu)體以字符串的形式儲(chǔ)存,所以我們因該用strcmp函數(shù)來(lái)實(shí)現(xiàn)比較,然后創(chuàng)建兩個(gè)變量分別儲(chǔ)存男女的數(shù)量。

void sexclass(int total)
{int male = 0;
	int female = 0;
	int i = 0;
	char nan[6] = "男";
	char nv[6] = "女";
	for (i = 0; i< total; i++)
	{if (strcmp(stu[i].sex, nan)==0)
		{	male++;
		}
		if (strcmp(stu[i].sex, nv) == 0)
		{	female++;
		}
	}
	cout<< "男生有:"<< male<< "人"<< endl;
	cout<< "女生有:"<< female<< "人"<< endl;

}
統(tǒng)計(jì)并輸出這些學(xué)生有多少是 11 月份出生的?

和上面那個(gè)差不多,沒(méi)什么好說(shuō)的

void monthclass(int total)
{int i = 0;
	int sum = 0;
	for (i = 0; i< total; i++)
	{if (stu[i].date[5] == '1' && stu[i].date[6] == '1')
			sum++;
	}
	cout<< sum<

其實(shí)這里我們可以先把月轉(zhuǎn)換出來(lái)

int month[50] = {0 };
	for (j = 0; j< total; j++)
	{int a = 0;
		for (a = 5; a< 7; a++)
		{	if (stu[j].date[a] != '/')
				month[j] = month[j] * 10 + (stu[j].date[a] - '0');
		}
	}
	int day[50] = {0 };

然后判斷哪個(gè)月就很隨便了

查找學(xué)生

(要求)輸入一個(gè)姓名,查找 student 文件中是否存在他的信息,如果存
在,輸出出他(她)的信息,如果不存在,輸出“沒(méi)有這個(gè)同學(xué)的信
息”??梢远啻尾樵?,每次查詢結(jié)束詢問(wèn)用戶是否繼續(xù)查詢
多次查詢這不又do while
這里要注意的是在前面mian函數(shù)中輸入了一個(gè)數(shù)據(jù)并使用回車在這里若想使用getline必須先”清空“,我們可以使用getchar來(lái)清空。

void find(int total)
{int a = 0;
	char mz[10] = {'0'};

	do {cout<< "請(qǐng)輸入學(xué)生姓名"<	if (strcmp(mz, stu[i].name) == 0)
			{		cout<< stu[i].number<< "\t"<< stu[i].name<< "\t"<< stu[i].sex<< "\t"<< stu[i].hometown<< "\t"<< stu[i].date<< endl;
				break;
			}
		}
		if (i == total)
		{	cout<< "沒(méi)有這個(gè)同學(xué)的信息"<< endl;
		}
		cout<< "是否繼續(xù)查找"<< endl;
		cout<< "   1:繼續(xù)    "<< endl;
		cout<< "   0:停止    "<< endl;

		cin >>a;
	}while (a);
}
修改籍貫

宋羽玲同學(xué)的生源地錄入有誤,將她的籍貫改為江蘇省,并保存
到 student.txt 文件中
只要將存著宋羽玲信息的數(shù)組先找到然后將省會(huì)替換就行

void   modify(int total)
{cout<< "要修改的學(xué)生名字"<< endl;
	int a = 0;
	char mz[10] = {'0' };
	getchar();//將輸入的回車換行吸收掉

	cin.getline(mz, 11);

	int i = 0;
	for (i = 0; i< total; i++)
	{if (strcmp(mz, stu[i].name) == 0)
		{	change(i,total);
			break;
		}
	}
	if (i == total)
	{cout<< "沒(méi)有這個(gè)同學(xué)的信息"<< endl;
	}
}
void change(int i,int total)
{cout<< "輸入要修改的值"<< endl;
	cin.getline(stu[i].hometown, 10);
	save(total);//保存修改后的數(shù)據(jù)
}
void save(int total)
{ofstream ofs;
	ofs.open("D:\\student.txt", ios::out);
	int i = 0;
	for (i = 0; i< total; i++)
	{ofs<< stu[i].number<< "\t";
		ofs<< stu[i].name<< "\t";
		ofs<< stu[i].sex<< "\t";
		ofs<< stu[i].hometown<< "\t";
		ofs<< stu[i].date<< endl;
	}
	ofs.close();
}

這里改完后的存和讀差不多就不多贅述,
值得注意的是這里我希望將數(shù)據(jù)進(jìn)行一次更新,也就是重新讀一次,這里我們可以使用goto函數(shù),具體見(jiàn)上

輸入新的學(xué)生信息

在開(kāi)辟結(jié)構(gòu)體空間時(shí)我刻意多創(chuàng)造了一些,然后用total來(lái)卡著每次循環(huán)的次數(shù)。所以這里直接添加然后存一下,并重新讀取

void add(int total)
{int i = total;
	cout<< "輸入學(xué)生編號(hào):";
	getchar();
	cin.getline(stu[i].number, 5);
	cout<< endl<< "輸入學(xué)生名字:";
	cin.getline(stu[i].name, 10);
	cout<< endl<< "輸入學(xué)生性別:";
	cin.getline(stu[i].sex, 6);
	cout<< endl<< "輸入學(xué)生籍貫:";
	cin.getline(stu[i].hometown, 10);
	cout<< endl<< "輸入學(xué)生出生日期:";
	cin.getline(stu[i].date, 12);
	save(total + 1);


}
按照出生日期排升序輸出學(xué)生的學(xué)號(hào)、姓名和出生日期

這里我將年月日分別取出,后使用了一種較為暴力的方式進(jìn)行處理。沒(méi)有技術(shù)含量,希望大佬可以給我一種比較新的寫(xiě)法

void sort(int total)
{int year[50] = {0 };
	int j;
	int sum = 0;
	for (j = 0; j< total; j++)
	{int a = 0;
		for (a = 0; a< 4; a++)
		{	year[j] = year[j] * 10 + (stu[j].date[a] - '0');
		}
	}
	int month[50] = {0 };
	for (j = 0; j< total; j++)
	{int a = 0;
		for (a = 5; a< 7; a++)
		{	if (stu[j].date[a] != '/')
				month[j] = month[j] * 10 + (stu[j].date[a] - '0');
		}
	}
	int day[50] = {0 };
	for (j = 0; j< total; j++)
	{int a = 0;
		for (a = 7; a< 10; a++)
		{	if (stu[j].date[a] != '/' && stu[j].date[a] != '\0')
				day[j] = day[j] * 10 + (stu[j].date[a] - '0');
		}
	}
	int out[50] = {-1 };
	for (int a = 2003; a< 2005; a++)
	{for (int b = 1; b< 13; b++)
		{	for (int c = 1; c< 32; c++)
			{		for (int i = 0; i< total; i++)
				{if (year[i] == a && month[i] == b && day[i] == c)
					{cout<< stu[i].number<< "\t";
						cout<< stu[i].name<< "\t";
						cout<< stu[i].sex<< "\t";
						cout<< stu[i].hometown<< "\t";
						cout<< stu[i].date<< "\n";
						sum++;
					}
				}
			}
		}
	}
	//cout<< sum<
完整代碼

完整代碼
存學(xué)生的txt

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁(yè)題目:學(xué)生管理系統(tǒng)C++(初學(xué)者,不使用鏈表)-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://chinadenli.net/article34/pphse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷、服務(wù)器托管、企業(yè)建站、移動(dòng)網(wǎng)站建設(shè)虛擬主機(jī)、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)