家譜管理系統(tǒng)的源代碼_第1頁
家譜管理系統(tǒng)的源代碼_第2頁
家譜管理系統(tǒng)的源代碼_第3頁
家譜管理系統(tǒng)的源代碼_第4頁
家譜管理系統(tǒng)的源代碼_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、#include<iostream.h>#include<string.h>#include<fstream.h>#include<stdlib.h>structperintdata;charname20;charbrith20;charmarry;charaddress20;charlive;chardietime20;charparent20;intgeneration;intchild10;intnumberchild;per()for(inti=0;i<20;i+)namei='0'for(i=0;i<20;i

2、+)brithi='0'for(i=0;i<20;i+)addressi='0'for(i=0;i<20;i+)dietimei='0'for(i=0;i<10;i+)childi=0;for(i=0;i<20;i+)parenti='0'live='0'marry='0'data=-10;generation=0;numberchild=0;voidsetupinfo(perperson);voiddisplay(perperson,int&);voiddispla

3、yhome(perperson,int&);voiddisplayinfo(perperson,int&);voidnamesearch(perperson,int&);voidbirtfdaysearch(perperson,int&);voidaddchild(perperson,int&);voideditmember(perperson,int&);voidsortbirthday(perperson,int&);voidmain()perperson36;intcount=0;fstreaminputFile("per

4、son.txt",ios:in|ios:out|ios:binary);if(!inputFile)cout<<"文件不存在!"<<endl;exit(0);inputFile.read(char*)&personcount,sizeof(personcount);/從文件中讀取指定大小的字節(jié)函數(shù)read(),讀取字節(jié)函數(shù)while(!inputFile.eof()/當(dāng)文件沒有讀取完畢,進(jìn)行循環(huán)if(0!='0')/當(dāng)名字不為空時(shí)count+;/統(tǒng)計(jì)人數(shù)inputFile.read(c

5、har*)(person+count),sizeof(*person);inputFile.close();/關(guān)閉文件if(count<1)/如果家譜圖里面沒人cout<<"家譜不存在,請(qǐng)你建立一個(gè)家譜!"<<endl;setupinfo(person);display(person,count);voidsetupinfo(perperson36)/創(chuàng)建信息inti,j,k;fstreamoutputfile("person.txt",ios:in|ios:out|ios:binary|ios:app);/打開文件for(

6、i=0;i<5;i+)cout<<"姓名:"cin.getline(,20);cout<<"生日(日期樣式為xxxx/xx/xx):;cin.getline(personi.brith,20);cout<<"婚否(輸入Y或y或N或n):"cin>>personi.marry;while(toupper(personi.marry)!='Y'&&toupper(personi.marry)!='N')cout<<

7、;"你輸入錯(cuò)誤,請(qǐng)你重新輸入!"<<endl;cout<<"婚否(輸入Y或y或N或n):"cin>>personi.marry;cin.ignore();cout<<"地址:"cin.getline(personi.address,20);cout<<"是否健在(輸入Y或y或N或n):"cin>>personi.live;/是否死亡while(toupper(personi.live)!='Y'&&toupper

8、(personi.live)!='N')cout<<"你輸入錯(cuò)誤,請(qǐng)你重新輸入!"<<endl;cout<<"婚否(輸入Y或y或N或n):"cin>>personi.live;cin.ignore();if(toupper(personi.live)='N')cout<<"死亡日期(日期樣式為xxxx/xx/xx):"cin.getline(personi.dietime,20);/輸入死亡日期cout<<"屬于第幾代:&

9、quot;cin>>personi.generation;cin.ignore();if(personi.generation!=1)/不是第一cout<<"他(她)的父親:"cin.getline(personi.parent,20);/cin.getline是讀取字符串函數(shù)20是讀取字符串的個(gè)數(shù)cout<<endl;for(j=0;j<i;j+)if(personj.generation=1)personj.data=-1;/*for(j=0;j<i;j+)for(k=0;k<i;k+)if(strcmp(perso

10、nj.parent,)=0)/比較2個(gè)字符串是否相同,實(shí)質(zhì)是找某個(gè)人的父親personj.data=k;for(j=0;j<i;j+)for(k=0;k<i;k+)if(strcmp(personj.parent,)=0)/personk.childpersonk.numberchild=j;personk.numberchild+;找某個(gè)人的孩子for(j=0;j<i;j+)outputfile.write(char*)(person+j),sizeof(*person);/寫文件outputfile.close();/關(guān)閉文

11、件夾system("cls");voiddisplay(perperson36,int&n1)intchoice;while(1)/循環(huán)式一直進(jìn)行的cout<<endl<<endl<<endl;cout<<"tt家族關(guān)系查詢系統(tǒng)"<<endl;cout<<"tt1.顯示家譜"<<endl;cout<<"tt2.顯示第n代人的所有信息"<<endl;cout<<"tt3.按照姓名查

12、詢某成員的信息"<<endl;cout<<"tt4.按照出生日期查詢成員名單"<<endl;cout<<"tt5.某成員添加孩子"<<endl;cout<<"tt6.修改某成員信息"<<endl;cout<<"tt7.按生日日期對(duì)家譜中的所有人進(jìn)行排序"<<endl;cout<<"tt8.退出系統(tǒng)"<<endl;cout<<"tt輸入

13、選擇:"<<endl;cout<<"tt請(qǐng)輸入1-8之間的數(shù)"<<endl;cin>>choice;while(choice!=1&&choice!=2&&choice!=3&&choice!=4&&choice!=5&&choice!=6&&choice!=7&&choice!=8)cout<<"youenterwrong!"<<endl;cout<<

14、;"pleaseenteragain!"<<endl;cin>>choice;cin.ignore(1,'n');/跳過一個(gè)字符,含義是忽略一行system("cls");switch(choice)case 1: displayhome(person,n1);break;case 2: displayinfo(person,n1);break;case 3: namesearch(person,n1);break;case 4: birtfdaysearch(person,n1);break;case 5: ad

15、dchild(person,n1);break;case 6: editmember(person,n1);break;case 7: sortbirthday(person,n1);break;case 8: exit(0);voiddisplayhome(perperson36,int&n2)/調(diào)用函數(shù)的參數(shù)傳遞的是一個(gè)參數(shù)地址inti,j,max;charagain;cout<<endl<<endl;for(i=0;i<n2-1;i+)max=personi.generation;for(j=i+1;j<n2;j+)if(personi.gen

16、eration<personj.generation)max=personj.generation;/找出最大的代數(shù))for(i=1;i<=max;i+)(cout<<"第"<<i<<”代的成員有:"for(j=0;j<n2;j+)(if(personj.generation=i)cout<<<<"”;/輸出每一代的人)cout<<endl;)cout<<endl<<endl;cout<<"你是否

17、想繼續(xù)查看?如果繼續(xù)請(qǐng)輸入Y或y,否則輸入N或n!"<<endl;cin>>again;if(toupper(again)='Y')就是判斷輸入得是否為y或丫(system("cls");return;if(toupper(again)='N')exit(0);/終止程序的執(zhí)行voiddisplayinfo(perperson36,int&n2)/顯示代數(shù)inti,gen,j=0;charagain;cout<<endl<<endl;cout<<"請(qǐng)你輸入

18、你要查詢的代數(shù);cin>>gen;cout<<endl;/換行for(i=0;i<n2;i+)if(personi.generation!=gen)j+;if(j=n2)/判斷是否找到cout<<"你要查的代數(shù)還沒有!”<<endl<<endl;for(i=0;i<n2;i+)(if(personi.generation=gen)(cout<<"姓名:“<<<<endl<<"出生日期:"<<perso

19、ni.brith<<"第幾代"<<personi.generation<<endl<<"女昏否:"<<personi.marry<<"地址:“<<personi.address<<endl<<"是否健在:"<<personi.live<<endl;if(personi.live='N'|personi.live='n')cout<<"死亡日期

20、"<<personi.dietime<<endl;cout<<endl<<endl;cout<<"你是否想繼續(xù)查看?如果繼續(xù)請(qǐng)輸入Y或y,否則輸入N或n!"<<endl;cin>>again;if(toupper(again)='Y')system("cls");return;if(toupper(again)='N')exit(0);voidnamesearch(perperson36,int&n2)inti,j=0,k

21、;charagain,name20;cout<<endl<<endl;cout<<"請(qǐng)你輸入你想要查詢的人的姓名:"cin.getline(name,20);for(i=0;i<n2;i+)(if(strcmp(,name)!=0)j+;cout<<endl<<endl;if(j=n2)cout<<"你要查詢的人沒有!”<<endl<<endl;for(i=0;i<n2;i+)(if(strcmp(,name)

22、=0)(cout<<"姓名:"<<<<endl<<"出生日期:"<<personi.brith<<”第幾代"<<personi.generation<<endl<<"女昏否:"<<personi.marry<<"地址:"<<personi.address<<endl<<"是否健在:"<<

23、;personi.live<<endl;if(personi.live='N'|personi.live='n')cout<<"死亡日期"<<personi.dietime<<endl;cout<<endl<<endl;if(personi.generation=1)cout<<"他是這個(gè)家的根,沒有父親!”<<endl<<endl;elsecout<<"他(她)父親的信息"<<en

24、dl;cout<<"姓名"<<<<endl<<"出生日期“<<personpersoni.data.brith<<"第幾代"<<personpersoni.data.generation<<endl<<"婚否“<<personpersoni.data.marry<<"地址:"<<personpersoni.data.addres

25、s<<endl<<"是否健在:"<<personpersoni.data.live<<endl;if(personpersoni.data.live='N'|personpersoni.data.live='n')cout<<"死亡日期:“<<personpersoni.data.dietime<<endl;cout<<endl<<endl;if(personi.numberchild=0)cout<<"

26、他沒有孩子!”<<endl<<endl;elsecout<<"他有"<<personi.numberchild<<"個(gè)孩子,他們的信息:"<<endl<<endl;for(k=0;k<personi.numberchild;k+)cout<<"姓名:"<<<<endl< <"出生日期:"<<personpersoni.

27、childk.brith< <"第幾代:"<<personpersoni.childk.generation<<endl< <"婚否:"<<personpersoni.childk.marry< <"地址:"<<personpersoni.childk.address<<endl< <"是否健在:"<<personpersoni.childk.live;if(personpersoni.child

28、k.live='N'|personpersoni.childk.live='n')cout<<"死亡日期:"<<personpersoni.childk.dietime<<endl;cout<<endl<<endl;cout<<"你是否想繼續(xù)查看?如果繼續(xù)請(qǐng)輸入Y或y,否則輸入N或n!"<<endl;cin>>again;if(toupper(again)='Y')system("cls");

29、return;if(toupper(again)='N')exit(0);voidbirtfdaysearch(perperson36,int&n2)charbegbir20,endbir20,again;inti,flag=0;cout<<endl<<endl;cout<<"請(qǐng)你輸入兩個(gè)時(shí)間,格式為*/*/*!"<<endl;cout<<"起始時(shí)間是:"cin.getline(begbir,20);cout<<"終止時(shí)間是:"cin.ge

30、tline(endbir,20);cout<<endl<<endl;for(i=0;i<n2;i+)if(strcmp(personi.brith,begbir)>=0&&strcmp(personi.brith,endbir)<=0)cout<<"姓名"<<;cout<<"生日"<<personi.brith;flag=1;cout<<endl;cout<<endl<<endl;if(fl

31、ag=0)cout<<"在這段時(shí)間內(nèi)沒有人生日!"<<endl<<endl;cout<<"你是否想繼續(xù)查看?如果繼續(xù)請(qǐng)輸入Y或y,否則輸入N或n!"<<endl;cin>>again;if(toupper(again)='Y')system("cls");return;if(toupper(again)='N')exit(0);voidaddchild(perperson36,int&n2)inti;charagain;fs

32、treamfile("person.txt",ios:in|ios:out|ios:binary|ios:app);cout<<endl<<endl;cout<<"請(qǐng)輸入孩子的信息!"<<endl<<endl<<endl;cout<<"姓名:"cin.getline(,20);cout<<"生日(日期樣式為xxxx/xx/xx):;cin.getline(personn2.brith,20);cout&l

33、t;<"婚否(輸入Y或y或N或n):"cin>>personn2.marry;while(toupper(personn2.marry)!='Y'&&toupper(personn2.marry)!='N')cout<<"你輸入錯(cuò)誤,請(qǐng)你重新輸入!"<<endl;cout<<"婚否(輸入Y或y或N或n):"cin>>personn2.marry;cin.ignore();cout<<"地址:"

34、;cin.getline(personn2.address,20);cout<<"是否健在(輸入Y或y或N或n):"cin>>personn2.live;while(toupper(personn2.live)!='Y'&&toupper(personn2.live)!='N')cout<<"你輸入錯(cuò)誤,請(qǐng)你重新輸入!"<<endl;cout<<"婚否(輸入Y或y或N或n):"cin>>personn2.live;c

35、in.ignore();if(toupper(personn2.live)='N')cout<<"死亡日期(日期樣式為xxxx/xx/xx):"cin.getline(personn2.dietime,20);cout<<"屬于第幾代:"cin>>personn2.generation;cin.ignore();if(personn2.generation!=1)cout<<"他(她)的父親:"cin.getline(personn2.parent,20);cout<

36、;<endl;for(i=0;i<n2;i+)if(strcmp(personn2.parent,)=0)personn2.data=i;break;file.write(char*)&personn2,sizeof(personn2);file.close();file.open("person.txt",ios:in|ios:out|ios:binary);file.seekp(i*sizeof(per),ios:beg);personi.childpersoni.numberchild=n2;personi.numberch

37、ild+;file.write(char*)&personi,sizeof(per);file.close();n2+;cout<<"你是否想繼續(xù)查看?如果繼續(xù)請(qǐng)輸入Y或y,否則輸入N或n!"<<endl;cin>>again;if(toupper(again)='Y')system("cls");return;if(toupper(again)='N')exit(0);voideditmember(perperson36,int&n2)inti,flag=0,choic

38、e;charname20,again;fstreamfile("person.txt",ios:in|ios:out|ios:binary);cout<<endl<<endl;cout<<"請(qǐng)你輸入你想修改的成員的名字:"cin.getline(name,20);cout<<endl<<endl;for(i=0;i<n2;i+)if(strcmp(,name)=0)flag=1;break;)if(flag=O)cout«"家譜中沒有這個(gè)A!&q

39、uot;«endl«endl«endl;if(flag=1)(cout«"tt請(qǐng)你選擇你要修改的項(xiàng)!"vvendl;cout«"tt1.姓名"vvendl;cout«"tt2.地址"«endl;cout«"tt3.婚否"vvendl;cout«"tt4.生日”vvendl;cout«"tt5.是否死亡"«endl;cout«"tt6.死亡日期"&#

40、171;endl;cout«"tt請(qǐng)輸入1-6之間的數(shù)"«endl;cout«"tt輸入選擇:";cin>>choice;while(choice!=1&&choice!=2&&choice!=3&&choice!=4&&choice!=5&&choice!=6)cout<<"youenterwrong!"<<endl;cout<<"pleaseenteragain!&

41、quot;<<endl;cin>>choice;cin.ignore(1,'n');switch(choice)case 1: cout<<endl<<"請(qǐng)你輸入新名字:"cin.getline(,20);/file.seekp(i*sizeof(per),ios:beg);/file.write(char*)&personi,sizeof(per);break;case 2: cout<<endl<<"請(qǐng)輸入新的地址:"cin.getline(personi.address,20);/file.seekp(i*sizeof(per),ios:beg);/file.write(char*)&personi,sizeof(per);break;case 3: cout<<endl<<"請(qǐng)你輸入新的是否結(jié)婚:"cin>>personi.marry;/file.seekp(i*sizeof(per),ios:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論