资源简介

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

评论

共有 条评论