版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C程序課程設(shè)計報告--通訊錄管理系統(tǒng)姓名:謝駿學(xué)院:珠寶學(xué)院學(xué)號:20231002649班級:141082一課程設(shè)計目的和內(nèi)容概述1.目的:加深對《C語言》課程所學(xué)知識的理解,進(jìn)一步穩(wěn)固C語言編程方法。學(xué)會編制結(jié)構(gòu)清晰、風(fēng)格良好、數(shù)據(jù)結(jié)構(gòu)適當(dāng)?shù)腃語言程序,從而具備解決綜合性實際問題的能力,加強(qiáng)動手能力。2.內(nèi)容:設(shè)計一個簡易的通訊錄管理系統(tǒng)。該題目要求在熟練掌握C語言的根本知識:數(shù)據(jù)類型〔整形、實型、字符型、指針、數(shù)組、結(jié)構(gòu)等〕;運(yùn)算類型〔算術(shù)運(yùn)算、邏輯運(yùn)算、自增自減運(yùn)算、賦值運(yùn)算等〕;程序結(jié)構(gòu)〔順序結(jié)構(gòu)、判斷選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)〕;大程序的功能分解方法〔即函數(shù)的使用〕等。進(jìn)一步掌握各種函數(shù)的應(yīng)用,包括時間函數(shù)、、繪圖函數(shù),以及文件的讀寫操作等。其中結(jié)構(gòu)體,函數(shù)的調(diào)用,算法的設(shè)計是尤為重要的。二題目通訊錄管理系統(tǒng)。[問題描述]
該系統(tǒng)模擬通訊錄管理系統(tǒng),實現(xiàn)對中的通訊錄進(jìn)行管理
[根本要求]
要能提供以下幾種功能:
(1)查看功能:選擇此功能時,列出以下三類選擇:
A:辦公類
B:個人類
C:商務(wù)類
(2)中選中某類時,顯示出此類所有數(shù)據(jù)中的姓名和號碼
(3)添加數(shù)據(jù)功能:能錄入新數(shù)據(jù),每個結(jié)點包括:姓名,號碼,分類(可能選項有:w為辦公類p為個人類b為商務(wù)類),電子郵件。。
(5)刪除功能:選中某個人的姓名時,可對此人的相應(yīng)數(shù)據(jù)進(jìn)行刪除,并自動調(diào)整后續(xù)條目的編號。三程序設(shè)計1.總體設(shè)計首先,因為每個個體有多種信息,所以要建立結(jié)構(gòu)體來儲存和整合各個信息。然后利用模塊來分別實現(xiàn)程序的各個功能。各個模塊用函數(shù)來實現(xiàn)。在通過通過主函數(shù)來判斷輸入字母,從而調(diào)動函數(shù),實現(xiàn)所需功能。最后將輸入的文件保存在文件里,以便重復(fù)使用。2.詳細(xì)設(shè)計根據(jù)功能需要建立顯示,添加,查看,刪除,修改,保存五個模塊。在模塊中通過調(diào)用各個函數(shù)來實現(xiàn)功能。詳細(xì)設(shè)計如下:〔1〕構(gòu)建結(jié)構(gòu)體,寫入文件FILE*fp;inti;structaddress{chara[40];//email地址};structffriend{intnum;charname[20];charkind[20];longtelephone;structaddressaddress;}friends[50];voidLoad(){intj;longk;fp=fopen("friend.txt","a+");//翻開文件friend.txtif(fp!=NULL){for(i=1;i<50;i++){j=fgetc(fp);if(j==EOF)//判斷是否到了文件尾return;k=i-1;fseek(fp,k*sizeof(structffriend),SEEK_SET);fread(&friends[i],sizeof(structffriend),1,fp);//從文件中讀取一條記錄}}else{fp=fopen("friend.txt","w");i=1;}〔2〕構(gòu)造函數(shù)與模塊構(gòu)造顯示模塊,增加模塊,刪除模塊,修改模塊,查詢模塊。程序如下:voidShow(intj){system("cls");//實現(xiàn)分屏操作的函數(shù)printf("\n\n\t編號-Nnumber:%3d",friends[j].num);printf("\n\t姓名-Name:%-20s",friends[j].name);printf("\n\t性別-kind:%s",friends[j].kind);printf("\n\t聯(lián)系-Telephone:%-13ld",friends[j].telephone);printf("\n\temail-address:%-40s",friends[j].address.a);}voidAppend(intj){system("cls");friends[j].num=j;printf("\n\t\t\t序號-Number:%d",j);printf("\n\t\t\t姓名-Name:");scanf("%s",friends[j].name);printf("\t\t\t類別-kind:");scanf("%s",&friends[j].kind);printf("\t\t\t聯(lián)系-telephone:");scanf("%ld",&friends[j].telephone);{printf("號碼不合法!請重新輸入:");scanf("%ld",&friends[j].telephone);}printf("\t\t\temail-Address:");scanf("%s",friends[j].address.a);getchar();}voidDelete(){intk;intj;system("cls");printf("\n\tDelete序號-Number:");scanf("%d",&k);if(k<=i){for(j=k;j<i+1;j++)/*插入位置后的元素順序后移*/{strcpy(friends[j].name,friends[j+1].name);/*交換元素內(nèi)容*/strcpy(friends[j].kind,friends[j+1].kind);friends[j].telephone=friends[j+1].telephone;strcpy(friends[j].address.a,friends[j+1].address.a);}i--;}else{printf("輸入的序號太大!");}}voidModify(intj){system("cls");Append(j);}voidSave(){inti,j;system("cls");printf("\n\n\t\t請耐心等待,信息正在保存!\n");printf("\n\n\n\n\t\t\tSaving");for(i=0;i<20;i++){Sleep(300);printf(".");}printf("\n\n信息已經(jīng)保存成功!\n");fp=fopen("friend.txt","w");for(j=1;j<=i;j++){fwrite(&friends[j],sizeof(structffriend),1,fp);}fclose(fp);}〔3〕主函數(shù)調(diào)用各個模塊用switch語句判斷輸入者要使用的功能,然后調(diào)用函數(shù),模塊實現(xiàn)功能。程序如下:voidmain(){intj;chara;charx;chargrade;charsearchkind[20]; charsearchname[20];i--;system("cls");do{printf("\n\n\t\t\t=========================================\n");printf("\t\t\t\t通訊錄\n");printf("\t\t\t\t功能選擇\n");//輸出主界面printf("\t\t\t=========================================\n");printf("\t\t\tA.查看*\n");printf("\t\t\tB.增添*\n");printf("\t\t\tC.刪除*\n"); printf("\t\t\tD.查詢*\n");printf("\t\t\tE.修改*\n");printf("\t\t\tF.保存*\n");printf("\t\t\t=========================================\n");printf("\t\t\n請選擇(Choice)\n\n\t\t注:輸入a~h或A~H的字母:");scanf("%c",&grade);switch(grade)//用switch判斷使用者要選擇的功能{case'a':case'A':j=0;while(getchar()!=0x1b&&j<=i){Show(j++);printf("\n\n請按回車鍵繼續(xù)!");}while(getchar()==0x1b||j>i){printf("\n\t空文檔,無任何記錄-EmptyNote\n");printf("\n\n請按回車鍵繼續(xù)!");getchar();break;}printf("\n\t\t\t\t\t\t\t此次操作結(jié)束");printf("\n\t------------------------------------------------------------\t\t\n");break;case'b':case'B':while(i<=50){i++;Append(i);printf("\t是否繼續(xù)增加?(y/n)");a=getchar(); if(a=='n')break;}if(i==51)printf("\n\t文檔已滿,無法增加記錄-notefull");printf("\n\t\t\t\t\t\t\t此次操作結(jié)束");printf("\n\t------------------------------------------------------------\t\t\n");getchar();break;case'c':case'C':Delete();if(i<1)printf("\n沒有記錄-Norecords\n");printf("\n\n請按回車鍵繼續(xù)!");getchar();getchar();printf("\n\t\t\t\t\t\t\t此次操作結(jié)束");printf("\n\t------------------------------------------------------------\t\t\n");break;case'd':case'D':system("cls");printf("\n\t請輸入要查詢記錄的相關(guān)類別:p.個人類b.商務(wù)類w.辦公類");scanf("%s",searchkind);for(j=0;j<=i;j++){if(strcmp(searchkind,friends[j].kind)==0){Show(j);}}getchar();break;case'e':case'E':printf("\n\t請輸入要修改記錄的相關(guān)姓名:");gets(searchname);scanf("%s",searchname);for(j=0;j<=i;j++){if(strcmp(searchname,friends[j].name)==0){Modify(j);}}if(i<1){printf("\n沒有您所要修改的記錄-Norecords");printf("\n請按回車鍵繼續(xù)!");getchar();getchar();}printf("\n\t\t\t\t\t\t\t此次操作結(jié)束");printf("\n\t------------------------------------------------------------\t\t\n");break;case'f':case'F':system("cls");Save();getchar();printf("\n\t\t\t\t\t\t\t此次操作結(jié)束");printf("\n\t------------------------------------------------------------\t\t\n");break;default:printf("\n\t輸入有誤,請輸入正確的序列號!");printf("\n請按回車鍵繼續(xù)!");getchar();printf("\n\t\t\t\t\t\t\t此次操作結(jié)束");printf("\n\t------------------------------------------------------------\t\t\n");}}while(1);}上述三局部實現(xiàn)整個程序的功能。四程序源代碼#include<stdlib.h>#include<string.h>#include<conio.h>#include<stdio.h>#include<dos.h>#include<windows.h>#include<time.h>voidMenu();FILE*fp;inti;structaddress{chara[40];};structffriend{intnum;charname[20];charkind[20];longtelephone;structaddressaddress;}friends[50];voidLoad(){intj;longk;fp=fopen("friend.txt","a+");if(fp!=NULL){for(i=1;i<50;i++){j=fgetc(fp);if(j==EOF)return;k=i-1;fseek(fp,k*sizeof(structffriend),SEEK_SET);fread(&friends[i],sizeof(structffriend),1,fp);}}else{fp=fopen("friend.txt","w");i=1;}system("cls");}voidShow(intj){system("cls");printf("\n\n\t編號-Nnumber:%3d",friends[j].num);printf("\n\t姓名-Name:%-20s",friends[j].name);printf("\n\t性別-kind:%s",friends[j].kind);printf("\n\t聯(lián)系-Telephone:%-13ld",friends[j].telephone);printf("\n\temail-address:%-40s",friends[j].address.a);}voidAppend(intj){system("cls");friends[j].num=j;printf("\n\t\t\t序號-Number:%d",j);printf("\n\t\t\t姓名-Name:");scanf("%s",friends[j].name);printf("\t\t\t類別-kind:");scanf("%s",&friends[j].kind);printf("\t\t\t聯(lián)系-telephone:");scanf("%ld",&friends[j].telephone);{printf("號碼不合法!請重新輸入:");scanf("%ld",&friends[j].telephone);}printf("\t\t\temail-Address:");scanf("%s",friends[j].address.a);getchar();}voidDelete(){intk;intj;system("cls");printf("\n\tDelete序號-Number:");scanf("%d",&k);if(k<=i){for(j=k;j<i+1;j++){strcpy(friends[j].name,friends[j+1].name);strcpy(friends[j].kind,friends[j+1].kind);friends[j].telephone=friends[j+1].telephone;strcpy(friends[j].address.a,friends[j+1].address.a);}i--;}else{printf("輸入的序號太大!");}}voidModify(intj){system("cls");Append(j);}voidSave(){inti,j;system("cls");printf("\n\n\t\t請耐心等待,信息正在保存!\n");printf("\n\n\n\n\t\t\tSaving");for(i=0;i<20;i++){Sleep(300);printf(".");}printf("\n\n信息已經(jīng)保存成功!\n");fp=fopen("friend.txt","w");for(j=1;j<=i;j++){fwrite(&friends[j],sizeof(structffriend),1,fp);}fclose(fp);}voidmain(){intj;chara;charx;chargrade;charsearchkind[20]; charsearchname[20];i--;system("cls");do{printf("\n\n\t\t\t=========================================\n");printf("\t\t\t\t通訊錄\n");printf("\t\t\t\t功能選擇\n");printf("\t\t\t=========================================\n");printf("\t\t\tA.查看*\n");printf("\t\t\tB.增添*\n");printf("\t\t\tC.刪除*\n"); printf("\t\t\tD.查詢*\n");printf("\t\t\tE.修改*\n");printf("\t\t\tF.保存*\n");printf("\t\t\t=========================================\n");printf("\t\t\n請選擇(Choice)\n\n\t\t注:輸入a~h或A~H的字母:");scanf("%c",&grade);switch(grade){case'a':case'A':j=0;while(getchar()!=0x1b&&j<=i){Show(j++);printf("\n\n請按回車鍵繼續(xù)!");}while(getchar()==0x1b||j>i){printf("\n\t空文檔,無任何記錄-EmptyNote\n");printf("\n\n請按回車鍵繼續(xù)!");getchar();break;}printf("\n\t\t\t\t\t\t\t此次操作結(jié)束");printf("\n\t------------------------------------------------------------\t\t\n");break;case'b':case'B':while(i<=50){i++;Append(i);printf("\t是否繼續(xù)增加?(y/n)");a=getchar(); if(a=='n')break;}if(i==51)printf("\n\t文檔已滿,無法增加記錄-notefull");printf("\n\t\t\t\t\t\t\t此次操作結(jié)束");printf("\n\t------------------------------------------------------------\t\t\n");getchar();break;case'c':case'C':Delete();if(i<1)printf("\n沒有記錄-Norecords\n");printf("\n\n請按回車鍵繼續(xù)!");getchar();getchar();printf("\n\t\t\t\t\t\t\t此次操作結(jié)束");printf("\n\t------------------------------------------------------------\t\t\n");break;case'd':case'D':system("cls");printf("\n\t請輸入要查詢記錄的相關(guān)類別:p.個人類b.商務(wù)類w.辦公類");//增添查詢按列號的scanf("%s",searchkind);for(j=0;j<=i;j++){if(strcmp(searchkind,friends[j].kind)==0){Show(j);}}getchar();break;case'e':case'E':printf("\n\t請輸入要修改記錄的相關(guān)姓名:");gets(searchname);scanf("%s",searchname);for(j=0;j<=i;j++){if(strcmp(searchname,friends[j].name)==0){Modify(j);}}if(i<1){printf("\n沒有您所要修改的記錄-Norecords");printf("\n請按回車鍵繼續(xù)!");getchar();getchar();
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園安保人員職責(zé)合同
- 大數(shù)據(jù)模板施工合同
- 公共交通電力施工合同樣本
- 旅游度假村建筑合同
- 漁業(yè)公司銷售總監(jiān)招聘協(xié)議
- 員工培訓(xùn)合同范本設(shè)計模板
- 風(fēng)力發(fā)電硅芯管鋪設(shè)協(xié)議
- 餐飲中心消防樓梯安裝協(xié)議
- 污水處理廠建設(shè)項目合同成本臺賬
- 控股股東表決權(quán)委托合同三篇
- 現(xiàn)代控制理論智慧樹知到期末考試答案章節(jié)答案2024年長安大學(xué)
- 國際公法學(xué)馬工程全套教學(xué)課件
- 數(shù)據(jù)安全重要數(shù)據(jù)風(fēng)險評估報告
- 汽車維修合伙利益分配協(xié)議書
- MOOC 普通地質(zhì)學(xué)-西南石油大學(xué) 中國大學(xué)慕課答案
- 醫(yī)療機(jī)構(gòu)感染預(yù)防與控制基本制度試題附有答案
- 生產(chǎn)部文員年終總結(jié)
- 半導(dǎo)體芯片知識講座
- 護(hù)理責(zé)任組長競聘
- 思想道德與法治論述題
- 凱德商業(yè)管理手冊
評論
0/150
提交評論