第一篇:C++程序設計課程設計人口戶籍信息管理系統源程序
九、源程序代碼
#include
class population { private: int maxnum;//人口戶籍編號最大值r int sno;//編號 char name[20];char sex[2];int age;char birth[10];//出生日期 char folk[2];//民族
char mianmao[10];//政治面貌 char department[10];//村組名 char speciality[10];//家庭門牌號
char address[30];//人口家庭詳細地址 public: population();~population();void enter();//戶籍信息錄入函數 void display();//戶籍信息輸出函數 void setsno(int temp);int getsno();char *getname();char *getspeciality();void read();void write();void change();};population::population(){}
population::~population(){}
int population::getsno(){return sno;}
char *population::getspeciality()
齊齊哈爾大學C++程序設計課程設計用紙
{return speciality;}
void population::setsno(int temp){sno=temp;} char *population::getname(){return name;}
void population::display(){
cout< char ch; cout<<“ 請輸入要修改人員的信息”< cout<<“*******************************************************”< cout<<“姓名是不是要改寫(Y/N)”< cin>>ch; if(ch=='Y'||ch=='y') { cout<<“請輸入新姓名:”< cin>>name; } cout<<“輸入性別(男(n),女(m)):”< cin>>sex; if(strcmp(sex,“n”)!=0&&strcmp(sex,“m”)!=0) { cout<<“錯誤請重新輸入!:”< cin>>sex; } cout<<“輸入年齡:”< cin>>age; while(age<1||age>=110) { cout<<“錯誤請重新輸入!”< cin>>age; } cout<<“輸入出生日期:”< cin>>birth; cout<<“輸入民族:”< cin>>folk; 齊齊哈爾大學C++程序設計課程設計用紙 cout<<“出生日期:”< cin>>birth; cout<<“年齡:”< cin>>age; while(age<1||age>=110) { cout<<“錯誤請重新輸入!”< cin>>age; } cout<<“政治面貌類別(黨員(a),非黨員(b)):”< cin>>mianmao; while(strcmp(mianmao,“a”)!=0&&strcmp(mianmao,“b”)!=0) { cout<<“錯誤請重新輸入!”< cin>>mianmao; } cout<<“民族:”< cin>>folk; cout<<“村組名:”< cin>>department; cout<<“家庭門牌號:”< cin>>speciality; cout<<“家庭詳細地址:”< cin>>address;} //主程序部分: #include void read(){ ifstream afile(“population.txt”,ios::nocreate); afile.read((char*)&pop,sizeof pop);} void write(){ ofstream bfile(“population.txt”,ios::app); bfile.write((char*)&pop,sizeof pop); 齊齊哈爾大學C++程序設計課程設計用紙 if(i==pop.getsno()||strcmp(pop.getname(),ch1)==0|| strcmp(pop.getspeciality(),ch2)==0) { cout<<“你要查找的人員信息如下:”< cout< “年齡”< setw(8)<<“村組名”< pop.display(); i=0; k=0; m=1; return; } } if(m!=1)cout<<“沒有找到這名人員的信息!”< } void omit()//刪除函數 { int ch; cout<<“請輸入要刪除的人員的編號:”< cin>>ch; ifstream in(“population.txt”,ios::nocreate);//打開文件1,讀數據 ofstream out(“population1.txt”,ios::trunc);//打開文件寫數據到文件2 while(in)//循環讀數據 { if(in.read((char*)&pop,sizeof pop))//讀后存在pop變量里,讀pop這么大小 if(ch!=pop.getsno())// 如果讀出來的數據的pop取sno不等于剛才輸入的學號,將這組數據寫入文件 { out.write((char*)&pop,sizeof pop); } else cout<<“人員已成功刪除!”< } in.close();//關閉文件 out.close(); ifstream ifile(“population1.txt”,ios::nocreate);//將文件2的內容弄到文件1上 ofstream hfile(“population.txt”,ios::trunc); while(ifile) { if(ifile.read((char*)&pop,sizeof pop)) 齊齊哈爾大學C++程序設計課程設計用紙 } void menu(){ cout<<“ * 人口戶籍信息管理系統 *”< 0.退出管理系統 ”< cout<<“ 1.人員信息錄入 ”< cout<<“ 2.人員信息查詢 ”< cout<<“ 3.人員信息刪除 ”< cout<<“ 4.人員信息修改 ”< cout<<“ 5.人員信息輸出 ”< cout<<“ 請選擇以上操作(0=======5)”< int ch; while(1) { cin>>ch; switch(ch) { case 0:exit(0);menu();break; case 1:input();menu();break; case 2:search();menu();break; case 3:omit();menu();break;case 4:change();menu();break; case 5:output();menu();break; default:menu();cout<<“輸入無效請重新輸入(0========5)”< } } } int main(){ int count=0;char password[5]; //密碼 char name[11]; //用戶名 齊齊哈爾大學C++程序設計課程設計用紙 cout<<“ 謝謝使用-----人口戶籍信息管理系統!! ”< 再見! ”< cout<<“*******************************************************************************”< C++程序設計實踐教學環節任務書 一、題目:學生信息管理系統 二、目的與要求 1.目的: (1)掌握面向對象程序設計的基本思路和方法; (2)了解系統開發的需求分析、類層次設計、模塊分解、編碼測試、模塊 組裝與整體調試的全過程; (3)進一步熟悉C++中類的概念、類的封裝、繼承的實現方式;(4)學會分析簡單的實際問題,并能利用所學的知識建立系統的邏輯結構,學會簡單的調試技巧和方法。逐步熟悉面向對象程序設計的方法,養成良好的編程習慣。 2.要求基本要求: (1)要求利用C++面向對象的編程思想來完成系統的設計;(2)進行簡單界面設計,能夠實現友好的交互;(3)具有清晰的程序流程圖和數據結構的詳細定義;(4)熟練掌握C++對文件的各種操作。 三、信息描述 有關該系統基本信息的描述(如:學號、姓名、系別、班級和各科成績等)。 四、功能描述 1.添加、刪除 系統將提示用戶輸入新添加學生的信息;由用戶輸入要刪除的學生的學號,然后調用刪除函數,刪除該名學生的資料。2.查找 首先由用戶輸入要查找的學生的學號,系統用查找函數查找,然后系統就調用輸出函數。 3.修改 首先由用戶輸入要修改的學生的學號,然后系統用修改函數查找,顯示該名學生的資料,然后系統提示用戶輸入需要修改的項目和新的資料。4.界面要求 開始登錄管理界面、主要提示菜單界面(提示用戶執行何種操作)等。 五、解決方案 1.分析程序的功能要求,劃分程序功能模塊。2.畫出系統流程圖。 3.代碼的編寫、程序的功能調試。4.完成系統總結報告以及使用說明書 六、進度安排 此次課程設計時間為一周或兩周,分四個階段完成: 1.分析設計階段。指導教師應積極引導學生自主學習和鉆研問題,明確 設計要求,找出實現方法,按照需求分析、總體設計、詳細設計這幾個步驟進行。 2.編碼調試階段:根據設計分析方案編寫代碼,然后調試該代碼,實現 課題要求的功能。 3.總結報告階段:總結設計工作,寫出課程設計說明書,要求學生寫出需 求分析、總體設計、詳細設計、編碼、測試的步驟和內容。4.考核階段。 七、撰寫課程設計報告或課程設計總結 總結報告包括需求分析、總體設計、詳細設計、編碼(詳細寫出編程步驟)、測試的步驟和內容、課程設計總結、參考資料等,不符合以上要求者,則本次設計以不及格記。 八、參考資料 《C++語言程序設計教程》 網上相關資料(....略) 教職工信息管理系統源碼 #include #define maxsize 100 fstream iofile;//文件指針 class Time //時間類 { public: int year; int month; int day;}; class Telem //個人信息 { public: char name[20]; char sex[10]; Time birthtime;//組合Time類 char num[20]; char wage[20]; Time worktime; int year; char department[20]; friend istream& operator>>(istream& input,Telem& T); friend ostream& operator<<(ostream& output,Telem& T); friend int operator-(Time & t1,Time & t2);}; class People:virtual public Telem //雇員類 { public: People(); virtual void AddF()=0;//添加 virtual void Addall()=0; virtual void Add()=0; virtual void Display();//輸出數組的內容 virtual void Displaypart(char p[]); virtual void Findname(char n[]); virtual void Findyear(int); virtual void Del(char n[])=0; virtual void Del(int);protected: Telem data[maxsize]; Time now; int length;}; class Teacher:virtual public People //派生虛基類 { public: virtual void AddF(); virtual void Addall(); virtual void Add(); virtual void Display(); virtual void Del(int i); virtual void Del(char n[]);}; class worker:virtual public People //派生虛基類 { public: virtual void AddF(); virtual void Addall(); virtual void Add(); virtual void Display(); virtual void Del(int i); virtual void Del(char n[]);}; People::People()//系統自動生成的構造函數 { length=0; now.year=2010; now.month=7; now.day=6;} void People::Display()//引用 { int i; for(i=0;i cout< void People::Displaypart(char p[])//引用數組 { int i,c; for(i=0;i if(strcmp(data[i].wage,p)==0) { cout<<“輸出選擇姓名1 性別2 編號3 工資4 出生日期5 工作時間6 年齡7 系別8 退出選擇9”< while(cin>>c) { switch(c) { case 1: cout<<“姓名:”< case 2: cout<<“性別:”< case 3: cout<<“編號:”< case 4: cout<<“工資:”< case 5: cout<<“出生日期:”< case 6: cout<<“工作時間:”< case 7: cout<<“年齡:”< case 8: cout<<“系別:”< case 9: goto loop; default:cout<<“操作錯誤......”< } } loop:; } } void People::Findname(char n[])//引用 { int i; for(i=0;i if(strcmp(data[i].name,n)==0)//對象引用 cout< void People::Findyear(int y){ int i; for(i=0;i if(data[i].year==y) cout< void People::Del(int i){ int j; if(i<1||i>length) cout<<“不存在第”< for(j=i;j data[j-1]=data[j]; length--;} void worker::AddF(){ int flag=0; iofile.open(“worker_information.txt”,ios::in|ios::binary);//文件的打開與關閉 while(iofile.seekg(ios::cur)) { iofile.seekg(length*sizeof(data[length]),ios::beg); iofile.read((char*)&data[length],sizeof(data[length]));//文件的隨機訪問 length++; if(length==maxsize) { flag=1; goto loop; } } People::Del(length); cout<<“添加人員信息成功......”< loop: if(1==flag) cout<<“人員信息儲存空間已滿......”< iofile.close();} void worker::Addall(){ char ans; int flag=0; iofile.open(“worker_information.txt”,ios::out|ios::binary); do { cin>>data[length]; data[length].year=now-data[length].birthtime; iofile.write((char*)&data[length],sizeof(data[length])); cout<<“添加人員信息成功......”< length++; if(length==maxsize) { flag=1; goto loop; } cout<<“contine(Y|N)?”; cin>>ans; }while('y'==ans||'Y'==ans);loop: if(1==flag) cout<<“人員信息儲存空間已滿......”< iofile.close();} void worker::Add(){ int flag=0; iofile.open(“worker_information.txt”,ios::app|ios::out|ios::binary); if(length==maxsize) { flag=1; goto loop; } cin>>data[length]; data[length].year=now-data[length].birthtime; iofile.write((char*)&data[length],sizeof(data[length])); cout<<“添加人員信息成功......”< length++; loop: if(1==flag) cout<<“人員信息儲存空間已滿......”< iofile.close();} void worker::Display(){ cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆工人信息 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”< if(0==length) cout<<“無......”< int i; for(i=0;i cout< int i,j,k; for(i=0;i if(strcmp(data[i].name,n)==0){ k=i+1;break;} if(k<1) cout<<“不存在姓名”< for(j=k;j data[j-1]=data[j]; length--; cout<<“刪除人員信息成功......”< void worker::Del(int i){ int j; if(i<1||i>length) cout<<“不存在第”< for(j=i;j data[j-1]=data[j]; length--; cout<<“刪除成功......”< } void Teacher::AddF(){ int flag=0; iofile.open(“Teacher_information.txt”,ios::in|ios::binary); while(iofile.seekg(sizeof(data[length]),ios::cur)) { if(iofile.seekg(length*sizeof(data[length]),ios::beg)) iofile.read((char*)&data[length],sizeof(data[length])); else break; length++; if(length==maxsize) { flag=1; goto loop; } } People::Del(length); cout<<“添加人員信息成功......”< if(1==flag) cout<<“人員信息儲存空間已滿......”< iofile.close();} void Teacher::Addall(){ char ans; int flag=0; iofile.open(“Teacher_information.txt”,ios::in|ios::out|ios::binary); do { cin>>data[length]; data[length].year=now-data[length].birthtime; iofile.write((char*)&data[length],sizeof(data[length])); cout<<“添加人員信息成功......”< length++; if(length==maxsize) { flag=1; goto loop; } cout<<“contine(Y|N)?”; cin>>ans; }while('y'==ans||'Y'==ans);loop: if(1==flag) cout<<“人員信息儲存空間已滿......”< iofile.close();} void Teacher::Add(){ int flag=0; iofile.open(“Teacher_information.txt”,ios::app|ios::out|ios::binary); if(length==maxsize) { flag=1; goto loop; } cin>>data[length]; data[length].year=now-data[length].birthtime; iofile.write((char*)&data[length],sizeof(data[length])); cout<<“添加人員信息成功......”< length++;loop: if(1==flag) cout<<“人員信息儲存空間已滿......”< iofile.close();} void Teacher::Display(){ cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆教師信息 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”< if(0==length) cout<<“無......”< int i; for(i=0;i cout< void Teacher::Del(char n[]){ int i,j,k; for(i=0;i if(strcmp(data[i].name,n)==0) { k=i+1;break; } if(k<1)cout<<“不存在姓名”< for(j=k;j data[j-1]=data[j]; length--; cout<<“刪除人員信息成功......”< void Teacher::Del(int i){ int j; if(i<1||i>length) cout<<“不存在第”< for(j=i;j data[j-1]=data[j]; length--; cout<<“刪除成功......”< istream& operator>>(istream& input,Telem& T){ int y,m,d; cout<<“請輸入姓名(以*結尾):”< input.getline(T.name,20,'*'); cout<<“請輸入性別(以*結尾 男或女):”< input.getline(T.sex,10,'*'); cout<<“編號(以*結尾):”< input.getline(T.num,20,'*'); cout<<“工資(以*結尾):”< input.getline(T.wage,20,'*'); cout<<“請輸入出生日期:”< input>>y>>m>>d; T.birthtime.year=(y>=1900&&y<=2100)?y:1900; T.birthtime.month=(m>=1&&m<=12)?m:1; T.birthtime.day=(d>=1&&d<=31)?d:1; cout<<“請輸入系別(以*結尾):”< input.getline(T.department,20,'*'); cout<<“參加工作時間:”< input>>y>>m>>d; T.worktime.year=(y>=1900&&y<=2100)?y:1900; T.worktime.month=(m>=1&&m<=12)?m:1; T.worktime.day=(d>=1&&d<=31)?d:1; return input;} ostream& operator<<(ostream& output,Telem& T){ cout<<“姓名:”; output< cout<<“性別:”; output< cout<<“編號:”; output< cout<<“工資:”; output< cout<<“出生日期:”; output< cout<<“系別:”; output< cout<<“參加工作時間:”; output< cout<<“年齡:”; output< return output;} int operator-(Time & t1,Time & t2){ return t1.year-t2.year;} void Showmenu(){ cout< cout<<“ 歡 迎 進 入 教 職 工 信 息 管 理 系 統”< cout<<“ 2010 年7月7日發布”<<“ 版權所有: swa”< cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★人員信息管理系統★ ☆ ★ ☆ ★ ☆ ★ ☆ ★”< cout<<“ ★ 1-從鍵盤錄入全部人員記錄 ☆ ”< cout<<“ ☆ 2-增加一位人員記錄 ★”< cout<<“ ★ 3-顯示全部人員記錄 ☆”< cout<<“ ☆ 4-按系別輸出人員信息(可選)★ ”< cout<<“ ★ 5-按姓名或年齡檢索所有信息☆ ”< cout<<“ ☆ 6-顯示菜單目錄 ★ ”< cout<<“ ★ 7-結束程序運行 ☆ ”< cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”< int main(){ Teacher tea; worker stu; People *pt=&tea; People *ps=&stu; int c=0,k=0,l=0,i=0; char nam[20],part[20];Showmenu(); for(;;) { cout<<“請根據菜單執行相應操作: ”; cin>>c; switch(c) { case 1: { cout<<“ ★ ☆ ★ ☆ ★ ☆ ★錄入全部人員記錄 ★ ☆ ★ ☆ ★ ☆ ★”< cout<<“ ★ ☆ ★ ☆ ★從鍵盤輸入教師信息 ☆ ★ ☆ ★ ☆”< pt->Addall(); cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆從鍵盤輸入工人信息 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”< ps->Addall(); break; } case 2: { cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆從鍵盤增加一位人員記錄 ★ ☆ ★ ☆ ★ ☆ ★ ☆”< cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆教師操作請按1 工人操作請按2 ★ ☆ ★ ☆ ★ ☆ ★ ☆”< cin>>k; if(1==k) pt->Add(); else if(2==k) ps->Add(); else cout<<“操作錯誤...”< break; } case 3: { cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆顯示全部人員記錄 ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”< pt->Display(); ps->Display(); break; } case 4: { cout<<“ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆按部門輸出人員信息(可選)★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆”<第二篇:C++課程設計學生信息管理系統
第三篇:C++課程設計 教職工信息管理系統源代碼