語言課程設(shè)計學生通信錄設(shè)計_第1頁
語言課程設(shè)計學生通信錄設(shè)計_第2頁
語言課程設(shè)計學生通信錄設(shè)計_第3頁
語言課程設(shè)計學生通信錄設(shè)計_第4頁
語言課程設(shè)計學生通信錄設(shè)計_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、青島農(nóng)業(yè)大學信息科學與工程學院高級語言課程設(shè)計(C) 課程設(shè)計報告 設(shè) 計 題 目 學生通訊錄 學生專業(yè)班級 學生姓名(學號) 設(shè)計小組其他同學姓名(學號) 指 導(dǎo) 教 師 完 成 時 間 2007-12-6 實 習(設(shè)計)地點 青島農(nóng)業(yè)大學信息學院 2007年 12 月 6 日一、課程設(shè)計目的和任務(wù)高級語言課程設(shè)計的目的在于加深對高級語言程序設(shè)計理論和基本知識的理解,掌握使用C語言進行面向過程設(shè)計的基本方法,提高運用面向過程知識解決實際問題的能力。為畢業(yè)設(shè)計和以后的工程實踐打下良好的基礎(chǔ)。 本次設(shè)計任務(wù)是使用C語言編寫一學生通訊錄。其具體要求如下:(1)學生通訊錄包含學生姓名、電話、住址、郵

2、編。(2)能增加新的學生通訊錄。(3)能刪除學生通訊錄。(4)實現(xiàn)對某學生通訊錄的查找。二、分析與設(shè)計1.程序的基本功能: 學生通訊錄程序的功能有:新學生的信息載入(包括:姓名、電話號碼、通信地址和郵政編碼)、插入學生的信息、查找學生的信息、增加和刪除學生的信息、完成對學生信息的自動保存,并能成功退出程序運行。2.系統(tǒng)總框圖:運行程序用戶輸入所需要運行的程序程序?qū)⒂脩羲枰倪M行函數(shù)運行輸出運行結(jié)果用戶根據(jù)提示來進行選擇所許內(nèi)容3.定義的函數(shù)及說明:(1)main()主函數(shù) 各模塊獨立,均由主函數(shù)控制調(diào)用。 利用輸出函數(shù)輸出字符串,在屏幕上顯示一個菜單。并顯示一個請用戶輸入選項的提示,主函數(shù)根

3、據(jù)用戶輸入的選項調(diào)用相應(yīng)的功能函數(shù)。 (2)new()輸入記錄函數(shù) 輸入記錄時按一條記錄一行的格式輸入,每個記錄之間用空格分隔。設(shè)計輸入的循環(huán)語句前應(yīng)考慮首先輸入準備輸入的記錄個數(shù)n,然后根據(jù)輸入的n的值來控制循環(huán)輸入n條記錄,n應(yīng)小于等于M。(3)insert()插入記錄函數(shù) 輸入要插入記錄的信息,保存到臨時變量中,然后再輸入一個姓名s,確定新記錄插入在該姓名的記錄之前,調(diào)用find()函數(shù)查找姓名為s的記錄,得到該記錄所在的序號之后開始插入操作,由于添加了一條記錄,記錄數(shù)加1,返回記錄數(shù),程序結(jié)束。(4)find()查找記錄函數(shù)本函數(shù)實現(xiàn)查找指定姓名的紀錄,要求輸入欲查找記錄的姓名,然后順

4、序查找有效元素,如找到則顯示找到紀錄的所有信息,如未找到則輸出沒有找到信息。 find函數(shù)功能是查找,若找到則返回記錄位置否則返回n。 (5)del()刪除記錄函數(shù)輸入要刪除記錄的姓名,調(diào)用find函數(shù),如果沒有該記錄,顯示沒找到信息;否則,調(diào)用print函數(shù),顯示記錄信息,接著顯示是否確實要刪除,請輸入確認信息整數(shù)0或1,1表示是,o表示否。如果輸入了1,則系統(tǒng)刪除信息。由于刪除了一條記錄,記錄數(shù)減1,返回記錄數(shù),程序結(jié)束。(6)display()顯示所有記錄函數(shù) 本函數(shù)實現(xiàn)顯示所以記錄數(shù)據(jù),輸出時,為了效果美觀清晰,應(yīng)設(shè)計一定的樣式輸出。 (7)record()保存記錄到文件 前面數(shù)組數(shù)據(jù)

5、的輸入和輸出是以終端為對象的,當程序關(guān)閉后,數(shù)據(jù)也就丟失了,所以為了能隨時查閱數(shù)據(jù),必須將數(shù)據(jù)輸出到磁盤文件上保存起來,使用時再從磁盤中讀入到內(nèi)存中,這就用到了磁盤文件的讀寫操作。 將文件名寫上它的絕對路徑,但要注意書寫方式,例如“c:tcrecordtxt”。打開文件之后先寫入記錄數(shù)n,然后用循環(huán)語句將記錄逐條寫入文件,每輸出一條記錄寫入一個換行符號。 (8)exit() 退出系統(tǒng)結(jié)束對通訊錄系統(tǒng)的操作,返回主界面。4.算法設(shè)計:實現(xiàn)對學生通訊錄的管理,重點掌握結(jié)構(gòu)體數(shù)組的應(yīng)用、數(shù)組作函數(shù)參數(shù)、文件讀寫、自定義函數(shù)等知識。本次程序設(shè)計應(yīng)用到以下知識點:(1)結(jié)構(gòu)體的定義 (2)數(shù)組的定義及應(yīng)

6、用 (3)順序查找方法 (4)二分查找算法 (5)函數(shù)調(diào)用、數(shù)組名作參數(shù) (6)文件的讀寫操作 (7)菜單項的制作和選擇 三、系統(tǒng)實施1.源程序代碼#include#include#define LEN sizeof(struct student)/*定義一個學生的結(jié)構(gòu)體*/struct studentchar name20;char phone20;char addr40;char post20;struct student *next;*head=NULL;void new() /*定義輸入新函數(shù)*/struct student *head,*p;insert();insert() /*定

7、義插入函數(shù)*/struct student *p;char c;int i;p=(struct student *)malloc(LEN);printf(nplease input name:n); /*提示用戶輸入姓名*/scanf(%s,&p-name);printf(nplease input phone:n); /*提示用戶輸入電話號碼*/scanf(%s,&p-phone);printf(nplease input address:n); /*提示用戶輸入地址*/scanf(%s,&p-addr);printf(nplease input post:n);/*提示用戶輸入郵編*/sc

8、anf(%s,&p-post);p-next=head;head=p;printf(nDo you continue to insert Y or Nn);/*利用if函數(shù)來實現(xiàn)用戶的需要退出還是繼續(xù)輸入*/fflush(stdin);scanf(%c,&c);if(c=Y|c=y) insert();if( c=N|c=n) main();void display()/*定義列表函數(shù)*/struct student *p;/*運用指針來實現(xiàn)函數(shù)的輸出*/int n=0,i;char t;p=head;while(p!=NULL)printf(n*);printf(n name phone a

9、ddr post );printf(n%s %s %s %sn,p-name,p-phone,p-addr,p-post);printf(n*);p=p-next;n+;if(n%3=0)/*運用if函數(shù)來實現(xiàn)用戶對函數(shù)的需要*/printf(nDo you continue to insert Y or Nn);/*利用if函數(shù)來實現(xiàn)用戶的需要退出還是繼續(xù)輸入*/fflush(stdin);scanf(%c,&c);if(c=Y|c=y) insert();if( c=N|c=n) main();find() /*定義查找函數(shù)*/struct student *p;char c;char n

10、ame120;int i;p=head;printf(nPlease input the name:n); /*提示用戶來輸入姓名*/scanf(%s,name1);while(strcmp(name1,p-name)!=0)&(p!=NULL)p=p-next;if(p=NULL)printf(nIt is not existing in the listn); /*如果不存在則顯示不存在*/else/*如果存在則輸出學生信息*/ printf(n#); printf(nphone:%s,p-phone); printf(naddr:%s,p-addr); printf(npost:%s,p

11、-post); printf(n#); printf(nDo you continue to find Y or Nn);fflush(stdin);scanf(%c,&c);if(c=Y|c=y)find (); /*利用if函數(shù)來實現(xiàn)繼續(xù)查找功能*/if(c=N|c=n) return ; /*利用輸入字母n來實現(xiàn)返回的功能*/delete() /*利用delet函數(shù)來實現(xiàn)刪除功能*/struct student *p,*p1;char c;char name220;p=head;printf(Please input a name:n); /*提示用戶輸入姓名*/scanf(%s,nam

12、e2);while(strcmp(name2,p-name)!=0)&(p!=NULL)p1=p;p=p-next;if(p=NULL)printf(nIt is not exist in the listn);elsep1-next=p-next;printf(nDo you continue to delete Y or Nn);fflush(stdin);scanf(%c,&c);if(c=Y|c=y) delete();if(c=N|c=n) return;save() /*利用save函數(shù)來實現(xiàn)*/FILE *fp;struct student *p; /*通過指針來實現(xiàn)對輸入內(nèi)容的

13、存儲*/fp=fopen(C:tongxuelu.c,wb);p=head;if(p=NULL)printf(nThis is a null list!);/*如果所取到的地址不對或沒有內(nèi)容時顯示This is a null list!*/else /*如果取址正確的話就進行儲存*/dofwrite(p,LEN,1,fp);p=p-next;while(p!=NULL);fclose(fp);exit () /*定義exit退出函數(shù)*/ char c;printf(n *n);printf(nDo you want to exit and save? Y or Nn);fflush(stdin

14、);scanf(%c,&c);if(c=y|c=Y) save () ;exit(0);/*利用if函數(shù)來決定是否退出函數(shù)到主菜單*/elseif(c=n|c=N) main();record()/*定義記錄函數(shù)來實現(xiàn)對所存函數(shù)的取值*/FILE *fp;struct student *p;int i;p=head;if(fp=fopen(C:tongxuelu.c,wb)=NULL)printf(Cant open this filen);return;for(;fread(p,LEN,1,fp)!=0;)printf(n*);printf(nphone:%s,p-phone);printf

15、(naddr:%s,p-addr);printf(npost:%s,p-post);printf(n*);main()/*定義主函數(shù)來實現(xiàn)進入運行程序之后的菜單選項*/int k;printf(n*);printf(nWELCOME TO STUDENTS COMMUNICATION SYSTEMnProduced by :Hu Dingren,Wang Hongxia and Xue Aiyuan);printf(n*);printf(n-n);printf(| input 1: new() |n);printf(-n);printf(| input 2: insert() |n);prin

16、tf(-n);printf(| input 3: find() |n);printf(-n);printf(| input 4: del() |n);printf(-n);printf(| input 5: display() |n);printf(-n);printf(| input 6: record() |n);printf(-n);printf(| input 0: exit() |n);printf(-n);printf(nnPlease Enter a Num to Select an Itemn);scanf(%d,&k);switch(k)/*用switch函數(shù)來實現(xiàn)對用戶的選

17、擇進行轉(zhuǎn)化*/case 1: new ();break;case 2: insert();break;case 3: find();break;case 4: delete();break;case 5: display(); break;case 6: record();break;case 0: exit();break;default :printf(nIt is possible to make a mistake!);2.程序運行說明(包括結(jié)果說明)同時按快捷鍵Alt+R,彈出菜單,選擇Run選項,按Enter鍵,開始對程序的運行。其輸出如下:*WELCOME TO STUDENTS

18、 COMMUNICATION SYSTEMProduced by :Hu Dingren,Wang Hongxia and Xue Aiyuan*-input 1: new() - input 2: insert()-input 3: find()-input 4: del();- input 5: display() - input 6: record();- input 0: exit(); -Please Enter a Num to Select an Item:用戶可根據(jù)需要輸入0-6不同的數(shù)以實現(xiàn)對系統(tǒng)的不同操作。(1)輸入1,可增加新的學生通訊錄。其運行如下:Plese inpu

19、t name:用戶根據(jù)實際輸入信息,之后按 enter 鍵,界面輸出依次如下:Plese input phone:Plese input address:Plese input post: 用戶輸入信息,按按enter 鍵,界面輸出如下:Do you continue to insert Y or N用戶根據(jù)需要輸入Y或N。輸入Y,程序?qū)⒗^續(xù)運行。輸入N 系統(tǒng)會將所輸入信息保存,并返回源程序。(2)輸入2,可在原來基礎(chǔ)上插入新的學生通訊錄。其運行類似(1)中所述。(3)如輸入3,可實現(xiàn)對某特定學生通訊錄的查找。其運行如下:Plese input the name:用戶輸入想要查找的學生姓名后,

20、按enter鍵,則該同學的通訊方式會顯示在運行界面.同時界面會給予以下提示:Do you continue to find Y or N 用戶根據(jù)需要作出選擇。如輸入Y,則繼續(xù)查找。如輸入N,系統(tǒng)會有如下提示:Do you want to exit and save ? Y or N 用戶如想退出并保存所查找的通訊錄,則輸入Y,并按enter 鍵。否則輸入N。(4)如輸入4,可實現(xiàn)對某特定學生通訊錄的刪除。其運行如下:Plese input a name :用戶輸入所要刪除的學生姓名,并按enter 鍵,系統(tǒng)會出現(xiàn)如下提示:Do you continue to delect Y or N 用戶

21、如想繼續(xù)刪除某通訊錄,則輸入Y,否則輸入N。如用戶所輸入的姓名不存在或已被刪除,則系統(tǒng)會出現(xiàn)以下提示:It is not exist in the list Do you continue to delect Y or N (5)如輸入5,則系統(tǒng)會將用戶所輸入的學生通訊錄全部顯示在運行界面。其形式如下:Name phone addr postW同時系統(tǒng)會給予以下提示:Do you want to exit and save ? Y or N 用戶根據(jù)需要進行不同的選擇。(6)如輸入6,則系統(tǒng)會完成對數(shù)據(jù)保存記錄到文件, 同時系統(tǒng)提示:Do you want to exit and save?

22、Y or N 如該通訊錄內(nèi)容為空,系統(tǒng)會給予以下提示:This is a dull list (7)exit() 退出系統(tǒng)。界面出現(xiàn)如下提示:Do you want to exit and save? Y or N 用戶根據(jù)需要進行選擇,以退出運行,回到主界面.3.存在的問題:這次課程設(shè)計中,我們遇到了許多困難。通過查閱資料,詢問老師或同學等途徑,終于將大多數(shù)的困難解決了,但令我們不滿的是該程序仍存在一些小的問題,就是在推出運行之后再次運行時上次所輸入的內(nèi)容就沒有了,只能保存每次所運行的結(jié)果,只能查找每次所輸入的結(jié)果,而且在運行界面下不好退出程序,當輸入的值與所要求輸入的不一樣時程序有時會退出。這是我們的遺憾所在,希望此程序能得

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論