久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

全功能版通訊錄(c語言) 設計說明概要

時間:2019-05-14 15:50:45下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《全功能版通訊錄(c語言) 設計說明概要》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《全功能版通訊錄(c語言) 設計說明概要》。

第一篇:全功能版通訊錄(c語言) 設計說明概要

通訊錄管理系統設計說明書

一、需求分析

本通訊錄是一款具有基本通訊信息管理功能的系統。包括基本添加,修改,刪除,查詢和輸出等功能。其中聯系組是為了更好地管理聯系人信息,如常用的組有親戚,家人,朋友,同學等。用戶添加的信息存儲到文件當中,本系統的數據存儲文件包括group.dat和linkman.dat,其中group.dat存儲組信息;而linkman.dat則存儲聯系人的信息。用戶登陸系統后,根據需要,選擇操作類型。系統一啟動,便將相關數據文件裝載進內存,如果數據文件不存在,系統將會創建新的數據文件。并將數據文件內的記錄存放在鏈表數據結構類型中,接下來用戶所有的操作,都是對鏈表的操作。當用戶退出系統時,系統將自動將鏈表的信息存進數據文件。本系統中包含兩個鏈表:group鏈表和linkman鏈表,分別對應group,dat 和linkman,dat兩個數據文件。

1、組信息管理模塊: ◎添加新組信息:當用戶添加一個新組時,這個新組將被添加到group.dat文件的末尾,如果添加的組已存在則返回出錯信息。

◎修改已有組信息:用戶首先輸入所要修改的聯系組,然后系統查詢該聯系組存不存在。若存在,則要求用戶輸入新的信息,并進行替換;若不存在,則返回錯誤信息。

◎刪除已有組:用戶首先輸入所要刪除的組,然后系統查詢該組存不存在。如果存在,則先刪除該組下的所有聯系人的信息,再刪除該組;如果所要刪除的信息不存在, 則返回錯誤信息。

◎刪除所有已有組信息:該操作沒有輸入值。如果原來group.dat文件中沒有聯系組,返回錯誤信息;否則,刪除所有聯系組,同時刪除各個組下的聯系人信息。

◎組查詢功能:按用戶輸入的查詢條件,在group.dat文件中查詢相關信息。若存在符合條件的組,則輸出相應的組信息;若不存在,則返回出錯信息。

◎輸出所有組信息:將group.dat中所有組全部輸出來。

2、聯系人信息管理模塊: ◎添加聯系人:當用戶添加一個新聯系人時,這個聯系人的信息將被添加到group.dat 文件的末尾,若添加的聯系人已存在,則返回出錯信息。添加一個聯系人時,他所

屬的組成員個數同時增加1。

◎修改聯系人:用戶首先輸入所要修改的聯系人,然后系統查詢該聯系人存不存在。

若存在,則要求用戶輸入新的信息,并進行替換;若不存在,則返回錯誤信息。◎刪除聯系人:用戶首先輸入所要刪除的聯系人,然后系統查詢該聯系人存不存在。

如果存在,則刪除,并返回相關信息;如果所要刪除的信息不存在,則返回錯誤信 息。刪除一個聯系人時,他所屬的組成員個數同時減少1。

◎刪除所有聯系人:該操作沒有輸入值。如果原來linkman.dat文件中沒有聯系聯系

人,返回錯誤信息;否則,刪除所有聯系人信息。

◎聯系人查詢功能: 按用戶輸入的查詢條件,在linkman.dat文件中查詢相關信息。

若存在符合條件的聯系人,則輸出相應的聯系人信息;若不存在,則返回出錯信息。

而且提供不同種類的查詢,如:按聯系人姓名來查詢,按聯系人電話來查詢,按聯 系人所在的組來查詢。

◎輸出所有聯系人信息:將所有聯系人信息輸出。

二、概要設計

1、抽象數據類型定義: /* **********************存儲結構設計**************************** */ /**************節點類型設計***************/ typedef struct{ char group_num[10];//組號 char group_name[20];//組名稱 int mem_num;//組內聯系人個數 }GroupType;//存放一條組信息 typedef struct{ char mem_num[10];//聯系人號 char mem_name[20];//聯系人名稱 char mem_sex[2];//聯系人性別 char mem_phone[20];//聯系人電話

char mem_addr[50];//聯系人地址

char mem_group_num[10];//聯系人所在組的組號 }LinkmanType;/*************線性表存儲結構設計**************/ typedef struct groupnote{ GroupType groupdata;//組數據信息 struct groupnote *next;}*GroupNote;//組表節點 typedef struct{ GroupNote head, tail;//分別指向組信息鏈表的頭結點和尾節點 int lenth;//鏈表中元素個數 }GroupList;typedef struct linkmannote{ LinkmanType linkmandata;struct linkmannote *next;}*LinkmanNote;//聯系人表節點 typedef struct{ LinkmanNote head, tail;//分別指向聯系人信息鏈表的頭結點和尾節點 int lenth;//鏈表中元素個數

}LinkmanList;/*************基本操作列表******************/ /*************組管理模塊功能函數**************/ ◎void addGroup(;//操作類型號是1 ◎void deleteCroup(;//操作類型號是2 ◎void deleteAllGroup(;//操作類型號是3 ◎void selectGroup(;//操作類型號是4 ◎void printAllGroup(;//操作類型號是5 /*************聯系人模塊功能函數**************/ ◎void addLinkman(;//操作類型號是6 ◎void updateLinkman(;//操作類型號是7 ◎void deleteLinkman(;//操作類型號是8 ◎void deleteAllLinkman(;//操作類型號是9 ◎void selectMenu(;//操作類型號是10 ○ selectByName(;//查詢子菜單下的類型號1 ○ selectByPhone(;//子菜單下的類型號2 ○ selectByGroup(;//子菜單下的類型號3 ◎void printAllLinkman(;//操作類型號是12 /*************系統基本操作**************/

◎ void systemMenu(;//系統菜單

◎ void readFromFile(;//將數據文件導入內存并存儲在單鏈表中,系統一開始運行時,就將數據文件讀入內存。

◎ void writeToFile(;//將內存單鏈表中的數據寫入數據文件

◎ void exitSystem(;//退出并保存,操作類型號是0,退出系統時自動將鏈表中的數據寫入數據文件。

◎GroupNote selectGroupPub(char *name;/*組查詢的公共函數*/ ◎LinkmanNote selectLinkmanPub(char *name;/*聯系人查詢的公共函數*/ ◎void deleteByGroup(char *groupname;/*刪除某一組下的所有聯系人信息*/◎void printLinkman(LinkmanNote ln;/*輸出ln節點里聯系人的信息*/

三、詳細設計

詳細設計中主要用了PDA(問題分析圖來進行設計。考慮到鏈表基本操作書上都有,所以這里凡是涉及到鏈表的基本操作,都沒有給出,只輕輕帶過。到代碼實現部分再具體實現這些功能。

/************************系統功能模塊詳細設計*************************/

1、系統菜單函數systemMenu(的PAD圖: List all menu items Choose the option addGroup(1 3 4 5 6 7 8 9 10 11 0 deleteGroup(deleteAllGroup(selectGroup(printAllGroup(addLinkman(updateLinkman(deleteLinkman(deleteAllLinkman(selectMenu(printAllLinkman(exitSystem(option=

2、查詢菜單函數selectMenu(的PDA圖: List all menu items Choose the option selectByName(1 2 3 0selectByPhone(selectByGroup(systemMenu(option=

3、加載數據文件函數readFromFile(:加載數據文件時,首先判斷數據文件存不存在。如

果不存在,輸出相關錯誤信息并返回主菜單;若存在,則打開數據文件group.dat和linkman.dat。接著,判斷數據文件是不是為空。如果為空,則什么都不做;若不為空,則建立兩個鏈表group和linkman,并循環將group.dat和linkman.dat兩個數據文件中的每一條記錄分別加載到group和linkman兩個鏈表中。注意,每讀入一條新紀錄,則動態開辟一個存儲節點,將記錄信息讀入這個節點,然后將這個節點采用尾插法插入相應鏈表中。

對應PDA圖如下: Open the files Files exist? return nothing Load the files Files empty? Load the files Build linklist group def Build linklist linkman Until group.dat end Until linkman.dat end Malloc a new note Read current record into the note Insert the note into the linkman Malloc a new note Read current record into the note Insert the note into the group

4、保存數據函數writeToFile(:將group和linkman兩個鏈表中的所有信息分別存儲到group.dat和linkman.dat中。每存儲進一個節點則將對應的節點刪除(頭刪除法,釋放存儲空間。由于存儲節點時,從鏈表的首位置依次循環將所有節點都寫入數據文件。對應的PAD 圖如下: Until the group empty Write current note into group.dat Delete current note from group Until the group empty Write current note into linkman.dat Delete current note from linkman Close the files

5、退出系統函數exitSystem(:退出系統,退出時將保存內存中的數據信息。Call the writeToFile(Exit the system

6、組查詢公共函數selectGroupPub(char *name: /************************組管理功能模塊詳細設計*************************/

1、添加組函數addGroup(:開辟一個新的結點,提示用戶輸入要添加的組信息,并判斷這

個組是否已經存在。如果存在,返回錯誤信息;若不存在則將這個節點插入到group鏈表的尾部。最后判斷用戶是否要繼續添加。如果是,則繼續完成上述過程;否則,返回主菜單。

Build the group

Group not exist? While choice Malloc a new note Put in new info Print error info Info already exist? Insert the note into group Put in choice(0/1

2、修改組函數updateGroup(:首先,提示用戶輸入所要修改的組的組名稱。然后查詢,如果組不存在,則輸出出錯信息并返回主菜單。否則,提示用戶輸入新的組信息替換原來的組信息。

Put in group_name Error and ruturn Info not exist? Put in the new info

2、刪除組信息函數deleteGroup(:刪除某一個組時,同時將這個組下的所有聯系人信息也

一并刪除,所以進行操作之前,必須要求用戶確認。首先,提示用戶輸入所要刪除的組的組名稱。判斷該組存不存在,若不存在,出錯并返回;否則,要求用戶確認操作,若用戶取消操作,則退出;否則,首先在linkman鏈表中查找該組下的所有聯系人,并一一將它們刪除,最后從group鏈表中刪除該組。

Put in the group_name

Info not exist? Error and return Are you sure? Return Select from linkman and delete all info belonged to the group note Delete this group note

3、刪除所有組信息函數deleteAllGroup(:刪除所有組信息時,首先刪除所有聯系人,再刪

除所有組。

Delete All Linkman Delete all group Return Are you sure ?

4、組查詢函數selectGroup(:因為組信息不多,所以這里只提供一個查詢函數,即按組的

名稱來查詢。首先,用戶輸入組名稱,系統在group鏈表中查詢,若存在,則輸出該組的信息;否則出錯返回。

Put in group_name Select it from group Print the info Find? Return

5、輸出所有組信息函數printAllGroup(:這個就是將group鏈表的所有節點信息輸出來。/************************聯系人管理功能模塊詳細設計*************************/ 由于addLinkman(,updateLinkman(,deleteLinkman(,deleteAllLinkman(,printAllLinkman(和組管理模塊對應功能是基本相同的,所以這里就不再對它們進行詳細設計了。下面主要對查詢功能給出詳細設計。

1、按名字查詢函數selectByName(:首先,用戶輸入所要查詢的聯系人姓名。系統按照聯

系人姓名在linkman鏈表中進行查詢,找到符合條件的則輸出該聯系人的所有信息。否則,輸出出錯信息。

Put in mem_name Select it from linkman Print the info Find? Error and return

2、按電話號碼查詢函數selectByPhone(:首先,用戶輸入所要查詢的電話號碼。系統按照電話號碼在linkman鏈表中進行查詢,找到符合條件的則輸出該聯系人的所有信息。否則,輸出出錯信息。

Put in mem_phone Select it from linkman Error and return Find?

Print the info

2、按組查詢函數selectByGroup(:首先,用戶輸入所要查詢的組的組名稱。系統按照組名

稱在group 鏈表中查詢,如果該組不存在則出錯并返回;否則,取得該組的組號,并按照組號在linkman 鏈表中進行查詢,找到符合條件的則輸出該組下所有聯系人的信息。否則,輸出出錯信息。注意:由于一個組下的聯系人可能不止一個,所以,系統在查詢聯系人信息時應該遍歷全表,而不能像上兩個函數一樣,找到符合條件的信息就可以退出查找了。

Put in group_name Select it from linkman by the group_num Error and return Find? Gain the group_num Select it from group Error and return Print the info Find?

第二篇:C語言作業:學通訊錄

學生通訊錄

一、語言和環境

1.實現語言:C語言。

2.環境要求:devC++。

二、實現功能

開發一套學生通訊錄C語言系統,具體實現如下功能:

1.打開系統顯示歡迎界面,以及功能菜單,用戶輸入需要操作的功能序號,根據用戶選擇的需要進行相應界面

如圖1所示。

圖1

功能菜單

2.當用戶輸入序號1時進入到錄入學生信息界面,用戶輸入學生的姓名,性別,年齡和電話,輸入完畢保存學生信息,并提示是否繼續錄入,如果選擇Y則繼續錄入,如果選擇為N則返回主菜單。如圖2所示:

圖2

錄入學生信息

3.當用戶選擇序號2則把錄入的學生信息進行展示,如果沒有錄入則提示沒有學術信息。如圖3,圖4所示

圖3

顯示錄入的學生信息

圖4

顯示無學生信息

4.當用戶選擇菜單按鍵3時可以通過姓名查詢學生信息,如果有則顯示此學生信息,如果

如圖5所示

圖5

查詢學生信息

圖6

查無此人

三、具體要求及推薦實現步驟

1.定義結構體保存學生信息(學生姓名,學生年齡,學生性別,學生手機號),定義結構體數組保存學生商品。

2.錄入學生信息

a)

輸入學生信息,保存在結構體數組中,定義變量保存存儲的個數”

3.顯示

a)

讀取數組中學生信息,循環顯示。

4.查找

a)

根據用戶輸入的姓名,在數組中進行查找

四、評分標準

標準:學生通訊錄

該項目的評分標準如下:

變量定義

定義結構體和結構體數組

主函數中能夠循環進行菜單中的相關操作,并選擇退出能自動退出程序

錄入信息

正確定義錄入函數

正確對信息進行保存

實現是否繼續錄入功能

顯示

正確定義顯示函數

正確判斷是否已經錄入學生信息

正確對學生信息進行循環顯示

查找

正確定義查找函數

正確顯示查找功能

總分

100分

第三篇:C語言-通訊錄管理系統

#include #include #include struct record{ charnum[12];char name[10];char birthday[10];char post[10];char phone[15];}data[100];intmenu_select();intcreate_record();intadd_record(int flag);int flag=0;

intfind_record(int flag);intdelete_record(int flag);voidpaixu_record(int flag);intsave_record(int flag);void main(){ for(;;){ switch(menu_select())

{ case 1: printf(“ ***********************************************n”);printf(“ ************** 通訊錄的建立 ***************n”);printf(“ ***********************************************n”);flag=create_record();break;case 2: printf(“ ***********************************************n”);printf(“ ************** 通訊錄信息的添加 *****************n”);printf(“ ***********************************************n”);flag=add_record(flag);break;case 3: printf(“ ******************************n”);printf(“ ******* 通訊錄信息查詢 *******n”);printf(“ ******************************n”);find_record(flag);

break;case 4: printf(“ ***********************************n”);printf(“ **********通訊信息的刪除***********n”);printf(“ ***********************************n”);delete_record(flag);break;case 5: printf(“ ***********************************n”);printf(“ **********通訊錄的存儲(D:)*********n”);printf(“ ***********************************n”);save_record(flag);break;case 6: printf(“ ***********************************n”);printf(“ **********通訊者的排序*********n”);printf(“ ***********************************n”);paixu_record(flag);break;case 0: printf(“t 謝謝您的使用!n”);break;

default : break;} } } intmenu_select(){ int i;printf(“

********************

n”);printf(“

Welcome!

n

”);printf(“

Form kuangminn”);printf(“

********************

n”);printf(“

n”);printf(“ n”);printf(“ n”);printf(“

通訊錄管理系統

n”);printf(“ n”);printf(“

======================n”);printf(“

1.通訊錄的建立n”);printf(“

2.通訊者的添加n”);printf(“

3.通訊錄的查詢n”);printf(“

4.通訊者的刪除n”);printf(“

5.通訊錄的存儲n”);printf(“

6.通訊者的排序n”);printf(“

0.退出通訊錄管理系統n”);printf(“

======================n”);printf(“

請選擇操作0-5 nn”);for(;;){ scanf(“%d”,&i);if(i<0||i>6)printf(“t對不起,您的輸入錯誤n”);else break;} return i;} intcreate_record(){inti,j;for(i=0;;)

{ printf(“ 學號(12)姓名(10)出生年月(10)家庭住址(30)郵編(10)電話(15)n”);printf(“-------------n”);scanf(“%s%s%s%s%s%s”,data[i].num,data[i].name,data[i].birthday, data[i].post, data[i].phone);i++;printf(“ 想繼續創建嗎?(1.是/0.不):”);scanf(“%d”,&j);if(!j)

return i;else printf(“恭喜你,創建成功!請繼續創建!n”);

} return i;} intadd_record(int flag){ int i=flag,j;for(i;;)

{ printf(“ 學號(12)姓名(10)出生年月(10)家庭住址(30)郵編(10)電話(15)n”);printf(“-------------n”);

scanf(“%s%s%s%s%s%s”,data[i].num,data[i].name,data[i].birthday,data[i].post, data[i].phone);i++;printf(“ 想繼續添加嗎?(1.是/0.不):”);scanf(“%d”,&j);if(!j)return i;else printf(“恭喜你,添加成功!請繼續添加!n”);

} return(i);} intfind_record(){ int i;char number[6];char named[10];intxz;printf(“--------------------n”);printf(“ 1.按學號查詢n”);printf(“ 2.按姓名查詢n”);printf(“--------------------n”);printf(“ 請選擇 : n”);

scanf(“%d”,&xz);if(xz==1){ printf(“ 請輸入要查找的學號: ”);scanf(“%s”,number);for(i=0;i

if(strcmp(data[i].num,number)==0)

{ printf(“ ** 學號姓名出生年月家庭住址郵編電話**n”);printf(“------------------------------n”);printf(“%s,%s,%s,%s,%s,%sn”,data[i].num,data[i].name,data[i].birthday,data[i].post,data[i].phone);printf(“------------------------------n”);return 0;}

} else if(xz=2){ printf(“請輸入要查找的姓名: ”);scanf(“%s”,named);for(i=0;i

{ printf(“ ** 學號姓名出生年月家庭住址郵編電話**n”);printf(“------------------------------n”);printf(“%s,%s,%s,%s,%s,%sn”,data[i].num,data[i].name,data[i].birthday,data[i].post,data[i].phone);printf(“------------------------------n”);return 0;else {printf(“對不起,沒有你要找的人!n”);return 0;} }

else {printf(“對不起,沒有你要找的人!n”);return 0;}

}

} intdelete_record(int flag)

{ inti,j;intdeletemark=0;char number[20];printf(“ttt請輸入要刪除學號:n”);scanf(“%s”,number);for(i=0;i

{ if(strcmp(data[i].num, number)==0)

{ printf(“ttt以下是您要刪除的用戶紀錄:n”);printf(“ ** 學號姓名出生年月家庭住址郵編電話**n”);printf(“------------------------------n”);

printf(“%s,%s,%s,%s,%s,%sn”,data[i].num,data[i].name,data[i].birthday,data[i].post,data[i].phone);printf(“------------------------------n”);

printf(“ttt是否刪除?(y/n)”);if(getch()=='y' || getch()=='Y')

{ for(j=i;j

} else return;

} continue;

} if(deletemark==0)

{ printf(“ttt沒有該用戶的紀錄”);

return;

} return;

} voidpaixu_record(int flag){inti,j;struct record tmp;

printf(“ 1.按姓名排序n”);printf(“ 2.按學號排序n”);scanf(“%d”,&i);if(i==1){for(i=1;i

{ if(strcmp(data[i].name, data [i-1].name)<0)

{ tmp= data[i];

j=i-1;do

{ data [j+1]= data [j];j--;}while((strcmp(tmp.name, data [j].name)<0&&j>=0));data [j+1]=tmp;

}

} printf(“ttt排序成功!”);}

if(i==2){for(j=0;jdata[i+1].num)

{tmp=data[i];data[i]=data[i+1];data[i+1]=tmp;} } }

intsave_record(int flag){

FILE*fp;int i;if((fp=fopen(“D:data.txt”,“w+”))==NULL)

{printf(“無法打開文件!”);exit(0);} for(i=0;i

{fprintf(fp,“%s,%s,%s,%s,%s,%sn”,data[i].num,data[i].name,data[i].birthday, data[i].post, data[i].phone);printf(“n”);} fclose(fp);return 0;}

第四篇:C語言課程設計-通訊錄管理

課程設計報告

課程設計題目:

通訊錄管理

學生姓名:

業:

級:

指導教師:

2009年6月16日

實驗題目:

《通訊錄管理》

實驗時間、地點:

2009-6-8到2009-6-12日

信工樓307

實驗目的:

本次課程設計的主要目的是綜合運用所學的C語言知識解決一個比較實際的簡單問題,側重對數組、函數、指針、結構體和文件等相關內容的綜合應用,使同學們能進一步熟悉掌握C語言的基本語法,進一步提升自己的編程能力并逐步培養編程思維,進而不斷提高同學們解決問題的能力,并為以后的語言學習打下良好的基礎。

實驗要求:

1.獨立完成;

2.此次課程設計在規定的時間必須在實驗室完成,不得以任何理由在其他地點進行;

3.每個人需按照選題規則確定好自己的題目(注意不是多人完成一題,每人獨立完成一題),不得以任何理由選擇其他的題目,當然在完成自己的題目之后根據個人興趣可以繼續選做其他的題目;

4.課程設計完成后嚴格按照報告格式撰寫課程設計報告,并于結束后的第三天上交到學習委員統一交給老師;

5.課程設計的成績由兩部分組成:程序檢查成績(40%,每個功能占程序分的20%)+報告檢查成績(40%)+平時考核(20%)

6.每個程序實現方式可以自選,可以采用文件、鏈表、數組或其任意組合完成。

實現思路:

通訊錄信息包括:學號,姓名,班級,聯系電話,E-MAIL,宿舍等 主要功能:

(1)建立、修改和增刪學生通訊錄(2)能夠按多種方式進行查詢

按姓名查詢、按學號查詢

按宿舍查詢

(3)要求:以菜單方式操作,界面友好,易于操作

流程圖:

增加

1↓ ↓

保存

查詢

a↓

b↓

c↓

按姓名查詢

按學號查詢

按宿舍查詢

2→刪除 4→保存

5↓

5↓

退出

退出 實現過程:

3#include #include FILE *fp;int i;char ch;struct member { int number;char name[20];char telephone[13];char xuehao[50];char sushe[20];char email[20];}members[50];void Data_Menu(){ printf(“n----------------------------n”);

printf(“ 學生通訊錄 08041238”);printf(“n----------------------------n”);printf(“ 1.Add”);printf(“ 2.Delete”);printf(“ 3.Search”);printf(“ 4.Save”);printf(“ 5.Exit”);printf(“n----------------------------n”);} void Data_Menu1(){ printf(“n”);printf(“ a.Name”);printf(“nb.Xuehao”);printf(“nc.sushe”);} void Data_Load(){ int j;long k;fp=fopen(“members.txt”,“rt”);if(fp!=NULL){ for(i=1;i<50;i++){ j=fgetc(fp);if(j==EOF){ return;} k=i-1;fseek(fp,k*sizeof(struct member),SEEK_SET);fread(&members[i],sizeof(struct member),1,fp);} }else{ fp=fopen(“members.txt”,“a”);i=1;} } void Data_Add(int j){ printf(“n”);members[j].number=j;printf(“ntNo:%d”,j);printf(“ntName:”);scanf(“%s”,members[j].name);printf(“tTelephone:”);scanf(“%s”,members[j].telephone);printf(“tXuehao:”);scanf(“%s”,members[j].xuehao);printf(“tSushe:”);scanf(“%s”,members[j].sushe);printf(“tEmail:”);scanf(“%s”,members[j].email);} void Data_Show(int j){ printf(“ntNo:%d”,members[j].number);printf(“ntName:%s”,members[j].name);printf(“ntTelephone:%s”,members[j].telephone);printf(“ntXuehao:%s”,members[j].xuehao);printf(“ntSushe:%s”,members[j].sushe);printf(“ntEmail:%s”,members[j].email);} void Data_Save(){ int j;fp=fopen(“members.txt”,“a”);for(j=1;j<=i;j++){ fwrite(&members[j],sizeof(struct member),1,fp);} } main(){ char *search_name;char *search_xuehao;char *search_sushe;int j,k;Data_Load();i--;do{ Data_Menu();printf(“ Please Choose:”);ch=getche();switch(ch){ case '1': while(i<50){ i++;Data_Add(i);break;} if(i==50){ printf(“ntMessage is Filled!n”);} break;case '2': if(i<1){ printf(“ntNo Recordsn”);break;} printf(“ntDelete No:”);scanf(“%d”,&k);for(j=k;j

break;case '4': Data_Save();printf(“ Date is Saved!n”);fclose(fp);break;case '5': printf(“nt”);printf(“ Do You Want To Save Message(y/n)”);if(getche()=='y'){ Data_Save();} fclose(fp);exit(0);break;default: break;} }while(1);} 實驗總結:

經過幾天的努力,終于做出來了,在這過程中自己逐漸提高了對數組、函數、指針、結構體和文件等相關內容的綜合應用,并且進一步熟悉掌握C語言的基本語法,提升了自己的編程能力,并逐步培養編程思維,進而不斷提高自己解決問題的能力。

心得體會: 實驗雖然做成功了,但在此次試驗過程中,自己也體會到一些東西:

第一:要細心對待程序的每一個環節,否則得話將會給自己編程帶來很大的困擾.第二:要多動手去操作,只有這樣才能真正使自己的能力得到真正的提高。

第三:課外要多看以些書,光憑課本上的知識是不夠的,要自己自覺地去學習新的知識。

第五篇:c語言通訊錄程序

C語言程序設計實踐

——通訊錄管理系統

六、程序源代碼及注釋

#include #include #include #include #define SUM 100 #define STOP 1000

typedef struct /*結構體,存放通訊錄成員信息,重新定義成member型變量*/ { char name[10];char tel[15];char cla[5];char mail[20];char qq[15];}member;

member info[SUM];//所有成員空間

FILE *fp;

//文件指針,用于打開或保存通訊錄文件 int count=0;//全局變量,用于計數已存入數量

/*-----------------------*/

int load(char filename[])//打開通訊錄文件 { member *p;int i=0;if((fp=fopen(filename,“rb”))==NULL)

return i;else

{

while(!feof(fp))

{

p=(member *)malloc(sizeof(member));

if(fread(p,sizeof(member),1,fp)==1)

{

strcpy(info[i].name,p->name);

strcpy(info[i].tel,p->tel);

strcpy(info[i].cla,p->cla);

strcpy(info[i].mail,p->mail);

strcpy(info[i].qq,p->qq);

i++;

}

free(p);

}

return i;

} } /*------------------*/

void save(char filename[])//保存通訊錄文件 {

int i;

member *p;

if((fp=fopen(filename,“wb”))==NULL)

{

printf(“無法保存!打開文件%s時出錯n”,filename);

exit(1);

}

else

for(i=0;i

{

p=(member *)malloc(sizeof(member));

strcpy(p->name,info[i].name);

strcpy(p->tel,info[i].tel);

strcpy(p->cla,info[i].cla);

strcpy(p->mail,info[i].mail);

strcpy(p->qq,info[i].qq);

fwrite(p,sizeof(member),1,fp);

free(p);

}

fclose(fp);} /*-----------------*/ void display(void)

//分類查看功能 { system(“cls”);

char dis;

char way[5];

int i,j=0;

choice:

printf(“**********

請選擇查看分類

***********n”);

printf(“**********

1.親友

**********n”);

printf(“**********

2.同學

**********n”);

printf(“**********

3.老師

**********n”);

printf(“**********

4.其他

**********n”);

printf(“**********

5.查看全部

**********n”);

printf(“**********

0.返回上一級菜單

**********n”);

printf(“*****************************************n”);

printf(“請選擇(1~5或0):”);

dis=getchar();

getchar();

switch(dis)

{

case '1':strcpy(way,“親友”);break;

case '2':strcpy(way,“同學”);break;

case '3':strcpy(way,“老師”);break;

case '4':strcpy(way,“其他”);break;

case '5':printf(“*******全部通訊成員*******n”);

for(i=0;i

printf(“

姓名:%sn”,info[i].name);

printf(“

電話號碼:%sn”,info[i].tel);

printf(“

電子郵箱:%sn”,info[i].mail);

printf(“

QQ號:%sn”,info[i].qq);

printf(“

分類:%sn”,info[i].cla);

printf(“*****************************n”);

j++;

}

if(j==0){

printf(“************************n”);

printf(“無任何通訊成員n”);

}

j=0;

Sleep(STOP);

goto choice;break;

case '0':return;break;

default:

printf(“*************************n”);

printf(“

輸入指令有誤!

n”);

printf(“*************************n”);

Sleep(STOP);

goto choice;

}

printf(“********通訊成員之%s*******n”,way);

for(i=0;i

if(strcmp(info[i].cla,way)==0){

printf(“****

姓名:%sn”,info[i].name);

printf(“****

電話號碼:%sn”,info[i].tel);

printf(“****

電子郵箱:%sn”,info[i].mail);

printf(“****

QQ號:%sn”,info[i].qq);

printf(“****

分類:%sn”,info[i].cla);

printf(“**********************************n”);

j++;

}

}

if(j==0){

printf(“該分類中無通訊成員n”);

printf(“******************n”);

}

j=0;

Sleep(STOP);

goto choice;}

/*------*/ int add(void)

//增加新的成員 {

member temp;

int i;

reinput_name:

printf(“請輸入新成員的姓名:”);

gets(temp.name);

for(i=0;i

if(strcmp(info[i].name,temp.name)==0){

printf(“該姓名已存在!n”);

Sleep(STOP);

goto reinput_name;

}

reinput_tel:

printf(“請輸入新成員的電話號碼:”);

gets(temp.tel);

for(i=0;i

if(strcmp(info[i].tel,temp.tel)==0){

printf(“該電話號碼已存在!n”);

Sleep(STOP);

goto reinput_tel;

}

printf(“請輸入新成員的電子郵箱:”);

gets(temp.mail);

printf(“請輸入新成員的QQ號:”);

gets(temp.qq);

printf(“請輸入新成員的分類:”);

gets(temp.cla);

info[count]=temp;

count++;

return count;}

/*-----*/ int search(char sname[])//查找功能 {

int flag=0,i;

for(i=0;i

if(strcmp(info[i].name,sname)==0){

printf(“*****************************n”);

printf(“****

姓名:%sn”,info[i].name);

printf(“****

電話號碼:%sn”,info[i].tel);

printf(“****

電子郵箱:%sn”,info[i].mail);

printf(“****

QQ號:%sn”,info[i].qq);

printf(“****

分類:%sn”,info[i].cla);

printf(“******************************n”);

flag=1;

}

return flag;}

/*---------*/ int rework(char rname[])

//修改功能 {

int flag=0,i;

for(i=0;i

if(strcmp(info[i].name,rname)==0){

printf(“*********************”);

printf(“請輸入新的姓名:”);

gets(info[i].name);

printf(“請輸入新的電話號碼:”);

gets(info[i].tel);

printf(“請輸入新的電子郵箱:”);

gets(info[i].mail);

printf(“請輸入新的QQ號:”);

gets(info[i].qq);

printf(“請輸入新的分類:”);

gets(info[i].cla);

printf(“********************”);

flag=1;

}

return flag;}

/*-----------------------------*/ int erase(char ename[])//刪除功能 {

int flag=0,i,j;

for(i=0;i

if(strcmp(info[i].name,ename)==0){

for(j=i;j

info[j]=info[j+1];

count--;

flag=1;

}

return flag;} /*-----------------------------*/ int call(void)//撥號功能 {

int i,j,flag=0;

char cname[10];

printf(“**************************n”);

for(i=0;i

printf(“%s ”,info[i].name);

}

putchar('n');

printf(“請輸入需要撥號的姓名:”);

gets(cname);

for(i=0;i

if(strcmp(info[i].name,cname)==0){

printf(“正在撥號:”);

for(j=0;info[i].tel[j]!='

主站蜘蛛池模板: 国产美女口爆吞精普通话| 丝袜人妻一区二区三区网站| 日韩精品中文字幕无码专区| 国产又黄又硬又湿又黄的视| 男人的天堂va在线无码| 国产精品无码av在线播放| 无码办公室丝袜ol中文字幕| 久久国产偷任你爽任你| 东北粗壮熟女丰满高潮| 乌克兰少妇xxxx做受| 色拍拍国产精品视频免费观看| 国产另类ts人妖一区二区| 亚洲精品成人无码中文毛片| 亚洲中文字幕无码一区二区三区| 免费做爰猛烈吃奶摸视频在线观看| 久久综合亚洲色hezyo社区| 东北老女人高潮大喊舒服死了| 日日碰狠狠添天天爽无码| 中文字幕日韩精品亚洲七区| 国产精品无码一区二区三区电影| 国产成人综合色在线观看网站| 国产精品老熟女露脸视频| 丰满少妇高潮惨叫正在播放| 成人性做爰aaa片免费看曹查理| 狠狠色丁香久久综合| 亚洲乱码国产乱码精华| 秋霞鲁丝片av无码| 成年无码av片完整版| 性欧美牲交在线视频| 国产精品无圣光一区二区| 国产综合无码一区二区辣椒| 国产无遮挡又爽又刺激的视频老师| 亚洲国产精品综合久久20| 午夜男女很黄的视频| 少妇性bbb搡bbb爽爽爽欧美| 亚洲乱亚洲乱少妇无码99p| 中文字幕巨大的乳专区| 亚洲毛片αv无线播放一区| 天堂tv亚洲tv无码tv| 在线a亚洲v天堂网2019无码| 色综合天天综合网中文|