C語言課程設(shè)計(jì)報(bào)告-c語言課程設(shè)計(jì)
《C語言課程設(shè)計(jì)報(bào)告-c語言課程設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《C語言課程設(shè)計(jì)報(bào)告-c語言課程設(shè)計(jì)(10頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 C語言課程設(shè)計(jì)論文 學(xué)生姓名: 陳丹 學(xué)生學(xué)號(hào): 20091020101 所在班級(jí): 信息與計(jì)算科學(xué)一班 任課教師: 馬老師 通訊錄管理系統(tǒng) 【設(shè)計(jì)目的】 設(shè)計(jì)“通訊錄管理系統(tǒng)”使其具有數(shù)據(jù)插入、修改、刪除、顯示和查詢等功能。 (1) 數(shù)據(jù)包括:人名、工作單位、電話號(hào)碼和E-mail地址。 (2) 可對(duì)記錄中的姓名和電話號(hào)碼進(jìn)行修改。 (3) 可增加或刪除記錄。 (4) 可顯示所有保存的記錄。
2、 (5) 可按人名或電話號(hào)碼進(jìn)行查詢。 【設(shè)計(jì)思路】 根據(jù)要求,電話簿數(shù)據(jù)以文本文件存放在文件中,故需要提供文件的輸入、輸出等操作;還需要保存記錄以進(jìn)行修改,刪除,查找等操作;另外還應(yīng)提供鍵盤式選擇菜單實(shí)現(xiàn)功能選擇。 【總體設(shè)計(jì)】 通訊錄管理系統(tǒng) 數(shù)據(jù)輸入 數(shù)據(jù)修改 刪除 數(shù)據(jù)添加 查找 瀏覽 圖1 系統(tǒng)功能模塊圖 【詳細(xì)設(shè)計(jì)】 1. 主函數(shù) 主函數(shù)設(shè)計(jì)要求簡(jiǎn)潔,只提供部分提示語和函數(shù)的調(diào)用 【程序】 顯示一系列功能選項(xiàng) 輸入n,判斷n是否是1~7 ? 根據(jù)n的值調(diào)用各功能模塊函數(shù) 結(jié)束 開始 n
3、 圖2. 主函數(shù)流程圖 Void menu() /*主界面*/ { int n, w1; void enter(); void add(); void modify(); void browse(); void deleter(); void search(); do { puts("\t******************************菜單*****************************\t\n\n"); puts("\t\t\t\
4、t1.新建聯(lián)系人"); puts("\t\t\t\t2.添加聯(lián)系人"); puts("\t\t\t\t3.修改"); puts("\t\t\t\t4.刪除"); puts("\t\t\t\t5.瀏覽"); puts("\t\t\t\t6.查找"); puts("\t\t\t\t7.退出"); puts("\n\n\t***************************通訊錄******************************\t\n"); printf("請(qǐng)選擇服務(wù)種類(1-7) : [ ]\b\b"); scanf("%d",&
5、n);
if(n<1||n>7)
{w1=1;getchar();}
else w1=0;
}while(w1==1);
switch(n)
{
case 1: enter(); break; /*輸入模塊*/
case 2: add(); break; /*添加模塊*/
附錄:源代碼
#define N 50
#include
6、har num[15]; char mail[20];}peop[N];
void printf_face()
{ printf("\n\t姓名\t單位\t電話號(hào)碼\t郵箱\n"); }
void printf_one(int i)
{ printf("\t%s\t%s\t%s\t%s\n",peop[i].name,peop[i].company,peop[i].num,peop[i].mail); }
void printf_n(int n)
{ int j;
for(j=0;j 7、f("\n\nPress any key to continue...:"); getchar(); puts("\n\n");}
printf_one(j);
} getchar();
}
int load()
{ FILE *fp;
int i;
if((fp=fopen("file","rb"))==NULL)
{ printf("\nCan not open file\n");
exit(0);
}
for(i=0;!feof(fp);i++)
fread(&peop[i],sizeof(struct people),1, 8、fp);
fclose(fp);
return(i-1);
}
int modify_data(int i,int n)
{ int c,w1; void input(int i); void menu();
do
{ puts("\n修改選項(xiàng)=>\n\n 1).姓名 2).單位 3).電話號(hào)碼 4).郵箱 5).所有數(shù)據(jù) 6).取消并返回");
printf("請(qǐng)選擇?: [ ]\b\b");
scanf("%d",&c);
if(c>6||c<1) {pu 9、ts("\nChoose error! Please again!"); getchar();}
}while(c>6||c<1);
do
{ switch(c)
{ case 1: printf("name:"); scanf("%s",peop[i].name); break;
case 2: printf("company:"); scanf("%s",peop[i].company); break;
case 3: printf("number:"); scanf("%s",peop[i].num); break;
10、case 4: printf("e-mail:"); scanf("%s",peop[i].mail); break;
case 5: input(i); break;
case 6: menu();
}
puts("\nNow:\n");
printf_face(); printf_one(i);
printf("\n確定?\n\n\t1).是 2).不,重新修改 3).返回不保存 [ ]\b\b");
scanf("%d",&w1);
}while(w1==2);
return(w1);
}
11、
void input(int i)
{ printf_face(); printf("\t");
scanf("%s\t%s\t%s\t%s",peop[i].name,peop[i].company,peop[i].num,peop[i].mail); }
void save(int n)
{ FILE *fp; int i;
if((fp=fopen("file","wb"))==NULL)
{ printf("\nCan not open file\n");
exit(0);
}
for(i=0;i 12、[i].name[0]!=\0)
if(fwrite(&peop[i],sizeof(struct people),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
void printf_back()
{
int w; void browse(); void menu();
printf("\n\n\t^_^.Successful. ^_^\n\n");
printf("What do you want to do?\n\n\t1).瀏覽所有\(zhòng)t2).返回: [ ]\b\b");
sc 13、anf("%d",&w);
if(w==1) 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************************菜單************************ ") 14、;
puts("\t\t*******************1.新建聯(lián)系人*******************");
puts("\t\t*******************2.添加聯(lián)系人*******************");
puts("\t\t*******************3.修 改*******************");
puts("\t\t*******************4.刪 除*******************");
puts("\t\t*******************5.瀏 覽** 15、*****************");
puts("\t\t*******************6.查 找*******************");
puts("\t\t*******************7.退 出*******************");
puts("\n\n\t********************通訊錄********************* ");
printf("請(qǐng)選擇服務(wù)種類(1-7) : [ ]\b\b");
scanf("%d",&n);
if(n<1||n>7)
{w1=1;getc 16、har();}
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 i,n;
printf("How many 17、 people(0-%d)?:",N-1);
scanf("%d",&n);
printf("請(qǐng)輸入數(shù)據(jù):\n");
for(i=0;i 18、d",&t); k=n+t;
for(i=n;i 19、ify!\nName:");
scanf("%s",s.name);
for(i=0;i 20、n\n是否繼續(xù)?\n\n\t1).是 2).保存返回\t[ ]\b\b");
scanf("%d",&w0); w2=1;}
else
{w0=0; if(w2==0) peop[k]=s;}
if((w0!=1)&&(w2==1)) save(n);
}while(w0==1); menu();
}
void browse()
{ int n;
n=load();
printf_face(); printf_n(n);
printf("\t共有 %d 記錄.\n",n);
21、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)選擇查找類別: 1).姓名 2).電話號(hào)碼 [ ]\b\b");
scanf("%d",&w1); if(w1<1||w1>2) {printf("輸入錯(cuò)誤!請(qǐng)重新輸入!\n"); w2=1;}
}while(w2==1);
if(w1==1)
{do
22、{ k=-1;
do
{ printf("\n\nEnter name that tou want to search!\nName:");
scanf("%s",s.name);
for(i=0;i 23、tf("\nWhat do you want to do?\n\t1).繼續(xù) 2).返回菜單 [ ]\b\b");
scanf("%d",&w0);
}while(w0==1);
menu();
}
else
{ do
{ k=-1;
do
{ printf("\n\nEnter number that tou want to search!\nNum:");
scanf("%s",s.num);
for(i=0;i 24、num)==0) {k=i; s=peop[i];}
if(k==-1) printf("\n\n沒有記錄請(qǐng)重新輸入!");
}while(k==-1);
printf_face(); printf_one(k);
printf("\nWhat do you want to do?\n\t1).繼續(xù) 2).返回菜單 [ ]\b\b");
scanf("%d",&w0);
}while(w0==1);
menu();
}
}
void deleter()
{struct people s; int i 25、,n,k,w0,w1;
n=load();
do
{ k=-1; printf_face(); printf_n(n);
do
{ printf("\n\nEnter name that you want to delete!\nName:");
scanf("%s",s.name);
for(i=0;i 26、 }while(k==-1);
printf_face(); printf_one(k);
printf("\n確定?\n\t1).是 2).返回 [ ]\b\b");
scanf("%d",&w0);
if(w0==1) {peop[k].name[0]=\0; save(n);} else break;
printf("\n\t^_^.Successful^_^.\n");
printf("What do you want to do?\n\t1).繼續(xù) 2).返回 [ ]\b\b");
scanf("%d",&w1);
27、
}while(w1==1);
menu();
}
【設(shè)計(jì)體會(huì)】
通過為期一周的課程設(shè)計(jì),我們對(duì)《C語言》這門課程有了更深一步的了解。它是計(jì)算機(jī)程序設(shè)計(jì)的重要理論技術(shù)基礎(chǔ),在我們信息與計(jì)算科學(xué)專業(yè)的學(xué)習(xí)中占據(jù)著十分重要的地位。同時(shí)也使我們知道,要學(xué)好這門課程,僅學(xué)習(xí)書本上的知識(shí)是不夠的,還要有較強(qiáng)的實(shí)踐能力。因?yàn)槲覀儗W(xué)習(xí)知識(shí)就是為了實(shí)踐。而只有多實(shí)踐,多編寫程序,才能更好的理解與掌握書本上的東西。
運(yùn)用《C語言》中的算法思想作數(shù)據(jù)結(jié)構(gòu),結(jié)合C語言基本知識(shí),編寫一個(gè)通訊錄管理系統(tǒng)。通過完成本課題,進(jìn)一步熟悉C語言的基本知識(shí),并掌握數(shù)據(jù)結(jié)構(gòu)的一些基本算法思想,掌握C語 28、言的文件操作(包括從磁盤讀入和向磁盤寫入內(nèi)容),進(jìn)一步熟悉指針的用法,數(shù)組的建立運(yùn)用和函數(shù)的調(diào)用等。
【參考文獻(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é)出版社, 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語言版)[M]. 北京:清華大學(xué)出版社, 2007.4: 39-43
傅清祥,王曉東. 數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)[M]. 北京: 電子工業(yè)出版社, 2006.3: 31-46
王敬華,林萍,.陳靜. C語言程序設(shè)計(jì)[M]. 北京: 清華大學(xué)出版社, 2007.10: 22-39
李云清,楊慶紅,揭安全.數(shù)據(jù)結(jié)構(gòu)(C語言版)[M]. 北京:人民郵電出版社,2006.1: 44-67
[10]李春葆. 數(shù)據(jù)結(jié)構(gòu)(C語言版)習(xí)題與解析[M].北京:清華大學(xué)出版社, 2006.1: 47-55
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)2圖形與幾何第7課時(shí)圖形的位置練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)2圖形與幾何第1課時(shí)圖形的認(rèn)識(shí)與測(cè)量1平面圖形的認(rèn)識(shí)練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)1數(shù)與代數(shù)第10課時(shí)比和比例2作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)4比例1比例的意義和基本性質(zhì)第3課時(shí)解比例練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)3圓柱與圓錐1圓柱第7課時(shí)圓柱的體積3作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)3圓柱與圓錐1圓柱第1節(jié)圓柱的認(rèn)識(shí)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)2百分?jǐn)?shù)(二)第1節(jié)折扣和成數(shù)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)1負(fù)數(shù)第1課時(shí)負(fù)數(shù)的初步認(rèn)識(shí)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)期末復(fù)習(xí)考前模擬期末模擬訓(xùn)練二作業(yè)課件蘇教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)期末豐收?qǐng)@作業(yè)課件蘇教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)易錯(cuò)清單十二課件新人教版
- 標(biāo)準(zhǔn)工時(shí)講義
- 2021年一年級(jí)語文上冊(cè)第六單元知識(shí)要點(diǎn)習(xí)題課件新人教版
- 2022春一年級(jí)語文下冊(cè)課文5識(shí)字測(cè)評(píng)習(xí)題課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)4數(shù)學(xué)思考第1課時(shí)數(shù)學(xué)思考1練習(xí)課件新人教版