C++實現(xiàn)學生檔案管理系統(tǒng)
本文實例為大家分享了C++實現(xiàn)學生檔案管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
課題描述:
1.為學生檔案管理人員編寫一個學生檔案管理系統(tǒng) ,用菜單選擇方式完成下列功能:
2.學生檔案信息添加:包括學號、姓名、性別、出生日期、學院、專業(yè)、班級、身份證號、政治面貌、籍貫、家庭住址、電話等。
3.學生檔案信息查詢:分別按學號、姓名、性別、學院、專業(yè)、班級、政治面貌、籍貫等進行查詢。
4.學生檔案信息的修改、刪除:按姓名+學號進行學生檔案信息的修改和刪除。
系統(tǒng)簡要分析:
1.學生檔案管理系主要功能為:添加學生檔案信息,如:學號,姓名,出生日期,學院,專業(yè),班級,身份證號碼,籍貫,家庭地址,電話等信息,并可以編輯學生檔案信息,方便修改刪減,還有按照一定要求排序?qū)W生檔案。
2.本系統(tǒng)將創(chuàng)建一個學生檔案管理系統(tǒng)的類,添加一些學生檔案的屬性和行為,進行學生檔案信息的輸入和輸出。
3.該檔案管理系統(tǒng)的修改和刪除功能,分別可以由姓名和學號先進行查找,然后輸出要修改的學生信息,然后系統(tǒng)會提供相應的提示,讓你選要修改的學生信息中具體的信息,如單獨修改學號或?qū)I(yè)信息等。本系統(tǒng)的插入和刪除功能,都運用了單鏈表易于刪除和查找的功能特點。
4.系統(tǒng)具體操作功能如下,首先程序運行后,顯示菜單功能列表。然后輸入者根據(jù)菜單選項進行輸入操作,可以添加自己的個人信息,修改信息,查詢所要的信息。然后檔案管理員可以在后期查找所需學生信息,進行輸出修改。
源代碼:
#include<iostream> #include <string> using namespace std; class Student { private: ?? ?string number;//學號 ?? ?string name;//名字 ?? ?string grade;//班級 ?? ?string sex;//性別 ?? ?int telephone;//手機號碼 ?? ?int identify;//身份證號碼 ?? ?string major;//專業(yè) ?? ?string political;//政治面貌 ?? ?string address;//家庭地址 ?? ?string nation;//籍貫 public: ?? ?Student* next;//next指向下一個學生,構(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; }//學號 ?? ?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; }//修改學號 ?? ?void setgrade(string g) { grade = g; }//修改班級 ?? ?void setname(string n) { name = n; }//修改名字 ?? ?void sets(string s) { sex = s; }//修改性別 ?? ?void settp(int tp) { telephone = tp; }//修改手機號碼 ?? ?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大學學生檔案管理系統(tǒng) ? ? ? ?-------------------------" << endl; ?? ?cout << "------------------------- ? ? ? ?*********************** ? ? ? ? ?-------------------------" << endl; ?? ?cout << "------------------------- ? ? ? ? ? 1.增加學生信息 ? ? ? ? ? ? ? ?-------------------------" << endl; ?? ?cout << "------------------------- ? ? ? ? ? 2.顯示學生信息 ? ? ? ? ? ? ? ?-------------------------" << endl; ?? ?cout << "------------------------- ? ? ? ? ? 3.查找學生信息 ? ? ? ? ? ? ? ?-------------------------" << endl; ?? ?cout << "------------------------- ? ? ? ? ? 4.刪除學生信息 ? ? ? ? ? ? ? ?-------------------------" << endl; ?? ?cout << "------------------------- ? ? ? ? ? 5.修改學生信息 ? ? ? ? ? ? ? ?-------------------------" << endl; ?? ?cout << "------------------------- ? ? ? ? ? 6.安全退出系統(tǒng) ? ? ? ? ? ? ? ?-------------------------" << endl; ?? ?? } ? void Operation::Insert() ? ? //插入 { ?? ?string name;//名字 ?? ?string grade;//班級 ?? ?string number;//學號 ?? ?string sex;//性別 ?? ?int telephone;//手機號 ?? ?int identify;//身份證號碼 ?? ?string major; ?? ?string political; ?? ?string nation; ?? ?string address; ?? ?Student* p = NULL; ?? ?cout << "請輸入要添加學生的信息:" << endl; ?? ?cout << "請輸入姓名:"; ?? ?cin >> name; ?? ?cout << endl; ?? ?cout << "請輸入班級:"; ?? ?cin >> grade; ?? ?cout << endl; ?? ?cout << "請輸入學號:"; ?? ?cin >> number; ?? ?cout << endl; ?? ?cout << "請輸入性別:"; ?? ?cin >> sex; ?? ?cout << endl; ?? ?cout << "手機號碼:"; ?? ?cin >> telephone; ?? ?cout << endl; ?? ?cout << "身份證號碼:"; ?? ?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 << "請輸入要刪除學生信息的姓名:" << 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** 查詢學生信息 **\n" << endl; ?? ?cout << "請輸入查詢方式:" << endl; ?? ?cout << "1.按學號查詢" << endl; ?? ?cout << "2.按姓名查詢" << endl; ?? ?cout << "3.返回" << endl; ?? ?char c; ?? ?cin >> c; ?? ?switch (c) ?? ?{ ?? ?case '1': ?? ?{string n; ?? ?cout << "請輸入你要查詢的學生的學號" << endl; ?? ?cin >> n; ?? ?for (p = head; p != NULL; p = p->next) ?? ?{ ?? ??? ?if (p->getnum() == n) ?? ??? ?{ ?? ??? ??? ?cout ?? ??? ??? ??? ?<< "姓名:" << p->getname() << endl ?? ??? ??? ??? ?<< "班別:" << p->getgrade() << endl ?? ??? ??? ??? ?<< "學號:" << p->getnum() << endl ?? ??? ??? ??? ?<< "性別:" << p->getgrade() << endl ?? ??? ??? ??? ?<< "電話號碼:" << p->gettp() << endl ?? ??? ??? ??? ?<< "身份證號碼:" << p->geti() << endl ?? ??? ??? ??? ?<< "專業(yè):" << p->getm() << endl ?? ??? ??? ??? ?<< "政治面貌:" << p->getp() << endl ?? ??? ??? ??? ?<< "籍貫:" << p->getna() << endl ?? ??? ??? ??? ?<< "家庭地址:" << p->geta() << endl; ?? ??? ??? ? ?? ??? ?} ? ?? ?} ?? ?break; ?? ?} ?? ?case '2': ? ?? ?{ ?? ??? ?string name; ?? ??? ?cout << "請輸入你要查詢的學生姓名" << endl; ?? ??? ?cin >> name; ?? ??? ?for (p = head; p != NULL; p = p->next) ?? ??? ?{ ?? ??? ??? ?if (name == p->getname()) ?? ??? ??? ?{ ?? ??? ??? ??? ?cout ?? ??? ??? ??? ??? ?<< "姓名:" << p->getname() << endl ?? ??? ??? ??? ??? ?<< "班級:" << p->getgrade() << endl ?? ??? ??? ??? ??? ?<< "學號:" << p->getnum() << endl ?? ??? ??? ??? ??? ?<< "性別:" << p->gets() << endl ?? ??? ??? ??? ??? ?<< "手機號碼:" << p->gettp() << endl ?? ??? ??? ??? ??? ?<< "身份證號碼:" << 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班級" ?? ??? ?<< "\t學號" ?? ??? ?<< "\t性別" ?? ??? ?<< "\t手機號碼" ?? ??? ?<< "\t身份證號碼" ?? ??? ?<< "\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;//修改項 ?? ?string number;//學號 ?? ?string grade;//班級 ?? ?string name;//名字 ?? ?string sex;//性別 ?? ?int telephone;//手機號碼 ?? ?int identity;//身份證號碼 ?? ?int birth;//出生日期 ?? ?string major; ?? ?string political; ?? ?string nation; ?? ?string address; ?? ?cout << "請輸入你要修改的學生姓名" << endl; ?? ?cin >> n; ?? ?Student* p; ?? ?for (p = head->next; p != NULL; p = p->next) ?? ??? ?if (p->getname() == n) ?? ??? ?{ ?? ??? ??? ?cout << "請選擇您要修改的信息項:" << endl; ?? ??? ??? ?cout << "1、學號,2、班別,3、姓名,4、性別,5、手機號碼,6、身份證號碼,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 << "輸入錯誤!" << 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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++ WideCharToMultiByte()函數(shù)案例詳解
這篇文章主要介紹了C++ WideCharToMultiByte()函數(shù)案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08C++利用inotify+epoll實現(xiàn)異步文件監(jiān)控的方法
這篇文章講給大家詳細介紹一下C++利用inotify+epoll實現(xiàn)異步文件監(jiān)控的方法,inotify是一種異步文件監(jiān)控機制,文章通過代碼示例介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下2023-08-08C++實現(xiàn)LeetCode(26.有序數(shù)組中去除重復項)
這篇文章主要介紹了C++實現(xiàn)LeetCode(26.有序數(shù)組中去除重復項),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07VSCode搭建STM32開發(fā)環(huán)境的實現(xiàn)步驟
因為VSCode免費且好用,可以安裝各種插件,本文主要介紹了VSCode搭建STM32開發(fā)環(huán)境的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下2023-12-12