版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
寧夏師范學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院《數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)》實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)序號(hào):14實(shí)驗(yàn)項(xiàng)目名稱:期末大作業(yè)學(xué)號(hào)2016210556姓名韓雪萍專業(yè)班級(jí)16級(jí)計(jì)本一班實(shí)驗(yàn)地點(diǎn)文科樓222指導(dǎo)教師康凱時(shí)間2017.12.28實(shí)驗(yàn)?zāi)康亩?、?shí)驗(yàn)要求三、實(shí)驗(yàn)設(shè)備(環(huán)境)及要求1.環(huán)境要求:硬件:PC(P=2\*ROMANII以上,128M以上內(nèi)存);軟件:WindowsXP及以上操作系統(tǒng)、VisualC++6.0版本。四、實(shí)驗(yàn)內(nèi)容、步驟與結(jié)果期末大作業(yè):?jiǎn)挝粏T工通訊錄管理系統(tǒng)(線性表應(yīng)用)[問(wèn)題描述與要求]為某個(gè)單位建立一個(gè)員工通訊錄管理系統(tǒng),可以方便查詢每一個(gè)員工的辦公室電話、手機(jī)號(hào)、及電子郵箱。其功能包括通訊錄鏈表的建立、員工通訊信息的查詢、修改、插入與刪除、以及整個(gè)通訊錄表的輸出。[實(shí)現(xiàn)提示]可以采用單鏈表的存儲(chǔ)結(jié)構(gòu),如可定義如下的存儲(chǔ)結(jié)構(gòu):typedef
struct
{
/*員工通訊信息的結(jié)構(gòu)類型定義*/
char
num[5];
/*員工編號(hào)*/
char
name[10];
/*員工姓名*/
char
phone[15];
/*辦公室電話號(hào)碼*/
char
call[15];
/*手機(jī)號(hào)碼*/}DataType;/*通訊錄單鏈表的結(jié)點(diǎn)類型*/typedef
struct
node{
DataType
data;
/*結(jié)點(diǎn)的數(shù)據(jù)域*/
struct
node
*next;
/*結(jié)點(diǎn)的指針域*/}ListNode,*LinkList;
五、程序?qū)崿F(xiàn)(寫出每個(gè)操作的算法)#include<stdio.h>#include<string.h>#include<stdlib.h>typedefstruct{ charnum[5]; charname[15]; charphone[13]; charcall[15]; chare_mail[30];}datatype;typedefstructnode{ datatypedata; structnode*next;}Dnode;Dnode*head;Dnode*p;typedefstructnodelinklist;intmenu();Dnode*createlist();voidAdd(Dnode*head,Dnode*p);Dnode*research(Dnode*head);voidDelete(Dnode*head);voidprint_list(Dnode*head);Dnode*Change(Dnode*head,chark[]);voidSaveandfree();voidOpen();intmenu(){ inti; printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); printf("\n"); printf("通訊錄系統(tǒng)清單\n"); printf("\n"); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); printf("\n"); printf("1.通訊錄的建立"); printf("\n"); printf("2.添加人員信息"); printf("\n"); printf("3.刪除人員信息"); printf("\n"); printf("4.查詢?nèi)藛T信息"); printf("\n"); printf("5.輸出人員信息"); printf("\n"); printf("6.修改人員信息"); printf("\n"); printf("0.退出并保存"); printf("\n"); printf("請(qǐng)選擇0-6:"); scanf("%d",&i); while(i<0||i>6) { printf("系統(tǒng)提示:您輸入錯(cuò)誤!\n"); printf("請(qǐng)重新輸入0-6:"); scanf("%d",&i); printf("\n\n"); } returni;}Dnode*createlist(){ Dnode*head=(Dnode*)malloc(sizeof(Dnode)); Dnode*p; Dnode*rear; charc='n'; rear=head; while(c=='n') { p=(Dnode*)malloc(sizeof(Dnode)); printf("請(qǐng)輸入編號(hào):\n"); scanf("%s",p->data.num); printf("請(qǐng)輸入姓名:\n"); scanf("%s",p->); printf("請(qǐng)輸入辦公室電話:\n"); scanf("%s",p->data.phone); printf("請(qǐng)輸入手機(jī):\n"); scanf("%s",p->data.call); printf("請(qǐng)輸入電子郵箱:\n"); scanf("%s",p->data.e_mail); rear->next=p; rear=p; printf("要繼續(xù)創(chuàng)建請(qǐng)按(n),結(jié)束創(chuàng)建請(qǐng)按其它鍵:\n"); scanf("%c",&c); } rear->next=NULL; returnhead;}voidAdd(Dnode*head,Dnode*p){ Dnode*p1; Dnode*p2; p1=head; p2=p1->next; while(p2!=NULL&&strcmp(p2->data.num,p->data.num)<0) { p1=p2; p2=p2->next; } p1->next=p; p->next=p2;}voidDelete(Dnode*head){ chara,b; Dnode*p; Dnode*q; charnum[5]; charname[10]; intx; printf("1.按編號(hào)刪除\n");printf("2.按姓名刪除\n"); printf("請(qǐng)選擇(1或2):"); p=head->next; scanf("%d",&x); if(x==1) { printf("請(qǐng)輸入要查詢者的編號(hào):"); scanf("%s",num); while(p&&strcmp(p->data.num,num)<0) p=p->next; if(p==NULL||strcmp(p->data.num,num)>0) p=NULL; } if(x==2) { printf("請(qǐng)輸入要查詢者的姓名:"); scanf("%s",name); while(p&&strcmp(p->,name)!=0) p=p->next; } scanf("%c",&b); if(p==NULL) { printf("對(duì)不起沒(méi)有您要查詢者的信息\n"); return; } printf("要?jiǎng)h除該結(jié)點(diǎn)嗎?(y/n):"); scanf("%c",&a); if(a=='y'||a=='Y') { q=head; while(q!=NULL&&q->next!=p) q=q->next; q->next=p->next; free(p); printf("通訊者已經(jīng)被刪除\n"); }}Dnode*research(Dnode*head){ Dnode*p; charnum[5]; charname[10]; charphone[15]; charcall[15]; intx; printf("1.按編號(hào)查詢:\n"); printf("2.按姓名查詢:\n"); printf("3.按電話號(hào)碼查詢:\n"); printf("4.按手機(jī)號(hào)碼查詢:\n"); printf("請(qǐng)選擇(1-4):"); p=head->next; scanf("%d",&x); if(x==1) { printf("請(qǐng)輸入要查詢者的編號(hào):"); scanf("%s",num); while(p&&strcmp(p->data.num,num)<0) p=p->next; if(p==NULL||strcmp(p->data.num,num)>0) p=NULL; } if(x==2) { printf("請(qǐng)輸入要查詢者的姓名:"); scanf("%s",name); while(p&&strcmp(p->,name)!=0) p=p->next; } if(x==3) { printf("請(qǐng)輸入要查詢者的辦公室電話號(hào)碼:"); scanf("%s",phone); while(p&&strcmp(p->data.phone,phone)!=0) p=p->next; } if(x==4) { printf("請(qǐng)輸入要查詢者的手機(jī)號(hào)碼:"); scanf("%s",call); while(p&&strcmp(p->data.call,call)!=0) p=p->next; } returnp;}voidprint_list(Dnode*head){ Dnode*p; p=head->next; printf("編號(hào)姓名辦公室電話手機(jī)號(hào)碼郵箱"); printf("\n"); while(p!=NULL) { printf("%-5s\t",p->data.num); printf("%-10s\t",p->); printf("%-10s\t",p->data.phone); printf("%-10s\t",p->data.call); printf("%-15s\t\n",p->data.e_mail); p=p->next; }}Dnode*Change(Dnode*head,chark[]){ Dnode*q; q=research(head); if(q==0) { printf("沒(méi)有要修改的信息!\n"); return0; } else { inti; k[15]='\0'; printf("編號(hào)姓名辦公室電話手機(jī)號(hào)碼郵箱\n"); printf("%-5s\t%-10s\t%-10s\t%-10s\t%-15s\t\n",q->data.num,q->,q->data.phone,q->data.call,q->data.e_mail); printf("1--修改姓名\n"); printf("2--修改辦公室電話號(hào)碼\n"); printf("3--修改手機(jī)號(hào)碼\n"); printf("4--修改電子郵箱\n"); printf("\n"); printf("請(qǐng)選擇按鍵(1-4):"); scanf("%d",&i); printf("\n"); switch(i) { case1:printf("修改姓名----\n"); strcpy(q->,k); printf("請(qǐng)輸入要改的姓名:\n"); getchar(); gets(k); printf("\n"); strcpy(q->,k); break; case2:printf("修改辦公室電話號(hào)碼----\n"); strcpy(q->data.phone,k); printf("請(qǐng)輸入要修改的號(hào)碼:\n"); getchar(); gets(k); printf("\n"); strcpy(q->data.phone,k); break; case3:printf("修改電話號(hào)碼----\n"); strcpy(q->data.call,k); printf("請(qǐng)輸入要修改的號(hào)碼:\n"); getchar(); gets(k); printf("\n"); strcpy(q->data.call,k); break; case4:printf("修改電子郵箱----\n"); strcpy(q->data.e_mail,k); printf("請(qǐng)輸入要修改的電子郵箱:\n"); getchar(); gets(k); printf("\n"); strcpy(q->data.e_mail,k); break; default:printf("輸入錯(cuò)誤!\n"); break; } } returnq;}voidSaveandfree(){ linklist*p=NULL; FILE*fp; char*ziliao="ziliao.txt"; if(head==NULL) { printf("\n記錄為空!\n"); return; } else p=head->next; if((fp=fopen(ziliao,"wb+"))==NULL) { printf("\n打不開(kāi)文件!\n"); return; } while(p!=NULL) { fwrite(p,sizeof(linklist),1,fp); p=p->next; } printf("保存完畢!\n"); fclose(fp); for(head->next!=NULL;;) { p=head->next; head->next=head->next->next; free(p); } free(head);}voidOpen(){ FILE*fp; linklist*p1=NULL,*p2=NULL,*temp=NULL; if((fp=fopen("ziliao.txt","rb+"))==NULL) { printf("\n\t\t*********************通訊錄**********************\n"); return; } head=(linklist*)malloc(sizeof(linklist)); head->next=NULL; temp=p2=head; while(!feof(fp)) { p1=(linklist*)malloc(sizeof(linklist)); temp=p2; p2->next=p1; p2=p1; fread(p1,sizeof(linklist),1,fp); } temp->next=NULL; fclose(fp);}voidmain(){ Open(); while(1) { switch(menu()) { case1: printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); printf("\n"); printf("通訊錄鏈表的建立"); printf("\n"); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); printf("\n"); head=createlist(); break; case2:p=(Dnode*)malloc(sizeof(Dnode)); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); printf("\n"); printf("通訊者信息的添加"); printf("\n"); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); printf("\n"); printf("員工編號(hào):\n"); scanf("%s",p->data.num); printf("員工姓名:\n"); scanf("%s",p->); printf("員工辦公室電話號(hào)碼:\n"); scanf("%s",p->data.phone); printf("員工手機(jī)號(hào)碼:\n"); scanf("%s",p->data.call); printf("員工電子郵箱:\n"); scanf("%s",p->data.e_mail); printf("操作已成功!\n"); Add(head,p); break; case3: printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); printf("\n"); printf("通訊錄信息的刪除"); printf("\n"); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); printf("\n");Delete(head); break; case4: printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); printf("\n"); printf("通訊錄信息的查詢"); printf("\n"); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); printf("\n"); p=research(head); if(p!=NULL) { printf("編號(hào)姓名辦公室電話手機(jī)號(hào)碼郵箱"); putchar('\n'); printf("%-5s\t",p->data.num);
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 快思網(wǎng)幼兒園課件
- 玉溪師范學(xué)院《體操》2021-2022學(xué)年第一學(xué)期期末試卷
- 玉溪師范學(xué)院《社會(huì)統(tǒng)計(jì)學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 玉溪師范學(xué)院《馬克思主義經(jīng)典文獻(xiàn)導(dǎo)讀》2021-2022學(xué)年第一學(xué)期期末試卷
- 投影儀銷售行業(yè)的成本核算-記賬實(shí)操
- 某電商公司薪酬管理制度管理
- 2024年制造業(yè)統(tǒng)一數(shù)據(jù)管理方案-工控機(jī)操作系統(tǒng)備份與恢復(fù)
- 腫瘤患者營(yíng)養(yǎng)教育
- 2024年耐高溫涂料項(xiàng)目成效分析報(bào)告
- 2024年筒式采煤機(jī)項(xiàng)目評(píng)估分析報(bào)告
- GB/T 307.3-2017滾動(dòng)軸承通用技術(shù)規(guī)則
- GB/T 20416-2006自然保護(hù)區(qū)生態(tài)旅游規(guī)劃技術(shù)規(guī)程
- GB/T 20160-2006旋轉(zhuǎn)電機(jī)絕緣電阻測(cè)試
- GB/T 17514-2017水處理劑陰離子和非離子型聚丙烯酰胺
- 第十七動(dòng)物的采食量
- 二副面試問(wèn)題與答案
- 女生生理衛(wèi)生課-完整課件
- Friends《老友記》英文介紹(并茂)課件
- 2023學(xué)年完整版Unit7Willpeoplehaverobots教學(xué)反思
- 公安派出所建設(shè)標(biāo)準(zhǔn)
- 小學(xué)開(kāi)展儀式教育的策略研究
評(píng)論
0/150
提交評(píng)論