版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)(論文)</b></p><p> 題 目 名 稱 通信錄管理 </p><p> 課 程 名 稱 C語言課程設(shè)計(jì) </p><p> 學(xué) 生 姓 名
2、 </p><p> 學(xué) 號(hào) </p><p> 系 、專 業(yè) 信息工程系、信息大類 </p><p> 指 導(dǎo) 教 師 </p><p> 200
3、8年 6 月 8 日</p><p><b> 目 錄</b></p><p><b> 1前言2</b></p><p><b> 2需求分析2</b></p><p><b> 2.1要求2</b></p><p
4、><b> 2.2任務(wù)2</b></p><p><b> 2.3運(yùn)行環(huán)境2</b></p><p><b> 2.4開發(fā)工具2</b></p><p><b> 3概要設(shè)計(jì)2</b></p><p> 3.1系統(tǒng)流程圖:3&l
5、t;/p><p> 3.2函數(shù)“輸入”流程圖4</p><p> 3.3函數(shù)“顯示”流程圖4</p><p> 3.4函數(shù)“刪除”流程圖5</p><p> 3.5函數(shù)“增加”流程圖6</p><p> 3.6函數(shù)“保存”流程圖6</p><p><b> 4詳細(xì)設(shè)
6、計(jì)7</b></p><p> 4.1通信錄管理7</p><p> 4.2分析和設(shè)計(jì)7</p><p> 4.3具體代碼實(shí)現(xiàn)11</p><p> 5課程設(shè)計(jì)的總結(jié)與體會(huì)16</p><p><b> 參考文獻(xiàn)16</b></p><p&g
7、t;<b> 致謝16</b></p><p><b> 前言</b></p><p> 編寫一個(gè)程序,可以存入通信錄信息,并對(duì)其進(jìn)行管理??梢愿鶕?jù)不同的提示,對(duì)通信錄進(jìn)行各種不同的管理。</p><p><b> 需求分析</b></p><p><b>
8、 2.1 要求</b></p><p> (1)用C語言實(shí)現(xiàn)程序設(shè)計(jì)。</p><p> (2)利用結(jié)構(gòu)體進(jìn)行相關(guān)信息處理。</p><p> (3)畫出主要流程圖。</p><p> (4)系統(tǒng)的各個(gè)功能模塊要求用函數(shù)形式實(shí)現(xiàn)。</p><p> (5)界面良好(良好的人機(jī)互交),流程要有注釋
9、。</p><p><b> 2.2 任務(wù)</b></p><p> (1)錄入通信錄信息(包括姓名、單位、電話號(hào)碼)。</p><p> (2)顯示通信錄里的所有成員的信息。</p><p> (3)查詢通信錄中某個(gè)人的信息。</p><p> (4)增加某個(gè)人的信息到通信錄中。<
10、;/p><p> (5)刪除通信錄里某個(gè)人的信息。</p><p> (6)保存通信錄的信息。</p><p><b> 2.3 運(yùn)行環(huán)境</b></p><p> (1)WINDOWS2000/XP系統(tǒng)</p><p> (2)Turboc2.0編譯環(huán)境</p><p&
11、gt;<b> 2.4開發(fā)工具</b></p><p><b> C語言</b></p><p><b> 概要設(shè)計(jì)</b></p><p> 3.1 系統(tǒng)流程圖(如圖3.1)</p><p> 圖3.1 系統(tǒng)流程圖</p><p> 3.
12、2函數(shù)“輸入”流程圖(如圖3.2)</p><p> 圖3.2 函數(shù)“輸入”流程圖</p><p> 3.3函數(shù)“顯示”流程圖(如圖3.3)</p><p> 圖3.3 函數(shù)“顯示”流程圖</p><p> 3.4函數(shù)“查找”流程圖(如圖3.4)</p><p> 圖3.4 函數(shù)“查找”流程圖</
13、p><p> 3.5函數(shù)“刪除”流程圖(如圖3.5)</p><p> 圖3.5 函數(shù)“刪除”流程圖</p><p> 3.6 函數(shù)“增加”流程圖(如圖3.6)</p><p> 圖3.6 函數(shù)“增加”流程圖</p><p> 3.7 函數(shù)“保存”流程圖(如圖3.7)</p><p>
14、 圖3.7 函數(shù)“保存”流程圖</p><p><b> 詳細(xì)設(shè)計(jì)</b></p><p><b> 4.1 通信錄管理</b></p><p> 根據(jù)提示,對(duì)通信錄進(jìn)行不同的管理。</p><p><b> 4.2 分析和設(shè)計(jì)</b></p><
15、;p> 在程序的開頭部分是就宏定義了M#define M 50,隨著在主函數(shù)中又有ADDRESS adr[M]; 這就定義了50個(gè)用來存放通信錄的各種信息的結(jié)構(gòu)體變量。</p><p><b> 然后定義結(jié)構(gòu)體變量</b></p><p> typedef struct /*定義數(shù)據(jù)結(jié)構(gòu)*/</p><p><b>
16、{</b></p><p> char name[20]; /*姓名*/</p><p> char units[30]; /*單位*/</p><p> char tele[10]; /*電話*/</p><p><b> }ADDRESS;</b></p><p>
17、定義了用來存放通信錄的各種信息的結(jié)構(gòu)體變量。可以將通信錄成員的姓名、單位、電話號(hào)碼存入文件之中。</p><p><b> 函數(shù)原型</b></p><p> int enter(ADDRESS t[]); /*輸入記錄*/</p><p> void list(ADDRESS t[],int n); /*顯示記錄*/</p>
18、<p> void search(ADDRESS t[],int n); /*按姓名查找顯示記錄*/</p><p> int delete(ADDRESS t[],int n); /*刪除記錄*/</p><p> int add(ADDRESS t[],int n); /*插入記錄*/</p><p> void save(ADDRESS
19、 t[],int n); /*記錄保存為文件*/</p><p> void print(ADDRESS temp); /*顯示單條記錄*/</p><p> int menu_select(); /*主菜單函數(shù)*/</p><p> 這就是程序中所有的子函數(shù),在這里起到一個(gè)函數(shù)聲明的作用。</p><p><b> 函數(shù)
20、“輸入”</b></p><p> int enter(ADDRESS t[])</p><p><b> {</b></p><p><b> int i,n;</b></p><p><b> char *s;</b></p><p
21、> clrscr(); /*清屏*/</p><p> printf("\nplease input num \n"); /*提示信息*/</p><p> scanf("%d",&n); /*輸入記錄數(shù)*/</p><p> printf("please input record \n&quo
22、t;); /*提示輸入記錄*/</p><p> printf("name unit telephone\n");</p><p> printf("------------------------------------------------\n");</p>&l
23、t;p> for(i=0;i<n;i++)</p><p><b> {</b></p><p> scanf("%s%s%s",t[i].name,t[i].units,t[i].tele); /*輸入記錄*/</p><p> printf("-----------------------
24、-----------------------\n");</p><p><b> }</b></p><p> return n; /*返回記錄條數(shù)*/</p><p><b> }</b></p><p> /*顯示記錄,參數(shù)為記錄數(shù)組和記錄條數(shù)*/</p>&
25、lt;p> 這個(gè)函數(shù)表示的是調(diào)用的函數(shù)“輸入”。然后輸入記錄數(shù),再將通信錄成員的信息都輸入系統(tǒng),將其賦入結(jié)構(gòu)體中,當(dāng)輸入成員的信息等于記錄數(shù)時(shí),結(jié)束輸入。</p><p><b> 函數(shù)“顯示”</b></p><p> void list(ADDRESS t[],int n)</p><p><b> {</b&
26、gt;</p><p><b> int i;</b></p><p><b> clrscr();</b></p><p> printf("\n\n*******************ADDRESS******************\n");</p><p> p
27、rintf("name unit telephone\n");</p><p> printf("------------------------------------------------\n");</p><p> for(i=0;i<n;i++)</p>
28、;<p> printf("%-20s%-30s%-10s\n",t[i].name,t[i].units,t[i].tele);</p><p> if((i+1)%10==0) /*判斷輸出是否達(dá)到10條記錄*/</p><p><b> {</b></p><p> printf("
29、Press any key continue...\n"); /*提示信息*/</p><p> getch(); /*按任意鍵繼續(xù)*/</p><p><b> }</b></p><p> printf("************************end*******************\n"
30、);</p><p><b> }</b></p><p> 這個(gè)函數(shù)表示的是調(diào)用的函數(shù)“顯示”。顯示通信錄里成員的信息。</p><p><b> 函數(shù)“查找”</b></p><p> void search(ADDRESS t[],int n)</p><p>
31、<b> {</b></p><p> char s[20]; /*保存待查找姓名字符串*/</p><p> int i; /*保存查找到結(jié)點(diǎn)的序號(hào)*/</p><p> clrscr(); /*清屏*/</p><p> printf("please search name\n&quo
32、t;);</p><p> scanf("%s",s); /*輸入待查找姓名*/</p><p> i=find(t,n,s); /*調(diào)用find函數(shù),得到一個(gè)整數(shù)*/</p><p> if(i>n-1) /*如果整數(shù)i值大于n-1,說明沒找到*/</p><p> printf("not fo
33、und\n");</p><p><b> else</b></p><p> print(t[i]); /*找到,調(diào)用顯示函數(shù)顯示記錄*/</p><p><b> }</b></p><p> /*顯示指定的一條記錄*/</p><p> void
34、print(ADDRESS temp)</p><p><b> {</b></p><p><b> clrscr();</b></p><p> printf("\n\n********************************************\n");</p>&
35、lt;p> printf("name unit telephone\n");</p><p> printf("------------------------------------------------\n");</p><p> printf("%-
36、20s%-30s%-10s\n",temp.name,temp.units,temp.tele);</p><p> printf("**********************end***********************\n");</p><p><b> }</b></p><p> /*查找函數(shù)
37、,參數(shù)為記錄數(shù)組和記錄條數(shù)以及姓名s */</p><p> int find(ADDRESS t[],int n,char *s)</p><p><b> {</b></p><p><b> int i;</b></p><p> for(i=0;i<n;i++)/*從第一條記錄
38、開始,直到最后一條*/</p><p><b> {</b></p><p> if(strcmp(s,t[i].name)==0) /*記錄中的姓名和待比較的姓名是否相等*/</p><p> return i; /*相等,則返回該記錄的下標(biāo)號(hào),程序提前結(jié)結(jié)束*/</p><p><b> }&
39、lt;/b></p><p> return i; /*返回i值*/</p><p><b> }</b></p><p> 這個(gè)函數(shù)表示的是調(diào)用的函數(shù)“查找”。按姓名方式查找某個(gè)人是否在通信錄里的成員。在search中調(diào)用了兩個(gè)函數(shù),分別是顯示函數(shù)和查找函數(shù),在查找函數(shù)中試應(yīng)用比較函數(shù),比較要查找的姓名和通信錄里面的姓名是否相等
40、。如果相等則顯示該成員信息,否則顯示沒有找到。</p><p><b> 函數(shù)“刪除”</b></p><p> int delete(ADDRESS t[],int n)</p><p><b> {</b></p><p> char s[20]; /*要?jiǎng)h除記錄的姓名*/</p
41、><p><b> int ch=0;</b></p><p><b> int i,j;</b></p><p> printf("please deleted name\n"); /*提示信息*/</p><p> scanf("%s",s);/*輸入
42、姓名*/</p><p> i=find(t,n,s); /*調(diào)用find函數(shù)*/</p><p> if(i>n-1) /*如果i>n-1超過了數(shù)組的長(zhǎng)度*/</p><p> printf("no found not deleted\n"); /*顯示沒找到要?jiǎng)h除的記錄*/</p><p><
43、b> else</b></p><p><b> {</b></p><p> print(t[i]); /*調(diào)用輸出函數(shù)顯示該條記錄信息*/</p><p> printf("Are you sure delete it(1/0)\n"); /*確認(rèn)是否要?jiǎng)h除*/</p><
44、p> scanf("%d",&ch); /*輸入一個(gè)整數(shù)0或1*/</p><p> if(ch==1) /*如果確認(rèn)刪除整數(shù)為1*/</p><p><b> {</b></p><p> for(j=i+1;j<n;j++) /*刪除該記錄,實(shí)際后續(xù)記錄前移*/</p>&
45、lt;p><b> {</b></p><p> strcpy(t[j-1].name,t[j].name); /*將后一條記錄的姓名拷貝到前一條*/</p><p> strcpy(t[j-1].units,t[j].units); /*將后一條記錄的單位拷貝到前一條*/</p><p> strcpy(t[j-1].tele,
46、t[j].tele); /*將后一條記錄的電話拷貝到前一條*/</p><p><b> }</b></p><p> n--; /*記錄數(shù)減1*/</p><p><b> }</b></p><p><b> }</b></p><p>
47、 return n; /*返回記錄數(shù)*/</p><p><b> }</b></p><p> 這個(gè)函數(shù)表示的是調(diào)用的函數(shù)“刪除”。刪除某個(gè)成員的信息。首先是輸入要?jiǎng)h除人的姓名,然后調(diào)用find函數(shù),如果沒找到該成員則顯示沒有找到,如果找到了該成員,程序采用的方法是刪除某位置的記錄,后面的記錄全部都往前一個(gè)位置。</p><p><
48、;b> 函數(shù)“增加”</b></p><p> int add(ADDRESS t[],int n)/*插入函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/</p><p><b> {</b></p><p> ADDRESS temp; /*新插入記錄信息*/</p><p><b> in
49、t i,j;</b></p><p> char s[20]; /*確定插入在哪個(gè)記錄之前*/</p><p> printf("please input record\n");</p><p> printf("************************************************\n&qu
50、ot;);</p><p> printf("name unit telephone\n");</p><p> printf("--------------------------------------------------\n");</p><p&
51、gt; scanf("%s%s%s",temp.name,temp.units,temp.tele); /*輸入插入信息*/</p><p> printf("------------------------------------------------\n");</p><p> printf("please input loca
52、te name \n");</p><p> scanf("%s",s); /*輸入插入位置的姓名*/</p><p> i=find(t,n,s); /*調(diào)用find,確定插入位置*/</p><p> for(j=n-1;j>=i;j--) /*從最后一個(gè)結(jié)點(diǎn)開始向后移動(dòng)一條*/</p><p&
53、gt;<b> {</b></p><p> strcpy(t[j+1].name,t[j].name); /*當(dāng)前記錄的姓名拷貝到后一條*/</p><p> strcpy(t[j+1].units,t[j].units); /*當(dāng)前記錄的單位拷貝到后一條*/</p><p> strcpy(t[j+1].tele,t[j].tele
54、); /*當(dāng)前記錄的電話拷貝到后一條*/</p><p><b> }</b></p><p> strcpy(t[i].name,temp.name); /*將新插入記錄的姓名拷貝到第i個(gè)位置*/</p><p> strcpy(t[i].units,temp.units); /*將新插入記錄的單位拷貝到第i個(gè)位置*/</p>
55、;<p> strcpy(t[i].tele,temp.tele); /*將新插入記錄的電話拷貝到第i個(gè)位置*/</p><p> n++; /*記錄數(shù)加1*/</p><p> return n; /*返回記錄數(shù)*/</p><p><b> }</b></p><p> 這個(gè)函數(shù)表示的是調(diào)
56、用的函數(shù)“增加”。輸入要增加的成員的信息,然后系統(tǒng)提示把新增的成員放通信錄里的成員位置之前。調(diào)用find函數(shù),找到位置,然后該位置開始所有的成員往后移一個(gè)位置。再將那個(gè)新紀(jì)錄放在該位置上。</p><p><b> 函數(shù)“保存”</b></p><p> void save(ADDRESS t[],int n)</p><p><b&
57、gt; {</b></p><p><b> int i;</b></p><p> FILE *fp; /*指向文件的指針*/</p><p> if((fp=fopen("record.txt","wb"))==NULL) /*打開文件,并判斷打開是否正常*/</p>
58、;<p><b> {</b></p><p> printf("can not open file\n");/*沒打開*/</p><p> exit(1); /*退出*/</p><p><b> }</b></p><p> printf(&quo
59、t;\nSaving file\n"); /*輸出提示信息*/</p><p> fprintf(fp,"%d",n); /*將記錄數(shù)寫入文件*/</p><p> fprintf(fp,"\r\n"); /*將換行符號(hào)寫入文件*/</p><p> for(i=0;i<n;i++)</p>
60、;<p><b> {</b></p><p> fprintf(fp,"%-20s%-30s%-10s",t[i].name,t[i].units,t[i].tele);/*格式寫入記錄*/</p><p> fprintf(fp,"\r\n"); /*將換行符號(hào)寫入文件*/</p><
61、p><b> }</b></p><p> fclose(fp);/*關(guān)閉文件*/</p><p> printf("****save success***\n"); /*顯示保存成功*/</p><p><b> }</b></p><p> 這個(gè)函數(shù)表示的是調(diào)
62、用的函數(shù)“保存”。打開文件,將信息存入文件中。</p><p> 4.3 具體代碼實(shí)現(xiàn)</p><p> /******頭文件(.h)***********/</p><p> #include "stdio.h" /*I/O函數(shù)*/</p><p> #include "stdlib.h"
63、 /*標(biāo)準(zhǔn)庫(kù)函數(shù)*/</p><p> #include "string.h"/*字符串函數(shù)*/</p><p> #include "ctype.h" /*字符操作函數(shù)*/</p><p> #define M 50 /*定義常數(shù)表示記錄數(shù)*/</p><p> typedef struct
64、 /*定義數(shù)據(jù)結(jié)構(gòu)*/</p><p><b> {</b></p><p> char name[20]; /*姓名*/</p><p> char units[30]; /*單位*/</p><p> char tele[10]; /*電話*/</p><p><b>
65、 }ADDRESS;</b></p><p> /******以下是函數(shù)原型*******/</p><p> int enter(ADDRESS t[]); /*輸入記錄*/</p><p> void list(ADDRESS t[],int n); /*顯示記錄*/</p><p> void search(ADDR
66、ESS t[],int n); /*按姓名查找顯示記錄*/</p><p> int delete(ADDRESS t[],int n); /*刪除記錄*/</p><p> int add(ADDRESS t[],int n); /*插入記錄*/</p><p> void save(ADDRESS t[],int n); /*記錄保存為文件*/</
67、p><p> void print(ADDRESS temp); /*顯示單條記錄*/</p><p> int menu_select(); /*主菜單函數(shù)*/</p><p> /******主函數(shù)開始*******/</p><p><b> main()</b></p><p>&l
68、t;b> {</b></p><p><b> int i;</b></p><p> ADDRESS adr[M]; /*定義結(jié)構(gòu)體數(shù)組*/</p><p> int length; /*保存記錄長(zhǎng)度*/</p><p> clrscr(); /*清屏*/</p><
69、;p> for(;;)/*無限循環(huán)*/</p><p><b> {</b></p><p> switch(menu_select()) /*調(diào)用主菜單函數(shù),返回值整數(shù)作開關(guān)語句的條件*/</p><p><b> {</b></p><p> case 0:length=en
70、ter(adr);break;/*輸入記錄*/</p><p> case 1:list(adr,length);break; /*顯示全部記錄*/</p><p> case 2:search(adr,length);break; /*查找記錄*/</p><p> case 3:length=delete(adr,length);break; /*刪除記錄
71、*/</p><p> case 4:length=add(adr,length); break; /*插入記錄*/</p><p> case 5:save(adr,length);break; /*保存文件*/</p><p> case 6:exit(0); /*如返回值為6則程序結(jié)束*/</p><p><b>
72、 }</b></p><p><b> }</b></p><p><b> }</b></p><p> /*菜單函數(shù),函數(shù)返回值為整數(shù),代表所選的菜單項(xiàng)*/</p><p> menu_select()</p><p><b> {<
73、;/b></p><p> char s[80];</p><p><b> int c;</b></p><p> gotoxy(1,25);/*將光標(biāo)定為在第25行,第1列*/</p><p> printf("press any key enter menu......\n");/
74、*提示壓任意鍵繼續(xù)*/</p><p> getch(); /*讀入任意字符*/</p><p> clrscr(); /*清屏*/</p><p> gotoxy(1,1);</p><p> printf("********************MENU*********************\n\n");
75、</p><p> printf(" 0. Enter record\n");</p><p> printf(" 1. List the file\n");</p><p> printf(" 2. Search record on name\n");</p><p>
76、 printf(" 3. Delete a record\n");</p><p> printf(" 4. add record \n");</p><p> printf(" 5. Save the file\n");</p><p> printf(" 6. Quit\n&q
77、uot;);</p><p> printf("***********************************************\n");</p><p><b> do{</b></p><p> printf("\n Enter you choice(0~6):"); /*提示輸
78、入選項(xiàng)*/</p><p> scanf("%s",s); /*輸入選擇項(xiàng)*/</p><p> c=atoi(s); /*將輸入的字符串轉(zhuǎn)化為整型數(shù)*/</p><p> }while(c<0||c>6); /*選擇項(xiàng)不在0~6之間重輸*/</p><p> return c; /*返回選擇項(xiàng),主程序
79、根據(jù)該數(shù)調(diào)用相應(yīng)的函數(shù)*/</p><p><b> }</b></p><p> /***輸入記錄,形參為結(jié)構(gòu)體數(shù)組,函數(shù)值返回類型為整型表示記錄長(zhǎng)度*/</p><p> int enter(ADDRESS t[])</p><p><b> {</b></p><
80、p><b> int i,n;</b></p><p><b> char *s;</b></p><p> clrscr(); /*清屏*/</p><p> printf("\nplease input num \n"); /*提示信息*/</p><p>
81、scanf("%d",&n); /*輸入記錄數(shù)*/</p><p> printf("please input record \n"); /*提示輸入記錄*/</p><p> printf("name unit telephone\n");</p&
82、gt;<p> printf("------------------------------------------------\n");</p><p> for(i=0;i<n;i++)</p><p><b> {</b></p><p> scanf("%s%s%s",
83、t[i].name,t[i].units,t[i].tele); /*輸入記錄*/</p><p> printf("----------------------------------------------\n");</p><p><b> }</b></p><p> return n; /*返回記錄條數(shù)*
84、/</p><p><b> }</b></p><p> /*顯示記錄,參數(shù)為記錄數(shù)組和記錄條數(shù)*/</p><p> void list(ADDRESS t[],int n)</p><p><b> {</b></p><p><b> int i;
85、</b></p><p><b> clrscr();</b></p><p> printf("\n\n*******************ADDRESS******************\n");</p><p> printf("name unit
86、 telephone\n");</p><p> printf("------------------------------------------------\n");</p><p> for(i=0;i<n;i++)</p><p> printf("%-20s%-30s%-10
87、s\n",t[i].name,t[i].units,t[i].tele);</p><p> if((i+1)%10==0) /*判斷輸出是否達(dá)到10條記錄*/</p><p><b> {</b></p><p> printf("Press any key continue...\n"); /*提示信
88、息*/</p><p> getch(); /*按任意鍵繼續(xù)*/</p><p><b> }</b></p><p> printf("************************end*******************\n");</p><p><b> }</b
89、></p><p><b> /*查找記錄*/</b></p><p> void search(ADDRESS t[],int n)</p><p><b> {</b></p><p> char s[20]; /*保存待查找姓名字符串*/</p><p&g
90、t; int i; /*保存查找到結(jié)點(diǎn)的序號(hào)*/</p><p> clrscr(); /*清屏*/</p><p> printf("please search name\n");</p><p> scanf("%s",s); /*輸入待查找姓名*/</p><p> i=find
91、(t,n,s); /*調(diào)用find函數(shù),得到一個(gè)整數(shù)*/</p><p> if(i>n-1) /*如果整數(shù)i值大于n-1,說明沒找到*/</p><p> printf("not found\n");</p><p><b> else</b></p><p> print(t[i]
92、); /*找到,調(diào)用顯示函數(shù)顯示記錄*/</p><p><b> }</b></p><p> /*顯示指定的一條記錄*/</p><p> void print(ADDRESS temp)</p><p><b> {</b></p><p><b>
93、 clrscr();</b></p><p> printf("\n\n********************************************\n");</p><p> printf("name unit telephone\n");<
94、/p><p> printf("------------------------------------------------\n");</p><p> printf("%-20s%-30s%-10s\n",temp.name,temp.units,temp.tele);</p><p> printf("**
95、********************end***********************\n");</p><p><b> }</b></p><p> /*查找函數(shù),參數(shù)為記錄數(shù)組和記錄條數(shù)以及姓名s */</p><p> int find(ADDRESS t[],int n,char *s)</p>&
96、lt;p><b> {</b></p><p><b> int i;</b></p><p> for(i=0;i<n;i++)/*從第一條記錄開始,直到最后一條*/</p><p><b> {</b></p><p> if(strcmp(s,t[i
97、].name)==0) /*記錄中的姓名和待比較的姓名是否相等*/</p><p> return i; /*相等,則返回該記錄的下標(biāo)號(hào),程序提前結(jié)結(jié)束*/</p><p><b> }</b></p><p> return i; /*返回i值*/</p><p><b> }</b&g
98、t;</p><p> /*刪除函數(shù),參數(shù)為記錄數(shù)組和記錄條數(shù)*/</p><p> int delete(ADDRESS t[],int n)</p><p><b> {</b></p><p> char s[20]; /*要?jiǎng)h除記錄的姓名*/</p><p><b>
99、 int ch=0;</b></p><p><b> int i,j;</b></p><p> printf("please deleted name\n"); /*提示信息*/</p><p> scanf("%s",s);/*輸入姓名*/</p><p>
100、 i=find(t,n,s); /*調(diào)用find函數(shù)*/</p><p> if(i>n-1) /*如果i>n-1超過了數(shù)組的長(zhǎng)度*/</p><p> printf("no found not deleted\n"); /*顯示沒找到要?jiǎng)h除的記錄*/</p><p><b> else</b><
101、/p><p><b> {</b></p><p> print(t[i]); /*調(diào)用輸出函數(shù)顯示該條記錄信息*/</p><p> printf("Are you sure delete it(1/0)\n"); /*確認(rèn)是否要?jiǎng)h除*/</p><p> scanf("%d&quo
102、t;,&ch); /*輸入一個(gè)整數(shù)0或1*/</p><p> if(ch==1) /*如果確認(rèn)刪除整數(shù)為1*/</p><p><b> {</b></p><p> for(j=i+1;j<n;j++) /*刪除該記錄,實(shí)際后續(xù)記錄前移*/</p><p><b> {</
103、b></p><p> strcpy(t[j-1].name,t[j].name); /*將后一條記錄的姓名拷貝到前一條*/</p><p> strcpy(t[j-1].units,t[j].units); /*將后一條記錄的單位拷貝到前一條*/</p><p> strcpy(t[j-1].tele,t[j].tele); /*將后一條記錄的電話拷貝
104、到前一條*/</p><p><b> }</b></p><p> n--; /*記錄數(shù)減1*/</p><p><b> }</b></p><p><b> }</b></p><p> return n; /*返回記錄數(shù)*/<
105、/p><p><b> }</b></p><p> /*插入記錄函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/</p><p> int add(ADDRESS t[],int n)/*插入函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/</p><p><b> {</b></p><p>
106、 ADDRESS temp; /*新插入記錄信息*/</p><p><b> int i,j;</b></p><p> char s[20]; /*確定插入在哪個(gè)記錄之前*/</p><p> printf("please input record\n");</p><p> print
107、f("************************************************\n");</p><p> printf("name unit telephone\n");</p><p> printf("-----------------
108、---------------------------------\n");</p><p> scanf("%s%s%s",temp.name,temp.units,temp.tele); /*輸入插入信息*/</p><p> printf("------------------------------------------------\n
109、");</p><p> printf("please input locate name \n");</p><p> scanf("%s",s); /*輸入插入位置的姓名*/</p><p> i=find(t,n,s); /*調(diào)用find,確定插入位置*/</p><p> f
110、or(j=n-1;j>=i;j--) /*從最后一個(gè)結(jié)點(diǎn)開始向后移動(dòng)一條*/</p><p><b> {</b></p><p> strcpy(t[j+1].name,t[j].name); /*當(dāng)前記錄的姓名拷貝到后一條*/</p><p> strcpy(t[j+1].units,t[j].units); /*當(dāng)前記錄的
111、單位拷貝到后一條*/</p><p> strcpy(t[j+1].tele,t[j].tele); /*當(dāng)前記錄的電話拷貝到后一條*/</p><p><b> }</b></p><p> strcpy(t[i].name,temp.name); /*將新插入記錄的姓名拷貝到第i個(gè)位置*/</p><p>
112、strcpy(t[i].units,temp.units); /*將新插入記錄的單位拷貝到第i個(gè)位置*/</p><p> strcpy(t[i].tele,temp.tele); /*將新插入記錄的電話拷貝到第i個(gè)位置*/</p><p> n++; /*記錄數(shù)加1*/</p><p> return n; /*返回記錄數(shù)*/</p>&l
113、t;p><b> }</b></p><p> /*保存函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/</p><p> void save(ADDRESS t[],int n)</p><p><b> {</b></p><p><b> int i;</b></
114、p><p> FILE *fp; /*指向文件的指針*/</p><p> if((fp=fopen("record.txt","wb"))==NULL) /*打開文件,并判斷打開是否正常*/</p><p><b> {</b></p><p> printf("
115、;can not open file\n");/*沒打開*/</p><p> exit(1); /*退出*/</p><p><b> }</b></p><p> printf("\nSaving file\n"); /*輸出提示信息*/</p><p> fprintf(fp
116、,"%d",n); /*將記錄數(shù)寫入文件*/</p><p> fprintf(fp,"\r\n"); /*將換行符號(hào)寫入文件*/</p><p> for(i=0;i<n;i++)</p><p><b> {</b></p><p> fprintf(fp,&
117、quot;%-20s%-30s%-10s",t[i].name,t[i].units,t[i].tele);/*格式寫入記錄*/</p><p> fprintf(fp,"\r\n"); /*將換行符號(hào)寫入文件*/</p><p><b> }</b></p><p> fclose(fp);/*關(guān)閉文件*/
118、</p><p> printf("****save success***\n"); /*顯示保存成功*/</p><p><b> }</b></p><p> 課程設(shè)計(jì)的總結(jié)與體會(huì)</p><p> 通過這次課程設(shè)計(jì)使我充分掌握了本學(xué)期所學(xué)的有關(guān)C語言編程的相關(guān)知識(shí),知道了該如何運(yùn)用所學(xué)知
119、識(shí)來為自己服務(wù)。掌握了把各種編程的技巧糅合在一起的方法。班費(fèi)管理系統(tǒng)的實(shí)現(xiàn)過程,使自己充分的認(rèn)識(shí)到了自己的一些不足之處,并且使自己完善了自己的編程能力。通過自己動(dòng)手編寫的程序,使自己的所立下目的達(dá)到,我感到非常有成就感,也鍛煉了我的編程能力。在剛開始編程的時(shí)候,錯(cuò)誤百出,不知道怎么樣改正,但是通過自己的仔細(xì)的分析和老師的細(xì)心的指導(dǎo),在認(rèn)真分析了原程序后,終于認(rèn)識(shí)并理解了自己錯(cuò)誤的地方,使自己加以改正,汲取教訓(xùn)。為以后知識(shí)水平的提高,做了
120、最好的準(zhǔn)備。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]李麗娟,牛莉。C語言程序設(shè)計(jì) 第1版.中國(guó)鐵道出版社.2006年7月.</p><p> [2]李麗娟,馬淑萍。C語言程序設(shè)計(jì)實(shí)驗(yàn)教程。2006年8月,第一版。</p><p><b> 致 謝</b><
121、;/p><p> 在此我非常要感謝的是我們的指導(dǎo)老師zz老師,同時(shí)也要感謝我們的zz老師平時(shí)上課的教導(dǎo),和編程時(shí)細(xì)心認(rèn)真的輔導(dǎo),教給我許多知識(shí)。這次課程設(shè)計(jì)能夠順利的完成,當(dāng)然有我個(gè)人的努力,但同時(shí)更離不開指導(dǎo)老師的答疑解惑。</p><p><b> 附件2</b></p><p> 課程設(shè)計(jì)(論文)任務(wù)書</p><p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計(jì)--學(xué)生通信錄設(shè)計(jì)
- c課程設(shè)計(jì)---通信錄管理系統(tǒng)
- c++課程設(shè)計(jì)--通信錄管理程序
- 課程設(shè)計(jì)--通信錄管理系統(tǒng)設(shè)計(jì)
- 手機(jī)通信錄管理系統(tǒng)課程設(shè)計(jì)
- 個(gè)人通信錄管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)--手機(jī)通信錄管理系統(tǒng)
- 課程設(shè)計(jì)論文---基于c++ 的通信錄管理系統(tǒng)
- 【課程設(shè)計(jì)論文】基于c++ 的通信錄管理系統(tǒng)
- 手機(jī)通信錄管理系統(tǒng)課程設(shè)計(jì)2
- 班級(jí)通信錄管理系統(tǒng)(匯編課程設(shè)計(jì))
- c++通信錄設(shè)計(jì)
- c++課程設(shè)計(jì)(凌世林組)通信錄管理程序
- 通信工程c語言課程設(shè)計(jì)
- 班級(jí)通信錄管理系統(tǒng)的方案與實(shí)現(xiàn)匯編語言課程實(shí)習(xí)報(bào)告
- c語言課程設(shè)計(jì)-車輛管理
- 【課程設(shè)計(jì)】c語言課程設(shè)計(jì)
- 個(gè)性通信錄畢業(yè)論文
- c語言課程設(shè)計(jì)
- c語言課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論