軟件技術(shù)基礎(chǔ)課程設(shè)計_第1頁
軟件技術(shù)基礎(chǔ)課程設(shè)計_第2頁
軟件技術(shù)基礎(chǔ)課程設(shè)計_第3頁
軟件技術(shù)基礎(chǔ)課程設(shè)計_第4頁
軟件技術(shù)基礎(chǔ)課程設(shè)計_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件技術(shù)基礎(chǔ)課程設(shè)計報告題目:單位員工通訊錄管理系統(tǒng)所在學(xué)院:信息工程學(xué)院班級:1111111111學(xué)號:1111111111姓 名:111111指導(dǎo)教師:1111112015年12月30日目錄 TOC o 1-5 h z HYPERLINK l bookmark4 o Current Document 一、題目概述與需求分析1 HYPERLINK l bookmark6 o Current Document 二、數(shù)據(jù)結(jié)構(gòu)設(shè)計(邏輯結(jié)構(gòu)與物理結(jié)構(gòu))1 HYPERLINK l bookmark12 o Current Document 三、代碼實現(xiàn)3 HYPERLINK l bookmark95

2、 o Current Document 四、測試結(jié)果18五、總結(jié) 21、題目概述與需求分析本課程設(shè)計為單位建立一個員工通訊錄管理系統(tǒng),可以查詢每個員工的編 號、姓名、辦公室電話號碼、手機(jī)號碼及電子郵箱。其功能包括:(1)通訊錄鏈表的建立。(2)員工通訊信息的查詢、修改、插入與刪除。(3)顯示通訊錄表的信息。(4)查詢員工編號重復(fù)、數(shù)據(jù)結(jié)構(gòu)設(shè)計(邏輯結(jié)構(gòu)與物理結(jié)構(gòu))2.2邏輯結(jié)構(gòu)設(shè)計(1)創(chuàng)建員工信息數(shù)據(jù)結(jié)構(gòu)體 DataType,其中包括員工編號、員工姓名、 辦公室電話號碼、手機(jī)號碼、電子郵箱信息。創(chuàng)建節(jié)點結(jié)構(gòu)體,其中包括數(shù)據(jù)域 和指針域。代碼如下:typedef struct(char num

3、5;char name10;char phone15;char call15;char e_mail30;/*員工編號*/*員工姓名*/*辦公室電話號碼*/*手機(jī)號碼*/*電子郵箱*/DataType;typedef struct node(DataType data;/*結(jié)點的數(shù)據(jù)域*/struct node *next;/* 結(jié)點的指針域 */ListNode;(2)建立通訊錄單鏈表。本設(shè)計運用尾插入法將新插入的結(jié)點接到單鏈表的 尾部。核心部分代碼如下:rear-next=p;rear=p;(3)插入結(jié)點。結(jié)點插入式按照通訊錄中員工編號的順序進(jìn)行插入,以保證 其編號按照從小到大順序依次排列

4、,方便查詢。核心代碼如下:p1=head;p2=p1-next;while(p2!=NULL&strcmp(p2-data.num,p-data.num)next; /p2指向表的下一個結(jié)p1-next=p;/插入p所指向的結(jié)點p-next=p2;連接表中剩余部分(4)刪除結(jié)點。從頭結(jié)點處依次訪問表中的結(jié)點并與需要刪除的結(jié)點進(jìn)行 比較,信息吻合則刪除。核心代碼如下:while(p&strcmp(p-data.num,num)next;if(p=NULL|strcmp(p-data.num,num)0)p=NULL;(5)查詢結(jié)點。從頭結(jié)點處依次訪問表中的結(jié)點并與需要查詢的結(jié)點進(jìn)行比 較,信息吻

5、合則返回一個指針。核心代碼如下:while(p&strcmp(p-data.num,num)next;if(p=NULL|strcmp(p-data.num,num)0)p=NULL;return p;(6)輸出信息。從頭結(jié)點處依次訪問表中的結(jié)點并輸出,直到表尾。(7)修改結(jié)點信息。從頭結(jié)點處依次訪問表中的結(jié)點,直到找到需要修改的 結(jié)點并修改。核心代碼如下:printf(修改員工姓名n);strcpy(,k);printf(請輸入修改后的姓名:n);getchar();gets(k);printf(n);strcpy(,k);(8)查詢重復(fù)信息。在創(chuàng)

6、建鏈表和添加結(jié)點的時候調(diào)用查詢函數(shù),查詢是否 有重復(fù)的員工編號,重復(fù)則會跳出一個重新輸入提示框。核心代碼如下:if(judge(head,p)=1)三、代碼實現(xiàn)#include #include #include/*員工通訊錄信息的結(jié)構(gòu)類型定義*/typedef structchar num5;char name10;char phone15;char call15;char e_mail30;DataType;/*員工編號*/*員工姓名*/*辦公室電話號碼*/*手機(jī)號碼*/*電子郵箱*/菜單函數(shù)通訊錄單鏈表函數(shù)插入函數(shù)刪除函數(shù)查找函數(shù)顯示信息函數(shù)/節(jié)點定義typedef struct nod

7、eDataType data;/*結(jié)點的數(shù)據(jù)域*/struct node *next; /* 結(jié)點的指針域 */ ListNode;ListNode *head;ListNode *p;typedef struct node linklist;int menu();ListNode *createlist();void Add(ListNode *head,ListNode *p);void Delete(ListNode *head);ListNode *research(ListNode *head); void print_list(ListNode *head);ListNode *C

8、hange(ListNode *head,char k); / 修改信息函數(shù)void Save();保存到文件函數(shù)void Open();打開文件函數(shù)int judge(ListNode *head,ListNode *p); 判斷是否重復(fù)函數(shù) 返回1就是重復(fù) 就是不重復(fù)/輸出各種信息的固定界面void printcreate();void printadd();void printdelete();void printresearch();void printlist();void printchange();void printcontinue();int main()Open();whi

9、le(1)switch(menu()printcreate();head=createlist(); /調(diào)用建立通訊錄鏈表函數(shù) break;printadd();Add(head,p);printcontinue();break;printdelete();Delete(head);調(diào)用刪除函數(shù)printcontinue();break;printresearch();p=research(head);調(diào)用查詢函數(shù)if(p!=NULL)手機(jī)號printf(員工編號員工姓名辦公室電話號碼碼電子郵箱)printf(n);printf(%-8st,p-data.num);printf(%-8st,p

10、-);printf(%-9st,p-data.phone);printf(%-11st,p-data.call);printf(%-10stn,p-data.e_mail); printcontinue(); else printf(對不起沒有您要查詢者的信息);printcontinue(); break;printlist();print_list(head);調(diào)用通訊錄鏈表輸出函數(shù)printcontinue();break;char b5;printchange();Change(head,b);printcontinue();break;Save();保存并釋放內(nèi)存e

11、xit(0); break;return 0;int menu()菜單函數(shù)清屏int i;system(cls);printf(*);printf(n);printf(*);printf(n);printf(*通 訊 錄 系 統(tǒng) 清 單*);printf(n);printf(*printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);p

12、rintf(*1.建立通訊錄.添加信息.刪除信息.查詢信息.輸出信息.修改信息.退出菜單*);printf(n);printf(*);printf(n);printf(*);pr請選擇 1-7:/提示輸入是否錯誤intf(n);printf( );printf(n);scanf(%d,&i);while(i7)printf(輸入錯誤!n);printf(請重新輸入1-7:);scanf(%d,&i); printf(n);return i;ListNode *createlist()通訊錄單鏈表函數(shù) ListNode *head=(ListNode *)malloc(sizeof(ListNo

13、de);申請頭結(jié)點ListNode *p; ListNode *rear;尾指針char c=c; rear=head;尾指針初始指向頭結(jié)點int i=0;while(c=c)(p=(ListNode *)malloc(sizeof(ListNode);printf(請輸入員工編號:n);scanf(%s,p-data.num);printf(請輸入員工姓名:n);scanf(%s,);printf(請輸入辦公室電話號碼:n);scanf(%s,p-data.phone);printf(請輸入員工手機(jī)號碼:n);scanf(%s,p-data.call);printf(請

14、輸入電子郵箱:n);scanf(%s,p-data.e_mail);if(i=0)新結(jié)點連接到尾結(jié)點之后尾指針指向新結(jié)點(rear-next=p;rear=p;else( if(judge(head,p)=1)/要插入某個函數(shù)判斷編號是否重復(fù)( printf(員工的編號重復(fù)!請重新輸入!!n);else( rear-next=p;新結(jié)點連接到尾結(jié)點之后rear=p;尾指針指向新結(jié)點i+;printf(繼續(xù)創(chuàng)建請按(c),結(jié)束創(chuàng)建請按其它鍵:n);讀入flag數(shù)據(jù)終端結(jié)點指針域置空返回鏈表頭指針getchar();scanf(%c,&c);rear-next=NULL;printf(一共創(chuàng)建了

15、d個員工信息! ! ”,i);return head; void Add(ListNode *head,ListNode *p) (p=(ListNode *)malloc(sizeof(ListNode);ListNode *p1;ListNode *p2;printf(員工編號:n);scanf(%s,p-data.num);printf(員工姓名:n);scanf(%s,);printf(員工辦公室電話號碼:n);scanf(%s”,p-data.phone); printf(員工手機(jī)號碼:n);scanf(%s,p-data.call); printf(請輸入電子

16、郵箱:n); scanf(%s,p-data.e_mail);if(judge(head,p)=1)/要插入某個函數(shù)判斷編號是否重復(fù)printf(員工的編號重復(fù)!請重新輸入!!n); else p1=head; p2=p1-next;while(p2!=NULL&strcmp(p2-data.num,p-data.num)next; /p2指向表的下一個結(jié)點 p1-next=p;插入p所指向的結(jié)點p-next=p2;連接表中剩余部分printf(操作已成功!n);void Delete(ListNode *head)char a,b;ListNode *p; ListNode *q; char

17、 num5; char name10; int x;p=head-next; scanf(%d,&x);while(x2)提示輸入是否錯誤printf(輸入錯誤!n); printf(請重新輸入1-2:);scanf(%d,&x);printf(n);)if(x=1)printf(請輸入員工的編號:);scanf(%s,num);while(p&strcmp(p-data.num,num)next;if(p=NULL|strcmp(p-data.num,num)0) p=NULL;)else if(x=2)printf(請輸入員工的姓名:);scanf(%s,name);while(p&str

18、cmp(,name)!=0) p=p-next;)scanf(%c,&b);if(p=NULL)printf(對不起沒有您要查詢員工的信息n);return;)printf(確定要刪除該信息嗎?(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;刪除結(jié)點free(p);釋放被刪除的結(jié)點空間printf(該員工信息已被刪除n);)ListNode *research(ListNode *head)ListNode *p;char num5;char na

19、me10;char phone15;char call15;int x;p=head-next;有頭結(jié)點scanf(%d,&x);while(x4)提示輸入是否錯誤 printf(輸入錯誤!n); printf(請重新輸入1-4:); scanf(%d,&x); printf(n); if(x=1) printf(請輸入員工的編號:); scanf(%s,num); while(p&strcmp(p-data.num,num)next; if(p=NULL|strcmp(p-data.num,num)0)沒有查到要查找的通訊者p=NULL; else if(x=2) printf(請輸入員工的

20、姓名:); scanf(%s,name); while(p&strcmp(,name)!=0) p=p-next; else if(x=3) printf(請輸入員工的辦公室電話號碼:);scanf(%s,phone); while(p&strcmp(p-data.phone,phone)!=0) p=p-next; else if(x=4) printf(請輸入員工的手機(jī)號碼:); scanf(%s,call); while(p&strcmp(p-data.call,call)!=0) p=p-next;return p;10void print_list(ListNo

21、de *head) (ListNode *p;鏈表帶頭結(jié)點p=head-next;printf(員工編號 員工姓名辦公室電話號碼手機(jī)號碼電子郵箱n);printf(n);while(p!=NULL)(printf(%-8st,p-data.num);printf(%-8st,);printf(%-9st,p-data.phone);printf(%-11st,p-data.call);printf(%-10stn,p-data.e_mail); p=p-next;后移一個結(jié)點使鏈表數(shù)據(jù)項全部輸出) )ListNode *Change(ListNode *head,char

22、 k口) (ListNode *q;int i;printf(*);printf(n);printf(*1.按員工編號查詢*);printf(n);printf(*2.按員工姓名查詢*);printf(n);printf(*3.按辦公室電話號碼查詢*);printf(n);printf(*4.按手機(jī)號碼查詢*);printf(n);printf(”*);printf(n);printf(請選擇 1-4);printf(n);q=research(head);if(q=0)(printf(沒有要修改的信息!n);return 0;11) else (k15=0;printchange();pri

23、ntf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*1.修改員工姓名2.修改員工辦公室電話號碼.修改員工手機(jī)號碼.修改員工電子郵箱printf(”*);printf(*);printf(n);n);printf(員工編號員工姓名辦公室電話號碼手機(jī)號碼電子郵箱n);printf(%-8st,q-data.num);printf(%-8st,);printf(%-9st,q-data.phone);printf(%-11

24、st,q-data.call);printf(%-10stn,q-data.e_mail);printf(請選擇 1-4);printf(n);scanf(%d,&i);while(i4)提示輸入是否錯誤(printf(輸入錯誤!n);printf(請重新輸入1-4:);scanf(%d,&i);printf(n);)switch(i)(printf(修改員工姓名n);strcpy(,k);printf(請輸入修改后的姓名:n);getchar();12gets(k);printf(n);strcpy(,k);break;printf(修改員工辦公室

25、電話號碼n);strcpy(q-data.phone,k);printf(請輸入修改后的辦公室電話號碼:n);getchar();gets(k);printf(n);strcpy(q-data.phone,k);break;printf(修改員工手機(jī)號碼n);strcpy(q-data.call,k);printf(請輸入要修改的號碼:n);getchar();gets(k);printf(n);strcpy(q-data.call,k);break;printf(修改員工電子郵箱n);strcpy(q-data.e_mail,k);printf(請輸入修改后的電子郵箱:n);getchar(

26、);gets(k);printf(n);strcpy(q-data.e_mail,k);break;default :printf(輸入錯誤!n);break;)return q;)void Save()(linklist *p=NULL;FILE *fp;char kechengsheji尸kechengsheji.txt;13if(head=NULL) (printf(n 記錄為空! n);return;) elsep=head-next;if(fp=fopen(kechengsheji,wb+)=NULL) (printf(n 打不開文件!n);return;)while(p!=NULL

27、)保存信息(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);) void Open()(FILE *fp;linklist *p1=NULL,*p2=NULL,*temp=NULL;if(fp=fopen(kechengsheji.txt,rb+)=NULL) (printf(ntt* return;通訊錄 *n);)head=(lin

28、klist *)malloc(sizeof(linklist);head-next=NULL;temp=p2=head;/*循環(huán)讀取*/while(! feof(fp) (p1=(linklist *)malloc(sizeof(linklist);temp=p2;14p2-next=p1;p2=p1;fread(p1,sizeof(linklist),1,fp);)temp-next=NULL;fclose(fp);/* 關(guān)閉文件 */)int judge(ListNode *head,ListNode *p) ListNode *q;q=head;char num5;while(q&str

29、cmp(q-data.num,p-data.num)next;)if(q=NULL|strcmp(q-data.num,p-data.num)0)return 0; elsereturn 1; ) void printcreate()清屏system(cls);printf(”*);printf(n);printf(*);printf(n);printf(* *);printf(n);printf(*);printf(n);printf(*);printf(n);) void printadd()清屏system(cls);15printf(”*);printf(n);printf(*);pr

30、intf(n);printf(*添 加 員 工 信 息*);printf(n);printf(*);printf(n);printf(*);printf(n);)void printdelete()(system(cls);/清屏printf(”*);printf(n);printf(*);printf(n); printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*.按員工編號刪除.按員工姓名刪除*);printf(n);printf

31、(*);printf(n);printf(*);printf(n);printf(請選擇 1-2:);printf(n);)void printresearch() (system(cls);/清屏printf(*);pr16printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*.按員工編號查詢.按員工姓名查詢*);printf(n); printf(*3.按辦公室電話號碼查詢*);printf

32、(n); printf(*);printf(n);printf(*);printf(n);4.按手機(jī)號碼查詢printf(*);printf(n);printf( );printf(n); )請選擇 1-4:void printlist()(system(cls);清屏printf(”*);printf(n);printf(*);printf(n); printf(*輸 出 通 訊 錄*);printf(n);printf(*);printf(n);printf(*);printf(n);)void printchange()17system(cls);/清屏printf( * );print

33、f( n);*1*1*1printf(*);printf(n);printf(*);printf(n);printf(* );printf(n);printf(*);pr intf(n);) void printcontinue() (printf(n);printf(繼續(xù)請按任意鍵);getchar();getchar();、測試結(jié)果4,1界面C:Us ersvweis i sD es kto pDev-Cp pCo nsolePauser.exe通訊錄系統(tǒng)清單自u.自心自I2J自曰單 Fard后史;星;史-5恃m 如加出木一 建添曹一 12 3 4 5 6 7看餐 MM MUX,),X)(

34、,)(,)(,)(101)(看)(看(看舅看看1)1)餐)餐 MM )(*)(,)(,)(請選擇1-7:18建立通訊錄 TOC o 1-5 h z 1 C;LJ; c-r5ww-i ikitQ pXDcv-GppCon 5 q IM 5 Cr, CXC= 口 XX建立通訊錄XM*KKHK3KHK3KHK3KHK3KHH3KHH3KHH3KHH3KKH3KKH3KKHKKKHKKKHKKKHKKKHKKKHK 詁輸入員_L編4二 1請輸入員工姓名:i請輸入辦公空山,話號碼二1請輸入員I手機(jī)號碼:1請輸入電子郵箱;1組續(xù)創(chuàng)建請按船束創(chuàng)建清投其它鋪二濟(jì)輸入S工編f住輸入員工姓名二篙輸入辦公室電詔號3:添加信息Cl:LJ 占 e? r svwe-s i %口 一鼻 krt。|3D? v-Op pXCan-SO Ie-Pai u 與 u r- e-xe*1,X - X - X,X,X X X M X - X X K X MX x-x x- X X X X,X,X,X,

溫馨提示

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

評論

0/150

提交評論