C語言課程設(shè)計報告-手機(jī)通訊錄管理系統(tǒng)_第1頁
C語言課程設(shè)計報告-手機(jī)通訊錄管理系統(tǒng)_第2頁
C語言課程設(shè)計報告-手機(jī)通訊錄管理系統(tǒng)_第3頁
C語言課程設(shè)計報告-手機(jī)通訊錄管理系統(tǒng)_第4頁
C語言課程設(shè)計報告-手機(jī)通訊錄管理系統(tǒng)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論