版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、鄭州輕工業(yè)學(xué)院實 訓(xùn) 報 告實訓(xùn)名稱: 電話薄管理系統(tǒng) 姓 名: 院 (系): 專業(yè)班級: 學(xué) 號: 指導(dǎo)教師: 成 績: 時間: 實訓(xùn)報告:一、 需求分析設(shè)計一個電話薄管理系統(tǒng),實現(xiàn)通訊錄管理工作的系統(tǒng)化,為人們的工作和生活提供便利。二、 功能描述該系統(tǒng)具有輸入、顯示、查找、刪除、插入、保存、讀入、排序和退出等功能。三、總體設(shè)計設(shè)計思路:電話薄管理系統(tǒng)輸入模塊輸出模塊查詢模塊更新模塊輸出至屏幕輸出至文件排序記錄插入記錄刪除記錄修改記錄按姓名查詢按電話號碼查詢從鍵盤讀入從文件讀入(1)、輸入模塊。主要完成將數(shù)據(jù)存入數(shù)組中的工作。記錄既可以從以文本格式存儲的數(shù)據(jù)文件中讀入,也可以從鍵盤逐個輸入。
2、記錄由于聯(lián)系人有關(guān)的基本信息字段構(gòu)成。(2)、查詢模塊。查詢模塊主要完成在數(shù)組中查找滿足相關(guān)條件的記錄。用戶可以按照聯(lián)系人姓名或者聯(lián)系人號碼在數(shù)組中進行查找。(3)、更新模塊。更新模塊主要實現(xiàn)對記錄的修改、刪除、插入、和排序。在進行更新操作只好,需要將修改的數(shù)據(jù)存入源數(shù)據(jù)文件。(4)輸出模塊。實現(xiàn)對記錄的存盤,并以表格的形式將記錄信息打印在屏幕上。主控函數(shù)流程圖:結(jié)束調(diào)用save()函數(shù),進行寫數(shù)據(jù)文件操作是否已對修改進行了存盤?判斷鍵值,調(diào)用相應(yīng)函數(shù),完成相應(yīng)功能輸入是否為0?輸入08中的一數(shù)值,選擇相應(yīng)的操作進入while(1)主循環(huán)調(diào)用menu菜單函數(shù)將此文件的內(nèi)容讀出,并存入一個新的結(jié)
3、構(gòu)體類型的數(shù)組中以可讀寫的方式打開一個數(shù)據(jù)文件開始結(jié)束調(diào)用save()函數(shù),進行寫數(shù)據(jù)文件操作是否已對修改進行了存盤?判斷鍵值,調(diào)用相應(yīng)函數(shù),完成相應(yīng)功能輸入是否為0?輸入08中的一數(shù)值,選擇相應(yīng)的操作進入while(1)主循環(huán)調(diào)用menu菜單函數(shù)將此文件的內(nèi)容讀出,并存入一個新的結(jié)構(gòu)體類型的數(shù)組中以可讀寫的方式打開一個數(shù)據(jù)文件開始結(jié)束調(diào)用save()函數(shù),進行寫數(shù)據(jù)文件操作是否已對修改進行了存盤?判斷鍵值,調(diào)用相應(yīng)函數(shù),完成相應(yīng)功能輸入是否為0?輸入08中的一數(shù)值,選擇相應(yīng)的操作進入while(1)主循環(huán)調(diào)用menu菜單函數(shù)將此文件的內(nèi)容讀出,并存入一個新的結(jié)構(gòu)體類型的數(shù)組中以可讀寫的方式打
4、開一個數(shù)據(jù)文件開始結(jié)束調(diào)用save()函數(shù),進行寫數(shù)據(jù)文件操作是否已對修改進行了存盤?判斷鍵值,調(diào)用相應(yīng)函數(shù),完成相應(yīng)功能輸入是否為0?輸入08中的一數(shù)值,選擇相應(yīng)的操作進入while(1)主循環(huán)調(diào)用menu菜單函數(shù)將此文件的內(nèi)容讀出,并存入一個新的結(jié)構(gòu)體類型的數(shù)組中以可讀寫的方式打開一個數(shù)據(jù)文件開始結(jié)束調(diào)用save()函數(shù),進行寫數(shù)據(jù)文件操作是否已對修改進行了存盤?判斷鍵值,調(diào)用相應(yīng)函數(shù),完成相應(yīng)功能輸入是否為0?輸入08中的一數(shù)值,選擇相應(yīng)的操作進入while(1)主循環(huán)調(diào)用menu菜單函數(shù)將此文件的內(nèi)容讀出,并存入一個新的結(jié)構(gòu)體類型的數(shù)組中以可讀寫的方式打開一個數(shù)據(jù)文件開始結(jié)束調(diào)用sav
5、e()函數(shù),進行寫數(shù)據(jù)文件操作是否已對修改進行了存盤?判斷鍵值,調(diào)用相應(yīng)函數(shù),完成相應(yīng)功能輸入是否為0?輸入08中的一數(shù)值,選擇相應(yīng)的操作進入while(1)主循環(huán)調(diào)用menu菜單函數(shù)將此文件的內(nèi)容讀出,并存入一個新的結(jié)構(gòu)體類型的數(shù)組中以可讀寫的方式打開一個數(shù)據(jù)文件開始程序?qū)崿F(xiàn):在判斷鍵值是,有效輸入為08之間的任意整數(shù),其他輸入都被視為錯誤案件。若輸入為0,則會判斷在對記錄進行了更新操作之后知否進行了存盤操作。若未存盤,系統(tǒng)會提示用戶是否需要進行數(shù)據(jù)存盤操作,用戶輸入y或y,系統(tǒng)會進行存盤操作。最后系統(tǒng)執(zhí)行退出電話薄管理系統(tǒng)的操作。若選擇1,執(zhí)行增加記錄操作;若選擇2,執(zhí)行以表格形式打印輸出
6、記錄至屏幕的操作;若選擇3,執(zhí)行刪除記錄操作;若選擇4,執(zhí)行查詢記錄操作;若選擇5,執(zhí)行修改記錄操作;若選擇6,執(zhí)行插入記錄;選擇7,執(zhí)行按升序排序的操作;選擇8,執(zhí)行存儲記錄的操作;若輸入哦08之外的整數(shù),給出案件錯誤的提示。程序主菜單如下: 歡迎使用電話薄管理系統(tǒng) *電話薄主菜單* * * 1 增加記錄 2 顯示記錄 * * * * 3 刪除記錄 4 查詢記錄 * * * 5 修改記錄 6 插入記錄 * * * * 7 排序記錄 8 存儲記錄 * * * * 0 退出系統(tǒng) * * * *實訓(xùn)感想1、鞏固和強化了個人程序設(shè)計基本知識和基本技能,尤其是c語言的基本數(shù)據(jù)類型、構(gòu)造類型、函數(shù)、指針
7、、文件等等方面的基本知識和技能。2、培養(yǎng)和訓(xùn)練了個人綜合利用所學(xué)基本知識和基本技能進行小型應(yīng)用程序開發(fā)的技能。3、培養(yǎng)個人適應(yīng)崗位需要,獨立分析問題、解決問題的基本能力,以及團隊合作精神。附錄(代碼)#include stdio.h /標準輸入輸出函數(shù)庫#include stdlib.h /標準函數(shù)庫#include string.h /字符串函數(shù)庫#include conio.h /屏幕操作函數(shù)庫#define header1 -電話簿-n#define header2 | 編號 | 姓名 | 電話號碼 | 地址 | n#define header3 |-|-|-|-| n#define f
8、ormat | %-8s| %-10s| %-11s | %-18s | n#define data p-num,p-name,p-phonenum,p-address#define end -n#define n 250int saveflag=0; /是否需要存盤的標志變量/定義與職工有關(guān)的數(shù)據(jù)結(jié)構(gòu)typedef struct telebook /標記為telebookchar num4; /記錄編號char name10; /聯(lián)系人姓名char phonenum15; /聯(lián)系人電話號碼char address20; /聯(lián)系人地址telebook;void menu() /主菜單syste
9、m(cls); /調(diào)用dos命令,清屏.與clrscr()功能相同system(color 1a);cprintf( 歡迎使用電話薄管理系統(tǒng) n);cprintf( n); cprintf( *電話薄主菜單*n);cprintf( * *n);cprintf( * 1 增加記錄 2 顯示記錄 *n);cprintf( * *n);cprintf( * 3 刪除記錄 4 查詢記錄 *n);cprintf( * *n);cprintf( * 5 修改記錄 6 插入記錄 *n);cprintf( * *n);cprintf( * 7 排序記錄 8 存儲記錄 *n);cprintf( * *n);cp
10、rintf( * 0 退出系統(tǒng) *n);cprintf( * *n);cprintf( *n); /cprintf()送格式化輸出至文本窗口屏幕中void printheader() /格式化輸出表頭printf(header1);printf(header2);printf(header3);void printdata(telebook pp) /格式化輸出表中數(shù)據(jù)telebook* p;p=&pp;printf(format,data);void disp(telebook temp,int n) /顯示數(shù)組temp中存儲的記錄,內(nèi)容為電話薄結(jié)構(gòu)中定義的內(nèi)容int i;if(n=0) /
11、表示沒有電話簿記錄printf(n=無電話號碼記錄!n);while(getchar()!=n)continue; printf(輸入回車鍵繼續(xù));getchar();return;printf(nn);printheader(); /輸出表格頭部i=0;while(i沒有相關(guān)記錄,請按回車鍵繼續(xù)!n);/作用:用于定位數(shù)組中符合要求的記錄,并返回保存該記錄的數(shù)組元素下標值/參數(shù):findmess保存要查找的具體內(nèi)容; nameorphonenum保存按什么在數(shù)組中查找int locate(telebook temp,int n,char findmess,char nameorphonenu
12、m)int i=0;if(strcmp(nameorphonenum,phonenum)=0) /按號碼記錄編號查詢 while(in) if(strcmp(tempi.phonenum,findmess)=0) /若找到findmess值的號碼記錄編號return i;i+; else if(strcmp(nameorphonenum,name)=0) /按號碼記錄姓名查詢while(in)if(strcmp(,findmess)=0) /若找到findmess值的號碼記錄姓名return i;i+; return -1; /若未找到,返回一個整數(shù)-1/輸入字符串,并進行
13、長度驗證(長度lens) printf(n 超出長度! n);/進行長度校驗,超過lens值重新輸入 while(strlen(n)lens); strcpy(t,n); /將輸入的字符串復(fù)制到字符串t中 /增加電話號碼記錄int add(telebook temp,int n)char ch,num10;int i,flag=0;system(cls);disp(temp,n); /先打印出已有的電話號碼記錄 while(1) /一次可輸入多條記錄,直至輸入號碼記錄編號為0的記錄結(jié)束添加操作 while(1) /輸入電話號碼編號,保證該編號沒有被使用,若輸入編號為0,則退出添加記錄操作 st
14、ringinput(num,10,(輸入0返回主菜單)請輸入n編號:); /格式化輸入編號并檢驗 flag=0; if(strcmp(num,0)=0) /輸入為0,則退出添加操作,返回主界面 return n; i=0; while(i該編號%s已存在,是否重新輸入?(y/n):,num); scanf(%c,&ch); if(ch=y|ch=y) continue; else return n; else break; strcpy(tempn.num,num); /將字符串num復(fù)制到tpn.num中stringinput(,10,姓名:); /輸入姓名stringi
15、nput(tempn.phonenum,15,電話號碼:); /輸入電話號碼stringinput(tempn.address,20,地址:); /輸入家庭地址saveflag=1;n+; return n;/按電話薄號碼編號或姓名,查詢記錄void qur(telebook temp,int n)int select; /:按編號查,2:按姓名查,其他:返回主界面char searchinput20; /保存用戶輸入的查詢內(nèi)容int p=0;if(n沒有相關(guān)記錄,請按回車鍵繼續(xù)!n);getchar();return;system(cls);printf(n =1 按姓名查找 =2 按號碼查
16、找n);printf( 請選擇1,2:);scanf(%d,&select);if(select=1) /按姓名查詢 stringinput(searchinput,10,請輸入存在的姓名:); p=locate(temp,n,searchinput,name); /在數(shù)組temp中查找編號為searchinput值的元素,并返回該數(shù)組元素的下標值 if(p!=-1) /若找到該記錄 printheader(); printdata(tempp); printf(end); printf(輸入回車鍵返回); getchar(); else nofind(); getchar();else if
17、(select=2) /按電話號碼查詢 stringinput(searchinput,15,請輸入存在的電話號碼:); p=locate(temp,n,searchinput,phonenum); if(p!=-1) printheader(); printdata(tempp); printf(end); printf(輸入回車鍵返回); getchar(); else nofind(); getchar();else wrong(); getchar(); /刪除記錄:先找到保存該記錄的數(shù)組元素的下標值,然后在數(shù)組中刪除該數(shù)組元素int del(telebook temp,int n)i
18、nt sel;char findmess20;int p=0,i=0;if(n沒有任何記錄!n);getchar();return n;system(cls);disp(temp,n);printf(n =1 按姓名刪除 =2 按號碼刪除n);printf( 請選擇1,2:);scanf(%d,&sel);if(sel=1)/先按姓名查詢到該記錄所在的數(shù)組元素的下標值 stringinput(findmess,10,請輸入存在的姓名:); p=locate(temp,n,findmess,name); getchar(); if(p!=-1) for(i=p+1;i刪除成功,請輸入回車鍵返回!
19、n); n-; getchar(); saveflag=1; else nofind(); getchar(); else if(sel=2) /先按電話號碼查詢到該記錄所在的數(shù)組元素的下標值 stringinput(findmess,15,請輸入存在的電話號碼:); p=locate(temp,n,findmess,phonenum); getchar(); if(p!=-1) for(i=p+1;i刪除成功,輸入回車鍵返回!n); n-; getchar(); saveflag=1; else nofind(); getchar(); return n;/修改記錄:先按輸入的電話編號查詢到
20、該記錄,然后提示用戶修改編號之外的值,編號不能修改void modify(telebook temp,int n)char findmess20;int p=0;if(n無號碼記錄,請按回車鍵繼續(xù)!n); getchar(); return ;system(cls);printf(修改號碼記錄);disp(temp,n);stringinput(findmess,10,請輸入存在的姓名:); /輸入并檢驗該編號p=locate(temp,n,findmess,name); /查詢到該數(shù)組元素,并返回下標值if(p!=-1) /若p!=1,表明已經(jīng)找到該數(shù)組元素 printf(編號:%s,n,t
21、empp.num); printf(姓名:%s,); stringinput(,10,請輸入新姓名:); printf(姓名:%s,tempp.phonenum); stringinput(tempp.phonenum,15,請輸入新電話號碼:); printf(姓名:%s,tempp.address); stringinput(tempp.address,20,請輸入新地址:); printf(n=修改成功,輸入回車鍵返回!n); disp(temp,n); getchar(); saveflag=1;else nofind(); getchar();
22、 return ;/插入記錄:按號碼編號查詢到要插入的數(shù)組元素的位置,然后在該編號之后插入一個新數(shù)組元素。int insert(telebook temp,int n) char ch,num10,s10; /s保存插入點位置之前的編號,num保存輸入的新記錄的編號 telebook newinfo; int flag=0,i=0,kkk=0; system(cls); disp(temp,n); while(1) stringinput(s,10,請輸入要插入哪位編號之后:); flag=0;i=0; while(i該編號%s不存在,重新嘗試?(y/n):,s); scanf(%c,&ch)
23、; if(ch=y|ch=y) continue; else return n; /以下新記錄的輸入操作與add()相同 while(1) stringinput(num,10,請輸入要插入的編號:); i=0;flag=0; while(i對不起,你輸入的編號%s已存在,請重新輸入!(y/n):,num); scanf(%c,&ch); if(ch=y|ch=y) continue; else return n; else break; strcpy(newinfo.num,num); /將字符串num復(fù)制到newinfo.num中 stringinput(,10,姓
24、名:); /輸入姓名 stringinput(newinfo.phonenum,15,電話號碼:); /輸入電話號碼 stringinput(newinfo.address,20,地址:); /輸入地址 saveflag=1; /在main()有對該全局變量的判斷,若為1,則進行存盤操作 for(i=n-1;ikkk;i-) /從最后一個組織元素開始往向移動一個元素的位置 strcpy(tempi+1.num,tempi.num); strcpy(tempi+1.name,); strcpy(tempi+1.phonenum,tempi.phonenum); strcpy(
25、tempi+1.address,tempi.address); strcpy(tempkkk+1.num,newinfo.num); /在kkk的元素位置后插入新記錄 strcpy(tempkkk+1.name,); strcpy(tempkkk+1.phonenum,newinfo.phonenum); strcpy(tempkkk+1.address,newinfo.address); n+; disp(temp,n); printf(nn輸入回車鍵返回); getchar(); return n;/利用選擇排序法實現(xiàn)數(shù)組的按記錄編號或姓名的升序排序void sel
26、ectsort(telebook temp,int n)int i=0,j=0,flag=0,indexmin,select;char charflag10;telebook newinfo;if(n無號碼記錄,輸入回車鍵返回!n); getchar(); return ;system(cls);disp(temp,n); /顯示排序前的所有記錄printf( =1 按記錄編號排序 =2 按姓名排序n);printf( 請選擇1,2:);scanf(%d,&select);if(select=1) /按記錄編號排序 for(i=0;in-1;i+) flag=32767;indexmin=0;
27、 for(j=i;jn;j+) if(atoi(tempj.num)排序成功,輸入回車鍵返回!n); getchar(); return; else if(select=2) for(i=0;in-1;i+) charflag0=255;indexmin=0; for(j=i;jn;j+) if(strcmp(,charflag)排序成功,輸入回車鍵返回!n); getchar(); return; else wrong(); getchar(); getchar(); return; /數(shù)據(jù)存盤,若用戶沒有專門進行此操作且對數(shù)據(jù)有修改,在退出系統(tǒng)時, 會提示用戶存盤voi
28、d save(telebook temp,int n)file* fp;int i=0;fp=fopen(c:telephon.txt,w);/以寫方式打開txt文件if(fp=null) /打開文件失敗 printf(n=打開失敗,請按回車鍵繼續(xù)!n); getchar(); return ;for(i=0;i0) getchar(); printf(nn=保存成功,總共儲存號碼:%d條n請按回車鍵繼續(xù),i); getchar(); saveflag=0;elsesystem(cls); printf(沒有已經(jīng)保存的電話號碼,請按回車鍵繼續(xù)!n); getchar(); fclose(fp); /關(guān)閉此文件void main() telebook telen; /定義telebook結(jié)構(gòu)體 file *fp; /文件指針 int select; /保存選擇結(jié)果變量 char ch; /保存(y,y,n,n) int count=0; /保存文件中的記錄條數(shù)(或元素個數(shù)) fp=fopen(
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024上海建筑勞務(wù)分包合同
- 2024木材貿(mào)易合同范本
- 2024年國際金融服務(wù)與合作合同
- 2024個人住房抵押借款合同
- 2024年員工車輛租賃服務(wù)協(xié)議
- 2024快遞員合同范本范文
- 2024年履約保證合同樣本
- 2024茶葉運輸合同
- (2024版)高端裝備制造技術(shù)與專利共享協(xié)議
- 2024-2025版高中地理第一章區(qū)域地理環(huán)境和人類活動單元素養(yǎng)評價含解析中圖版必修3
- 網(wǎng)絡(luò)工程職業(yè)生涯展示
- 哈利波特與混血王子
- 《汽車鈑金噴涂技術(shù)》 課件 任務(wù)11.2車身鋼制外板外形修復(fù)機修復(fù)
- 不銹鋼電鍍工藝流程
- IgG4相關(guān)疾病的護理查房
- 如何做好醫(yī)院學(xué)科建設(shè)
- 干部職工禁毒培訓(xùn)課件
- 景區(qū)服務(wù)提升培訓(xùn)課件
- 補鉀原則和注意事項
- 體育行業(yè)的運動場館安全規(guī)范培訓(xùn)
- 英語期中考試:六年級上冊的質(zhì)量分析
評論
0/150
提交評論