《C語(yǔ)言課程設(shè)計(jì)報(bào)告-c語(yǔ)言課程設(shè)計(jì)》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《C語(yǔ)言課程設(shè)計(jì)報(bào)告-c語(yǔ)言課程設(shè)計(jì)(10頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、C語(yǔ)言課程設(shè)計(jì)論文學(xué)生姓名: 陳丹 學(xué)生學(xué)號(hào): 20091020101 所在班級(jí): 信息與計(jì)算科學(xué)一班 任課教師: 馬老師 通訊錄管理系統(tǒng)【設(shè)計(jì)目的】設(shè)計(jì)“通訊錄管理系統(tǒng)”使其具有數(shù)據(jù)插入、修改、刪除、顯示和查詢(xún)等功能。(1) 數(shù)據(jù)包括:人名、工作單位、電話(huà)號(hào)碼和E-mail地址。(2) 可對(duì)記錄中的姓名和電話(huà)號(hào)碼進(jìn)行修改。(3) 可增加或刪除記錄。(4) 可顯示所有保存的記錄。(5) 可按人名或電話(huà)號(hào)碼進(jìn)行查詢(xún)?!驹O(shè)計(jì)思路】根據(jù)要求,電話(huà)簿數(shù)據(jù)以文本文件存放在文件中,故需要提供文件的輸入、輸出等操作;還需要保存記錄以進(jìn)行修改,刪除,查找等操作;另外還應(yīng)提供鍵盤(pán)式選擇菜單實(shí)現(xiàn)功能選擇。 【總體
2、設(shè)計(jì)】通訊錄管理系統(tǒng)數(shù)據(jù)輸入數(shù)據(jù)修改刪除數(shù)據(jù)添加查找瀏覽圖1 系統(tǒng)功能模塊圖 【詳細(xì)設(shè)計(jì)】1. 主函數(shù)主函數(shù)設(shè)計(jì)要求簡(jiǎn)潔,只提供部分提示語(yǔ)和函數(shù)的調(diào)用【程序】 顯示一系列功能選項(xiàng)輸入n,判斷n是否是17 ?根據(jù)n的值調(diào)用各功能模塊函數(shù)結(jié)束開(kāi)始n 圖2. 主函數(shù)流程圖Void menu() /*主界面*/ int n, w1; void enter(); void add(); void modify(); void browse(); void deleter(); void search(); do puts(t*菜單*tnn); puts(tttt1.新建聯(lián)系人); puts(tttt2.
3、添加聯(lián)系人); puts(tttt3.修改); puts(tttt4.刪除); puts(tttt5.瀏覽); puts(tttt6.查找); puts(tttt7.退出); puts(nnt*通訊錄*tn); printf(請(qǐng)選擇服務(wù)種類(lèi)(1-7) : bb); scanf(%d,&n); if(n7) w1=1;getchar(); else w1=0; while(w1=1); switch(n) case 1: enter(); break; /*輸入模塊*/ case 2: add(); break; /*添加模塊*/附錄:源代碼#define N 50#include#includ
4、estruct peoplechar name20; char company50; char num15; char mail20;peopN;void printf_face() printf(nt姓名t單位t電話(huà)號(hào)碼t郵箱n); void printf_one(int i) printf(t%st%st%st%sn,peopi.name,pany,peopi.num,peopi.mail); void printf_n(int n) int j; for(j=0;jnn 1).姓名 2).單位 3).電話(huà)號(hào)碼 4).郵箱 5).所有數(shù)據(jù) 6).取消并返回); printf(請(qǐng)選擇?: b
5、b); scanf(%d,&c); if(c6|c6|c1); do switch(c) case 1: printf(name:); scanf(%s,peopi.name); break; case 2: printf(company:); scanf(%s,pany); break; case 3: printf(number:); scanf(%s,peopi.num); break; case 4: printf(e-mail:); scanf(%s,peopi.mail); break; case 5: input(i); break; case 6: menu(); puts(n
6、Now:n); printf_face(); printf_one(i); printf(n確定?nnt1).是 2).不,重新修改 3).返回不保存 bb); scanf(%d,&w1); while(w1=2); return(w1);void input(int i) printf_face(); printf(t); scanf(%st%st%st%s,peopi.name,pany,peopi.num,peopi.mail); void save(int n) FILE *fp; int i; if(fp=fopen(file,wb)=NULL) printf(nCan not op
7、en filen); exit(0); for(i=0;in;i+) if(peopi.name0!=0) if(fwrite(&peopi,sizeof(struct people),1,fp)!=1) printf(file write errorn); fclose(fp);void printf_back() int w; void browse(); void menu(); printf(nnt_.Successful. _nn); printf(What do you want to do?nnt1).瀏覽所有t2).返回: bb); scanf(%d,&w); if(w=1)
8、browse(); else menu();void main() void menu(); menu();void menu() int n, w1; void enter(); void add(); void modify(); void browse(); void deleter(); void search(); do puts(t*菜單* ); puts(tt*1.新建聯(lián)系人*); puts(tt*2.添加聯(lián)系人*); puts(tt*3.修 改*); puts(tt*4.刪 除*); puts(tt*5.瀏 覽*); puts(tt*6.查 找*); puts(tt*7.退 出
9、*); puts(nnt*通訊錄* ); printf(請(qǐng)選擇服務(wù)種類(lèi)(1-7) : bb); scanf(%d,&n); if(n7) w1=1;getchar(); else w1=0; while(w1=1); switch(n) case 1: enter(); break; case 2: add(); break; case 3: modify(); break; case 4: deleter(); break; case 5: browse(); break; case 6: search(); break; case 7: exit(0); void enter() int
10、i,n; printf(How many people(0-%d)?:,N-1); scanf(%d,&n); printf(請(qǐng)輸入數(shù)據(jù):n); for(i=0;in;i+) printf(n輸入第 %d個(gè)記錄.n,i+1); input(i); if(i!=0) save(n); printf_back();void add() int i,n,k,t; n=load(); printf(How many people do you want to add(0-%d)?:,N-n-1); scanf(%d,&t); k=n+t; for(i=n;ik;i+) printf(n輸入第 %d個(gè)記
11、錄.n,i-n+1); input(i); save(k); printf_back();void modify() struct people s; int i,n,k,w0=1,w1,w2=0; n=load(); do k=-1; printf_face(); printf_n(n); do printf(nnEnter name that you want to modify!nName:); scanf(%s,s.name); for(i=0;in;i+) if(strcmp(s.name,peopi.name)=0) k=i; s=peopi; if(k=-1) printf(nn
12、沒(méi)有記錄請(qǐng)重新輸入!); while(k=-1); printf_face(); printf_one(k); w1=modify_data(k,n); if(w1=1) printf(nt_.Successful _.nn是否繼續(xù)?nnt1).是 2).保存返回t bb); scanf(%d,&w0); w2=1; else w0=0; if(w2=0) peopk=s; if(w0!=1)&(w2=1) save(n); while(w0=1); menu();void browse() int n; n=load(); printf_face(); printf_n(n); printf
13、(t共有 %d 記錄.n,n); printf(nPress any key to back.); getchar(); menu();void search() int w0,k,i,n,w1,w2; struct people s; n=load(); do printf(請(qǐng)選擇查找類(lèi)別: 1).姓名 2).電話(huà)號(hào)碼 bb); scanf(%d,&w1); if(w12) printf(輸入錯(cuò)誤!請(qǐng)重新輸入!n); w2=1; while(w2=1); if(w1=1) do k=-1; do printf(nnEnter name that tou want to search!nNam
14、e:); scanf(%s,s.name); for(i=0;in;i+) if(strcmp(s.name,peopi.name)=0) k=i; s=peopi; if(k=-1) printf(nn沒(méi)有記錄請(qǐng)重新輸入!); while(k=-1); printf_face(); printf_one(k); printf(nWhat do you want to do?nt1).繼續(xù) 2).返回菜單 bb); scanf(%d,&w0); while(w0=1); menu(); else do k=-1; do printf(nnEnter number that tou want t
15、o search!nNum:); scanf(%s,s.num); for(i=0;in;i+) if(strcmp(s.num,peopi.num)=0) k=i; s=peopi; if(k=-1) printf(nn沒(méi)有記錄請(qǐng)重新輸入!); while(k=-1); printf_face(); printf_one(k); printf(nWhat do you want to do?nt1).繼續(xù) 2).返回菜單 bb); scanf(%d,&w0); while(w0=1); menu(); void deleter()struct people s; int i,n,k,w0,w
16、1; n=load(); do k=-1; printf_face(); printf_n(n); do printf(nnEnter name that you want to delete!nName:); scanf(%s,s.name); for(i=0;in;i+) if(strcmp(s.name,peopi.name)=0) k=i; s=peopi; if(k=-1) printf(nn沒(méi)有記錄請(qǐng)重新輸入!); while(k=-1); printf_face(); printf_one(k); printf(n確定?nt1).是 2).返回 bb); scanf(%d,&w0
17、); if(w0=1) peopk.name0=0; save(n); else break; printf(nt_.Successful_.n); printf(What do you want to do?nt1).繼續(xù) 2).返回 bb); scanf(%d,&w1); while(w1=1); menu();【設(shè)計(jì)體會(huì)】通過(guò)為期一周的課程設(shè)計(jì),我們對(duì)C語(yǔ)言這門(mén)課程有了更深一步的了解。它是計(jì)算機(jī)程序設(shè)計(jì)的重要理論技術(shù)基礎(chǔ),在我們信息與計(jì)算科學(xué)專(zhuān)業(yè)的學(xué)習(xí)中占據(jù)著十分重要的地位。同時(shí)也使我們知道,要學(xué)好這門(mén)課程,僅學(xué)習(xí)書(shū)本上的知識(shí)是不夠的,還要有較強(qiáng)的實(shí)踐能力。因?yàn)槲覀儗W(xué)習(xí)知識(shí)就是為了實(shí)踐。
18、而只有多實(shí)踐,多編寫(xiě)程序,才能更好的理解與掌握書(shū)本上的東西。運(yùn)用C語(yǔ)言中的算法思想作數(shù)據(jù)結(jié)構(gòu),結(jié)合C語(yǔ)言基本知識(shí),編寫(xiě)一個(gè)通訊錄管理系統(tǒng)。通過(guò)完成本課題,進(jìn)一步熟悉C語(yǔ)言的基本知識(shí),并掌握數(shù)據(jù)結(jié)構(gòu)的一些基本算法思想,掌握C語(yǔ)言的文件操作(包括從磁盤(pán)讀入和向磁盤(pán)寫(xiě)入內(nèi)容),進(jìn)一步熟悉指針的用法,數(shù)組的建立運(yùn)用和函數(shù)的調(diào)用等?!緟⒖嘉墨I(xiàn)】朱若愚.數(shù)據(jù)結(jié)構(gòu)M. 北京: 電子工業(yè)出版社, 2006.1:41-65晉良潁.數(shù)據(jù)結(jié)構(gòu)M. 北京:人民郵電出版社, 2007.05: 21-45劉大有.數(shù)據(jù)結(jié)構(gòu)M. 北京: 高等教育出版社, 2006.3: 30-58趙文靜. 數(shù)據(jù)結(jié)構(gòu)與算法M. 北京: 科學(xué)出
19、版社, 2007.8: 41-64徐孝凱.數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)明教程.M. 北京: 清華大學(xué)出版社, 2006.04: 102-115嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)M. 北京:清華大學(xué)出版社, 2007.4: 39-43傅清祥,王曉東. 數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)M. 北京: 電子工業(yè)出版社, 2006.3: 31-46王敬華,林萍,.陳靜. C語(yǔ)言程序設(shè)計(jì)M. 北京: 清華大學(xué)出版社, 2007.10: 22-39李云清,楊慶紅,揭安全.數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)M. 北京:人民郵電出版社,2006.1: 44-67 10李春葆. 數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)習(xí)題與解析M.北京:清華大學(xué)出版社, 2006.1: 47-55