




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年一年級(jí)下學(xué)期數(shù)學(xué)《總復(fù)習(xí)》(教案)
- 六年級(jí)下冊(cè)數(shù)學(xué)教案-1.4 求比一個(gè)數(shù)多(少)百分之幾的數(shù)是多少 青島版
- 六年級(jí)上冊(cè)數(shù)學(xué)教案-2.2 圓的周長(zhǎng) ︳西師大版
- 學(xué)習(xí)2025年雷鋒精神六十二周年主題活動(dòng)實(shí)施方案 (3份)-66
- 數(shù)學(xué)-云南省師范大學(xué)附屬中學(xué)2025屆高三下學(xué)期開學(xué)考試試題和答案
- 2025年度東莞市入學(xué)積分制社區(qū)教育志愿者服務(wù)協(xié)議
- 2025年度交通事故人傷私了協(xié)議(賠償期限與方式)
- 二零二五年度醫(yī)療機(jī)構(gòu)與康復(fù)醫(yī)院醫(yī)生合作合同
- 2025年度安保服務(wù)滿意度調(diào)查合同范本
- 二零二五年度白酒品牌授權(quán)區(qū)域代理及市場(chǎng)拓展合同
- 班會(huì)課件:逆風(fēng)飛翔破繭成蝶-從《哪吒之魔童鬧?!房辞啻浩诘某砷L(zhǎng)與責(zé)任
- 2.1 堅(jiān)持依憲治國(guó) 教案 -2024-2025學(xué)年統(tǒng)編版道德與法治八年級(jí)下冊(cè)
- 【語文試卷+答案】2024-2025學(xué)年泉州高二上期末質(zhì)檢
- 《修繕定額講解》課件
- 大學(xué)學(xué)生宿舍管理員工作培訓(xùn)
- 初三物理常識(shí)試卷單選題100道及答案
- 浙江2024公務(wù)員考試真題及答案
- 初中新課標(biāo)培訓(xùn)課件
- 2025年吉林省吉林市事業(yè)單位招聘入伍高校畢業(yè)生54人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 公司銀行貸款申請(qǐng)書范文
- 機(jī)械設(shè)計(jì)制造及其自動(dòng)化專業(yè)知識(shí)
評(píng)論
0/150
提交評(píng)論