C++實現(xiàn)寢室衛(wèi)生管理系統(tǒng)
本文實例為大家分享了C++實現(xiàn)寢室衛(wèi)生管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
介紹:
當初寫程序的時候很多知識都不足,我算是一個半路出家的。當時在另一課本上看到goto語句,感覺挺有趣的,就用上了,但goto語句,不適合很長的代碼,由易造成邏輯混亂,也可以換成do-while語句。
我設(shè)計了輸出表格框架,再循環(huán)輸出數(shù)據(jù),為使數(shù)據(jù)對齊,使用setw(),setw(int n)是c+ +中在輸出操作中使用的字段寬度設(shè)置,設(shè)置輸出的域?qū)?,n表示字段寬度。此函數(shù)只對緊接著的輸出有效,緊接著的輸出結(jié)束后又變回默認的域?qū)?。當后面緊跟著的輸出字段長度小于n的時候,在該字段前面用空格補齊;當輸出字段長度大于n時,全部整體輸出。頭文件為:iomanip;
輸入密碼時,如非回車鍵,皆輸出“*”,通過getch()函數(shù)實現(xiàn),此函數(shù)是一個不回顯函數(shù),當用戶按下某個字符時,函數(shù)自動讀取,無需按回車鍵,所在頭文件:conio.h,int __cdecl getch();聲明,等,還用了一些算法,在此先不做詳細介紹。
一、基本功能
1.(管理員,需要密碼)實現(xiàn)成績錄入(地面衛(wèi)生、床鋪、物品擺放及其他)成績求和和保存、修改及刪除
2.(學(xué)生查詢)實現(xiàn)顯示所有寢室成員(按寢室號排序和按成績排序)、顯示自己寢室成績-輸入號(按寢室號排序和按成績排序)、本周文明寢室、本周差評寢室
二、擴展功能
1.管理員也可對學(xué)生寢室信息包括寢室號,寢室成員進行基本管理,包括增,刪,查,改等功能
2.對系統(tǒng)使用成員實現(xiàn)所有寢室成績的查詢,顯示功能(可按寢室號排序或成績排序),學(xué)生也可查看其他寢室相關(guān)信息
三、功能結(jié)構(gòu)
本系統(tǒng)的總體功能結(jié)構(gòu)是:首先學(xué)生可以查看寢室衛(wèi)生檢查結(jié)果信息,管理員具有唯一的帳號以及密碼,登錄后可以對基本數(shù)據(jù)進行增刪改查等操作。
總體分為五大模塊:寢室基本信息錄入模塊,寢室基本信息修改模塊,寢室基本信息查詢模塊,寢室基本信息顯示模塊,寢室基本信息保存模塊??傮w功能結(jié)構(gòu)圖如圖所示:
代碼如下:
#include<iostream> #include<conio.h> #include<fstream> #include<iomanip> #include<string> #define _CRT_SECURE_NO_WARNINGS using namespace std; #define M 50//表長 typedef int shu; //寢室信息結(jié)構(gòu) typedef struct { ?? ?shu ground;//地面衛(wèi)生 ?? ?shu bed;//床鋪 ?? ?shu article;//物品擺放 ?? ?shu other;//其他 ?? ?shu grade;//總成績 ?? ?char member[50];//寢室成員 ?? ?char number[10];//寢室號 ?? ?int Total; }Student, St; ? Student S[M]; ? //1、定義清屏函數(shù) void Clear() { ?? ?system("pause"); ?? ?system("cls"); } //2、定義顯示函數(shù)表頭 void showhead() { ?? ?cout << "\n********************歡迎使用宿舍衛(wèi)生管理系統(tǒng)********************\n " << endl; ?? ?cout << "\n ? ?顯示方式:\n " << endl; ?? ?cout << "\t①按成績顯示\n" << endl; ?? ?cout << "\t②按寢室顯示\n" << endl; ?? ?cout << "\t③返回上級\n\n" << endl; ?? ?cout << "\t ? ?請選擇:"; } //3、登錄函數(shù) void load() { ?? ?int n1; int i; loop:cout << "\n********************歡迎使用宿舍衛(wèi)生管理系統(tǒng)********************\n\n" << endl; ?? ?cout << "\t\t帳號:"; ?? ?cin >> n1; ?? ?cout << "\t\t密碼:"; ?? ?char a[40], b[14] = { "20190228" }; ?? ?for (i = 0;; i++) ?? ?{ ?? ??? ?int __cdecl getch(); ?? ??? ?a[i] = getch(); ?? ??? ?if (a[i] != '\r') ?? ??? ??? ?cout << "*"; ?? ??? ?else { ?? ??? ??? ?a[i] = '\0'; ?? ??? ??? ?if (strcmp(a, b) == 0 && n1 == 20190228) ?? ??? ??? ?{ ?? ??? ??? ??? ?cout << "\n登錄成功。。。。\n" << endl; ?? ??? ??? ??? ?Clear(); ?? ??? ??? ?} ?? ??? ??? ?else { ?? ??? ??? ??? ?cout << "\n用戶名或密碼錯誤。。。\n" << endl; ?? ??? ??? ??? ?Clear(); ?? ??? ??? ??? ?goto loop; ?? ??? ??? ?} ?? ??? ??? ?break; ?? ??? ?} ?? ?} } //4、定義查詢函數(shù)表頭 void searchheader() { ?? ?cout << "\n********************歡迎使用宿舍衛(wèi)生管理系統(tǒng)********************\n\n " << endl; ?? ?cout << "\t①按成績查詢\n" << endl; ?? ?cout << "\t②按寢室查詢\n" << endl; ?? ?cout << "\t③返回上級\n\n" << endl; ?? ?cout << " ? ?請選擇:"; } //5、定義錄入函數(shù) void Add(Student* S) { ?? ?char ch[10]; ?? ?char ch1[2] = { "0" }; ?? ?do ?? ?{ ?? ??? ?cout << "\n********************歡迎使用宿舍衛(wèi)生管理系統(tǒng)********************\n\n" << endl; ?? ??? ?cout << "\t****************學(xué)生信息錄入****************\n"; ?? ??? ?cout << "請輸入第" << S[0].Total + 1 << "個寢室的信息\n"; ?? ??? ?cout << "寢 室 號:"; ?? ??? ?cin >> S[S[0].Total + 1].number; ?? ??? ?cout << " 成 ?員 :"; ?? ??? ?cin >> S[S[0].Total + 1].member; ?? ??? ?cout << "地面衛(wèi)生:"; ?? ??? ?cin >> S[S[0].Total + 1].ground; ?? ??? ?cout << " 床 ?鋪 :"; ?? ??? ?cin >> S[S[0].Total + 1].bed; ?? ??? ?cout << "物品擺放:"; ?? ??? ?cin >> S[S[0].Total + 1].article; ?? ??? ?cout << " 其 ?他 :"; ?? ??? ?cin >> S[S[0].Total + 1].other; ?? ??? ?cout << "總 成 績:"; ?? ??? ?S[S[0].Total + 1].grade = S[S[0].Total + 1].ground + S[S[0].Total + 1].bed + S[S[0].Total + 1].article + S[S[0].Total + 1].other; ?? ??? ?cout<< S[S[0].Total + 1].grade<<endl; ?? ??? ?S[0].Total++; ?? ??? ?cout << "按數(shù)字“0”退出,任意鍵繼續(xù)錄入: " ; ?? ??? ?cin >> ch; ?? ??? ?system("cls");//清屏函數(shù) ?? ?} while (strcmp(ch, ch1) != 0); } //6、定義顯示函數(shù)? void Display_All(Student* S) { ? ?? ?cout << "\n" << endl; ?? ?int i; ?? ?cout << " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? " << endl; ?? ?cout << " ?———————————————————————————————————————————————— " << endl; ?? ?cout << " | ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 學(xué) 生 宿 舍 信 息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|" << endl; ?? ?cout << " |————————————————————————————————————————————————|" << endl; ?? ?cout << " | 寢室號 | 總成績 | ? ? ? ? ? ? ?寢 ?室 ?成 ?員 ? ? ? ? ? ? ?|地面衛(wèi)生| 床 ?鋪 |物品擺放| 其 ?他 |" << endl; ?? ?if (S[0].Total > 0) ?? ?{ ?? ??? ?for (i = 1; i <= S[0].Total; i++) ?? ??? ?{ ?? ??? ??? ?cout << " |————|————|—————————————————————|————|————|————|————|" << endl; ?? ??? ??? ?cout << " |" << setw(8) << S[i].number << "|" << setw(8) << S[i].grade << "|"; ?? ??? ??? ?cout << setw(42) << S[i].member << "|" << setw(8) << S[i].ground << "|"; ?? ??? ??? ?cout << setw(8) << S[i].bed << "|" << setw(8) << S[i].article << "|"; ?? ??? ??? ?cout << setw(8) << S[i].other << "|" <<endl ; ?? ??? ?} ?? ?} ?? ?else ?? ?{ ?? ??? ?cout << " |————————————————————————————————————————————————|" << endl; ?? ??? ?cout << " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?沒 有 任 何 學(xué) 生 信 息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?" << endl; ?? ?} ?? ?cout << " ?———————————————————————————————————————————————— " << endl; } //7、排序函數(shù)按照成績從小到大排序(快排) int Partition(Student* S, int low, int high) {//對順序表中的子表進行一趟排序,返回樞軸位置 ?? ?shu ?pivotkey; ?? ?Student i; ?? ?i = S[low];//用i作樞軸記錄 ?? ?pivotkey = S[low].grade;//樞軸成績保存在pivokey中 ?? ?while (low < high)//從表的兩端交替的向中間掃描? ?? ?{ ?? ??? ?while (low < high && S[high].grade >= pivotkey) --high; ?? ??? ?S[low] = S[high];//將比樞軸記錄小的記錄移到低端 ?? ??? ?while (low < high && S[low].grade <= pivotkey) ++low; ?? ??? ?S[high] = S[low];//比樞軸記錄大的記錄移到高端 ?? ?} ?? ?S[low] = i;//樞軸記錄到位? ?? ?return low; //返回樞軸位置? } void QSort(Student* S, int low, int high) { ?? ?//對順序表中的子表進行快速排序 ?? ?int pivotloc; ?? ?if (low < high) //長度大于1 ?? ?{ ?? ??? ?pivotloc = Partition(S, low, high);//將子表一分為二,pivotloc是樞軸位置 ?? ??? ?QSort(S, low, pivotloc - 1);//對左子表遞歸排序 ?? ??? ?QSort(S, pivotloc + 1, high);//對右子表遞歸排序 ?? ?} } void Sort_grade(Student* S) {//對順序表L進行快速排序 ?? ?QSort(S, 1, S[0].Total); } //8、排序函數(shù)按照寢室號從小到大排序(堆排序)? void HeapAdjust(Student* S, int s, int m) { ?? ?Student rc; int j; ?? ?rc = S[s]; ?? ?for (j = 2 * s; j <= m; j *= 2)//沿number較大的孩子結(jié)點向下篩選 ?? ?{ ?? ??? ?if (j < m&& strcmp(S[j].number, S[j + 1].number)<0) ++j;//j為number較大的記錄下標 ?? ??? ?if (strcmp(rc.number , S[j].number)>=0) break;//rc應(yīng)插入在位置s上 ?? ??? ?S[s] = S[j]; s = j; ?? ?} ?? ?S[s] = rc; } void CreatHeap(Student* S) {//把無序序列S[1...n]建成大根堆 ?? ?int n, i; ?? ?n = S[0].Total; ?? ?for (i = n / 2; i > 0; --i)//反復(fù)調(diào)用HeapAdjust ?? ??? ?HeapAdjust(S, i, n); } void Sort_number(Student* S) {//對順序表S進行堆排序 ?? ?int i; ?? ?Student x; ?? ?CreatHeap(S); ?? ?for (i = S[0].Total; i > 1; --i) ?? ?{ ?? ??? ?x = S[1];//將堆頂記錄和當前未經(jīng)排序子序列S[1...i]中最后一個記錄互換 ?? ??? ?S[1] = S[i]; ?? ??? ?S[i] = x; ?? ??? ?HeapAdjust(S, 1, i - 1);//將S[1..i-1]重新調(diào)整為大根堆 ?? ?} } //9、查詢函數(shù)以成績?yōu)殛P(guān)鍵字進行查詢(折半查找) void searh_grade(Student* S) { ?? ?int high, low, mid; ?? ?int j=0; ?? ?shu grade; ?? ?low = 1; ?? ?high = S[0].Total; ?? ?cout << "請輸入你要查找學(xué)生的成績:"; ?? ?cin >> grade; ?? ?Sort_grade(S);//聲明排序函數(shù)按照成績從小到大排序(快排) ?? ?cout << "\n\n" << endl; ?? ?cout << " ?———————————————————————————————————————————————— " << endl; ?? ?cout << " | ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 所 查 找 寢 室 信 息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |" << endl; ?? ?cout << " |————————————————————————————————————————————————|" << endl; ?? ?cout << " | 寢室號 | 總成績 | ? ? ? ? ? ? ? 寢 ?室 ?成 ?員 ? ? ? ? ? ? |地面衛(wèi)生| 床 ?鋪 |物品擺放| 其 ?他 |" << endl; ?? ?if (grade== S[1].grade) ?? ?{ ?? ??? ?cout << " |————|————|—————————————————————|————|————|————|————|" << endl; ?? ??? ?cout << " |" << setw(8) << S[1].number << "|" << setw(8) << S[1].grade << "|"; ?? ??? ?cout << setw(42) << S[1].member << "|" << setw(8) << S[1].ground << "|"; ?? ??? ?cout << setw(8) << S[1].bed << "|" << setw(8) << S[1].article << "|"; ?? ??? ?cout << setw(8) << S[1].other << ?"|"<<endl; ?? ??? ?j = 1; ?? ?} ?? ?else ?? ??? ?if (grade == S[(S[0].Total)].grade) ?? ??? ?{ ?? ??? ??? ?cout << " |————|————|—————————————————————|————|————|————|————|" << endl; ?? ??? ??? ?cout << " |" << setw(8) << S[S[0].Total].number << "|" << setw(8) << S[S[0].Total].grade << "|"; ?? ??? ??? ?cout << setw(42) << S[S[0].Total].member << "|" << setw(8) << S[S[0].Total].ground << "|"; ?? ??? ??? ?cout << setw(8) << S[S[0].Total].bed << "|" << setw(8) << S[S[0].Total].article << "|"; ?? ??? ??? ?cout << setw(8) << S[S[0].Total].other << "|" << endl; ?? ??? ??? ?j = 1; ?? ??? ?} ?? ??? ?else ?? ??? ?{ ?? ??? ??? ?while (low <= high) ?? ??? ??? ?{ ?? ??? ??? ??? ?mid = (low + high) / 2; ?? ??? ??? ??? ?if (grade == S[mid].grade) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?int i = mid; ?? ??? ??? ??? ??? ?cout << " |————|————|—————————————————————|————|————|————|————|" << endl; ?? ??? ??? ??? ??? ?cout << " |" << setw(8) << S[i].number << "|" << setw(8) << S[i].grade << "|"; ?? ??? ??? ??? ??? ?cout << setw(42) << S[i].member << "|" << setw(8) << S[i].ground << "|"; ?? ??? ??? ??? ??? ?cout << setw(8) << S[i].bed << "|" << setw(8) << S[i].article << "|"; ?? ??? ??? ??? ??? ?cout << setw(8) << S[i].other << "|" << endl; ?? ??? ??? ??? ??? ?j = 1; ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else ?? ??? ??? ??? ??? ?if (grade > S[mid].grade) ?? ??? ??? ??? ??? ??? ?low = mid + 1; ?? ??? ??? ??? ??? ?else ?? ??? ??? ??? ??? ??? ?high = mid - 1; ?? ??? ??? ?} ?? ??? ?} ?? ?if (j != 1) ?? ?{ ?? ??? ?cout << " |————————————————————————————————————————————————|" << endl; ?? ??? ?cout << " | ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查 無 此 寢 室 信 息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |" << endl; ?? ?} ?? ?cout << " ?———————————————————————————————————————————————— " << endl; } //10、查詢函數(shù)以寢室號為關(guān)鍵字進行查詢(折半查找) void searh_number(Student* S) { ?? ?int high, low, mid; ?? ?char number[20]; ?? ?int j=0; ?? ?low = 1; ?? ?high = S[0].Total; ?? ?cout << "請輸入你要查找學(xué)生的寢室號:"; ?? ?cin >> number; ?? ?Sort_number(S);//聲明排序函數(shù)按照寢室號從小到大排序(堆排序) ?? ?cout << "'\n\n" << endl; ?? ?cout << " ?———————————————————————————————————————————————— " << endl; ?? ?cout << " | ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 所 查 找 的 寢 室 信 息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|" << endl; ?? ?cout << " |————————————————————————————————————————————————|" << endl; ?? ?cout << " | 寢室號 | 總成績 | ? ? ? ? ? ? ? 寢 ?室 ?成 ?員 ? ? ? ? ? ? |地面衛(wèi)生| 床 ?鋪 |物品擺放| 其 ?他 |" << endl; ?? ?while (low <= high) ?? ?{ ?? ??? ?mid = (low + high) / 2; ?? ??? ?if (strcmp(number, S[mid].number) == 0) ?? ??? ?{ ?? ??? ??? ?int i = mid; j = 1; ?? ??? ??? ?cout << " |————|————|—————————————————————|————|————|————|————|" << endl; ?? ??? ??? ?cout << " |" << setw(8) << S[i].number << "|" << setw(8) << S[i].grade << "|"; ?? ??? ??? ?cout << setw(42) << S[i].member << "|" << setw(8) << S[i].ground << "|"; ?? ??? ??? ?cout << setw(8) << S[i].bed << "|" << setw(8) << S[i].article << "|"; ?? ??? ??? ?cout << setw(8) << S[i].other << "|" << endl; ? ?? ??? ??? ?for (i = mid + 1; i <= high; i++) ?? ??? ??? ?{ ?? ??? ??? ??? ?if (strcmp(number, S[i].number) == 0) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?cout << " |————|————|—————————————————————|————|————|————|————|" << endl; ?? ??? ??? ??? ??? ?cout << " |" << setw(8) << S[i].number << "|" << setw(8) << S[i].grade << "|"; ?? ??? ??? ??? ??? ?cout << setw(42) << S[i].member << "|" << setw(8) << S[i].ground << "|"; ?? ??? ??? ??? ??? ?cout << setw(8) << S[i].bed << "|" << setw(8) << S[i].article << "|"; ?? ??? ??? ??? ??? ?cout << setw(8) << S[i].other << "|" << endl; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?for (i = mid - 1; i >= low; i--) ?? ??? ??? ?{ ?? ??? ??? ??? ?if (strcmp(number, S[i].number) == 0) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?cout << " |————|————|—————————————————————|————|————|————|————|" << endl; ?? ??? ??? ??? ??? ?cout << " |" << setw(8) << S[i].number << "|" << setw(8) << S[i].grade << "|"; ?? ??? ??? ??? ??? ?cout << setw(42) << S[i].member << "|" << setw(8) << S[i].ground << "|"; ?? ??? ??? ??? ??? ?cout << setw(8) << S[i].bed << "|" << setw(8) << S[i].article << "|"; ?? ??? ??? ??? ??? ?cout << setw(8) << S[i].other << "|" << endl; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?break; ?? ??? ?} ?? ??? ?else ?? ??? ??? ?if (strcmp(number, S[mid].number) > 0) ?? ??? ??? ??? ?low = mid + 1; ?? ??? ??? ?else ?? ??? ??? ??? ?high = mid - 1; ?? ?} ?? ?if (j != 1) ?? ?{ ?? ??? ?cout << " |————————————————————————————————————————————————|" << endl; ?? ??? ?cout << " | ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查 無 此 寢 室 信 息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |" << endl; ?? ?} ?? ?cout << " ?———————————————————————————————————————————————— " << endl; } //11、判斷是否是文明寢室 void y_n_number(Student* S) { ?? ?int high, low, mid; ?? ?char number[20]; ?? ?int j=0; ?? ?low = 1; ?? ?high = S[0].Total; ?? ?cout << "請輸入你要查找學(xué)生的寢室號:"; ?? ?cin >> number; ?? ?Sort_number(S);//聲明排序函數(shù)按照寢室號號從小到大排序(堆排序) ?? ?while (low <= high) ?? ?{ ?? ??? ?mid = (low + high) / 2; ?? ??? ?if (strcmp(number, S[mid].number) == 0) ?? ??? ?{ ?? ??? ??? ?int i = mid; j = 1; ?? ??? ??? ?if (S[i].grade >= 80) ?? ??? ??? ??? ?cout << "\n\n本周文明寢室\n\n"; ?? ??? ??? ?else cout << "\n\n本周差評寢室\n\n"; ? ?? ??? ??? ?for (i = mid + 1; i <= high; i++) ?? ??? ??? ?{ ?? ??? ??? ??? ?if (strcmp(number, S[i].number) == 0) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?if (S[i].grade >= 80) ?? ??? ??? ??? ??? ??? ?cout << "\n\n本周文明寢室\n\n"; ?? ??? ??? ??? ??? ?else cout << "\n\n本周差評寢室\n\n"; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?for (i = mid - 1; i >= low; i--) ?? ??? ??? ?{ ?? ??? ??? ??? ?if (strcmp(number, S[i].number) == 0) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?if (S[i].grade >= 80) ?? ??? ??? ??? ??? ??? ?cout << "\n\n本周文明寢室\n\n"; ?? ??? ??? ??? ??? ?else cout << "\n\n本周差評寢室\n\n"; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?break; ?? ??? ?} ?? ??? ?else ?? ??? ??? ?if (strcmp(number, S[mid].number) > 0) ?? ??? ??? ??? ?low = mid + 1; ?? ??? ??? ?else ?? ??? ??? ??? ?high = mid - 1; ?? ?} ?? ?if (j != 1) ?? ?{ ?? ??? ?cout << " ?———————————————————————————————————————————————— " << endl; ?? ??? ?cout << " | ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?查 無 此 寢 室 信 息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|" << endl; ?? ??? ?cout << " ?———————————————————————————————————————————————— " << endl; ?? ?} } //12、定義修改學(xué)生信息表頭函數(shù) void Exchangehead() { ?? ?cout << "\n********************歡迎使用宿舍衛(wèi)生管理系統(tǒng)********************\n\n " << endl; ?? ?cout << " ? ?********************修改菜單********************\n " << endl; ?? ?cout << "\t①單個刪除信息\n" << endl; ?? ?cout << "\t②刪除全部信息\n" << endl; ?? ?cout << "\t③修改寢室信息\n" << endl; ?? ?cout << "\t④返回上級菜單\n\n" << endl; ?? ?cout << " ? ?請選擇:"; } //13、寫文件函數(shù) void Keep(Student* S) { ?? ?ofstream output("學(xué)生宿舍信息.txt");//初始化輸出流對象 ?? ?if (output.is_open()) ?? ?{ ?? ??? ?int i, j; ?? ??? ?j= S[0].Total; ?? ??? ?output << j<<endl; ?? ??? ?for (i = 1; i <= S[0].Total; i++) ?? ??? ?{ ?? ??? ??? ?output << S[i].number<<endl; ?? ??? ??? ?output << S[i].grade<<endl; ?? ??? ??? ?output << S[i].member << endl; ?? ??? ??? ?output << S[i].ground << endl; ?? ??? ??? ?output << S[i].bed << endl; ?? ??? ??? ?output << S[i].article << endl; ?? ??? ??? ?output << S[i].other << endl; ?? ??? ?} ?? ?} ?? ?output.close(); } //14、讀文件函數(shù) void Input(Student* S) { ?? ?ifstream input("學(xué)生宿舍信息.txt",ios::in);//初始化輸出流對象 ?? ?if (input.is_open()) ?? ?{ ?? ??? ?int i,j; ?? ??? ?input >> j; ?? ??? ?S[0].Total = j; ?? ??? ?for (i = 1; i <= S[0].Total; i++) ?? ??? ?{ ?? ??? ??? ?input >> S[i].number; ?? ??? ??? ?input >> S[i].grade; ?? ??? ??? ?input >> S[i].member; ?? ??? ??? ?input >> S[i].ground; ?? ??? ??? ?input >> S[i].bed; ?? ??? ??? ?input >> S[i].article; ?? ??? ??? ?input>> S[i].other; ?? ??? ?} ?? ?} ?? ?input.close(); } //主函數(shù)開始 void main() { ?? ?Student S[M]; ?? ?S[0].Total = 0; ?? ?Input(S); loop1:cout << "\n********************歡迎使用宿舍衛(wèi)生管理系統(tǒng)********************\n" << endl; ?? ?cout << "\n ? ?請選擇以何身份登錄系統(tǒng):\n\n\n"; ?? ?cout << "\t1、管理員\n\n"; ?? ?cout << "\t2、學(xué)生\n\n"; ?? ?cout << "\t3、退出系統(tǒng)\n\n"; ?? ?cout << "\t請選擇:"; ?? ?int x; ?? ?cin >> x; ?? ? ?? ?switch (x) ?? ?{ ?? ?case 1: { ?? ??? ?system("cls");//清屏函數(shù); ?? ??? ?load();//調(diào)用登錄函數(shù) ?? ??? ?int choicem; ?? ??? ?do { ?? ??? ??? ?cout << "\n********************歡迎使用宿舍衛(wèi)生管理系統(tǒng)********************\n" << endl; ?? ??? ??? ?cout << "\t ********************主菜單********************\n " << endl; ?? ??? ??? ?cout << "\t①錄入學(xué)生信息\n" << endl; ?? ??? ??? ?cout << "\t②顯示學(xué)生信息.\n" << endl; ?? ??? ??? ?cout << "\t③查詢學(xué)生信息\n" << endl; ?? ??? ??? ?cout << "\t④修改學(xué)生信息\n" << endl; ?? ??? ??? ?cout << "\t⑤存儲學(xué)生信息\n" << endl; ?? ??? ??? ?cout << "\t⑥返回上級\n" << endl; ?? ??? ??? ?cout << "\t⑦退出系統(tǒng)\n\n" << endl; ?? ??? ??? ?cout << "\t請選擇:"; ?? ??? ??? ?cin >> choicem; ?? ??? ??? ? ?? ??? ??? ?switch (choicem) ?? ??? ??? ?{ ?? ??? ??? ?case 1: // 錄入信息. ?? ??? ??? ?{ ?? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ?Add(S); // 調(diào)用錄入信息函數(shù) ?? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ?Keep(S); ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?case 2: // 顯示學(xué)生信息 ?? ??? ??? ?{ ?? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ?int choice2; ?? ??? ??? ?loop2:showhead(); ?? ??? ??? ??? ?cin >> choice2; ?? ??? ??? ??? ?if (choice2 == 1) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?Sort_grade(S);//調(diào)用排序函數(shù)按照成績從小到大排序(快排)? ?? ??? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ??? ?cout << "按成績大小顯示信息." << endl; ?? ??? ??? ??? ??? ?Display_All(S); // 調(diào)用顯示學(xué)生信息函數(shù) ?? ??? ??? ??? ??? ?Keep(S); ?? ??? ??? ??? ??? ?Clear(); ?? ??? ??? ??? ??? ?goto loop2; ?? ??? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else if (choice2 == 2) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?Sort_number(S);//排序函數(shù)按照寢室號從小到大排序(堆排序) ?? ??? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ??? ?cout << "按寢室號大小顯示信息." << endl; ?? ??? ??? ??? ??? ?Display_All(S); // 調(diào)用顯示學(xué)生信息函數(shù) ?? ??? ??? ??? ??? ?Keep(S); ?? ??? ??? ??? ??? ?Clear(); ?? ??? ??? ??? ??? ?goto loop2; ?? ??? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else if (choice2 == 3) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else { ?? ??? ??? ??? ??? ?cout << "\n\t輸入錯誤,請重新輸入。。。。 " << endl; ?? ??? ??? ??? ??? ?Clear(); ?? ??? ??? ??? ??? ?goto loop2; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?case 3: // 查詢學(xué)生信息、 ?? ??? ??? ?{ ?? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ?int choice3; ?? ??? ??? ?loop3:searchheader();//調(diào)用查詢表頭函數(shù) ?? ??? ??? ??? ?cin >> choice3; ?? ??? ??? ??? ?if (choice3 == 1)//按成績查詢 ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ??? ?searh_grade(S);//查詢函數(shù)以成績?yōu)殛P(guān)鍵字進行查詢(折半查找) ?? ??? ??? ??? ??? ?Clear(); ?? ??? ??? ??? ??? ?goto loop3; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else if (choice3 == 2)//按寢室號查詢 ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ??? ?searh_number(S);//調(diào)用查詢函數(shù)以寢室號為關(guān)鍵字進行查詢(折半查找) ?? ??? ??? ??? ??? ?Clear(); ?? ??? ??? ??? ??? ?goto loop3; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else if (choice3 == 3)//返回上級菜單 ?? ??? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ?else // 輸入錯誤 ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?cout << "\n\n\t選擇錯誤,請重新輸入。。。 \n" << endl; ?? ??? ??? ??? ??? ?Clear(); ?? ??? ??? ??? ??? ?goto loop3; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?case 4: // 修改學(xué)生信息 ?? ??? ??? ?{ ?? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ?loop4: Exchangehead();//調(diào)用修改學(xué)生信息表頭函數(shù) ?? ??? ??? ??? ?int choice1; ?? ??? ??? ??? ?cin >> choice1; ? ?? ??? ??? ??? ?if (choice1 == 1)//單個刪除 ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?int i, j; ?? ??? ??? ??? ??? ?int flag = 0; // 用來判斷表中是否存在所要冊除的學(xué)生的信息. ?? ??? ??? ??? ??? ?char number[20]; ? ?? ??? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ??? ?cout << "請輸入你要刪除寢室的寢室號:"; ?? ??? ??? ??? ??? ?cin >> number; ?? ??? ??? ??? ??? ?for (i = 1; i <= S[0].Total; i++) ?? ??? ??? ??? ??? ??? ?if (strcmp(S[i].number, number) == 0) ?? ??? ??? ??? ??? ??? ??? ?flag = i; ?? ??? ??? ??? ??? ?if (!flag) { ?? ??? ??? ??? ??? ??? ?cout << "\n \n\t你所要刪除的信息在表中不存在! \n" << endl; ?? ??? ??? ??? ??? ??? ?Clear(); ?? ??? ??? ??? ??? ??? ?goto loop4; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?else { ?? ??? ??? ??? ??? ??? ?for (i = flag; i <= S->Total; i++) ?? ??? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ??? ?j = i + 1; ?? ??? ??? ??? ??? ??? ??? ?S[i] = S[j]; ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ?S[0].Total--; ?? ??? ??? ??? ??? ??? ?cout << "\n\t刪除成功!\n" << endl; ?? ??? ??? ??? ??? ??? ?Clear(); ?? ??? ??? ??? ??? ??? ?Keep(S); ?? ??? ??? ??? ??? ??? ?goto loop4; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else if (choice1 == 2) // 全部刪除 ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ??? ?S[0].Total = 0; ?? ??? ??? ??? ??? ?cout << "\n\n\n ? ? ? ? ?冊除成功。。。。。\n\n" << endl; ?? ??? ??? ??? ??? ?Clear(); ?? ??? ??? ??? ??? ?Keep(S); ?? ??? ??? ??? ??? ?goto loop4; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else if (choice1 == 3)//修改信息 ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?int i; ?? ??? ??? ??? ??? ?int flag = 0; // 用來判斷表中是否存在所要修改的學(xué)生的信息. ?? ??? ??? ??? ??? ?char number[20]; ?? ??? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ??? ?cout << "請輸入你要修改的寢室的寢室號:"; ?? ??? ??? ??? ??? ?cin >> number; ?? ??? ??? ??? ??? ?for (i = 1; i <= S[0].Total; i++) ?? ??? ??? ??? ??? ??? ?if (strcmp(S[i].number, number) == 0) ?? ??? ??? ??? ??? ??? ??? ?flag = i; ?? ??? ??? ??? ??? ?if (!flag) ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?cout << "\n\t你所要修改的學(xué)生在表中不存在! \n" << endl; ?? ??? ??? ??? ??? ??? ?Clear(); ?? ??? ??? ??? ??? ??? ?goto loop4; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?else ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?cout << "\n\n" << endl; ?? ??? ??? ??? ??? ??? ?cout << " ?———————————————————————————————————————————————— " << endl; ?? ??? ??? ??? ??? ??? ?cout << " | ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 修 改 前 的 寢 室 信 息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|" << endl; ?? ??? ??? ??? ??? ??? ?cout << " |————————————————————————————————————————————————|" << endl; ?? ??? ??? ??? ??? ??? ?cout << " | 寢室號 | 總成績 | ? ? ? ? ? ? ?寢 ?室 ?成 ?員 ? ? ? ? ? ? ?|地面衛(wèi)生| 床 ?鋪 |物品擺放| 其 ?他 |" << endl; ?? ??? ??? ??? ??? ??? ?cout << " |————|————|—————————————————————|————|————|————|————|" << endl; ?? ??? ??? ??? ??? ??? ?cout << " |" << setw(8) << S[flag].number << "|" << setw(8) << S[flag].grade << "|"; ?? ??? ??? ??? ??? ??? ?cout << setw(42) << S[flag].member << "|" << setw(8) << S[flag].ground << "|"; ?? ??? ??? ??? ??? ??? ?cout << setw(8) << S[flag].bed << "|" << setw(8) << S[flag].article << "|"; ?? ??? ??? ??? ??? ??? ?cout << setw(8) << S[flag].other << "|" << endl; ?? ??? ??? ??? ??? ??? ?cout << " ?———————————————————————————————————————————————— " << endl; ?? ??? ??? ??? ??? ??? ?cout << "********************學(xué)生信息修改********************\n"; ?? ??? ??? ??? ??? ??? ?cout << " 寢室號 :"; ?? ??? ??? ??? ??? ??? ?cin >> S[flag].number; ?? ??? ??? ??? ??? ??? ?cout << " 成 ?員 :"; ?? ??? ??? ??? ??? ??? ?cin >> S[flag].member; ?? ??? ??? ??? ??? ??? ?cout << "地面衛(wèi)生:"; ?? ??? ??? ??? ??? ??? ?cin >> S[flag].ground; ?? ??? ??? ??? ??? ??? ?cout << " 床 ?鋪 :"; ?? ??? ??? ??? ??? ??? ?cin >> S[flag].bed; ?? ??? ??? ??? ??? ??? ?cout << "物品擺放:"; ?? ??? ??? ??? ??? ??? ?cin >> S[flag].article; ?? ??? ??? ??? ??? ??? ?cout << " 其 ?他 :"; ?? ??? ??? ??? ??? ??? ?cin >> S[flag].other; ?? ??? ??? ??? ??? ??? ?cout << " 總成績 :"; ?? ??? ??? ??? ??? ??? ?S[flag].grade = S[flag].ground + S[flag].bed + S[flag].article + S[flag].other; ?? ??? ??? ??? ??? ??? ?cout << S[flag].grade; ?? ??? ??? ??? ??? ??? ?cout << "\n"; ?? ??? ??? ??? ??? ??? ?cout << " ?———————————————————————————————————————————————— " << endl; ?? ??? ??? ??? ??? ??? ?cout << " | ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 修 改 后 的 寢 室 信 息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|" << endl; ?? ??? ??? ??? ??? ??? ?cout << " |————————————————————————————————————————————————|" << endl; ?? ??? ??? ??? ??? ??? ?cout << " | 寢室號 | 總成績 | ? ? ? ? ? ? ?寢 ?室 ?成 ?員 ? ? ? ? ? ? ?|地面衛(wèi)生| 床 ?鋪 |物品擺放| 其 ?他 |" << endl; ?? ??? ??? ??? ??? ??? ?cout << " |————|————|—————————————————————|————|————|————|————|" << endl; ?? ??? ??? ??? ??? ??? ?cout << " |" << setw(8) << S[flag].number << "|" << setw(8) << S[flag].grade << "|"; ?? ??? ??? ??? ??? ??? ?cout << setw(42) << S[flag].member << "|" << setw(8) << S[flag].ground << "|"; ?? ??? ??? ??? ??? ??? ?cout << setw(8) << S[flag].bed << "|" << setw(8) << S[flag].article << "|"; ?? ??? ??? ??? ??? ??? ?cout << setw(8) << S[flag].other << "|" << endl; ?? ??? ??? ??? ??? ??? ?cout << " ?———————————————————————————————————————————————— " << endl; ?? ??? ??? ??? ??? ??? ?Clear(); ?? ??? ??? ??? ??? ??? ?Keep(S); ?? ??? ??? ??? ??? ??? ?goto loop4; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else ?? ??? ??? ??? ??? ?if (choice1 == 4)//返回上級菜單 ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?else//輸入錯誤 ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?cout << "\n\t選擇錯誤,請重新選擇。。。\n" << endl; ?? ??? ??? ??? ??? ??? ?Clear(); ?? ??? ??? ??? ??? ??? ?goto loop4; ?? ??? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?case 5: // 存儲學(xué)生信息、 ?? ??? ??? ?{ ?? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ?Keep(S); ?? ??? ??? ??? ?cout << "\n********************歡迎使用宿舍衛(wèi)生管理系統(tǒng)********************\n " << endl; ?? ??? ??? ??? ?cout << "\n\t存儲成功。。。。。\n" << endl; ?? ??? ??? ??? ?Clear(); ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?case 6: //返回上級 ?? ??? ??? ?{ ?? ??? ??? ??? ?system("cls");//返回上級 ?? ??? ??? ??? ?goto loop1; ?? ??? ??? ?} ?? ??? ??? ?case 7:break; // 退出管理系統(tǒng) ?? ??? ??? ?default: { ?? ??? ??? ??? ?cout << "\n\n\t輸入錯誤,請重新選擇。。。\n\n" << endl; ?? ??? ??? ??? ?Clear(); ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?} ?? ??? ?} while (choicem != 7); ?? ??? ?break; ?? ?} ?? ?case 2: { ?? ??? ?system("cls");//清屏函數(shù); ?? ??? ?int choice; ?? ??? ?do { ?? ??? ??? ?cout << "\n********************歡迎使用宿舍衛(wèi)生管理系統(tǒng)********************\n " << endl; ?? ??? ??? ?cout << "\n ? ?顯示方式:\n " << endl; ?? ??? ??? ?cout << "\t①按寢室查詢\n" << endl; ?? ??? ??? ?cout << "\t②按寢室顯示\n" << endl; ?? ??? ??? ?cout << "\t③按成績顯示\n" << endl; ?? ??? ??? ?cout << "\t④本周寢室評價\n" << endl; ?? ??? ??? ?cout << "\t⑤返回上級\n" << endl; ?? ??? ??? ?cout << "\t⑥退出系統(tǒng)\n\n" << endl; ?? ??? ??? ?cout << " ? ?請選擇:"; ?? ??? ??? ?cin >> choice; ?? ??? ??? ?if (choice == 1)//按成績查詢 ?? ??? ??? ?{ ?? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ?searh_number(S);// 查詢函數(shù)以寢室號為關(guān)鍵字進行查詢(折半查找) ?? ??? ??? ??? ?Clear(); ? ?? ??? ??? ?} ?? ??? ??? ?else if (choice == 2)//按寢室號顯示 ?? ??? ??? ?{ ?? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ?Sort_number(S);//排序函數(shù)按照寢室號從小到大排序(堆排序) ?? ??? ??? ??? ?Display_All(S);//顯示函數(shù) ?? ??? ??? ??? ?Clear(); ?? ??? ??? ?} ?? ??? ??? ?else if (choice == 3)//按成績顯示 ?? ??? ??? ?{ ?? ??? ??? ??? ?Sort_grade(S);//調(diào)用排序函數(shù)按照成績從小到大排序(快排)? ?? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ?Display_All(S); // 調(diào)用顯示學(xué)生信息函數(shù) ?? ??? ??? ??? ?Clear(); ?? ??? ??? ?} ?? ??? ??? ?else if (choice == 4) ?? ??? ??? ?{ ?? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ?y_n_number(S);//是否是文明寢室ok ?? ??? ??? ??? ?Clear(); ?? ??? ??? ?} ?? ??? ??? ?else if (choice == 5)//返回上級 ?? ??? ??? ?{ ?? ??? ??? ??? ?system("cls");//清屏函數(shù) ?? ??? ??? ??? ?goto loop1; ?? ??? ??? ?} ?? ??? ??? ?else if(choice == 6) ?? ??? ??? ?{ ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?else { ?? ??? ??? ??? ?cout << "\n\t輸入錯誤,請重新輸入。。。。 \n\n" << endl; ?? ??? ??? ??? ?Clear(); ?? ??? ??? ?} ?? ??? ?} while (choice != 5); ?? ??? ?break; ?? ?} ?? ?case 3:break; ?? ?default: { ?? ??? ?cout << "\n\n\t輸入錯誤,請重新輸入。。。\n\n"<<endl; ?? ??? ?Clear(); ?? ??? ?goto loop1; ?? ?} ?? ?} }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語言詳細分析不同類型數(shù)據(jù)在內(nèi)存中的存儲
使用編程語言進行編程時,需要用到各種變量來存儲各種信息。變量保留的是它所存儲的值的內(nèi)存位置。這意味著,當您創(chuàng)建一個變量時,就會在內(nèi)存中保留一些空間。您可能需要存儲各種數(shù)據(jù)類型的信息,操作系統(tǒng)會根據(jù)變量的數(shù)據(jù)類型,來分配內(nèi)存和決定在保留內(nèi)存中存儲什么2022-08-08C++ for循環(huán)與nullptr的小知識點分享
這篇文章主要是來和大家介紹一些C++中的小知識點,本文分享的是for循環(huán)與nullptr,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下2023-05-05win10環(huán)境下C++ vs2015編譯opencv249的教程
這篇文章主要介紹了win10環(huán)境下C++ vs2015編譯opencv249的教程,本文分步驟給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03C++中HTTP?代理服務(wù)器的設(shè)計與實現(xiàn)詳解
代理服務(wù)器,即允許一個網(wǎng)絡(luò)終端(一般為客戶端)通過這個服務(wù)與另一?個網(wǎng)絡(luò)終端(一般為服務(wù)器)進行非直接的連接,下面我們就來看看如何使用C++設(shè)計與實現(xiàn)一個HTTP?代理服務(wù)器吧2024-01-01C++ WideCharToMultiByte()函數(shù)案例詳解
這篇文章主要介紹了C++ WideCharToMultiByte()函數(shù)案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08