資源簡介
1、問題描述
通訊錄的制作:用《數據結構》中的雙向鏈表作數據結構,結合C語言基本知識。編寫一個通訊錄管理系統。以把所學數據結構知識應用到實際軟件開發中去。
2、功能需求分析
本系統應完成一下幾方面的功能:
1)輸入信息——enter();
2)顯示信息———display( );
3)查找以姓名作為關鍵字 ———search( );
4)刪除信息———delete( );
5)存盤———save ( );
6)裝入———load( )
設計要求:
1)每條信息至包含 :姓名(NAME )街道(STREET)城市(CITY)郵編(EIP)國家(STATE)幾項
2)作為一個完整的系統,應具有友好的界面和較強的容錯能力
3)上機能正常運行,并寫出課程設計報告
二、概要設計
1、總體設計思路
(1)用菜單函數調用所設立的功能和使用界面的清屏小代碼,使程序更加清楚和界面更美觀。
(2)采用結構體類型定義和鏈式存儲結構分別對輸入信息和雙鏈表定義,充分運用雙鏈表結構的特點。
(3)輸入通訊錄信息的實現:
思路:先初始化創建雙鏈表,創建頭結點來輔助雙鏈表的插入操作,再運用c程序設計中輸入輸出語句,達到輸入信息的功能
(4)對通訊錄信息的輸出顯示功能的實現:
思路:簡單運用c程序設計中的輸入scanf函數、輸出printf函數和for循環。

代碼片段和文件信息
#include??
#include??
#include??
#include??
struct?record?//聲明結構體類型struct?record
{????????? ??//以下5行為結構體成員
char?name[20];?
char?street[20];?
char?city[20];?
char??eip[20];??????????????????????????????
char?state[20];?
}people[200];???//定義結構體數組people[]
?
//???線性表的雙向鏈表存儲結構
struct?pnode
{
record?data;
struct?pnode?*next?*prior;???????????
};
typedef??pnode?*?linklist;
linklist?l;
int?len=0;????????//鏈表長度
FILE?*fp;?????????//文件指針,全局變量
void?mainmenu();??????????//主菜單
void?searchmenu();????????//查詢菜單
void?enter();?????????????//添加新紀錄
void?search();????????????//按條件搜索記錄
void?display();???????????//顯示全部記錄
void?load();??????????????//載入文件內容
void?save();??????????????//寫入文件
void?del();???????????????//刪除記錄
void?listinsert();????????//插入結點函數
void?initlist();??????????//初始化鏈表函數
void?main()???????????????//主函數
{?
initlist();
load();
listinsert();?
while?(2)??????/*?while(表達式)?????語句
???????????????????c程序設計書115頁:當此表達式的值為“真”(以非0表示)時,就執行循環體;
???為“假”(以0表示)時,就不執行循環體語句*/
????mainmenu();????//進入主菜單,有非法輸入仍停留在主菜單
}?
void?mainmenu()??????????????????????????//主菜單?
{?
????int?ch;
system(“cls“);?
printf(“\n\t----------歡迎進入通訊錄管理系統---------“);?
printf(“\n\t*?????????????1--新添紀錄???????????????*“);?
printf(“\n\t*?????????????2--查找聯系人?????????????*“);?
printf(“\n\t*?????????????3--刪除聯系人?????????????*“);?
printf(“\n\t*?????????????4--保存???????????????????*“);?
????printf(“\n\t*?????????????5--退出???????????????????*“);?
????printf(“\n\t*****************************************“);?
printf(“\n\t請選擇:“);?
?scanf(“%d“&ch);
switch?(ch)?
{?
case?1:enter();break;?
case?2:searchmenu();break;?
case?3:del();break;?
case?4:save();break;
case?5:exit(0);?
default:mainmenu();?
}?
}?
void?load()??????//6.裝載已有文件信息,c程序設計349頁
{ ????? ?//打開輸入文件data.txt
if((fp=fopen(“data.txt““rb“))==NULL)
{?
printf(“\n\t通訊錄文件不存在“);???//如果找不到該txt文件,輸出“通訊錄文件不存在”
if?((fp=fopen(“data.txt““wb“))==NULL)?
{?
printf(“\n\t建立失敗“);?
exit(0);?
}?
else?
{?
printf(“\n\t通訊錄文件已建立“);?
printf(“\n\t按任意鍵進入主菜單“);?
getch();?
return;?
}?
exit(0);?
}?
??????????????????//導入文件功能部分
fseek(fp02);????/*將fp指針指向文件末尾?
fseek(文件類型指針,位移量,起始點)
起始點:用0(文件開始位置);1(當前位置);或2(文件末尾位置)
???例:fseek(fp,100L,0)將文件位置標記向前移到離文件開頭100個字節處
*/
if?(ftell(fp)>0)?????????//確定文件的當前位置352
{?
rewind(fp);??????????//350:將文件位置標記重新返回文件的開頭,此函數沒有返回值。
for(len=0;!feof(fp)&&fread(&people[len]sizeof(struct?record)1fp);len++);????
/*
????feof檢測流上的文件結束符?:從data.txt文件中讀取數據
*fread:從文件中讀一個數據塊?fread(buffersizecountfp)
buffer:一個地址,用來存放從文件讀入的數據存儲區地址。
size:要讀寫的字節數
count:要讀寫多少個數據項(每個數據項長度為size)
fp:文件類型指針
*/
printf(“\n\t文件導入成功“);?
printf(“\n\t按任意鍵返回主菜單“);?
getch();?
return;?
}?
printf(“\n\t文件導入成功“);?
printf(“\n\t通訊錄文件中無任何紀錄“);?
printf(“\n\t按任意鍵返回主菜單“);?
getch();?
return;?
}
/*輸入
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????647856??2016-04-04?00:06??2.doc
?????目錄???????????0??2015-11-23?13:07??222\
?????文件????????4308??2014-02-19?22:28??222\222.dsp
?????文件?????????514??2014-02-19?22:24??222\222.dsw
?????文件???????33792??2014-02-19?22:28??222\222.ncb
?????文件???????48640??2014-02-19?22:28??222\222.opt
?????文件?????????839??2014-02-19?22:25??222\222.plg
?????文件?????????600??2014-02-28?16:11??222\data.txt
?????文件????????9614??2014-02-27?19:09??222\ddd.cpp
?????文件????????3365??2015-11-23?13:01??222\ddd.dsp
?????文件?????????514??2015-11-23?13:07??222\ddd.dsw
?????文件???????50176??2015-11-23?13:07??222\ddd.ncb
?????文件???????48640??2015-11-23?13:07??222\ddd.opt
?????文件?????????240??2015-11-23?13:01??222\ddd.plg
?????目錄???????????0??2015-11-22?00:53??222\Debug\
?????文件??????217149??2014-02-19?22:25??222\Debug\222.exe
?????文件??????241004??2014-02-19?22:25??222\Debug\222.ilk
?????文件??????459776??2014-02-19?22:25??222\Debug\222.pdb
?????文件??????213096??2015-11-22?00:53??222\Debug\ddd.exe
?????文件??????240236??2015-11-22?00:53??222\Debug\ddd.ilk
?????文件???????27131??2015-11-22?00:53??222\Debug\ddd.obj
?????文件??????227676??2015-11-22?00:53??222\Debug\ddd.pch
?????文件??????558080??2015-11-22?00:53??222\Debug\ddd.pdb
?????文件???????50176??2015-11-23?13:01??222\Debug\vc60.idb
?????文件???????53248??2015-11-22?00:53??222\Debug\vc60.pdb
?????文件???????????0??2014-02-19?22:24??222\sss.asp
評論
共有 條評論