C語言高級程序設(shè)計 實訓(xùn)報告及詳細(xì)程序_第1頁
C語言高級程序設(shè)計 實訓(xùn)報告及詳細(xì)程序_第2頁
C語言高級程序設(shè)計 實訓(xùn)報告及詳細(xì)程序_第3頁
C語言高級程序設(shè)計 實訓(xùn)報告及詳細(xì)程序_第4頁
C語言高級程序設(shè)計 實訓(xùn)報告及詳細(xì)程序_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

高級程序設(shè)計實訓(xùn)報告廣西科技大學(xué)計算機學(xué)院2011年12月《高級程序設(shè)計》課程實訓(xùn)報告題目:通訊錄管理完成人:黃專業(yè)班級:計Y113學(xué)號:指導(dǎo)教師:王日鳳2012年1月5廣西科技大學(xué)計算機學(xué)院1題目與要求1.1問題提出本人計劃編寫一個通訊錄管理系統(tǒng),主要用來管理聯(lián)系人得基本信息1.2本系統(tǒng)涉及的知識點結(jié)構(gòu)、數(shù)組、循環(huán)、函數(shù)、分支、指針1.3功能要求能輸入(從鍵盤)通訊錄的信息(增加,輸入時需要能檢查該姓名的通訊錄的記錄是否已經(jīng)存在,如果存在,需要詢問是否是覆蓋還是增加,需要判斷輸入的類型是否存在)能增加通訊錄信息;能查詢(按姓名或者分類)通訊錄的信息能修改通訊錄信息;能刪除指定姓名的記錄信息能批量輸出通訊錄信息:寫入指定的文件中。能批量輸入通訊錄信息:從指定的文件中讀入。2功能設(shè)計2.1算法設(shè)計本系統(tǒng)需要實現(xiàn)的功能要求(1)利用switch語句設(shè)計如圖1所示的主菜單:圖1通訊錄管理系統(tǒng)主菜單(2)選擇2后,調(diào)用查詢函數(shù),進(jìn)入函數(shù)后利用if-elseif語句實現(xiàn)一個如圖2所示的菜單。圖23、根據(jù)所選菜單編寫相應(yīng)代碼:1)通訊錄信息輸入函數(shù)shuru():利用循環(huán)輸入的方式,將有關(guān)信息存入結(jié)構(gòu)數(shù)組,結(jié)構(gòu)數(shù)組根據(jù)實際的人數(shù),采用動態(tài)方式建立……2)通訊錄記錄查詢函數(shù)chaxun():查詢某人的信息,按照姓名、手機或者QQ查找,如果找到了,則顯示該人的息,如果未找到,則提示通訊錄中沒有此人的信息,并返回選單。3)修改通訊錄信息函數(shù)xiugai():修改某人的信息,按照姓名或者QQ查找修改,如果未找到要修改的人,則提示通訊錄中沒有此人的信息,并返回選單。4)顯示通訊錄信息函數(shù)xianshi():顯示通訊錄中的所有記錄。5)通訊錄記錄刪除函數(shù)shanchu():刪除某人的信息,按照姓名或者QQ查找,如果未找到要刪除的人,則提示通訊錄中沒有此人的信息,并返回選單。6)導(dǎo)出通訊錄文件函數(shù)daochu():能將通訊錄的信息寫入指定的文件中。7)導(dǎo)入通訊錄文件函數(shù)daoru():能從指定的文件中讀入通訊錄的信息。8)退出通訊錄程序:結(jié)束循環(huán)退出通訊錄。主函數(shù)主函數(shù)菜單輸入查詢修改顯示刪除導(dǎo)出導(dǎo)入按姓名按手機按QQ按姓名按QQ按姓名按QQ2.2部分模塊流程圖開始開始i=0i=0輸入信息輸入信息if(strcmp(info[i].name,info[j].name)==0)if(strcmp(info[i].name,info[j].name)==0)strcpy(info[j].name,info[i].name);strcpy(info[j].tele,info[i].tele);strcpy(info[j].name,info[i].name);strcpy(info[j].tele,info[i].tele);strcpy(info[j].qq,info[i].qq);strcpy(info[j].note,info[i].note);假輸出信息輸出信息結(jié)束圖1.輸入函數(shù)流程圖結(jié)束輸入ask輸入askif=()開始if=()開始輸入姓名或者QQ輸入姓名或者QQfor(l=k;l<i;l++)for(l=k;l<i;l++) info[l]=info[l+1];結(jié)束結(jié)束3程序代碼設(shè)計(左對齊,宋體粗四號)內(nèi)容:分模塊(函數(shù))簡述其功能;模塊中使用的各變量的類型及作用,包括聲明數(shù)據(jù)類型(如結(jié)構(gòu)體);設(shè)計過程;并列出該模塊(函數(shù))的代碼。(宋體小四號)。輸入模塊1)函數(shù)原形:voidcaidan()2)功能:利用while循環(huán)語句和printf、gets、getchar、swtich函數(shù)完成對菜單的顯示。3)變量及類型:charchoice:輸入字符變量。4)說明:菜單函數(shù)會循環(huán)顯示。輸入模塊1)函數(shù)原形:voidshuru()2)功能:利用for循環(huán)語句和gets、getchar、strcpy、if-elseif函數(shù)完成對結(jié)構(gòu)數(shù)組的輸入,存放n個通訊錄信息(姓名、電話、QQ、備注)。3)變量及類型:charask:輸入字符變量來判斷。inti,j:循環(huán)控制變量。4)說明:執(zhí)行完輸入函數(shù)后,會在鍵盤緩沖區(qū)中保存回車鍵,后面再對字符型變量賦值時,會將緩沖區(qū)中的回車鍵當(dāng)成數(shù)據(jù)存入變量中,所以要在某些輸入語句后面加getchar()函數(shù)。(若不需說明部分可省略)輸入模塊1)函數(shù)原形:voidchaxun()2)功能:利用while循環(huán)語句和for、if-elseif、gets、getchar函數(shù)完成對通訊錄信息的查詢。3)變量及類型:charask:輸入字符變量來判斷。inti,k:循環(huán)控制變量。4)說明:執(zhí)行查詢完后返回菜單輸入模塊1)函數(shù)原形:voidxiugai()2)功能:利用while循環(huán)語句和for、if-elseif、gets、getchar、scanf,strcmp函數(shù)完成對通訊錄信息的修改。3)變量及類型:charsure:輸入字符變量來判斷。inti,k:循環(huán)控制變量。charname[10]:接受輸入的數(shù)組。intflag:判斷修改依據(jù)。輸入模塊1)函數(shù)原形:voidxianshi()2)功能:利用for循環(huán)語句完成對結(jié)構(gòu)數(shù)組的顯示,顯示通訊錄的整體信息。3)變量及類型:inti,k:循環(huán)控制變量。輸入模塊1)函數(shù)原形:voidshanchu()2)功能:利用while循環(huán)語句和for、if-elseif、gets、getchar、scanf,strcmp函數(shù)完成對通訊錄信息的刪除。3)變量及類型:charsure:輸入字符變量來判斷。inti,k:循環(huán)控制變量。charname[10],charqq[10]:接受輸入的數(shù)組。intflag:判斷修改依據(jù)。輸入模塊1)函數(shù)原形:voiddaochu()2)功能:利用for循環(huán)語句和if、fclose、fprintf函數(shù)完成對通訊錄信息的導(dǎo)出,導(dǎo)出文件為address.txt3)變量及類型:inti,m:循環(huán)控制變量。輸入模塊1)函數(shù)原形:voiddaoru()2)功能:利用for循環(huán)語句和if、fclose、fprintf函數(shù)完成對通訊錄信息的導(dǎo)入3)變量及類型:inti,m:循環(huán)控制變量。charname[15]tele[15];qq[15]note[15];對導(dǎo)入函數(shù)的接收數(shù)據(jù)4總結(jié)內(nèi)容:程序經(jīng)過4天的調(diào)試終于在放棄文件和指針的操作,終于成型。但過程中也暴露了對這兩個知識不夠熟練!本人在程序設(shè)計中感想,程序應(yīng)該先由簡單易懂的部分入手。不要一開始就嘗試難的方式,比如文件操作。而且比如自加自減的代碼要考慮好應(yīng)該放的位置,不然程序會很難調(diào)試。Getchar()這個函數(shù)有些地方必不可少。不然會照成程序的運行異常。每個函數(shù)的調(diào)用應(yīng)該環(huán)環(huán)相扣,對程序的全局有很大的好處。參考文獻(xiàn)(左對齊,宋體粗四號)內(nèi)容:列出課程實訓(xùn)中所參考的所有書目,格式如下:[1]張磊,C語言程序設(shè)計(第2版),北京:高等教育版社,2009.8[2]張磊,C語言程序設(shè)計實驗與實訓(xùn)指導(dǎo)及題解,北京:高等教育版社,2009.8附錄:程序清單#defineM100#include<stdio.h>#include<stdlib.h>#include<string.h>inti=0;//--------------------------------------------------------------------------------------------1structrecord{ charname[15]; chartele[15]; charqq[15]; charnote[15];}info[M];//--------------------------------------------------------------------------------------------2voidcaidan();voidshuru();voidchaxun();voidxiugai();voidxianshi();voidshanchu();voiddisp_str(char,int);voiddisp_table();voiddaochu();voiddaoru();//--------------------------------------------------------------------------------------------3--主函數(shù)voidmain()//主函數(shù){caidan();}//--------------------------------------------------------------------------------------------4--菜單voidcaidan()//菜單{ charchoice; while(1) { printf("\n\n"); disp_str('',18); printf("通訊錄管理程序\n"); disp_str('*',50); printf("\n"); disp_str('',16); printf("1.通訊錄信息輸入\n"); disp_str('',16); printf("2.通訊錄記錄查詢\n"); disp_str('',16); printf("3.修改通訊錄信息\n"); disp_str('',16); printf("4.顯示通訊錄信息\n"); disp_str('',16); printf("5.通訊錄記錄刪除\n"); disp_str('',16); printf("6.導(dǎo)出通訊錄文件\n"); disp_str('',16); printf("7.導(dǎo)入通訊錄文件\n"); disp_str('',16); printf("8.退出通訊錄程序\n"); disp_str('*',50); printf("\n"); disp_str('',14); printf("請輸入代碼選擇(1~8)"); choice=getchar(); getchar(); switch(choice) { case'1': shuru(); break; case'2': chaxun(); break; case'3': xiugai(); break; case'4': xianshi(); break; case'5': shanchu(); break; case'6': daochu(); break; case'7': daoru(); break; case'8': return; default: continue;//輸入數(shù)字在1~8之外時,繼續(xù)循環(huán)顯示菜單 } }}//--------------------------------------------------------------------------------------------5--菜單空格和*號輸出函數(shù)voiddisp_str(charch,intn)//菜單空格和*號輸出函數(shù){ intj; for(j=1;j<=n;j++) printf("%c",ch); return;}//--------------------------------------------------------------------------------------------6--第一個功能輸入voidshuru()//第一個功能輸入{ charask; while(1) { printf("\n\n"); fflush(stdin); printf("請輸入通訊錄記錄\n"); printf("姓名:"); gets(info[i].name); printf("電話:"); gets(info[i].tele); printf("qq:"); gets(info[i].qq); printf("備注:"); gets(info[i].note); //檢查 intj; for(j=0;j<i;j++) { if(strcmp(info[i].name,info[j].name)==0) { printf("名字相同了,是否覆蓋?(Y或N)"); charch=getchar(); getchar(); if(ch=='Y'||ch=='y') { strcpy(info[j].name,info[i].name); strcpy(info[j].tele,info[i].tele); strcpy(info[j].qq,info[i].qq); strcpy(info[j].note,info[i].note); } i--; } else continue; } i++; printf("輸入后的通訊錄為:\n");xianshi(); printf("\n"); printf("繼續(xù)輸入記錄?(Y/N)"); ask=getchar(); getchar(); if(ask!='y'&&ask!='Y') break;}return;}//--------------------------------------------------------------------------------------------7--第二個功能查詢voidchaxun()//第二個功能查詢{ charask,name[15],qq[15],tele[15]; intk,flag; while(1) { flag=0; disp_str('',19); printf("通訊錄查詢\n"); disp_str('*',50); putchar('\n'); disp_str('',17); printf("1.按姓名查詢\n"); disp_str('',17); printf("2.按QQ查詢\n"); disp_str('',17); printf("3.按手機查詢\n"); disp_str('',17); printf("4.返回上層\n"); disp_str('*',50); putchar('\n'); disp_str('',17); printf("請輸入代碼選擇(1~4)\n"); ask=getchar(); getchar(); if(ask=='1') { printf("請輸入姓名:\n"); gets(name); for(k=0;k<i;k++) if(strcmp(name,info[k].name)==0)//比較函數(shù) { flag=1; printf("\t查找成功!該人記錄如下:\n"); disp_str('*',50); printf("\n"); disp_table(); printf("%-12s%-12s%-12s%-12s\n",info[k].name,info[k].tele,info[k].qq,info[k].note); } if(!flag) printf("沒有找到符合條件的記錄!\n"); printf("請按任意鍵返回···"); printf("\n"); getchar(); } elseif(ask=='2') { printf("請輸入qq:"); gets(qq); for(k=0;k<i;k++) if(strcmp(qq,info[k].qq)==0) { flag=1; printf("\t查找成功!該人記錄如下:\n"); disp_str('*',50); printf("\n"); disp_table(); printf("%-12s%-12s%-12s%-12s\n",info[k].name,info[k].tele,info[k].qq,info[k].note); } if(!flag) printf("沒有找到符合條件的記錄!\n"); printf("請按任意鍵返回···"); printf("\n"); getchar(); } elseif(ask=='3') { printf("請輸入手機號:"); gets(tele); for(k=0;k<i;k++) if(strcmp(tele,info[k].tele)==0) { flag=1; printf("\t查找成功!該人記錄如下:\n"); disp_str('*',50); printf("\n"); disp_table(); printf("%-12s%-12s%-12s%-12s\n",info[k].name,info[k].tele,info[k].qq,info[k].note); } if(!flag) printf("沒有找到符合條件的記錄!\n"); printf("請按任意鍵返回···"); printf("\n"); getchar(); } elseif(ask=='4') { return; } }} //--------------------------------------------------------------------------------------------8--第三個功能修改voidxiugai()//第三個功能修改{ intk,flag; charname[10],sure;printf("\n"); printf("\t請輸入要修改人姓名:"); gets(name); while(1) { for(k=0;k<i;k++) if(strcmp(name,info[k].name)==0) { flag=1;printf("\n"); printf("\t查找成功!該人記錄如下:\n"); disp_str('*',50); printf("\n"); disp_table(); printf("%-12s%-12s%-12s%-12s\n",info[k].name,info[k].tele,info[k].qq,info[k].note); printf("\n"); printf("確定修改請按Y,否者按其他鍵返回···"); sure=getchar(); getchar(); if(sure=='y'||sure=='Y') { printf("\n\t請輸入修改后的姓名:"); scanf("%s",info[k].name); printf("\n\t請輸入修改后的電話:"); scanf("%s",info[k].tele); printf("\n\t請輸入修改后的QQ號:"); scanf("%s",info[k].qq); printf("\n\t請輸入修改后的類別:"); scanf("%s",info[k].note);printf("\t修改成功!修改后記錄如下:\n"); disp_table();printf("%-12s%-12s%-12s%-12s\n",info[k].name,info[k].tele,info[k].qq,info[k].note); break; } else return; } if(flag!=1) { printf("沒有找到符合條件的記錄!\n"); printf("請按任意鍵返回···"); printf("\n"); }getchar();return; } }//--------------------------------------------------------------------------------------------9--第四個功能顯示voidxianshi()//第四個功能顯示{ intj; disp_table(); disp_str('*',50); printf("\n");for(j=0;j<i;j++) {printf("%-12s%-12s%-12s%-12s\n",info[j].name,info[j].tele,info[j].qq,info[j].note); } disp_str('*',50); printf("\n"); printf("該通訊錄共有%d條記錄!",i);}//--------------------------------------------------------------------------------------------10--第五個功能刪除voidshanchu()//第五個功能刪除{ charask,name[10],qq[10]; intk,flag,l; while(1) { flag=0; disp_str('',19); printf("通訊錄刪除\n"); disp_str('*',50); putchar('\n'); disp_str('',17); printf("1.按姓名刪除\n"); disp_str('',17); printf("2.按QQ刪除\n"); disp_str('',17); printf("3.返回上層\n"); disp_str('*',50); putchar('\n'); disp_str('',17); printf("請輸入代碼選擇(1~3)\n"); ask=getchar(); getchar(); charsure; if(ask=='1') { printf("\n"); printf("請輸入姓名:\n"); gets(name); for(k=0;k<i;k++) if(strcmp(name,info[k].name)==0) { flag=1; printf("\t該人記錄如下:\n"); disp_table(); printf("%-12s%-12s%-12s%-12s\n",info[k].name,info[k].tele,info[k].qq,info[k].note);printf("確定刪除請按Y,否者按其他鍵返回···"); sure=getchar(); getchar(); if(sure!='y'&&sure!='Y') return; for(l=k;l<i;l++) info[l]=info[l+1]; printf("\t刪除成功!刪除后記錄如下:\n"); i=i-1; xianshi(); } if(!flag) printf("沒有找到符合條件的記錄!\n"); printf("請按任意鍵返回···"); printf("\n"); getchar(); } elseif(ask=='2') { printf("\n"); printf("請輸入qq:"); gets(qq); for(k=0;k<i;k++) if(strcmp(qq,info[k].qq)==0) { flag=1; printf("\t查找成功!該人記錄如下:\n"); disp_table(); printf("%-12s%-12s%-12s%-12s\n",info[k].name,info[k].tele,info[k].qq,info[k].note);printf("確定刪除請按Y,否者按其他鍵返回···"); sure=getchar(); getchar(); if(sure!='y'&&sure!='Y') return; for(l=k;l<i;l++) info[l]=info[l+1]; printf("\t刪除成功!刪除后記錄如下:\n"); i=i-1; xianshi(); } if(!flag) printf("沒有找到符合條件的記錄!\n"); printf("請按任意鍵返回···"); printf("\n"); getchar(); } elseif(ask=='3') { return; } }}//----------------------------------------------------------------

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論