C++實(shí)現(xiàn)學(xué)生檔案管理系統(tǒng)
本文實(shí)例為大家分享了C++實(shí)現(xiàn)學(xué)生檔案管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
課題描述:
1.為學(xué)生檔案管理人員編寫(xiě)一個(gè)學(xué)生檔案管理系統(tǒng) ,用菜單選擇方式完成下列功能:
2.學(xué)生檔案信息添加:包括學(xué)號(hào)、姓名、性別、出生日期、學(xué)院、專(zhuān)業(yè)、班級(jí)、身份證號(hào)、政治面貌、籍貫、家庭住址、電話等。
3.學(xué)生檔案信息查詢(xún):分別按學(xué)號(hào)、姓名、性別、學(xué)院、專(zhuān)業(yè)、班級(jí)、政治面貌、籍貫等進(jìn)行查詢(xún)。
4.學(xué)生檔案信息的修改、刪除:按姓名+學(xué)號(hào)進(jìn)行學(xué)生檔案信息的修改和刪除。
系統(tǒng)簡(jiǎn)要分析:
1.學(xué)生檔案管理系主要功能為:添加學(xué)生檔案信息,如:學(xué)號(hào),姓名,出生日期,學(xué)院,專(zhuān)業(yè),班級(jí),身份證號(hào)碼,籍貫,家庭地址,電話等信息,并可以編輯學(xué)生檔案信息,方便修改刪減,還有按照一定要求排序?qū)W生檔案。
2.本系統(tǒng)將創(chuàng)建一個(gè)學(xué)生檔案管理系統(tǒng)的類(lèi),添加一些學(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è)人信息,修改信息,查詢(xún)所要的信息。然后檔案管理員可以在后期查找所需學(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;//專(zhuān)業(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 << "請(qǐng)輸入要添加學(xué)生的信息:" << endl;
?? ?cout << "請(qǐng)輸入姓名:";
?? ?cin >> name;
?? ?cout << endl;
?? ?cout << "請(qǐng)輸入班級(jí):";
?? ?cin >> grade;
?? ?cout << endl;
?? ?cout << "請(qǐng)輸入學(xué)號(hào):";
?? ?cin >> number;
?? ?cout << endl;
?? ?cout << "請(qǐng)輸入性別:";
?? ?cin >> sex;
?? ?cout << endl;
?? ?cout << "手機(jī)號(hào)碼:";
?? ?cin >> telephone;
?? ?cout << endl;
?? ?cout << "身份證號(hào)碼:";
?? ?cin >> identify;
?? ?cout << endl;
?? ?cout << "專(zhuān)業(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 << "請(qǐng)輸入要?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沒(méi)有找到!" << endl;
?? ?}
?
}
?
void Operation::Search()//查詢(xún)?
{
?? ?Student* p = NULL;
?? ?cout << "\n** 查詢(xún)學(xué)生信息 **\n" << endl;
?? ?cout << "請(qǐng)輸入查詢(xún)方式:" << endl;
?? ?cout << "1.按學(xué)號(hào)查詢(xún)" << endl;
?? ?cout << "2.按姓名查詢(xún)" << endl;
?? ?cout << "3.返回" << endl;
?? ?char c;
?? ?cin >> c;
?? ?switch (c)
?? ?{
?? ?case '1':
?? ?{string n;
?? ?cout << "請(qǐng)輸入你要查詢(xún)的學(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
?? ??? ??? ??? ?<< "專(zhuān)業(yè):" << p->getm() << endl
?? ??? ??? ??? ?<< "政治面貌:" << p->getp() << endl
?? ??? ??? ??? ?<< "籍貫:" << p->getna() << endl
?? ??? ??? ??? ?<< "家庭地址:" << p->geta() << endl;
?? ??? ??? ?
?? ??? ?}
?
?? ?}
?? ?break;
?? ?}
?? ?case '2':
?
?? ?{
?? ??? ?string name;
?? ??? ?cout << "請(qǐng)輸入你要查詢(xún)的學(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?? ?
?? ??? ??? ??? ??? ?<< "專(zhuān)業(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專(zhuān)業(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 << "請(qǐng)輸入你要修改的學(xué)生姓名" << endl;
?? ?cin >> n;
?? ?Student* p;
?? ?for (p = head->next; p != NULL; p = p->next)
?? ??? ?if (p->getname() == n)
?? ??? ?{
?? ??? ??? ?cout << "請(qǐng)選擇您要修改的信息項(xiàng):" << endl;
?? ??? ??? ?cout << "1、學(xué)號(hào),2、班別,3、姓名,4、性別,5、手機(jī)號(hào)碼,6、身份證號(hào)碼,7、出生日期,8、專(zhuān)業(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請(qǐng)選擇:";
?? ??? ?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.查詢(xún)信息

4.刪除修改信息

5.退出系統(tǒng)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++中的不規(guī)則二維數(shù)組實(shí)現(xiàn)代碼
本文介紹了一個(gè)在C++中保存不定長(zhǎng)二維數(shù)組的數(shù)據(jù)結(jié)構(gòu),在這個(gè)結(jié)構(gòu)中,我們使用了一個(gè)含有指針和數(shù)組長(zhǎng)度的結(jié)構(gòu)體,用這樣的一個(gè)結(jié)構(gòu)體構(gòu)造一個(gè)結(jié)構(gòu)體數(shù)組,用于存儲(chǔ)每一個(gè)不定長(zhǎng)的數(shù)組,感興趣的朋友一起看看吧2024-03-03
C++實(shí)現(xiàn)猜數(shù)小游戲的實(shí)現(xiàn)
這篇文章主要介紹了C++實(shí)現(xiàn)猜數(shù)小游戲的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
C語(yǔ)言實(shí)現(xiàn)圖書(shū)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)圖書(shū)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
C語(yǔ)言多線程服務(wù)器的實(shí)現(xiàn)實(shí)例
這篇文章主要介紹了C語(yǔ)言多線程服務(wù)器的實(shí)現(xiàn)實(shí)例,文章用實(shí)例講解的很清楚,有對(duì)這方面不太懂的同學(xué)可以參考下2021-02-02
C語(yǔ)言結(jié)構(gòu)數(shù)組實(shí)現(xiàn)貪吃蛇小游戲
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言結(jié)構(gòu)數(shù)組實(shí)現(xiàn)貪吃蛇小游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
C++使用grpc實(shí)現(xiàn)回射服務(wù)器
gRPC是由Google開(kāi)發(fā)的一個(gè)開(kāi)源的高性能遠(yuǎn)程過(guò)程調(diào)用(RPC)框架,用于在分布式系統(tǒng)中實(shí)現(xiàn)跨語(yǔ)言的服務(wù)通信,本文我們就來(lái)看看C++如何使用grpc實(shí)現(xiàn)回射服務(wù)器2024-10-10

