第一篇:個人通訊錄管理系統(tǒng)源程序(絕對無錯)
#include
/*頭文件*/ #include
#include
#include
//定義結(jié)構(gòu)體
struct tongxunlu
/*定義通訊錄結(jié)構(gòu)體變量*/ {
char name[20];
/*定義輸入名字的數(shù)組*/ char phone[20];/*定義輸入電話號碼的數(shù)組*/ char adress[40];/*定義輸入地址的數(shù)組*/ } txl[100];//默認(rèn)100個數(shù)據(jù)
int n=0;//記錄數(shù)據(jù)聯(lián)系人數(shù)量
FILE *fp;
/*定義文件*/ //程序用到的所有函數(shù)
void menu();
/*主菜單函數(shù)*/ void addnew();
/*增加聯(lián)系人函數(shù)*/ void readfile();/*文件中讀入函數(shù)*/ void writefile();/*文件中寫入函數(shù)*/ void modify();
/*修改聯(lián)系人函數(shù)*/ void modifyname();/*姓名修改*/ void modifyphone();/*電話號碼修改*/ void search();
/*查找聯(lián)系人函數(shù)*/ void searchname();/*按姓名查找*/ void searchphone();/*按號碼查找*/ void deletecd();
/*刪除聯(lián)系人函數(shù)*/ void deleteall();/*全部刪除*/ void deleteone();/*單個刪除*/ void showall();
/*號碼顯示*/ //程序主函數(shù) 模塊六
void main()
/*主函數(shù)main*/ { readfile();
/*二進(jìn)制讀入文件*/ while(1)
/* 循環(huán)(永遠(yuǎn)進(jìn)行)*/ {
menu();
/*調(diào)用主菜單函數(shù)*/ } }
//讀取文件函數(shù)部分開始 模塊七
void readfile(){
if((fp=fopen(“c: xl.txt”,“r”))==NULL)/*以只讀方式打開判定文件是否為空*/ {
printf(“nttt
通訊錄文件不存在”);
/*判斷結(jié)論*/
if((fp=fopen(“txl.txt”,“w”))==NULL)/*只寫方式判斷*/
{
printf(“ntt建立失敗”);
/*為空結(jié)論*/
exit(0);
/*退出*/
}
else
/*不為空則執(zhí)行else*/
{
printf(“nt-----------------歡迎使用通訊錄管理系統(tǒng)------------------”);
printf(“nt
通訊錄文件已建立
”);
printf(“nt
按任意鍵進(jìn)入主菜單
”);
printf(“nt--------------------------”);
getch();
return;
}
exit(0);
}
fseek(fp,0,2);/*文件位置指針移動到文件末尾*/
if(ftell(fp)>0)/*文件不為空*/
{
rewind(fp);/*文件位置指針移動到文件開始位置*/
for(n=0;!feof(fp)&& fread(&txl[n],sizeof(struct tongxunlu),1,fp);n++);
printf(“nt----------歡迎使用通訊錄管理系統(tǒng)1.0beat版----------------”);
printf(“nt
文件導(dǎo)入成功
printf(”nt
按任意鍵返回主菜單
printf(“nt--------------------------”);
getch();
return;
}
printf(“nt------------歡迎使用通訊錄管理系統(tǒng)1.0beat版--------------”);
printf(“nt
文件導(dǎo)入成功
printf(”nt
通訊錄文件中無任何紀(jì)錄
printf(“nt
按任意鍵返回主菜單
printf(”nt--------------------------“);
getch();
return;}
//讀取文件函數(shù)結(jié)束
//文件主菜單函數(shù)開始 模塊六
void menu(){
char choic;
system(”cls“);
printf(”ntt|-------歡迎您使用通訊錄管理系統(tǒng)1.0beat版-----|“);
printf(”ntt|
1-添加聯(lián)系人
2-查詢和顯示聯(lián)系人
|“);
printf(”ntt|
3-刪除聯(lián)系人
4-修改聯(lián)系人
|“);
”);“);”);“);”);
printf(“ntt|
5-保存退出
0-不保存退出
|”);
printf(“ntt|-----------------|”);
printf(“ntt請選擇您所所要的服務(wù):”);
choic=getch();
switch(choic)/*對于上邊的選擇項目*/ {
case '1':addnew();break;
case '2':search();break;
case '3':deletecd();break;case '4':modify();break;case '5':writefile();break;
case '0':exit(0);
default:menu();/*如果沒有則返回主菜單等待輸入*/ } }
//文件主菜單函數(shù)結(jié)束
//添加新聯(lián)系人函數(shù)開始 模塊一
void addnew(){
printf(“ntt------------------請輸入聯(lián)系人信息--------------------n”);
printf(“ntt輸入聯(lián)系人姓名:”);
scanf(“%s”,txl[n].name);
/*鍵盤輸入*/ printf(“ntt輸入聯(lián)系人電話號碼:”);
scanf(“%s”,txl[n].phone);
printf(“ntt輸入聯(lián)系人地址:”);
scanf(“%s”,txl[n].adress);
n++;
/*統(tǒng)計個數(shù)*/ printf(“ntt是否繼續(xù)添加聯(lián)系人?(Y/N):”);/*是否繼續(xù)輸入聯(lián)系人.*/ if(getch()=='y')
addnew();
return;}
//添加新聯(lián)系人結(jié)束
//寫入文件函數(shù)開始
模塊七
void writefile()
/*聯(lián)系人寫入文件*/ {
int i;
if((fp=fopen(“c: xl.txt”,“w”))==NULL)
{
printf(“ntt文件打開失敗”);
}
for(i=0;i { if(fwrite(&txl[i],sizeof(struct tongxunlu),1,fp)!=1) { printf(“ntt寫入文件錯誤!n”); } } fclose(fp);/*關(guān)閉文件*/ printf(“nt-----------------------”);/*輸出提示信息*/ printf(“ntt通訊錄文件已保存”); printf(“ntt謝謝使用,歡迎再次使用!n”);printf(“如果對本軟件有疑問,請到我們官網(wǎng)(004km.cn)提出您的問題,我們將為您解答.n”);printf(“我們的軟件有不足之處,歡迎到官網(wǎng)(004km.cn)反映,我們將努力改正!”);printf(“ntt按任意鍵退出程序ntt”); /*輸出完畢*/ exit(0); printf(“nt-----------------------”);} //寫入文件函數(shù)結(jié)束 ///查詢聯(lián)系人函數(shù)開始 模塊四---------------------void search(){ char choic; system(“cls”); printf(“ntt-------------------顯示和查詢聯(lián)系人------------------”); printf(“ntt| 1-逐個顯示所有 2-按姓名查詢 |”); printf(“ntt| 3-按電話查詢 4-返回主菜單 |”); printf(“ntt|-----------------------”); printf(“ntt請選擇您所所要的服務(wù):”); choic=getch(); switch(choic) { case '1':showall();break; /*顯示所有號碼*/ case '2':searchname();break;/*調(diào)用按姓名查詢函數(shù)*/ case '3':searchphone();break;/*調(diào)用按號碼查詢函數(shù)*/ case '4':menu();break; /*主菜單*/ } } void showall()//顯示所有聯(lián)系人函數(shù) { int i; system(“cls”);//清楚屏幕 if(n!=0) { printf(“ntt----------歡迎您查詢通訊錄所有聯(lián)系人信息-------------”); for(i=0;i /*依次序顯示*/ { printf(“ntt姓名: %s”,txl[i].name); printf(“ntt電話: %s”,txl[i].phone); printf(“ntt地址: %s”,txl[i].adress); printf(“ntt-------------------”); if(i+1 { printf(“ntt-----------------------”); system(“pause”);//返回錯誤信息 } } printf(“ntt--------------”); } else /*無聯(lián)系人*/ printf(“ntt通訊錄中無任何紀(jì)錄”); printf(“ntt按任意鍵返回主菜單:”); getch(); return;} //按手機(jī)號碼查詢函數(shù) void searchphone(){ int mark=0; int i; char phone[15]; printf(“ntt-------------------按電話查找-------------------------”);printf(“ntt請輸入電話號碼:”); scanf(“%s”,phone); for(i=0;i { if(strcmp(txl[i].phone,phone)==0)//對比查找函數(shù) { printf(“ntt------------以下是您查找的學(xué)生信息------------”); printf(“ntt姓名: %s”,txl[i].name); printf(“ntt電話: %s”,txl[i].phone); printf(“ntt地址: %s”,txl[i].adress); printf(“ntt-----------------”); printf(“ntt按任意鍵返回主菜單:”); mark++; getch(); return; } } if(mark==0) { printf(“ntt沒有找到聯(lián)系人的信息”); printf(“ntt按任意鍵返回主菜單”); getch(); return; } } void searchname()//按姓名查詢 { int mark=0; int i; char name[20]; printf(“ntt----------------按姓名查找--------------------”);printf(“ntt請輸入您要查找的姓名:”); scanf(“%s”,name); for(i=0;i { if(strcmp(txl[i].name,name)==0) { printf(“ntt------------以下是您查找的聯(lián)系人信息---------------”); printf(“ntt姓名: %s”,txl[i].name); printf(“ntt電話: %s”,txl[i].phone); printf(“ntt地址: %s”,txl[i].adress); printf(“ntt--------------------”); mark++; getch(); return; } } if(mark==0) { printf(“ntt沒有找到聯(lián)系人的信息”); printf(“ntt按任意鍵返回主菜單”); getch(); return; } } ////查詢聯(lián)系人函數(shù)結(jié)束---------------------- ////刪除聯(lián)系人函數(shù)部分開始------------------void deletecd(){ char choic; if(n==0) /*如果通訊錄中沒有一個記錄輸出以下部分*/ { printf(“ntt對不起,文件中無任何紀(jì)錄”); printf(“ntt按任意鍵返回主菜單”); getch(); return; } system(“cls”); /*清屏*/ printf(“ntt-----------------刪除菜單----------------------”); printf(“ntt| 1-刪除所有 2-刪除單個 |”); printf(“ntt| 3-返回主菜單 printf(”ntt|------------------“); printf(”ntt請選擇您所所要的服務(wù):“); choic=getch(); /*輸入的賦予choice*/ switch(choic) { case '1':deleteall();break; case '2':deleteone();break; case '3':menu();break; default:menu();break; } } void deleteall()//刪除所有聯(lián)系人 { printf(”ntt確認(rèn)刪除?(y/n)“); if(getch()=='y') { fclose(fp); if((fp=fopen(”txl.txt“,”w“))==NULL) /*文件空輸出*/ { printf(”ntt不能打開文件,刪除失敗“); readfile(); } n=0; printf(”ntt紀(jì)錄已刪除,按任意鍵返回主菜單“); getch(); return; } else return;} void deletename()//按姓名刪除聯(lián)系人 { int i,j,deletemark=0,a=0; char name[20]; |”); printf(“ntt請輸入要刪除聯(lián)系人姓名:”); scanf(“%s”,name); /*鍵盤輸入姓名*/ for(i=a;i { if(strcmp(txl[i].name,name)== 0)//對比字符串查找到要刪除的聯(lián)系人 { printf(“ntt以下是您要刪除的聯(lián)系人紀(jì)錄:”); printf(“ntt-”); printf(“ntt姓名: %s”,txl[i].name); printf(“ntt電話: %s”,txl[i].phone); printf(“ntt地址: %s”,txl[i].adress); printf(“ntt-”); printf(“ntt是否刪除?(y/n)”); if(getch()=='y')// 實現(xiàn)刪除功能 { for(j=i;j txl[j]=txl[j+1]; /*將通訊錄的想前移*/ n--; deletemark++; printf(“ntt刪除成功”); printf(“ntt是否繼續(xù)刪除?(y/n)”); if(getch()=='y') deletename(); /*繼續(xù)調(diào)用刪除函數(shù)*/ return; } else return; } continue; } if(deletemark==0) { printf(“ntt沒有該聯(lián)系人的紀(jì)錄”); printf(“ntt是否繼續(xù)刪除?(y/n)”); if(getch()=='y') deletename(); return; } } void deletephone()//按電話號碼刪除聯(lián)系人 { int i,j,deletemark=0; /*變量定義*/ char phone[20]; printf(“ntt請輸入要刪除聯(lián)系人電話號碼:”); scanf(“%s”,phone); if(n==0) { printf(“ntt對不起,文件中無任何紀(jì)錄”); printf(“ntt按任意鍵返回主菜單”); getch(); return; } for(i=0;i { if(strcmp(txl[i].phone,phone)==0) { printf(“ntt以下是您要刪除的聯(lián)系人紀(jì)錄:”); printf(“ntt姓名: %s”,txl[i].name); printf(“ntt電話: %s”,txl[i].phone); printf(“ntt地址: %s”,txl[i].adress); printf(“ntt是否刪除?(y/n)”); if(getch()=='y') { for(j=i;j txl[j]=txl[j+1]; n--; deletemark++;//記錄刪除次數(shù) printf(“ntt刪除成功”); printf(“ntt是否繼續(xù)刪除?(y/n)”); if(getch()=='y') deletephone(); return; } else return; } continue; } if(deletemark==0) { printf(“ntt沒有該聯(lián)系人的紀(jì)錄”); printf(“ntt是否繼續(xù)刪除?(y/n)”); if(getch()=='y') return; } } void deleteone()//刪除單個聯(lián)系人 { char choic; printf(“nt---------------------------”); printf(“ntt 1-按姓名刪除 2-按電話刪除”); printf(“ntt請選擇您所所要的服務(wù):”); printf(“nt---------------------------”);choic=getch(); switch(choic) { case '1':deletename();break;case '2':deletephone();break;} } ///刪除函數(shù)部分結(jié)束------------------------- ///修改聯(lián)系人函數(shù)開始-------------------void modify() /*修改函數(shù)*/ { char choic; if(n==0) { printf(“ntt對不起,文件中無任何紀(jì)錄”); printf(“ntt按任意鍵返回主菜單”); getch(); return; } system(“cls”); printf(“ntt-----------------修改聯(lián)系人菜單-----------------------”);printf(“ntt| 1-按姓名修改 2-按電話修改 printf(”ntt| 任意鍵-按返回主菜單 printf(“ntt-----------------------”); choic=getch(); switch(choic) { case '1':modifyname();break; case '2':modifyphone();break; default:menu();break;} } void modifyname(){ char choic; int i,mark=0; |“);|”); char name[20];printf(“ntt請輸入修改要聯(lián)系人的姓名:”); scanf(“%s”,name);if(n==0){ printf(“ntt文件中無任何聯(lián)系人”);printf(“ntt按任意鍵返回主菜單”);getch();mark++;return; } for(i=0;i printf(“ntt以下是您要修改的聯(lián)系人信息”); printf(“ntt姓名: %s”,txl[i].name); printf(“ntt電話: %s”,txl[i].phone); printf(“ntt地址: %s”,txl[i].adress); printf(“ntt是否修改(y/n)”); if(getch()=='y') { printf(“nt------------請選擇修改信息---------------”); printf(“nt 1-修改姓名 2-修改電話 printf(”nt 3-修改地址 printf(“nt----------”); printf(“nt請選擇您所所要的服務(wù):”); scanf(“%s”,&choic); switch(choic) { case '1': printf(“nt請輸入新姓名: ”); scanf(“%s”,txl[i].name);break; case'2':printf(“nt請輸入新電話: %s”); scanf(“%s”,txl[i].phone);break; case'3':printf(“nt請輸入新地址: ”); scanf(“%s”,txl[i].adress);break; } } } } if(mark==0){ printf(“ntt沒有找到聯(lián)系人信息”);printf(“nt是否繼續(xù)修改?(Y/N):”);if(getch()=='y') “);”); modifyname();return; } } void modifyphone(){ char choic,phone[15]; int i,mark=0; printf(“ntt請輸入修改聯(lián)系人的號碼:”); scanf(“%s”,phone); if(n==0) { printf(“ntt文件中無任何聯(lián)系人”); printf(“ntt按任意鍵返回主菜單”); getch();mark++; return; } for(i=0;i if(strcmp(txl[i].phone,phone)==0) { printf(“ntt以下是您要修改的聯(lián)系人信息”); printf(“ntt姓名: %s”,txl[i].name); printf(“ntt電話: %s”,txl[i].phone); printf(“ntt地址: %s”,txl[i].adress); printf(“ntt是否修改(y/n)”); if(getch()=='y') { printf(“nt------------請選擇修改信息---------------”); printf(“nt 1-修改姓名 2-修改電話 printf(”nt 3-修改地址 printf(“nt----------”); printf(“nt請選擇您所所要的服務(wù):”); scanf(“%s”,&choic); switch(choic) { case'1': printf(“nt請輸入新姓名: ”); scanf(“%s”,txl[i].name);break; case'2':printf(“nt請輸入新電話: ”); scanf(“%s”,txl[i].phone);break; case'3':printf(“nt請輸入新地址: ”); scanf(“%s”,txl[i].adress);break; } } “);”); } } } } if(mark==0){ printf(“nt沒有該聯(lián)系人信息”);printf(“nt是否繼續(xù)修改?(Y/N):”);if(getch()=='y')modifyphone();return; 課 程 設(shè) 計 任 務(wù) 書 題 目 C語言課程設(shè)計 系 (部) 專 業(yè) 班 級 學(xué)生姓名 學(xué) 號 06 月 信息科學(xué)與電氣工程學(xué)院 計算機(jī)科學(xué)與技術(shù) 計職141 王雪 140819139 日至 07 月 04 日 共 周 指導(dǎo)教師 院 長 2015 年 6月 23日 一、課程設(shè)計目的 將理論教學(xué)中涉及到的知識點貫穿起來,對不同的數(shù)據(jù)類型、程序控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)作一比較和總結(jié),結(jié)合設(shè)計題目進(jìn)行綜合性應(yīng)用,對所學(xué)知識達(dá)到融會貫通的程度。通過課程設(shè)計,學(xué)生在下述各方面的能力應(yīng)該得到鍛煉: (1)進(jìn)一步鞏固、加深學(xué)生所學(xué)專業(yè)課程《C++程序設(shè)計語言》的基本理論知識,理論聯(lián)系實際,進(jìn)一步培養(yǎng)學(xué)生綜合分析問題,解決問題的能力。 (2)全面考核學(xué)生所掌握的基本理論知識及其實際業(yè)務(wù)能力,從而達(dá)到提高學(xué)生素質(zhì)的最終目的。 (3)利用所學(xué)知識,開發(fā)小型應(yīng)用系統(tǒng),掌握運用C++語言編寫調(diào)試應(yīng)用系統(tǒng)程序,訓(xùn)練獨立開發(fā)應(yīng)用系統(tǒng),進(jìn)行數(shù)據(jù)處理的綜合能力。 (4)對于給定的設(shè)計題目,如何進(jìn)行分析,理清思路,并給出相應(yīng)的數(shù)學(xué)模型。 (5)掌握結(jié)構(gòu)化程序設(shè)計方法,熟悉面向?qū)ο蟪绦蛟O(shè)計方法。(6)熟練掌握C++語言的基本語法,靈活運用各種數(shù)據(jù)類型。(7)進(jìn)一步掌握在集成環(huán)境下如何調(diào)試程序和修改程序。設(shè)計功能 錄入聯(lián)系人信息(包括姓名、電話號碼、地址等信息);通訊錄管理系統(tǒng)要求實現(xiàn)以下功能: 1、輸入每一位聯(lián)系人記錄,將其信息存入文件中。 2、查詢所有聯(lián)系人的信息,并按可選的自定義規(guī)則進(jìn)行排序; 3、記錄修改,將修改的記錄信息保存于文件中。設(shè)計要求 1、設(shè)一個通信錄由以下幾項數(shù)據(jù)信息構(gòu)成: 數(shù)據(jù)項 類型 姓名 字符串 地址 字符串 郵政編碼 字符串 電話號碼 字符串 試為通信錄數(shù)據(jù)定義類型和定義通信錄變量,實現(xiàn)功能:存取、顯示、刪除記錄、查詢記錄等功能。 2、要求:界面友好,易于操作 總體設(shè)計 系統(tǒng)功能模塊圖: 添加:可以添加通訊錄記錄,依次輸入編號、姓名、年齡、電話號碼、通訊地址、電子郵箱等后,會提示是否繼續(xù)添加。 顯示:可以以表格形式輸出所有通訊錄里的記錄 刪除:輸入欲刪除的那個人的名字后,會自動刪除他(她)的記錄內(nèi)容 查詢:可以選擇用姓名、電話、地址三種方式查詢 修改:輸入欲修改的那個人的名字后,再依次輸入編號、姓名、年齡、電話號碼、通訊地址、電子郵箱即可完成修改 保存:,輸入文件名(帶后綴名)后,即可將通訊錄信息保存到文件 課程設(shè)計名稱及內(nèi)容 課程設(shè)計名稱:單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng) 設(shè)計內(nèi)容:設(shè)計并實現(xiàn)一個單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)。該系統(tǒng)可以完成試題錄入、試題抽取、自動判卷等功能。 任務(wù)和要求 功能要求: (1)用文件保存試題庫。(每個試題包括題干、4個備選答案、標(biāo)準(zhǔn)答案)(2)試題錄入:可隨時增加試題到試題庫中 (3)試題抽?。好看螐脑囶}庫中可以隨機(jī)抽出N道題(N由鍵盤輸入)(4)答題:用戶可實現(xiàn)輸入自己的答案 (5)自動判卷:系統(tǒng)可根據(jù)用戶答案與標(biāo)準(zhǔn)答案的對比實現(xiàn)判卷并給出成績。 (二)其它要求: (1)只能使用C/C++語言,源程序要有適當(dāng)?shù)淖⑨專钩绦蛉菀组喿x(2)至少采用文本菜單界面(如果能采用圖形菜單界面更好)(3)學(xué)生可自動增加新功能模塊(視情況可另外加分) 主要知識點 l 面向?qū)ο蟪绦蛟O(shè)計方法 l 界面制作,switch的應(yīng)用。l 類和對象。l 動態(tài)數(shù)組(鏈表)類模板。l 文件的讀寫。 五、其他 程序設(shè)計可在Microsoft VC++6.0、Borland C++ Builder環(huán)境下進(jìn)行。 六、參考資料 【1】《C語言程序設(shè)計》,譚浩強(qiáng)編,清華大學(xué)出版社,2008年 出版 【2】《C語言程序設(shè)計》,吳明發(fā)編,北京理工大學(xué)出版社,2007年出版 【3】《C語言參考手冊》邱仲潘 機(jī)械工業(yè)出版社,2004年出版 【4】《C語言課程設(shè)計案例精編》 姜靈之 清華大學(xué)出版社 2008年出版 詳細(xì)設(shè)計(1).通訊錄: 主要代碼 #include //結(jié)構(gòu)體 { };class inter { private: student st[35];char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];public: void add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]); void del(char name[20]);void find1(char no[13]);void find2(char name[20]);void list1();void list2();int correct(char name[20]);void read();void write();void format();int back(){ cout<<“ 返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫): ”; } void print(int i){ cout<<“學(xué)號:”< }; } cout<<“電話號碼:”< inter a;a.format();char select1;cout< 計職141 ” < <<“tt★★★★★★★★★★★★★★★★★★★★★★★★★★” < ※” < 通 迅 錄 ※” < ※” < ※” < ※” < ※” < <<“tt ”< <<“ttt選擇 :”;cin>>select1; switch(select1){ case '1':cout<<“ (1)添加:”< cout<<“ (2)刪除:”< (3)修改:”< 請選擇:”< 輸入添加的資料:”< char name[20]; char address[100]; char tel_no[12]; char post_code[7]; char e_mail[40]; cout<<“ 輸入學(xué)號:”< 輸入姓名:”< 輸入地址:”< 輸入電話號碼:”< 輸入郵編:”< cout<<“ 輸入E_mail:”< cout<<“ 返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫): ”; char back_add;cin>>back_add;if(back_add=='R'||back_add=='r')goto top;else goto bottom;break;case '2':cout<<“ 輸入要刪除人的姓名:”< char name2[20];cin>>name2;a.del(name2); cout<<“ 返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫): ”; char back_del;cin>>back_del;if(back_del=='R'||back_del=='r')goto top;else goto bottom;break;case '3':cout<<“ 輸入需要修改人的姓名:”< char name3[20];cin>>name3;if(a.correct(name3)) } goto top;else goto bottom;break;break;case '2':cout<<“ (1)根據(jù)姓名查找”< cout<<“ (2)根據(jù)學(xué)號查找”< 請選擇: ”;cin>>select3;switch(select3){ case '1':char name4[20]; cout<<“ 輸入姓名: ”;cin>>name4;a.find2(name4); cout<<“ 返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫): ”; char back_f1;cin>>back_f1;if(back_f1=='R'||back_f1=='r')goto top;else goto bottom;break;case '2':char no4[13];cout<<“ 輸入學(xué)號: ”;cin>>no4; a.find1(no4); cout<<“ 返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫): ”; } break;char back_f2;cin>>back_f2;if(back_f2=='R'||back_f2=='r')goto top;else goto bottom;break;case '3':a.write();cout<<“ 返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫): ”; char back_w;cin>>back_w;if(back_w=='R'||back_w=='r')goto top;else goto bottom;break;case '4':cout<<“ (1)按學(xué)號排序:”< cout<<“ (2)按姓名排序:”< 請選擇:”;char select4;cin>>select4;switch(select4){ case '1':a.list1(); cout<<“ 返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫): ”; char back;cin>>back;if(back=='R'||back=='r')goto top;else goto bottom;break;case '2':a.list2(); cout<<“ 返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫): ”; } break;char back1;cin>>back1;if(back1=='R'||back1=='r')goto top;else goto bottom;break;case '5':a.read();cout<<“ 返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫): ”; char back_r;cin>>back_r;if(back_r=='R'||back_r=='r') goto top;else goto bottom;break;case '6':cout<<“ 請確認(rèn)刪除所有資料!(Y/N) ”; char select5;cin>>select5;if(select5=='Y'||select5=='y')a.format();cout<<“ 返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫): ”; } char back_f;cin>>back_f;if(back_f=='R'||back_f=='r')goto top;else goto bottom;break;bottom:cout<<“ ★★★★★★★★★★★★歡迎使用本軟件!★★★★★★★★★★★ ”< void inter::add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]){ int x=1;for(int i=0;i<35;i++)return 0; } { } if(!strcmp(st[i].no,“0”)){ } if(x==0)break;strcpy(st[i].address,address);strcpy(st[i].e_mail,e_mail);strcpy(st[i].name,name);strcpy(st[i].no,no);strcpy(st[i].post_code,post_code);strcpy(st[i].tel_no,tel_no);x=0;//刪除聯(lián)系人 void inter::del(char name[20]){ int x=1;for(int i=0;i<35;i++){ if(!strcmp(st[i].name,name)){ strcpy(st[i].address,“0”); strcpy(st[i].e_mail,“0”);strcpy(st[i].name,“0”);strcpy(st[i].no,“0”);strcpy(st[i].post_code,“0”);strcpy(st[i].tel_no,“0”); } } } else x=0;if(x==0)cout<<“ error:輸入姓名錯誤!”< int inter::correct(char name[30]){ int x;for(int i=0;i<35;i++){ } char select;cout<<“ (1)修改姓名:”< (2)修改學(xué)號:”< (3)修改地址:”< (4)修改郵編:”< (5)修改電話號碼:”< (6)修改E_MAIL:”< 請選擇:”;cin>>select;switch(select){ case '1':cout<<“ 輸入要修改的姓名:”;char name1[30];if(!strcmp(st[i].name,name))x=i; cin>>name1;strcpy(st[x].name,name1);cout<<“ 修改成功!”< 輸入要修改的學(xué)號:”; char no1[13];cin>>no1;strcpy(st[i].no,no1);cout<<“ 修改成功!”< 輸入要修改的地址:”; char address1[100];cin>>address1;strcpy(st[x].address,address1);cout<<“ 修改成功!”< 輸入要修改的郵編:”; char post_code1[7];cin>>post_code1;strcpy(st[x].post_code,post_code1);cout<<“ 修改成功!”< 輸入要修改的電話號碼:”;char tel_no1[12]; cin>>tel_no1;strcpy(st[x].tel_no,tel_no1);cout<<“ 修改成功!”< 輸入要修改的E_MAIL:”; char e_mail1[40]; cin>>e_mail1; strcpy(st[x].e_mail,e_mail1); cout<<“ 修改成功!”< return back(); break;} } //按學(xué)號查詢聯(lián)系人 void inter::find1(char no[13]){ int x,y=1,z=1;for(int i=0;i<35;i++){ if(!strcmp(st[i].no,no)) { x=i; z=0; } else y=0; if(z==0)break; } if(y==0)cout<<“ 輸入的學(xué)號查找不到!!”< print(x);} //按姓名查詢聯(lián)系人 void inter::find2(char name[20]){ } //讀取文件 void inter::read(){ int x,y=1,z=1;for(int i=0;i<35;i++){ } if(y==0)cout<<“ 輸入的姓名查找不到??!”< } else y=0;if(z==0)break;x=i;z=0; print(x); char name1[20];cout<<“ 輸入你要導(dǎo)入的文件名: ”;cin>>name1;strcat(name1,“.txt”);ifstream file(name1);char line[120];char no[120];char name[120];char address[120];char post_code[120];char tel_no[120];char e_mail[120];int time=0;file.getline(line,120);while(!file.eof()){ for(int k=0;k<35;k++){ if(time==0){ strcpy(no,line);time=1;for(int i=0;i<120;i++){ if(no[i]==':'){ i++;for(int j=0;j<13;j++) } } { } st[k].no[j]=no[i];i++;file.getline(line,120,'n');} if(time==1){ } if(time== 2){ strcpy(name,line);time=2; for(int i=0;i<120;i++){ } file.getline(line,120,'n');if(name[i]==':'){ } i++;for(int j=0;j<20;j++){ } st[k].name[j]=name[i];i++; } strcpy(address,line);time=3;for(int i=0;i<120;i++){ } file.getline(line,120,'n');if(address[i]==':'){ } i++;for(int j=0;j<100;j++){ } st[k].address[j]=address[i];i++;if(time==3){ strcpy(tel_no,line);time=4;for(int i=0;i<120;i++){ if(tel_no[i]==':'){ i++;for(int j=0;j<12;j++){ st[k].tel_no[j]=tel_no[i]; } } } } i++;file.getline(line,120,'n'); if(time==4){ } if(time==5){ strcpy(e_mail,line);strcpy(post_code,line);time=5;for(int i=0;i<120;i++){ } file.getline(line,120,'n');if(post_code[i]==':'){ } i++;for(int j=0;j<7;j++){ } st[k].post_code[j]=post_code[i];i++; } } } } time=0;for(int i=0;i<120;i++){ } file.getline(line,120,'n');if(e_mail[i]==':'){ } i++;for(int j=0;j<40;j++){ } st[k].e_mail[j]=e_mail[i];i++; file.close();//寫入文件 void inter::write(){ char name[20];cout<<“ 輸入要保存的文件名 ”;cin>>name;strcat(name,“.txt”);ofstream savefile(name);for(int i=0;i<35;i++) } { } savefile.close();savefile << “學(xué)號:”< savefile << “姓名:”< savefile << “地址:”< savefile << “電話號碼:”< savefile << “郵編:”< savefile << “E_MAIL:”< strcpy(no,st[j].no);strcpy(st[j].no,st[j+1].no);for(int i=0;i<34;i++){ for(int j=0;j<35-i;j++){ if(strcmp(st[j].no,st[j+1].no)>0){ char no[13]; char name[20]; char address[100]; char tel_no[12]; char post_code[7]; char e_mail[40]; strcpy(st[j+1].no,no); strcpy(name,st[j].name);strcpy(st[j].name,st[j+1].name);strcpy(st[j+1].name,name); strcpy(address,st[j].address); } for(int k=0;k<35;k++){ int x=0;if(strcmp(st[k].no,“0”)) } } strcpy(st[j].address,st[j+1].address);strcpy(st[j+1].address,address); strcpy(tel_no,st[j].tel_no);strcpy(st[j].tel_no,st[j+1].tel_no);strcpy(st[j+1].tel_no,tel_no); strcpy(post_code,st[j].post_code);strcpy(st[j].post_code,st[j+1].post_code);strcpy(st[j+1].post_code,post_code); strcpy(e_mail,st[j].e_mail);strcpy(st[j].e_mail,st[j+1].e_mail);strcpy(st[j+1].e_mail,e_mail); { } if(x==1){ cout< } } } //按姓名排序 void inter::list2(){ for(int i=0;i<34;i++){ for(int j=0;j<35-i;j++){ if(strcmp(st[j].name,st[j+1].name)>0){ char no[13]; char name[20]; char address[100]; char tel_no[12]; char post_code[7]; char e_mail[40]; strcpy(no,st[j].no);strcpy(st[j].no,st[j+1].no);strcpy(st[j+1].no,no); strcpy(name,st[j].name);strcpy(st[j].name,st[j+1].name);strcpy(st[j+1].name,name); strcpy(address,st[j].address); } for(int k=0;k<35;k++){ } } strcpy(st[j].address,st[j+1].address);strcpy(st[j+1].address,address); strcpy(tel_no,st[j].tel_no);strcpy(st[j].tel_no,st[j+1].tel_no);strcpy(st[j+1].tel_no,tel_no); strcpy(post_code,st[j].post_code);strcpy(st[j].post_code,st[j+1].post_code);strcpy(st[j+1].post_code,post_code); strcpy(e_mail,st[j].e_mail);strcpy(st[j].e_mail,st[j+1].e_mail);strcpy(st[j+1].e_mail,e_mail); } } int x=0;if(strcmp(st[k].no,“0”)){ } if(x==1){ } cout< void inter::format(){ } for(int i=0;i<35;i++){ } strcpy(st[i].address,“0”);strcpy(st[i].e_mail,“0”);strcpy(st[i].name,“0”);strcpy(st[i].no,“0”);strcpy(st[i].post_code,“0”);strcpy(st[i].tel_no,“0”); (2).工作流程圖: 1.通訊錄主界面 2.添加:添加通訊錄記錄 3.顯示:查詢通訊錄記錄 4.刪除:刪除通訊錄記錄 5.修改:修改通訊錄記錄 小結(jié)(收獲和建議)這次的程序?qū)嵲O(shè)計實驗是對我們進(jìn)入大學(xué)以來學(xué)習(xí)程序設(shè)計語言結(jié)果的一次大檢驗,面對許多不懂得知識,通過他人的幫助,以及參考他人的成果,自己動手嘗試,修改等,才完成。這個課程設(shè)計,花費了我近兩個星期的時間,這也是因為書本不熟悉。通過這次設(shè)計,使我對《C語言》這門課程有了更深一步的了解。它不僅是計算機(jī)程序設(shè)計的重要理論技術(shù)基礎(chǔ),也在我們電子與信息專業(yè)的學(xué)習(xí)中占據(jù)著十分重要的地位。同時也使我們知道,要學(xué)好這門課程,僅學(xué)習(xí)書本上的知識是不夠的,還要有較強(qiáng)的實踐能力。因為我們學(xué)習(xí)知識就是為了實踐。而只有多實踐,多編寫程序,才能更好的理解與掌握書本上的東西。利用計算機(jī)來編寫程序,也讓我感受到了編程的樂趣,極大的激發(fā)了我的興趣。 摘 要 為了人們對他人信息的記憶方便而設(shè)計,開發(fā)的一套“通訊錄管理系統(tǒng)“軟件。通過該題目的設(shè)計過程,可以培養(yǎng)學(xué)生結(jié)構(gòu)化程序設(shè)計的思想,加深對高級語言基本語言要素和控制結(jié)構(gòu)的理解,針對c語言中的重點和難點內(nèi)容進(jìn)行訓(xùn)練,獨立完成有一定工作量的程序設(shè)計任務(wù),同時強(qiáng)調(diào)好的程序設(shè)計風(fēng)格。得到軟件工程的綜合訓(xùn)練,提高解決實際問題的能力。 關(guān)鍵字:信息;管理;實用 Abstract Designed for people to others the memory of information convenient, developed a set of “mail list management system” software.Through the design process of this subject, students can be structured programming ideas, deepen our understanding of the advanced language basic language elements and control the understanding of the structure, conduct training for emphasis and difficulty in C language, independently complete the program design has a certain work tasks, while emphasizing the good programming style.Comprehensive training in software engineering, improving the ability to solve practical problems.Keywords: Information;management;practical 目 錄 概述.........................................................................1 1.1設(shè)計目的..................................................................1 1.2設(shè)計要求..................................................................1 1.3系統(tǒng)功能需求分析..........................................................2 2 總體設(shè)計.....................................................................3 2.1總體功能模塊圖............................................................3 2.2程序的數(shù)據(jù)設(shè)計............................................................4 3詳細(xì)設(shè)計.....................................................................5 3.1功能及工作流程圖..........................................................5 3.2源程序代碼................................................................8 4調(diào)試分析....................................................................19 4.1測試.....................................................................19 4.2問題思考與調(diào)試:.........................................................27 5總結(jié)........................................................................28 參考文獻(xiàn)......................................................................29 致 謝........................................................................27 概述 1.1設(shè)計目的 隨著信息社會的高速發(fā)展,人與人之間的聯(lián)系越來越頻繁,通訊方式越來越多樣化,如何保證與朋友、同學(xué)、同事、領(lǐng)導(dǎo)、親戚等之間的聯(lián)系,并能方便快捷的查找、記錄、修改其相關(guān)通訊信息。僅靠以前單獨的手工記錄已遠(yuǎn)遠(yuǎn)不能滿足當(dāng)前的需要。 開發(fā)一個通訊錄管理系統(tǒng),借助計算機(jī)可以方便、快捷、靈活的管理個人的朋友及相關(guān)人員的通訊信息,了解友人相關(guān)信息,幫助與友人保持聯(lián)絡(luò)。 所以設(shè)計一個通訊錄管理系統(tǒng)管理各人的通訊信息是是非必要的。 設(shè)計“通訊錄管理系統(tǒng)”使其具有數(shù)據(jù)插入、修改、刪除、顯示和查詢等功能。(1)數(shù)據(jù)包括:人名、工作單位、電話號碼和E-mail地址。(2)可對記錄中的姓名和電話號碼進(jìn)行修改。(3)可增加或刪除記錄。(4)可顯示所有保存的記錄。(5)可按人名或電話號碼進(jìn)行查詢。 1.2設(shè)計要求 建立通訊錄信息,信息至少包含姓名、住址、單位、固定電話、移動手機(jī)、分類(如同事、朋友、同學(xué)、家人等)、E-mail、QQ等。 該系統(tǒng)提供添加、刪除、修改和查找功能,其中按姓名方式刪除、修改,按姓名、單位、分類方式查找。 將通訊錄保存在文件中。能夠輸出通訊錄中的信息。 1.3系統(tǒng)功能需求分析 主要包含一下多種功能: 添加:添加通訊錄記錄 顯示:顯示通訊錄記錄 刪除:刪除通訊錄記錄 查詢:查詢通訊錄記錄 修改:修改通訊錄記錄 保存:將信息保存到文件 本系統(tǒng)為通訊錄管理系統(tǒng),可由用戶自由添加,刪除和修改信息,還可以將通訊錄信息導(dǎo)出到文本文檔,極大的方便了用戶的使用。 總體設(shè)計 思路:我們首先設(shè)計出了主函數(shù),然后根據(jù)去要實現(xiàn)的功能分別設(shè)計錄入聯(lián)系人信息、瀏覽、查詢、修改、刪除功能的子函數(shù)。刪除函數(shù)的設(shè)計是首先從文件內(nèi)找到要刪除的人,然后通過寫一個實現(xiàn)刪除目的的FOR循環(huán)實現(xiàn)刪除。修改也大體和刪除相同,添加函數(shù)在設(shè)計時通過申請一片空間,然后通過指針將需要添加的信息添加進(jìn)去,從而實現(xiàn)添加功能。 2.1總體功能模塊圖 圖2.1 總體功能模塊圖 添加:可以添加通訊錄記錄,依次輸入編號、姓名、年齡、電話號碼、通訊地址、電子郵箱后,會提示是否繼續(xù)添加。 顯示:可以以表格形式輸出所有通訊錄里的記錄。 刪除:輸入欲刪除的那個人的名字后,會自動刪除他(她)的記錄內(nèi)容。查詢:可以選擇用姓名、電話、地址三種方式查詢。 修改:輸入欲修改的那個人的名字后,再依次輸入編號、姓名、年齡、電話號碼、通訊地址、電子郵箱即可完成修改。 保存:輸入文件名(帶后綴名)后,即可將通訊錄信息保存到文件。運行所需環(huán)境:win7及以下各版本windows,visual C++6.0。2.2程序的數(shù)據(jù)設(shè)計 該系統(tǒng)用下面六個功能模塊編寫,每個模塊執(zhí)行不同的功能,體現(xiàn)了模塊化設(shè)計的思想。下面六個模塊都是利用C語言文件,向文件中追加數(shù)據(jù)、修改數(shù)據(jù)、查詢數(shù)據(jù)和除數(shù)據(jù)。 創(chuàng)建:用fopen()建立一個文本文件,然后用fprintf()向其中輸入數(shù)據(jù)(例如,向文件中輸入“姓名”,“地址”等),并對文件進(jìn)行命名。 添加:可以添加通訊錄記錄,利用C語言文件,向文件中按順序輸入姓名、住址、單位、固定電話、手機(jī)號碼、分類(如同事、朋友、同學(xué)、家人等)、E-mail、QQ,再用fclose()函數(shù)關(guān)閉并保存文件。 輸出:也是用通過循環(huán)依次輸出文件中的數(shù)據(jù),即輸出所有通訊錄里的記錄。刪除:輸入你要刪除的人的姓名后,系統(tǒng)會自動刪除他(她)的記錄,在刪除通過switch語句滿足提示你確認(rèn)刪除的功能,只有等你確認(rèn)刪除后才會刪除。查找:為了滿足用戶的實際需求,設(shè)計了三種查詢方式,可以用姓名、單位、分類三種方式查找通訊錄記錄。這里用到strcmp()函數(shù),通過比較字符串是否相同來判別是否找到相關(guān)信息,找到后,就把文件中的數(shù)據(jù)賦給對應(yīng)的變量,再把變量所帶的值輸出到屏幕上。 修改:輸入你要修改的那個人的姓名后,系統(tǒng)會查找該通訊錄文件(此時用發(fā)ftell()函數(shù)來跟蹤文件指針的指向地址,找到個人的記錄后,會顯示他(她)的記錄,然后通過fseek()函數(shù)來找到修改處的地址,然后用戶再依次輸入他(她)的相關(guān)信息來替代以前的記錄。 保存:用到fclose()函數(shù),每次操作成功后會自動保存到指定的文件中。 3詳細(xì)設(shè)計 3.1功能及工作流程圖 ①添加:添加通訊錄記錄,依次輸入編號、姓名、年齡、電話號碼、通訊地址、電子郵箱后,會提示是否繼續(xù)添加。 圖3.1(1)添加流程圖 ②顯示:以表格形式輸出所有通訊錄里的 圖3.1(2)顯示流程圖 ③刪除::輸入欲刪除的那個人的名字后,會自動刪除他(她)的記錄內(nèi)容。 圖3.1(3)刪除流程圖 ④查詢:可以選擇用姓名、電話、地址三種方式查詢。 圖3.1(4)查詢流程圖 ⑤修改:輸入欲修改的那個人的名字后,再依次輸入編號、姓名、年齡、電話號碼、通訊地址、電子郵箱即可完成修改。 圖3.1(5)修改流程圖 3.2源程序代碼 #include typedef struct Person pe[80]; int menu_select() { char c;do{ system(“cls”); printf(“tt *****通訊錄***** n”); printf(“tt┌───────┐n”); printf(“tt│ 1.添加記錄 │n”);printf(“tt│ 2.顯示記錄 │n”);printf(“tt│ 3.刪除記錄 │n”);printf(“tt│ 4.查詢記錄 │n”);printf(“tt│ 5.修改記錄 │n”);{ char score; /*編號*/ char name[10]; /*姓名*/ char num[15]; /*號碼*/ char email[20];char age[8];char adds[20]; /*郵箱*/ /*年齡*/ /*住址*/ }Person; } printf(“tt│ 6.保存記錄 │n”);printf(“tt│ 0.退出程序 │n”);printf(“tt└───────┘n”);printf(“tt請您選擇(0-6):”);c=getchar(); }while(c<'0'||c>'6');return(c-'0'); int Input(Person per[],int n){ gets(x); int i=0; char sign,x[10]; while(sign!='n'&&sign!='N'){ printf(“t編號:”); scanf(“t%d”,&per[n+i].score);printf(“t姓名:”); scanf(“t%s”,per[n+i].name);printf(“t年齡:”);scanf(“t%s”,per[n+i].age);printf(“t電話號碼:”);scanf(“t%s”,per[n+i].num);printf(“t通訊住址:”);scanf(“t%s”,per[n+i].adds);printf(“t電子郵箱:”);scanf(“t%s”,per[n+i].email); } } printf(“nt是否繼續(xù)添加?(Y/N)”);scanf(“t%c”,&sign);i++; return(n+i); void Display(Person per[],int n) { int i; printf(“--------n”); /*格式*/ printf(“%-5d%-8s%-6s%-13s%-15s%-15sn”,per[i-1].score,per[i-1].name,per[i-1].age,perprintf(“編號 姓名 年齡 電話號碼 通訊地址 電子郵箱n”);printf(“--------n”); for(i=1;i { [i-1].num,per[i-1].adds,per[i-1].email); } printf(“--------n”);system(“pause”);if(i>1&&i%10==0) { } printf(“t----n”);printf(“t”);system(“pause”); printf(“t----n”);} int Delete_a_record(Person per[],int n){ } char s[20];int i=0,j; printf(“t請輸入想刪除記錄中的名字:”);scanf(“%s”,s); while(strcmp(per[i].name,s)!=0&&i } for(j=i;j } printf(“ttt已經(jīng)成功刪除!n”);return(n-1);strcpy(per[j].num,per[j+1].num);strcpy(per[j].name,per[j+1].name);strcpy(per[j].age,per[j+1].age);strcpy(per[j].adds,per[j+1].adds);strcpy(per[j].email,per[j+1].email);per[j].score=per[j+1].score;printf(“t通訊錄中沒有此人!n”);return(n);void Query_a_record(Person per[],int n){ int m;printf(“tn請選擇查詢方式:n”); printf(“t┌──────┐n”); printf(“t│1------姓名 │n”); printf(“t│2------電話 │n”); printf(“t│3------地址 │n”); printf(“t│4------返回 │n”); printf(“t└──────┘n”); printf(“請選擇:”); scanf(“%d”,&m); while(m!=1&&m!=2&&m!=3&&m!=4) { if(m==1){ char s[20];int i=0; printf(“t請輸入想查詢的姓名:”);scanf(“t%s”,s); while(strcmp(per[i].name,s)!=0&&i } printf(“輸入錯誤,請重新選擇:”);scanf(“%d”,&m); };} return; printf(“t此人編號: %dn”,per[i].score);printf(“t此人年齡: %sn”,per[i].age);printf(“t電話號碼: %sn”,per[i].num);printf(“t通訊地址: %sn”,per[i].adds);printf(“t電子郵箱: %sn”,per[i].email);if(m==2){ char s[20];int i=0; printf(“t請輸入想查詢的電話:”);scanf(“t%s”,s); while(strcmp(per[i].num,s)!=0&&i };} printf(“t此人編號: %dn”,per[i].score);printf(“t此人姓名: %sn”,per[i].name);printf(“t此人年齡: %sn”,per[i].age);printf(“t通訊地址: %sn”,per[i].adds);printf(“t電子郵箱: %sn”,per[i].email); } if(m==3){ };char s[20];int i=0; printf(“t請輸入想查詢的地址:”);scanf(“t%s”,s); while(strcmp(per[i].adds,s)!=0&&i } printf(“t此人編號: %dn”,per[i].score);printf(“t此人姓名: %sn”,per[i].name);printf(“t此人年齡: %sn”,per[i].age);printf(“t電話號碼: %sn”,per[i].num);printf(“t電子郵箱: %sn”,per[i].email);printf(“t通訊錄中沒有此人!n”);return; void Change(Person per[],int n){ char s[20];int i=0; printf(“t請輸入想修改的記錄中的名字:”);scanf(“%s”,s); while(strcmp(per[i].name,s)!=0&&i printf(“t通訊錄中沒有此人!n”); return; } printf(“t編號:”); scanf(“t%d”,&per[i].score); printf(“t姓名:”); scanf(“t%s”,per[i].name); printf(“t年齡:”); scanf(“t%s”,per[i].age);printf(“t電話號碼:”); scanf(“t%s”,per[i].num); printf(“t通訊住址:”); scanf(“t%s”,per[i].adds);printf(“t電子郵箱:”);scanf(“t%s”,per[i].email);printf(“t修改成功!”);} void WritetoText(Person per[],int n) { int i=0; FILE *fp; char filename[20]; printf(“t保存到文件n”); printf(“t請輸入所保存的文件名:”); scanf(“t%s”,filename); if((fp=fopen(filename,“w”))==NULL) /*定義文件指針*/ /*定義文件名*/ /*輸入文件名*/ { } fprintf(fp,“****************************************** 通 訊 錄printf(”t無法打開文件n“);system(”pause“);return; ******************************************n”);fprintf(fp,“編號 姓名 年齡 電話號碼 通訊地址 電子郵箱n”);; fprintf(fp,“%-3dt%-6st%-3st%-13st%-20st%-20sn”,per[i].score,per[i].name,per[i].agwhile(i ;fprintf(fp,“***************************************共有%d 條記錄 } fprintf(fp,”----------------------------n“)i++; ****************************************n”,n); } void main() /*主函數(shù)*/ { int n=0;fclose(fp); /*關(guān)閉文件*/ printf(“保存成功!n”);for(;;){ switch(menu_select()) { case 1: printf(“nt添加記錄到通訊錄n”); n=Input(pe,n);break; case 2: printf(“nttt 通訊錄記錄表n”);Display(pe,n); break; case 3: printf(“nt從通訊錄中刪除記錄n”);n=Delete_a_record(pe,n); printf(“t”); system(“pause”);break; case 4: printf(“nt在通訊錄中查找記錄n”);Query_a_record(pe,n); printf(“t”); system(“pause”); break; case 5: /*添加記錄*/ /*顯示記錄*/ /*刪除記錄*/ /*查找記錄*/ printf(“nt修改通訊錄中的記錄n”); Change(pe,n); printf(“t”); system(“pause”); break; case 6: printf(“nt保存功能n”); WritetoText(pe,n); printf(“t”); system(“pause”); break; case 0: printf(“ntt謝謝使用,再見!n”); printf(“ntt”); system(“pause”); exit(0); } } } /*修改數(shù)據(jù)*/ /*保存數(shù)據(jù)*/ /*結(jié)束程序*/ 4調(diào)試分析 調(diào)試的意義和目的:在管理信息系統(tǒng)的開發(fā)過程中,面對著錯綜復(fù)雜的各種問題,人的主觀認(rèn)識不可能完全符合客觀現(xiàn)實,開發(fā)人員之間的思想交流也不可能十分完善。所以,在管理信息系統(tǒng)開發(fā)周期的各個階段都不可避免地會出現(xiàn)差錯。開發(fā)人員應(yīng)力求在每個階段結(jié)束之前進(jìn)行認(rèn)真、嚴(yán)格的技術(shù)審查,盡可能早的發(fā)現(xiàn)并糾正錯誤,否則等到系統(tǒng)投入運行后再回頭來改正錯誤將在人力、物力上造成很大的浪費,有時甚至導(dǎo)致整個系統(tǒng)的癱瘓。然而,經(jīng)驗表明,單憑審查并不能發(fā)現(xiàn)全部差錯,加之在程序設(shè)計階段也不可避免還會產(chǎn)生新的錯誤,所以,對系統(tǒng)進(jìn)行調(diào)試是不可缺少的,是保證系統(tǒng)質(zhì)量的關(guān)鍵步驟。統(tǒng)計資料表明,對于一些較大規(guī)模的系統(tǒng)來說,系統(tǒng)調(diào)試的工作量往往占程序系統(tǒng)編制開發(fā)總工作量的40%以上。 調(diào)試的目的在于發(fā)現(xiàn)其中的錯誤并及時糾正,所以在調(diào)試時應(yīng)想方設(shè)法使程序的各個部分都投入運行,力圖找出所有錯誤。錯誤多少與程序質(zhì)量有關(guān)。即使這樣,調(diào)試通過也不能證明系統(tǒng)絕對無誤,只不過說明各模塊、各子系統(tǒng)的功能和運行情況正常,相互之間連接無誤,系統(tǒng)交付用戶使用以后,在系統(tǒng)的維護(hù)階段仍有可能發(fā)現(xiàn)少量錯誤并進(jìn)行糾正,這也是正常的。 4.1測試 1).顯示的主菜單界面: 圖4.1(1)主菜單界面 2).添加界面: 圖4.1(2)添加界面 3).顯示界面: 圖4.1(3)顯示界面 4).刪除界面: 圖4.1(4)刪除前界面 刪除后,通訊錄里的顯示記錄: 圖(4)刪除后界面 5).查詢界面:以姓名查詢方式為例: 圖4.1(5)查詢界面 6).修改界面: 圖4.1(6)修改前界面 修改后,通訊錄里的顯示記錄: 圖4.1(6)修改后界面 7).保存界面: 圖4.1(7)保存界面 通訊錄.txt 文件截圖: 圖4.1文件截圖 4.2問題思考與調(diào)試: 1.當(dāng)我在進(jìn)行刪除、查詢、修改、保存等功能時,以查詢?yōu)槔斎朊职椿剀嚭?,雖然會顯示該人的所有記錄,但是顯示后,它馬上自動消失了,還沒來得及等我看內(nèi)容。因此,向別人請教后,在一些地方加入了system(“pause”);這個語言,用來對某項操作完成后進(jìn)行暫停。 2.現(xiàn)在這個程序的界面?zhèn)€人感覺很清爽。但在最初,每次進(jìn)行一項操作,運行窗口里的內(nèi)容會一直保留著,感覺很雜亂,如下圖(添加后,進(jìn)行顯示操作): 圖4.2分析圖 之后,我去網(wǎng)上尋求解決辦法,知道可以使用system(“cls”);這一語句可以解決這個問題,最后,修改成功。5總結(jié) 這次的程序?qū)嵲O(shè)計實驗是對我們進(jìn)入大學(xué)以來學(xué)習(xí)程序設(shè)計語言結(jié)果的一次大檢驗。自己動手,自己發(fā)現(xiàn)和解決問題。發(fā)現(xiàn)了自己的許多不足。平時沒有掌握好的知識在這次實驗中徹底暴露出來,經(jīng)過不斷思考,不斷查閱資料和上機(jī)運行,解決其中大部分問題,當(dāng)然還存在一些問題沒有解決。我相信在以后的學(xué)習(xí)能夠解決好它們。但是,收獲還是不小的,我不僅對C的操作有了進(jìn)一步的掌握,還了解到了程序設(shè)計的書寫風(fēng)格及其注釋的格式。 當(dāng)我選擇通訊錄這個題目時,一開始想運用大量鏈表及指針來完成,但是在慢慢琢磨之后,覺得這個不一定要用鏈表,于是改變了編程思路。當(dāng)然還有不少文件的讀寫問題,不過還是通過不斷測試之后順利解決了。另外一點要說的就是這個程序用了很多的循環(huán),因此對于循環(huán)的控制要十分小心,有時while和do-while的區(qū)別也是十分重要的。 還有一點體會就是,書上和老師教的內(nèi)容是有限的,我們需要不斷地靠自己去學(xué)習(xí),向他人請教,了解和掌握更多的知識,這樣我們才能編出更好的C程序。 總體來說,這次C語言程序設(shè)計實驗還是比較成功的,雖然最終程序還存在一些不足,但能取得這樣的成績我還是比較高興的。 最后,要感謝學(xué)校為我們提供這次實驗機(jī)會,也要感謝老師的教導(dǎo)和好心人對我的幫助與支持。 參考文獻(xiàn) [1]譚浩強(qiáng),張基溫。C語言程序設(shè)計教程。第三版。北京:高等教育出版社,2006 [2]譚浩強(qiáng),張基溫。C語言習(xí)題集與上機(jī)指導(dǎo)。第三版。北京:高等教育出版社,2006 [3]譚浩強(qiáng)。C程序設(shè)計(第三版)。北京:清華大學(xué),2005 [4]譚浩強(qiáng)。C程序設(shè)計(第二版)。北京:清華大學(xué),1999 [5]林建秋,韓靜萍,等.C語言程序設(shè)計【M】.電子工業(yè)出版社,2004.[6]譚浩強(qiáng).C語言程序設(shè)計【M】.清華大學(xué)出版社,2006.[7]黃維通.C語言設(shè)計教程.清華大學(xué)出版社,2005.[8]王成瑞.C語言程序設(shè)計.中國水利水電出版社,2005.[9]張基溫.C語言程序設(shè)計案例教程.清華大學(xué)出版社,2004.[10]蘇小紅,陳惠鵬.C語言大學(xué)實用教程【M】.電子工業(yè)出版社,2007.致 謝 在這里我要感謝楊書鴻老師,她對我進(jìn)行了無私的指導(dǎo)和幫助,不厭其煩的幫助進(jìn)行論文的修改和改進(jìn)。另外,在校圖書館查找資料的時候,圖書館的老師也給我提供了很多方面的支持與幫助。在此向幫助和指導(dǎo)過我的各位老師表示最中心的感謝!感謝這篇論文所涉及到的各位學(xué)者,如果沒有各位學(xué)者的研究成果的幫助和啟發(fā),我將很難完成本篇論文的寫作。感謝我的同學(xué)和朋友,在我寫論文的過程中給予我很多素材,還在論文的撰寫和排版等過程中提供熱情的幫助。由于我的學(xué)術(shù)水平有限,所寫論文難免有不足之處,懇請各位老師和學(xué)友批評和指正! package cn.pab.manager; import java.util.List;import java.util.Scanner; import cn.pab.dao.PersonDao;import cn.pab.dao.TypeDao;import cn.pab.dao.UserDao;import cn.pab.dao.impl.PersonDaoImpl;import cn.pab.dao.impl.TypeDaoImpl;import cn.pab.dao.impl.UserDaoImpl;import cn.pab.entity.Person;import cn.pab.entity.Type;/** * 業(yè)務(wù)類 */ public class PABmanager { /** * 系統(tǒng)啟動 */ public static void main(String[] args){ Scanner input = new Scanner(System.in); UserDao userDao = new UserDaoImpl(); TypeDao typeDao = new TypeDaoImpl(); PersonDao personDao = new PersonDaoImpl(); System.out.println(“***********歡迎使用個人通訊錄管理系統(tǒng)**********”); System.out.print(“n請選擇操作(1.系統(tǒng)登錄 2.密碼修改 3.取消):”); String in = input.next(); if(“1”.equals(in)){ boolean islogin = userDao.login(); if(islogin){ System.out.println(“***********成功登錄個人通訊錄管理系統(tǒng)**********”); //System.out.print(“n請選擇操作(1.類別管理 2.聯(lián)系人管理 3.退出系統(tǒng)):”); }else{ System.out.println(“用戶名或密碼錯誤,不能登錄!”); System.exit(-1); } }else if(“2”.equals(in)){ boolean modiFlag = userDao.modify(); if(modiFlag){ System.out.println(“密碼修改成功!”);}else{ System.out.println(“密碼修改失敗!”);} System.exit(-1);}else{ System.out.println(“您已經(jīng)退出系統(tǒng)!”);System.exit(-1);} while(true){ System.out.print(“n請選擇操作(1.類別管理 2.聯(lián)系人管理 3.退出系統(tǒng)):”);String in2 = input.next();if(“1”.equals(in2)){ while(true){ System.out.print(“n請繼續(xù)選擇操作(1.新建類別 2.查詢類別 3.刪除類別 4.返回):”); String num = input.next(); if(“1”.equals(num)){ System.out.print(“請輸入類別的名稱:”);String lbmc = input.next(); System.out.print(“請輸入類別的說明:”);String lbsm = input.next();System.out.print(“請輸入類別的備注:”);String lbbz = input.next(); Type type = new Type(lbmc,lbsm,lbbz); typeDao.createType(type);}else if(“2”.equals(num)){ List System.out.println(“tt類別信息列表”); System.out.println(“類別名稱tt類別說明tt類別備注”); for(int i = 0;i < types.size();i++){ Type type =types.get(i); System.out.print(type.getLbmc()+“t”); System.out.print(type.getLbsm()+ “tt”); System.out.println(type.getLbbz()); } }else if(“3”.equals(num)){ System.out.print(“請輸入類別的名稱:”); String lbmc = input.next(); Type type = new Type(lbmc,null,null); typeDao.deleteType(type);}else if(“4”.equals(num)){ break;}else{ System.out.println(“您輸入不合法,請重新選擇!”); } } }else if(“2”.equals(in2)){ while(true){ System.out.print(“n請繼續(xù)選擇操作(1.新建聯(lián)系人 2.查詢聯(lián)系人 3.更新聯(lián)系人 4.刪除聯(lián)系人 5.返回):”); String num = input.next(); if(“1”.equals(num)){ System.out.print(“請輸入聯(lián)系人的類別名稱:”);String lb = input.next(); System.out.print(“請輸入聯(lián)系人的姓名:”);String xm = input.next(); System.out.print(“請輸入聯(lián)系人的電話:”);String dh = input.next(); System.out.print(“請輸入聯(lián)系人的手機(jī)號:”);String sjh = input.next(); System.out.print(“請輸入聯(lián)系人的工作單位:”);String gzdw = input.next(); System.out.print(“請輸入聯(lián)系人的住址:”); String zz = input.next(); System.out.print(“請輸入聯(lián)系人的郵政編碼:”); String yzbm = input.next(); Person person = new Person(lb,xm,dh,sjh,gzdw,zz,yzbm); personDao.createPerson(person); }else if(“2”.equals(num)){ System.out.print(“請輸入聯(lián)系人的姓名:”); String name = input.next(); Person p = personDao.queryPerson(name); System.out.println(“tt查詢到的聯(lián)系人信息”); System.out.println(“類別t姓名t電話tt手機(jī)號tt工作單位t住址t郵政編碼”); System.out.print(p.getLb()+ “t”); System.out.print(p.getXm()+ “t”); System.out.print(p.getDh()+ “t”); System.out.print(p.getSjh()+ “t”); System.out.print(p.getGzdw()+ “t”); System.out.print(p.getZz()+ “t”); System.out.println(p.getYzbm()); } } } }else if(“3”.equals(num)){ System.out.print(“請輸入需更新的聯(lián)系人編號:”); int id = input.nextInt(); System.out.print(“請輸入需更新的聯(lián)系人信息選項:”); String item = input.next(); System.out.print(“請輸入聯(lián)系人信息選項的值:”); String val = input.next(); personDao.updatePerson(id,item, val); }else if(“4”.equals(num)){ System.out.print(“請輸入要刪除聯(lián)系人的姓名:”); String name = input.next(); personDao.deletePerson(name); }else if(“5”.equals(num)){ break; }else{ System.out.println(“您輸入不合法,請重新選擇!”); } } }else if(“3”.equals(in2)){ System.out.println(“您已經(jīng)退出系統(tǒng)!”);System.exit(-1);}else{ System.out.println(“您輸入不合法,請重新選擇!”);} 演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案 倉庫庫存管理系統(tǒng)源程序 #include char name[20];//物品名稱 int num; //商品數(shù)量 int level;//物品等級 }item;typedef struct node { struct item data;struct node * next;}Node,*Link;//定義為鏈表 void menu()//頁面顯示函數(shù) { 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案 system(“cls”);//清屏函數(shù) printf(“***********************************《物品庫存管理》*****************************n”);printf(“ n”); printf(“n <1> 物品入庫管理ntn <2> 物品出庫管理n”);printf(“n <3> 瀏覽庫內(nèi)物品信息ntn <4> 修改物品信息n”);printf(“n <5> 保存物品信息ntn <0> 退出庫存管理n”);printf(“ n”);cout<<“********************************************************************************”< void printstart(){ printf(“-----------n”);printf(“n 請選擇操作:”); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案 } void Wrong()//錯誤處理函數(shù) { printf(“輸入錯誤!n”);getchar();getchar();menu(); return;} void Nofind(){ printf(“沒有找到該物品!n”);} void printc()//本函數(shù)用于輸出中文 { printf(“ 物品編碼 物品名稱 物品數(shù)量 n”);} void printe(Node *p)//輸出物品信息函數(shù) { cout< ”< data.code<<“ ”< data.name<<“ ”< data.num<<“ 精心收集 精心編輯 精致閱讀 如需請下載!物品等級 演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案 ”< data.level;} Node *Locate(Link l,char findmess[],char nameorcode[])//用于定位連接中,符合要求的結(jié)點,并返回該指針 { Node *r;if(strcmp(nameorcode,“code”)==0)// { } else if(strcmp(nameorcode,“name”)==0)//按名稱查詢 { r=l->next;while(r!=NULL){ r=l->next;while(r!=NULL){ } if(strcmp(r->data.code,findmess)==0)return r;r=r->next; 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案 } } } if(strcmp(r->data.name,findmess)==0)return r;r=r->next;return 0;void Add(Link l)//增加物品函數(shù) { Node *p,*r,*s;char code[10];r=l;s=l->next;while(r->next!=NULL)r=r->next;while(l){ system(“cls”);//清屏函數(shù) cout<<“請輸入商品編碼(輸入'0'返回上一級菜單):”< 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案 while(s){ if(strcmp(s->data.code,code)==0){ printf(“物品編碼為'%s'的物品已經(jīng)存在,如果要修改請選擇'4 修改'!n”,code); printstart(); printc(); printe(s); printstart(); printf(“n”); return; } s=s->next; } p=(Node *)malloc(sizeof(Node)); strcpy(p->data.code,code); printf(“請輸入物品名稱:”); scanf(“%s”,p->data.name);getchar(); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案 printf(“請輸入物品數(shù)量:”); scanf(“%d”,&p->data.num); printf(“請輸入物品等級:”); scanf(“%d”,&p->data.level); p->next=NULL; r->next=p; r=p; shoudsave=1;} menu();} void Qur(Link l)//查詢物品信息函數(shù) { int sel;char findmess[20];Node *p;if(!l->next){ printf(“n沒有信息可查詢!n”); getchar(); getchar();menu(); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案 return; } system(“cls”);//清屏函數(shù) printf(“n 1按物品編碼查詢n 2按物品名稱查詢n”);scanf(“%d”,&sel);if(sel==1)// { printf(“請輸入要查詢的編碼:n”);scanf(“%s”,findmess);p=Locate(l,findmess,“code”);if(p){ printf(“tttt查詢結(jié)果n”); printstart(); cout< printc(); cout< printe(p); cout< printstart(); getchar();getchar(); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案 } } menu();return;else Nofind();else if(sel==2)// { printf(“請輸入要查找的物品名稱:”);scanf(“%s”,findmess);p=Locate(l,findmess,“name”);if(p){ printf(“ttt查詢結(jié)果n”); printstart();cout< printc();cout< printe(p);cout< printstart(); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案 getchar(); getchar(); menu(); return; } else Nofind(); } else Wrong();getchar(); system(“cls”);//清屏函數(shù) menu();} void Del(Link l)//刪除 { int sel;Node *p,*r;char findmess[20];if(!l->next){ system(“cls”);//清屏函數(shù) 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案 } printf(“n您的倉庫為空!n”);getchar();getchar();menu();return;system(“cls”);//清屏函數(shù) printf(“n 1按物品編碼出倉n 2按物品名稱出倉n”);scanf(“%d”,&sel);if(sel==1){ printf(“請輸入要出倉的物品編碼:”);scanf(“%s”,findmess);p=Locate(l,findmess,“code”);if(p){ r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf(“n該物品已經(jīng)成功出倉n”); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案 } } shoudsave=1;getchar();getchar();menu();return;else Nofind();else if(sel==2){ system(“cls”);//清屏函數(shù) printf(“請輸入要出倉的物品名:”);scanf(“%s”,findmess);p=Locate(l,findmess,“name”);if(p){ r=l;while(r->next!=p)r=r->next;r->next=p->next; 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案 } } } free(p);printf(“n該物品已經(jīng)成功出倉!n”);shoudsave=1;getchar();getchar();menu();return;else Nofind();else Wrong();void Modify(Link l)//物品信息修改 { Node *p;char findmess[20];if(!l->next){ system(“cls”);//清屏函數(shù) printf(“n您的庫存為空,無需修改!n”); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案 } getchar();getchar();menu();return;printf(“請輸入要修改的物品編碼:”);scanf(“%s”,findmess);p=Locate(l,findmess,“code”);if(p){ system(“cls”);//清屏函數(shù) printf(“請輸入新編碼(原來的是%s):”,p->data.code);scanf(“%s”,p->data.code);printf(“請輸入新名稱(原來的是%s):”,p->data.name);scanf(“%s”,p->data.name);getchar();printf(“請輸入新的物品數(shù)量(原來的是%d):”,p->data.num);scanf(“%d”,&p->data.num);getchar();printf(“請輸入新的物品等級(原來的是%d):”,p->data.level);scanf(“%d”,&p->data.level); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案 getchar(); printf(“n修改資料成功!n”); shoudsave=1; getchar();menu(); return;} else Nofind();getchar();menu();} void Disp(Link l){ int count=0;Node *p;p=l->next;if(!p){ printf(“n 沒有資料可以顯示!n”); getchar();getchar(); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案 menu(); return;} printf(“tttt顯示結(jié)果n”);printstart();printc();printf(“n”);while(p){ printe(p); p=p->next;} printstart();printf(“n”);} void Save(Link l)//物品信息保存 { FILE *fp;Node *p;int flag=1,count=0;fp=fopen(“c:student”,“wb”); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案 if(fp==NULL){ printf(“n重新打開文件時錯誤!n”);exit(1);} p=l->next;while(p){ if(fwrite(p,sizeof(Node),1,fp)==1){ p=p->next; count++;} else { flag=0; break;} } if(flag){ system(“cls”);//清屏函數(shù) 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案 printf(“n 文件保存成功.(有%d條記錄保存成功.)n”,count); shoudsave=0; getchar(); getchar(); menu();} fclose(fp);} void main()//主函數(shù) { menu();Link l;//鏈表 Node *r;int sel;char ch;int count=0;l=(Node *)malloc(sizeof(Node));l->next=NULL;r=l;while(l){ scanf(“%d”,&sel); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案 if(sel==0){ if(shoudsave==1){ getchar();printf(“n 資料已改動,是否將改動的文件保存到文件中(y or n)?n”); } switch(sel){ case 1:Add(l);break;//物品進(jìn)庫 case 2:Del(l);break;//物品出庫 case 3:Qur(l);break;//查詢物品 case 4:Modify(l);break;//修改物品信息 case 5:Save(l);break;//保存物品信息 } printf(“n 已退出系統(tǒng)!n”);break;scanf(“%c”,&ch);if(ch=='y' || ch=='Y')Save(l); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結(jié) 調(diào)研報告 講話稿 事跡材料 心得體會 策劃方案 default:Wrong();getchar();break;} 精心收集 精心編輯 精致閱讀 如需請下載! } }第二篇:通訊錄管理系統(tǒng)
第三篇:通訊錄管理系統(tǒng)
第四篇:個人通訊錄管理系統(tǒng),java源代碼
第五篇:倉庫庫存管理系統(tǒng)源程序