C++實(shí)現(xiàn)學(xué)生檔案管理系統(tǒng)
本文實(shí)例為大家分享了C++實(shí)現(xiàn)學(xué)生檔案管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
課題描述:
1.為學(xué)生檔案管理人員編寫一個(gè)學(xué)生檔案管理系統(tǒng) ,用菜單選擇方式完成下列功能:
2.學(xué)生檔案信息添加:包括學(xué)號(hào)、姓名、性別、出生日期、學(xué)院、專業(yè)、班級(jí)、身份證號(hào)、政治面貌、籍貫、家庭住址、電話等。
3.學(xué)生檔案信息查詢:分別按學(xué)號(hào)、姓名、性別、學(xué)院、專業(yè)、班級(jí)、政治面貌、籍貫等進(jìn)行查詢。
4.學(xué)生檔案信息的修改、刪除:按姓名+學(xué)號(hào)進(jìn)行學(xué)生檔案信息的修改和刪除。
系統(tǒng)簡要分析:
1.學(xué)生檔案管理系主要功能為:添加學(xué)生檔案信息,如:學(xué)號(hào),姓名,出生日期,學(xué)院,專業(yè),班級(jí),身份證號(hào)碼,籍貫,家庭地址,電話等信息,并可以編輯學(xué)生檔案信息,方便修改刪減,還有按照一定要求排序?qū)W生檔案。
2.本系統(tǒng)將創(chuàng)建一個(gè)學(xué)生檔案管理系統(tǒng)的類,添加一些學(xué)生檔案的屬性和行為,進(jìn)行學(xué)生檔案信息的輸入和輸出。
3.該檔案管理系統(tǒng)的修改和刪除功能,分別可以由姓名和學(xué)號(hào)先進(jìn)行查找,然后輸出要修改的學(xué)生信息,然后系統(tǒng)會(huì)提供相應(yīng)的提示,讓你選要修改的學(xué)生信息中具體的信息,如單獨(dú)修改學(xué)號(hào)或?qū)I(yè)信息等。本系統(tǒng)的插入和刪除功能,都運(yùn)用了單鏈表易于刪除和查找的功能特點(diǎn)。
4.系統(tǒng)具體操作功能如下,首先程序運(yùn)行后,顯示菜單功能列表。然后輸入者根據(jù)菜單選項(xiàng)進(jìn)行輸入操作,可以添加自己的個(gè)人信息,修改信息,查詢所要的信息。然后檔案管理員可以在后期查找所需學(xué)生信息,進(jìn)行輸出修改。
源代碼:
#include<iostream> #include <string> using namespace std; class Student { private: ?? ?string number;//學(xué)號(hào) ?? ?string name;//名字 ?? ?string grade;//班級(jí) ?? ?string sex;//性別 ?? ?int telephone;//手機(jī)號(hào)碼 ?? ?int identify;//身份證號(hào)碼 ?? ?string major;//專業(yè) ?? ?string political;//政治面貌 ?? ?string address;//家庭地址 ?? ?string nation;//籍貫 public: ?? ?Student* next;//next指向下一個(gè)學(xué)生,構(gòu)成鏈表 ?? ?Student() { next = NULL; } ?? ?Student(string n, string g, string num, string s, int tp, int i, string m, string p,string na,string a) ?? ?{ ?? ??? ?name = n; ?? ??? ?grade = g; ?? ??? ?number = num; ?? ??? ?sex = s; ?? ??? ?telephone = tp; ?? ??? ?identify = i; ?? ??? ?major = m; ?? ??? ?political = p; ?? ??? ?nation = na; ?? ??? ?address = a; ? ?? ??? ? ?? ??? ?next = NULL; ?? ?};//構(gòu)造函數(shù) ?? ?string getname() { return name; }//名字 ?? ?string getgrade() { return grade; }//班別 ?? ?string getnum() { return number; }//學(xué)號(hào) ?? ?string gets() { return sex; }//性別 ?? ?int gettp() { return telephone; }// ?? ?int geti() { return identify; }// ?? ?string getm() { return major; } ?? ?string getp() { return political; } ?? ?string getna() { return nation; } ?? ?string geta() { return address; } ?? ?void setnum(string num) { number = num; }//修改學(xué)號(hào) ?? ?void setgrade(string g) { grade = g; }//修改班級(jí) ?? ?void setname(string n) { name = n; }//修改名字 ?? ?void sets(string s) { sex = s; }//修改性別 ?? ?void settp(int tp) { telephone = tp; }//修改手機(jī)號(hào)碼 ?? ?void seti(int i) { identify = i; }//修改身份證 ?? ?void setm(string m) { major = m; } ?? ?void setp(string p) { political = p; } ?? ?void setna(string na) {nation = na;} ?? ?void seta(string a) { address = a; } }; ? class Operation { private: ?? ?Student* head; public: ?? ?Operation() ?? ?{ ?? ??? ?head = new Student; ?? ?} ?? ?void Menu();//菜單? ?? ?void Insert();//插入 ?? ?void Search();//查找 ?? ?void Remove();//修改 ?? ?void Delete();//刪除 ?? ?void Print();//輸出 }; ? ? void Operation::Menu() { ?? ?cout << "*******************************************************************************************" << endl; ?? ?cout << "------------------------- ? ? ? xxx大學(xué)學(xué)生檔案管理系統(tǒng) ? ? ? ?-------------------------" << endl; ?? ?cout << "------------------------- ? ? ? ?*********************** ? ? ? ? ?-------------------------" << endl; ?? ?cout << "------------------------- ? ? ? ? ? 1.增加學(xué)生信息 ? ? ? ? ? ? ? ?-------------------------" << endl; ?? ?cout << "------------------------- ? ? ? ? ? 2.顯示學(xué)生信息 ? ? ? ? ? ? ? ?-------------------------" << endl; ?? ?cout << "------------------------- ? ? ? ? ? 3.查找學(xué)生信息 ? ? ? ? ? ? ? ?-------------------------" << endl; ?? ?cout << "------------------------- ? ? ? ? ? 4.刪除學(xué)生信息 ? ? ? ? ? ? ? ?-------------------------" << endl; ?? ?cout << "------------------------- ? ? ? ? ? 5.修改學(xué)生信息 ? ? ? ? ? ? ? ?-------------------------" << endl; ?? ?cout << "------------------------- ? ? ? ? ? 6.安全退出系統(tǒng) ? ? ? ? ? ? ? ?-------------------------" << endl; ?? ?? } ? void Operation::Insert() ? ? //插入 { ?? ?string name;//名字 ?? ?string grade;//班級(jí) ?? ?string number;//學(xué)號(hào) ?? ?string sex;//性別 ?? ?int telephone;//手機(jī)號(hào) ?? ?int identify;//身份證號(hào)碼 ?? ?string major; ?? ?string political; ?? ?string nation; ?? ?string address; ?? ?Student* p = NULL; ?? ?cout << "請輸入要添加學(xué)生的信息:" << endl; ?? ?cout << "請輸入姓名:"; ?? ?cin >> name; ?? ?cout << endl; ?? ?cout << "請輸入班級(jí):"; ?? ?cin >> grade; ?? ?cout << endl; ?? ?cout << "請輸入學(xué)號(hào):"; ?? ?cin >> number; ?? ?cout << endl; ?? ?cout << "請輸入性別:"; ?? ?cin >> sex; ?? ?cout << endl; ?? ?cout << "手機(jī)號(hào)碼:"; ?? ?cin >> telephone; ?? ?cout << endl; ?? ?cout << "身份證號(hào)碼:"; ?? ?cin >> identify; ?? ?cout << endl; ?? ?cout << "專業(yè):"; ?? ?cin >> major; ?? ?cout << endl; ?? ?cout << "政治面貌:"; ?? ?cin >> political; ?? ?cout << endl; ?? ?cout << "籍貫:"; ?? ?cin >> nation; ?? ?cout << endl; ?? ?cout << "家庭地址:"; ?? ?cin >> address; ?? ?cout << endl; ?? ?Student* s = new Student(name, grade, number, sex, telephone, identify, ?major, political, nation, address); ?? ??? ?p = head; ?? ?while (p->next != NULL && p->getnum() ?< s->getnum()) ?? ?{ ?? ??? ?p = p->next; ?? ?} ?? ?s->next = p->next; ?? ?p->next = s; } ? ? void Operation::Delete()//刪除 { ?? ?string name; ?? ?Student* p = head->next, * q = head; ?? ?cout << "請輸入要?jiǎng)h除學(xué)生信息的姓名:" << endl; ?? ?cin >> name; ?? ?while (p != NULL) ?? ?{ ?? ??? ?if (p->getname() == name) ?? ??? ?{ ?? ??? ??? ?q->next = p->next; ?? ??? ??? ?delete p; ?? ??? ??? ?break; ?? ??? ?} ?? ??? ?p = p->next; ?? ??? ?q = q->next; ? ?? ?} ?? ?if (p != NULL) ?? ?{ ?? ??? ?cout << "刪除成功!" << endl; ?? ?} ?? ?if (p == NULL) ?? ?{ ?? ??? ?cout << "\t\t沒有找到!" << endl; ?? ?} ? } ? void Operation::Search()//查詢? { ?? ?Student* p = NULL; ?? ?cout << "\n** 查詢學(xué)生信息 **\n" << endl; ?? ?cout << "請輸入查詢方式:" << endl; ?? ?cout << "1.按學(xué)號(hào)查詢" << endl; ?? ?cout << "2.按姓名查詢" << endl; ?? ?cout << "3.返回" << endl; ?? ?char c; ?? ?cin >> c; ?? ?switch (c) ?? ?{ ?? ?case '1': ?? ?{string n; ?? ?cout << "請輸入你要查詢的學(xué)生的學(xué)號(hào)" << endl; ?? ?cin >> n; ?? ?for (p = head; p != NULL; p = p->next) ?? ?{ ?? ??? ?if (p->getnum() == n) ?? ??? ?{ ?? ??? ??? ?cout ?? ??? ??? ??? ?<< "姓名:" << p->getname() << endl ?? ??? ??? ??? ?<< "班別:" << p->getgrade() << endl ?? ??? ??? ??? ?<< "學(xué)號(hào):" << p->getnum() << endl ?? ??? ??? ??? ?<< "性別:" << p->getgrade() << endl ?? ??? ??? ??? ?<< "電話號(hào)碼:" << p->gettp() << endl ?? ??? ??? ??? ?<< "身份證號(hào)碼:" << p->geti() << endl ?? ??? ??? ??? ?<< "專業(yè):" << p->getm() << endl ?? ??? ??? ??? ?<< "政治面貌:" << p->getp() << endl ?? ??? ??? ??? ?<< "籍貫:" << p->getna() << endl ?? ??? ??? ??? ?<< "家庭地址:" << p->geta() << endl; ?? ??? ??? ? ?? ??? ?} ? ?? ?} ?? ?break; ?? ?} ?? ?case '2': ? ?? ?{ ?? ??? ?string name; ?? ??? ?cout << "請輸入你要查詢的學(xué)生姓名" << endl; ?? ??? ?cin >> name; ?? ??? ?for (p = head; p != NULL; p = p->next) ?? ??? ?{ ?? ??? ??? ?if (name == p->getname()) ?? ??? ??? ?{ ?? ??? ??? ??? ?cout ?? ??? ??? ??? ??? ?<< "姓名:" << p->getname() << endl ?? ??? ??? ??? ??? ?<< "班級(jí):" << p->getgrade() << endl ?? ??? ??? ??? ??? ?<< "學(xué)號(hào):" << p->getnum() << endl ?? ??? ??? ??? ??? ?<< "性別:" << p->gets() << endl ?? ??? ??? ??? ??? ?<< "手機(jī)號(hào)碼:" << p->gettp() << endl ?? ??? ??? ??? ??? ?<< "身份證號(hào)碼:" << p->geti() << endl?? ? ?? ??? ??? ??? ??? ?<< "專業(yè):" << p->getm() << endl ?? ??? ??? ??? ??? ?<< "政治面貌:" << p->getp() << endl ?? ??? ??? ??? ??? ?<< "籍貫:" << p->getna() << endl ?? ??? ??? ??? ??? ?<< "家庭地址:" << p->geta() << endl; ?? ??? ??? ?} ? ?? ??? ?} ?? ??? ?break; ?? ?} ?? ?case '3': ?? ??? ?return; ?? ?} } void Operation::Print() ? //輸出 { ?? ?Student* p; ?? ?cout ?? ??? ?<< "姓名" ?? ??? ?<< "\t班級(jí)" ?? ??? ?<< "\t學(xué)號(hào)" ?? ??? ?<< "\t性別" ?? ??? ?<< "\t手機(jī)號(hào)碼" ?? ??? ?<< "\t身份證號(hào)碼" ?? ??? ?<< "\t專業(yè)" ?? ??? ?<< "\t政治面貌" ?? ??? ?<< "\t籍貫" ?? ??? ?<< "\t地址" << endl; ?? ?for (p = head->next; p != NULL; p = p->next) ?? ??? ?cout ?? ??? ?<< p->getname() ?? ??? ?<< "\t" << p->getgrade() ?? ??? ?<< "\t" << p->getnum() ?? ??? ?<< "\t" << p->gets() ?? ??? ?<< "\t" << p->gettp() ?? ??? ?<< "\t\t" << p->geti() ?? ??? ?<< "\t\t" << p->getm() ?? ??? ?<< "\t" << p->getp() ?? ??? ?<< "\t\t" << p->getna() ?? ??? ?<< "\t" << p->geta() ?? ??? ?<< endl; ? } ? void Operation::Remove() ? //修改 { ?? ?string n;//修改項(xiàng) ?? ?string number;//學(xué)號(hào) ?? ?string grade;//班級(jí) ?? ?string name;//名字 ?? ?string sex;//性別 ?? ?int telephone;//手機(jī)號(hào)碼 ?? ?int identity;//身份證號(hào)碼 ?? ?int birth;//出生日期 ?? ?string major; ?? ?string political; ?? ?string nation; ?? ?string address; ?? ?cout << "請輸入你要修改的學(xué)生姓名" << endl; ?? ?cin >> n; ?? ?Student* p; ?? ?for (p = head->next; p != NULL; p = p->next) ?? ??? ?if (p->getname() == n) ?? ??? ?{ ?? ??? ??? ?cout << "請選擇您要修改的信息項(xiàng):" << endl; ?? ??? ??? ?cout << "1、學(xué)號(hào),2、班別,3、姓名,4、性別,5、手機(jī)號(hào)碼,6、身份證號(hào)碼,7、出生日期,8、專業(yè),9、政治面貌,10、籍貫,11、家庭地址。" << endl; ?? ??? ??? ?int in; ?? ??? ??? ?cin >> in; ?? ??? ??? ?switch (in) ?? ??? ??? ?{ ?? ??? ??? ?case 1: ?? ??? ??? ??? ?cout << p->getnum() << "修改為:" << endl; ?? ??? ??? ??? ?cin >> number; p->setnum(number); ?? ??? ??? ??? ?break; ?? ??? ??? ?case 2: ?? ??? ??? ??? ?cout << p->getgrade() << "修改為:" << endl; ?? ??? ??? ??? ?cin >> grade; p->setgrade(grade); ?? ??? ??? ??? ?break; ?? ??? ??? ?case 3: ?? ??? ??? ??? ?cout << p->getname() << "修改為:" << endl; ?? ??? ??? ??? ?cin >> name; p->setname(name); ?? ??? ??? ??? ?break; ?? ??? ??? ?case 4: ?? ??? ??? ??? ?cout << p->gets() << "修改為:" << endl; ?? ??? ??? ??? ?cin >> sex; p->sets(sex); ?? ??? ??? ??? ?break; ?? ??? ??? ?case 5: ?? ??? ??? ??? ?cout << p->gettp() << "修改為:" << endl; ?? ??? ??? ??? ?cin >> telephone; p->settp(telephone); ?? ??? ??? ??? ?break; ?? ??? ??? ?case 6: ?? ??? ??? ??? ?cout << p->geti() << "修改為:" << endl; ?? ??? ??? ??? ?cin >> identity; p->seti(identity); ?? ??? ??? ??? ?break; ?? ??? ??? ? ?? ??? ??? ? ?? ??? ??? ?case 8: ?? ??? ??? ??? ?cout << p->getm() << "修改為:" << endl; ?? ??? ??? ??? ?cin >> major; p->setm(major); ?? ??? ??? ??? ?break; ?? ??? ??? ?case 9: ?? ??? ??? ??? ?cout << p->getp() << "修改為:" << endl; ?? ??? ??? ??? ?cin >> political; p->setp(political); ?? ??? ??? ??? ?break; ?? ??? ??? ?case 10: ?? ??? ??? ??? ?cout << p->getna() << "修改為:" << endl; ?? ??? ??? ??? ?cin >> nation; p->setna(nation); ?? ??? ??? ??? ?break; ?? ??? ??? ?case 11: ?? ??? ??? ??? ?cout << p->geta() << "修改為:" << endl; ?? ??? ??? ??? ?cin >> birth; p->seta(address); ?? ??? ??? ??? ?break; ?? ??? ??? ? ?? ??? ??? ?default: ?? ??? ??? ??? ?cout << "輸入錯(cuò)誤!" << endl; ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ?} ? } ? int main() { ?? ?Operation O; ?? ?O.Menu(); ?? ?while (1) ?? ?{ ?? ??? ?int n; ?? ??? ?cout << "\n\t\t\n\t\t請選擇:"; ?? ??? ?cin >> n; ?? ??? ?switch (n) ?? ??? ?{ ?? ??? ?case 1://增加 ?? ??? ??? ?O.Insert(); ?? ??? ??? ?break; ?? ??? ?case 2://顯示 ?? ??? ??? ?O.Print(); ?? ??? ??? ?break; ?? ??? ?case 3://查找 ?? ??? ??? ?O.Search(); ?? ??? ??? ?break; ?? ??? ?case 4://刪除 ?? ??? ??? ?O.Delete(); ?? ??? ??? ?break; ?? ??? ?case 5://修改 ?? ??? ??? ?O.Remove(); ?? ??? ??? ?break; ?? ??? ?case 6: ?? ??? ??? ?cout << "******************************" << "\n感謝您的使用!\n" << "******************************" << endl; ?? ??? ??? ?exit(0); ? ?? ??? ?} ? ?? ?} ? ?? ?return 0; ? }
效果演示:
1.主函數(shù)樣式
2.輸入輸出信息
3.查詢信息
4.刪除修改信息
5.退出系統(tǒng)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++ WideCharToMultiByte()函數(shù)案例詳解
這篇文章主要介紹了C++ WideCharToMultiByte()函數(shù)案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08C語言怎么連接兩個(gè)數(shù)組的內(nèi)容你知道嗎
這篇文章主要為大家介紹了C語言怎么連接兩個(gè)數(shù)組的內(nèi)容,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01C++利用inotify+epoll實(shí)現(xiàn)異步文件監(jiān)控的方法
這篇文章講給大家詳細(xì)介紹一下C++利用inotify+epoll實(shí)現(xiàn)異步文件監(jiān)控的方法,inotify是一種異步文件監(jiān)控機(jī)制,文章通過代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2023-08-08C++實(shí)現(xiàn)LeetCode(26.有序數(shù)組中去除重復(fù)項(xiàng))
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(26.有序數(shù)組中去除重復(fù)項(xiàng)),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C++入門概覽和嘗試創(chuàng)建第一個(gè)C++程序
這篇文章主要介紹了C++入門概覽和嘗試創(chuàng)建第一個(gè)C++程序,同時(shí)也包括編寫類的示例展示C++面向?qū)ο蟮奶匦?需要的朋友可以參考下2015-09-09VSCode搭建STM32開發(fā)環(huán)境的實(shí)現(xiàn)步驟
因?yàn)閂SCode免費(fèi)且好用,可以安裝各種插件,本文主要介紹了VSCode搭建STM32開發(fā)環(huán)境的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12