




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、o一一年九月 題目三 通訊錄管理系統 任務:自學 C 語言中相關知識,設計出通訊錄管理系統。要求如下所述: 建立通訊錄信息,信息至少包含編號、姓名、年齡、電話、通訊地址、電子 郵箱等; 能夠提供添加、刪除和修改通訊錄信息的功能,并給出確認是否保存或刪除 記錄的提示信息; 能夠提供按姓名或電話等查詢并顯示相應記錄信息; 將通訊錄保存在文件中; 能夠按表格方式輸出通訊錄信息。 二、要求 為了保證所有的數據可以長期被使用, 要求程序能將相關數據存儲在外部數 據文件中,具體數據格式和文件名、路徑等自定; 根據所設計的算法,定義相應函數分別實現系統的各子功能模塊,同時由主 程序提供友好的用戶界面, 使用
2、戶可通過選擇主菜單來調用課程設計中要求 完成的各個功能模塊,子程序執行完后可返回到主菜單,繼續選擇其他功能 執行。源程序要求書寫規范,結構清晰。重點函數的重點變量,重點功能部 分均要求給出清晰的程序注釋。 程序編譯、鏈接成功后,自己設計實現程序功能的一組或多組測試數據,并 嚴格按照此測試數據進行測試,然后分析測試結果。如果程序不能正常運行 或結果不正確,則需對程序進行單步調試,在調試過程中認真查找算法實現 中存在的問題,并加以分析和修正。 程序詳解 首先,定義結構體 精選文庫 8 struct student long num;/ 用于存儲學號 char name20;/ 姓名 int age
3、;/ 年齡 long tele phone;/ 電話號碼 char adress40;/ 地址 char E_mail30;/ 郵箱 int QQ12;/ 增設的 QQ 一欄 struct student *next;/ 用于存放下一級指針 first; first 為第一個節點,繼而在其后動態的開創若干節點。 以下是用于鏈表處理的各個函數: struct student * creat(struct student *p) /輸入函數 void printall(struct student * head) /顯示所有記錄 struct student * delet(struct stud
4、ent *head) /刪除函數 struct student * insert(struct student *head) /插入函數 struct student *searchbynum(struct student *head) /按學號查找 struct student *searchbyname(struct student *head) /按姓名查找 struct student *search(struct student *head) /查找函數 menu_select() /選擇函數 以下是各個函數的詳細說明: Creat ()函數用于創建鏈表,其中以 面函數的處理,其循環
5、輸入的實現,依靠庫函數 n 記錄節點的個數,并在創建時實現自加,以便于后 malloc ()和后面的 while循環。 Printall 函數用于顯示當前的的所有記錄, 依靠頭指針找到鏈表首地址, 有 while 循環實現所 有記錄的輸出。 Delet ()函數用于刪除某個記錄,刪除可以按姓名或學號這兩種方式進行的,但本程序中 沒有這個功能即只可以按學號進行刪除(因為學號唯一) Insert ()函數用于插入,同樣以頭指針找到鏈表的首地址,并將要插入的學號依次與各個 節點中得 num 比較,然后按順序將一個節點插入。 Search 0函數用于查找,查找函數提供了兩種方式,即按姓名查找和按學號查
6、找。在search ()函數中可以按提示調用searchbyname ()和searchbynum ()。 Menu_select()函數用于提供函數選項,旨在簡化主函數。 流程圖 此即為該程序的主流程圖。 源程序 以下是詳細的源程序及部分注釋: #in clude #in clude #in clude #in clude #in clude #defi ne NULL 0 #defi ne LEN sizeof(struct stude nt) #defi ne SHU %dn%sn %5dn%ldn%sn%sn%s int n;struct student long num; char
7、name20; int age; long telephone; char adress40; char E_mail30; int QQ12; struct student *next; first; /創建鏈表的函數,即輸入函數 struct student * creat(struct student *p) struct student *head; struct student *p1,*p2; n=0; /先給 n 賦值 0 p1=p2=(struct student*) malloc(LEN);/ 強制類型轉換 printf(ttt*請輸入用戶信息 *n); printf(ttt
8、 輸入學號 :n); scanf(%ld, printf(ttt 輸入姓名 :n); scanf(%s, printf(ttt 輸入年齡 :n); scanf(%d, printf(ttt 輸入電話 :n); scanf(%ld, printf(ttt 輸入地址 n); scanf(%s, printf(ttt 輸入 E-mail:n); scanf(%s, printf(ttt 輸入 QQn); scanf(%s,/40 head=NULL; /實現 n 的自加,記錄節點的個數 while(p1-num!=0) n=n+1; if(n=1) head=p1; else p2-next=p1;
9、 p2=p1; p1=(struct student *) malloc(LEN); printf(ttt* 請輸入用戶信息 *n); printf(ttt 輸入學號 :n); scanf(%ld,p1-num); printf(ttt 輸入姓名 :n); scanf(%s,p1-name); printf(ttt 輸入年齡 :n); scanf(%d,p1-age); printf(ttt 輸入電話 :n); scanf(%ld,p1-telephone); printf(ttt 輸入地址 n); scanf(%s,p1-adress); printf(ttt 輸入 E-mail:n); s
10、canf(%s,p1-E_mail); printf(ttt 輸入 QQn); scanf(%s,p1-QQ); p2-next=NULL; return 0; /顯示所有記錄 void printall(struct student * head) struct student *p; printf(n 全部的記錄如下 n:); p=head; do printf(SHU,p-num,p-name,p-age,p-telephone,p-adress,p-E_mail,p-QQ); p=p-next; while(p!=NULL); /80 struct student * delet(st
11、ruct student *head)/ 刪除函數 long num; printf( 請輸入要刪除的號碼: n); scanf(%ld, struct student *p1,*p2; if(head=NULL) printf( 列表為空! n); return head; p1=head; while(num!=p1-num p1-next; if(num=p1-num) if(p1=head)/ 要刪除的節點為首節點 head=p1-next; else p2-next=p1-next; printf(delet:%dn,num); n=n-1;/ 節點減一 else printf(%d
12、 未找到該節點! n,num); return head; struct student * insert(struct student *head)/ 插入函數 struct student *stud; struct student *p0,*p1,*p2; p1=head; p0=stud;/p0 指向的是要插入的節點 if(head=0) head=p0; p0-next=NULL;/120 else while(p0-nump1-num) p1=p1-next; if(p0-numnum) if(head=p1) head=pO;/插入到原來第一個節點之前 else p2-next=
13、pO; pO-next=p1;/ 插入到 p2 所指的節點之后 n=n+1; return head; struct student *searchbynum(struct student *head)/ 按學號查找 long numb; printf( 請輸入要刪除的號碼: n); scanf(%ld, struct student *p; p=head;/147 scanf(%ld, if(numb!=p-num) p=p-next; else printf(SHU,p-num,p-name,p-age,p-telephone,p-adress,p-E_mail,p-QQ); return
14、 head; struct student *searchbyname(struct student *head)/ 按姓名查找 char a100; printf( 請輸入要查找的姓名: n); scanf(%s,a); struct student *p; p=head; scanf(%s,a); if(strcmp(a,p-name)!=0) p=p-next; else printf(SHU,p-num,p-name,p-age,p-telephone,p-adress,p-E_mail,p-QQ); return head; struct student *search(struct
15、 student *head) char choic; printf(ttt1- 按電話號碼查找 2-按姓名查找 ); printf(ttt 請選擇: ); choic=getch(); switch (choic) case 1:searchbynum(break; case 2:searchbyname(break; return head; int menu_select() char s80; 精選文庫 15 int a;/ 定義整形變量 system(cls); printf(tt* printf(ttt0. printf(ttt1. printf(ttt2. printf(ttt3
16、. printf(ttt4. 輸入記錄 顯示記錄 查找 n); 插入記錄 刪除記錄 歡迎進入通訊管理界面 *nn); n); n); n); n); printf(ttt5. Quitn); printf(tt*nn); do printf(Enter you choice(05):); scanf(%s,s); a=atoi(s); while (a5); return a; main() printf(tt*n); printf(tt*welcome to TONGXUNLU *n); printf(tt#code by 陳國警 #n); printf(tt*n); printf( 按任意
17、鍵進入主菜單 n); getch(); /選擇函數,提示選擇各種鏈表處理函數。 int selectnum; while(1) selectnum = menu_select(); switch(selectnum) case 0: creat( break; case 1: printall( break; case 2: search( break; case 3: in sert ( break; case 4: delet( break; case 5: prin tf(BYE BYE!n); system(” pause);/ 系統暫停 getchar(); exit(0); get
18、char(); return 0; 以下是部分運行結果: 初始化的界面 選擇界面: DebiigVIwnrftYt 武kCiijocjiuputs and SftttingAdmi 迎逍入進訕管理界”面*皿曲 0 12 3 4 5 Zntov you clioicc 0 - 技狗拼音半; 創建鏈表中的輸入界面: itLtir 室面 常言煙 訊錄 Debgtlieii.eKe 插M記錄 刪除記錄 Quit TntBi* 屮口 11 chc icpfzft 輸入學號二 IaSS= 請輸入用戶信息 P0 輸入電話; klLQ 冏北 輸入地址 輸入 E-ntaiL: p?l647TZ252eqq,con 請輸入用戶信息- 查找中的提示界面: 匡c: ODcuments 3 ral 環曲sg卓,宴:而誕語 5 VBiR衆 *:或衛_進/.運訊售理 賈 閭 環*古 0 12 3 4 5 Enter you criDice = 2 踰入期除的號碼按電話號碼旳2-按姓絡置找 請適國 限于篇幅,運行結果就只列舉這么多。 這是自從學習C語言以來我編寫過的最大的一個程序,編寫的時候遇到了前所未有的 困難。因為這個程序所涉及到的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 10-03矩陣及其運算章節課件
- 幼兒園小班體育教案好玩的彩帶
- 2024北京北師大實驗中學高二10月月考數學試題及答案
- 2025年國際關系與外交學考試試題及答案
- 2025年公共衛生服務與健康教育考試試題及答案
- 秩序維護部半年工作總結
- 火災動力學FD05a-爆炸常識
- 直腸癌中醫護理
- 高考歷史考前沖刺-心理調適 課件
- 2025年網絡經濟與在線商業模式考試題及答案
- 子女撫養權變更協議
- 2020電力工程施工測量標準
- 變壓器鐵芯(夾件)接地電流試驗
- 被執行人給法院執行局寫申請范本
- 23秋國家開放大學《小學語文教學研究》形考任務1-5參考答案
- 露天礦山開采安全-ppt
- XXX垃圾填埋場初步設計
- 水平三-《多種形式嘗試投籃》教案
- 環保 水保監理月報
- GB/T 3785.1-2023電聲學聲級計第1部分:規范
- 三國姜維傳攻略
評論
0/150
提交評論