通訊錄管理系統(tǒng)畢業(yè)論文.doc
濮陽職業(yè)技術(shù)學(xué)院畢業(yè)論文系別:物理與機(jī)電工程系,班級:08應(yīng)用電子,學(xué)生: 學(xué)號:0805316078指導(dǎo)教師: 課程:C語言 通訊錄管理系統(tǒng)指導(dǎo)思想:通過畢業(yè)論文工作使大學(xué)生對C語言的基本知識、基礎(chǔ)理論、基本技能得到提高,畢業(yè)論文工作是高職培養(yǎng)階段教學(xué)質(zhì)量的綜合訓(xùn)練和檢驗(yàn)。 目 錄畢業(yè)論文課題和指導(dǎo)思想1摘要3第一章 設(shè)計(jì)的目的和意義4第二章 系統(tǒng)分析51、系統(tǒng)總體結(jié)構(gòu)分析52、數(shù)據(jù)類型的選擇53、主要函數(shù)原型54、調(diào)用到的函數(shù)65、模塊的設(shè)計(jì)與介紹6第三章 模塊介紹和總體實(shí)現(xiàn)71、增加模塊72、刪除模塊83、輸入模塊104、查找模塊105、總體實(shí)現(xiàn)11第四章 調(diào)試與測試141.輸入程序進(jìn)行編譯、運(yùn)行142、增加聯(lián)系人143、聯(lián)系人輸出154、刪除聯(lián)系人155、查找聯(lián)系人166、退出16總結(jié)17參考資料18附錄(源代碼)19摘 要 當(dāng)今時(shí)代,網(wǎng)絡(luò)已經(jīng)成為人們生活中不可缺少的一部分,世界上的第三媒體Internet ,它打破了地域時(shí)間限制,改變了人們的工作和生活方式,制作站點(diǎn)是企業(yè)和個(gè)人的宣傳自己的重要手段,同時(shí)也學(xué)習(xí)信息的重要手段,今年來,隨著網(wǎng)絡(luò)用戶要求的不斷提高及計(jì)算機(jī)科學(xué)的迅速發(fā)展,特別是數(shù)據(jù)庫技術(shù)在Internet中的廣泛應(yīng)用,Web站點(diǎn)向用戶提供的服務(wù)將越來越豐富,越來越人性化.計(jì)算機(jī)在管理中應(yīng)用的普及,利用計(jì)算機(jī)實(shí)現(xiàn)各種管理勢在必行,對于機(jī)關(guān)單位來說,利用計(jì)算機(jī)支持高效率完成通訊錄,是適應(yīng)社會制度要求、推動機(jī)關(guān)單位信息利用計(jì)算機(jī)支持高效率完成通訊管理,是適應(yīng)現(xiàn)在社會制度要求、推動機(jī)關(guān)單位信息管理走向科學(xué)化、規(guī)范化的必要條件。隨著社會的發(fā)展及知識經(jīng)濟(jì)時(shí)代的到來,管理信息系統(tǒng)在各行各業(yè)發(fā)揮著越來越重要的作用。通信錄管理系統(tǒng)是典型的信息管理系統(tǒng)。通信錄管理系統(tǒng)的水平,是衡公司發(fā)展水平的一個(gè)重要指標(biāo)。通信錄管理系統(tǒng)工作煩瑣,包含了大量的信息數(shù)據(jù),因此就需要一個(gè)完善的職工信息管理系統(tǒng)來實(shí)現(xiàn)對這些數(shù)據(jù)的有效管理,滿足公司管理者的需求。關(guān)鍵字:通訊錄; 管理信息系統(tǒng); MIS; Visual Basic;第一章 設(shè)計(jì)的目的和意義通訊錄管理系統(tǒng)是典型的管理系統(tǒng)(MIS),其開發(fā)主要包括數(shù)據(jù)庫的建立和維護(hù)前端應(yīng)用程序的開發(fā)兩個(gè)方面。對于前者要求建立起數(shù)據(jù)庫一致性和完整性強(qiáng)、數(shù)據(jù)安全性好的庫。而對于后者則要求應(yīng)用程序功能完備,易使用等特點(diǎn)。經(jīng)過分析,我們使用MICROSOFT公司的VISUAL,BASIC開發(fā)工具,利用其提供的各種面向?qū)ο蟮拈_發(fā)工具,尤其是數(shù)據(jù)窗口這一能方便而簡潔操縱數(shù)據(jù)庫的智能化對象,首先在短時(shí)間內(nèi)建立系統(tǒng)應(yīng)用原型,然后,對初始原型系統(tǒng)進(jìn)行需求迭代,不斷修正和改進(jìn),直到形成用戶滿意的可行系統(tǒng)。 將網(wǎng)絡(luò)和通訊錄管理結(jié)合起來。使得組會人員對參考人員的實(shí)際情況一目了然,經(jīng)過詳細(xì)的系統(tǒng)調(diào)查,開發(fā)出的操作簡單而且方便使用的一個(gè)通訊系統(tǒng)。實(shí)現(xiàn)參會代表的動態(tài)管理,使得對信息的管理更加方便,同時(shí)計(jì)算機(jī)具有手工管理所無法比擬的優(yōu)點(diǎn)。例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好。這樣組會人員在工作起來效率高,可以不用再做大量的記錄。從而大大減輕了機(jī)關(guān)單位職員的工作量。運(yùn)用數(shù)據(jù)結(jié)構(gòu)中的算法思想作數(shù)據(jù)結(jié)構(gòu),結(jié)合C語言基本知識,編寫一個(gè)通訊錄管理系統(tǒng)。通過完成本課題,進(jìn)一步熟悉C語言的基本知識,并掌握數(shù)據(jù)結(jié)構(gòu)的一些基本算法思想,掌握C語言的文件操作(包括從磁盤讀入和向磁盤寫入內(nèi)容),進(jìn)一步熟悉指針的用法,數(shù)組的建立運(yùn)用和函數(shù)的調(diào)用等。 加深對數(shù)據(jù)結(jié)構(gòu)的理解,提高算法設(shè)計(jì)的能力,鍛煉編程的能力用C語言編寫一個(gè)通訊錄管理系統(tǒng)軟件,要求能實(shí)現(xiàn)通訊錄管理系統(tǒng)中增加新記錄, 刪除記錄, 顯示通訊錄的所有信息, 按名字查詢信息, 保存通訊錄,退出系統(tǒng)。第二章 系統(tǒng)分析1、系統(tǒng)總體結(jié)構(gòu)分析根據(jù)實(shí)際情況,我們使用原型法,即以少量代價(jià)快速地構(gòu)造一個(gè)可執(zhí)行的軟件系統(tǒng)模型,使用戶和開發(fā)人員可以較快的確定需求,然后采用循環(huán)進(jìn)化的開發(fā)方式,對系統(tǒng)模型作連續(xù)的精化,將系統(tǒng)需具備的性質(zhì)逐漸加上去,直到所有的性質(zhì)全部滿足。以下為系統(tǒng)邏輯模型圖:用戶系統(tǒng)管理員系統(tǒng)邏輯圖 2-12、數(shù)據(jù)類型的選擇struct lianxirenchar name20;char address50;char age5;char tele20;char e_mail30;3、主要函數(shù)原型char caidan();/菜單void add();/增加聯(lián)系人函數(shù)void print(struct lianxiren a,int);/輸入所有聯(lián)系人void dele(struct lianxiren a,int);/刪除聯(lián)系人void chazhao(struct lianxiren a,int);/查找聯(lián)系人void chazhao_name(struct lianxiren a,int n);/用名字查找void chazhao_age(struct lianxiren a,int n);/用年齡查找4、調(diào)用到的函數(shù)通過switch(表達(dá)式)case 常量表達(dá)式1:語句1case 常量表達(dá)式2:語句2case 常量表達(dá)式n:語句n調(diào)用六個(gè)函數(shù)。void add();void print(struct lianxiren a,int);void dele(struct lianxiren a,int);void chazhao(struct lianxiren a,int);void chazhao_name(struct lianxiren a,int n);void chazhao_age(struct lianxiren a,int n);5、模塊設(shè)計(jì)與介紹對本系統(tǒng)的功能進(jìn)行分析后可作如下的模塊化設(shè)計(jì):輸入模塊實(shí)現(xiàn)功能:按順序?qū)⒂行彰╪ame )、地址(address)、年齡(age)、電話(tel)、電子郵箱(E-mail)依次輸入,并建立鏈表將其連接。當(dāng)輸入數(shù)據(jù)完畢時(shí)Enter,輸入結(jié)束。刪除模塊實(shí)現(xiàn)功能:在已經(jīng)存儲的文件中刪除指定的通信錄信息,并釋放內(nèi)存空間。刪除所有相關(guān)通信錄信息。查找模塊實(shí)現(xiàn)功能:在已經(jīng)存儲的文件中查找指定的通信錄信息。可以按照查找姓名或方法進(jìn)行。輸出模塊實(shí)現(xiàn)功能:在輸入特定的文件名之后,輸出該文件中所包含的全部通信錄信息。添加模塊實(shí)現(xiàn)功能:添加相應(yīng)信息保存操作,鏈表中的信息以文件形式被長期。保存。主序模塊實(shí)現(xiàn)功能:完成系統(tǒng)的界面處理,包括開始界面和主菜單界面。第三章 模塊介紹和總體實(shí)現(xiàn)1、 Add( )增加模塊建立鏈表的具體操作就是逐一輸入各結(jié)點(diǎn)數(shù)據(jù),并建立其前后相鏈的關(guān)系。void add()int i;FILE *fp;if(fp=fopen(通訊錄.txt,a)=NULL)printf(無法打開文件,按任意鍵退出!n);char a;scanf(%c,&a);exit(0);int num;printf(您想要增加幾個(gè)聯(lián)系人:n);scanf(%d,&num);struct lianxiren t50;printf(請輸入聯(lián)系人信息n);printf(名字地址年齡電話電子郵箱n);printf(-n);for(i=0;inum;i+)scanf(%s%s%s%s%s,ti.name ,ti.address ,ti.age ,ti.tele ,ti.e_mail );printf(_n);for(i=0;inext,后把next指向p-next。在釋放p指針。要完成的是鏈表的刪除操作,只需修改鏈表中要刪除結(jié)點(diǎn)的前一個(gè)結(jié)點(diǎn)的鏈指針。使之指向被刪除結(jié)點(diǎn)的后面一個(gè)結(jié)點(diǎn)即可。 void dele(struct lianxiren a,int n)struct lianxiren temp5;char mingzi20;int i,j=0,s=0;printf(輸入你要刪除人得名字:);scanf(%s,mingzi);printf(n);for(i=0;in;i+)if(strcmp(mingzi,ai.name)!=0)strcpy(tempj.name,ai.name);strcpy(tempj.address,ai.address);strcpy(tempj.age,ai.age);strcpy(tempj.tele,ai.tele);strcpy(tempj.e_mail,ai.e_mail);j+;else s+;printf(你要刪除得人得信息是:n);printf(-n);printf(名字地址 年齡 電話郵箱n);printf(-n);printf(%-8s%-10s%-8s%-15s%-20sn,ai.name,ai.address,ai.age,ai.tele,ai.e_mail);FILE *fp;if(fp=fopen(通訊錄.txt,w)=NULL)printf(無法打開文件,按任意鍵退出!n);char a;scanf(%c,&a);exit(0);for(i=0;ij;i+)fprintf(fp,n);fprintf(fp,%s%s%s%s%s,tempi.name,tempi.address,tempi.age,tempi.tele,tempi.e_mail);if(s!=0) printf(*刪除成功!*n);else printf(您所要刪除的聯(lián)系人不存在,請核查拼寫及大小寫n);fclose(fp);3、print( )輸入模塊將最終想要保留的數(shù)據(jù)信息保存于文件中。void print(struct lianxiren t,int n)if(n=0)printf(*文件為空!*n);return;int i;printf(*通訊錄*n);printf(名字地址 年齡 電話郵箱n);printf(_n);for(i=0;iname,p-address,p-age,p-tele,p-e_mail);p+;n+;switch(caidan()case 1:add();break;case 2:print(tongxunlu,n);break;case 3:dele(tongxunlu,n);break;case 4:chazhao(tongxunlu,n);break;case 5:exit(0);char caidan()char choose5;printf(n*n);printf( n); printf( 通 訊 錄n);printf( _n);printf(1,增 加 聯(lián) 系 人 信 息 n);printf(2,輸 出 所 有 聯(lián) 系 人 n);printf(3,刪 除 聯(lián) 系 人 n);printf(4,查 找 聯(lián) 系 人 n);printf(5,退 出 通 訊 了 n); printf(n);printf(*nn);doprintf(請輸入您的選擇(1-5):);scanf(%s,choose);while(strcmp(choose,1)&strcmp(choose,2)&strcmp(choose,3)&strcmp(choose,4)&strcmp(choose,5);return choose0;第四章 調(diào)試與測試1.輸入程序進(jìn)行編譯、運(yùn)行2.增加聯(lián)系人(例:1)3.聯(lián)系人輸出4.刪除聯(lián)系人5.查找聯(lián)系人6.退出總 結(jié)課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識 、發(fā)現(xiàn)、提出、分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對我們的實(shí)際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新月異,當(dāng)今計(jì)算機(jī)應(yīng)用在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握程序開發(fā)技術(shù)是十分重要的,而C語言又是最常見,功能最強(qiáng)大的一種高級語言,因此做好C語言課程設(shè)計(jì)是十分必要的。 回顧起此次課程設(shè)計(jì),至今我們?nèi)愿锌H多,的確,整個(gè)編程,從理論到實(shí)踐,在籌備的日子里,可以學(xué)到很多很多的東西,同時(shí)不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計(jì)使我們懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到過各種各樣的問題,同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對一些前面學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體,指針,鏈表通過這次課程設(shè)計(jì)之后,我們把前面所學(xué)過的知識又重新溫故了一遍。 通過這次論文的寫作,我不僅加深了對C語言理論的理解,將理論很好地應(yīng)用到實(shí)際當(dāng)中去,而且我還學(xué)會了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。創(chuàng)新可以是在原有的基礎(chǔ)上進(jìn)行改進(jìn),使之功能不斷完善,成為真己的東西!此致敬禮 參考資料1 龔沛曾 編著 .Visual Basic 6.0 程序設(shè)計(jì)教程 02年第三版(高等教育出版社).2薩師煊 、王珊 編著 .數(shù)據(jù)庫系統(tǒng)概論02年第二版(高等教育出版社). 3趙文靜. 數(shù)據(jù)結(jié)構(gòu)與算法M. 北京: 科學(xué)出版社4王敬華,林萍,.陳靜. C語言程序設(shè)計(jì)M. 北京: 清華大學(xué)出版社參考網(wǎng)站:附錄(源代碼)#include#include#includestruct lianxiren/聯(lián)系人信息;char name20;char address50;char age5;char tele20;char e_mail30;char caidan();/菜單void add();/增加聯(lián)系人函數(shù)void print(struct lianxiren a,int);/輸入所有聯(lián)系人void dele(struct lianxiren a,int);void chazhao(struct lianxiren a,int);void chazhao_name(struct lianxiren a,int n);void chazhao_age(struct lianxiren a,int n);void main()FILE *fp;if(fp=fopen(通訊錄.txt,a)=NULL)printf(無法打開文件,按任意鍵退出!n);char a;scanf(%c,&a);exit(0);fclose(fp);for(;)int n=0;char ch;struct lianxiren tongxunlu100;struct lianxiren *p;p=tongxunlu;FILE *fp;if(fp=fopen(通訊錄.txt,r)=NULL)printf(無法打開文件,按任意鍵退出!n);char a;scanf(%c,&a);exit(0);elsewhile(ch=fgetc(fp)!=EOF)fscanf(fp,%s%s%s%s%s,p-name,p-address,p-age,p-tele,p-e_mail);p+;n+;switch(caidan()case 1:add();break;case 2:print(tongxunlu,n);break;case 3:dele(tongxunlu,n);break;case 4:chazhao(tongxunlu,n);break;case 5:exit(0);char caidan()char choose5;printf(n*n);printf( n); printf( 通 訊 錄n);printf( _n);printf(1,增 加 聯(lián) 系 人 信 息 n);printf(2,輸 出 所 有 聯(lián) 系 人 n);printf(3,刪 除 聯(lián) 系 人 n);printf(4,查 找 聯(lián) 系 人 n);printf(5,退 出 通 訊 了 n); printf(n);printf(*nn);doprintf(請輸入您的選擇(1-5):);scanf(%s,choose);while(strcmp(choose,1)&strcmp(choose,2)&strcmp(choose,3)&strcmp(choose,4)&strcmp(choose,5);return choose0;void add()int i;FILE *fp;if(fp=fopen(通訊錄.txt,a)=NULL)printf(無法打開文件,按任意鍵退出!n);char a;scanf(%c,&a);exit(0);int num;printf(您想要增加幾個(gè)聯(lián)系人:n);scanf(%d,&num);struct lianxiren t50;printf(請輸入聯(lián)系人信息n);printf(名字地址年齡電話電子郵箱n);printf(-n);for(i=0;inum;i+)scanf(%s%s%s%s%s,ti.name ,ti.address ,ti.age ,ti.tele ,ti.e_mail );printf(_n);for(i=0;inum;i+)fprintf(fp,n);fprintf(fp,%s%s%s%s%s,ti.name ,ti.address ,ti.age ,ti.tele ,ti.e_mail);printf(*已成功添加%d個(gè)聯(lián)系人*n,num);fclose(fp);void dele(struct lianxiren a,int n)struct lianxiren temp5;char mingzi20;int i,j=0,s=0;printf(輸入你要刪除人得名字:);scanf(%s,mingzi);printf(n);for(i=0;in;i+)if(strcmp(mingzi,ai.name)!=0)strcpy(tempj.name,ai.name);strcpy(tempj.address,ai.address);strcpy(tempj.age,ai.age);strcpy(tempj.tele,ai.tele);strcpy(tempj.e_mail,ai.e_mail);j+;else s+;printf(你要刪除得人得信息是:n);printf(-n);printf(名字地址 年齡 電話郵箱n);printf(-n);printf(%-8s%-10s%-8s%-15s%-20sn,ai.name,ai.address,ai.age,ai.tele,ai.e_mail);FILE *fp;if(fp=fopen(通訊錄.txt,w)=NULL)printf(無法打開文件,按任意鍵退出!n);char a;scanf(%c,&a);exit(0);for(i=0;ij;i+)fprintf(fp,n);fprintf(fp,%s%s%s%s%s,tempi.name,tempi.address,tempi.age,tempi.tele,tempi.e_mail);if(s!=0) printf(*刪除成功!*n);else printf(您所要刪除的聯(lián)系人不存在,請核查拼寫及大小寫n);fclose(fp);void print(struct lianxiren t,int n)if(n=0)printf(*文件為空!*n);return;int i;printf(*通訊錄*n);printf(名字地址 年齡 電話郵箱n);printf(_n);for(i=0;in;i+)printf(%-8s%-10s%-8s%-15s%-20s,ti.name ,ti.address ,ti.age ,ti.tele ,ti.e_mail );printf(n);void chazhao(struct lianxiren t,int n)int i;printf(輸入選擇:1按姓名查找,2按年齡查找:);scanf(%d,&i);if(i=1) chazhao_name(t,n);if(i=2) chazhao_age(t,n);void chazhao_name(struct lianxiren a,int n)char s20; int i,f=0; printf(輸入要查找的人的名字n);scanf(%s,s);for(i=0;in;i+)if(strcmp(s,ai.name )=0)f+;printf(您要找得人是:n);printf(名字地址 年齡 電話郵箱n);printf(_n);printf(%-8s%-10s%-8s%-15s%-20sn,ai.name ,ai.address ,ai.age ,ai.tele ,ai.e_mail );if(f=0)printf(沒有找到符合您要求的聯(lián)系人,請核查你的輸入!n);void chazhao_age(struct lianxiren a,int n)int i,f=0;char j5;printf(輸入要找人的年齡:n);scanf(%s,j);for(i=0;in;i+)if(strcmp(j,ai.age)=0)f+;printf(您要找得人是:n);printf(名字地址 年齡 電話郵箱n);printf(_n);printf(%-8s%-10s%-8s%-15s%-20sn,ai.name ,ai.address ,ai.age ,ai.tele ,ai.e_mail );if(f=0)printf(沒有找到符合您要求的聯(lián)系人,請檢查您的輸入!n); 26