资源简介
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
相关资源
- SVM分类算法实验报告+C语言程序 加强
- C程序设计试题汇编谭浩强pdf
- 超级马里奥,C语言实现
- 英文原版数据结构与算法分析——C语
- 数据结构与算法(严蔚敏)
- C语言深度解剖(完美版)
- 《C语言程序设计》谭浩强.pdf
- C语言版俄罗斯方块基于EASYX库
- C语言程序设计实验指导及题解 黄迪明
- 教务管理系统源代码含报告C语言
- c语言实用数字图像处理
- 数据结构英文版电子书
- c语言+UDP+DES加密+socket编程
- 井字棋人机和人人版C语言程序
- c语言数据结构期末大作业-家族族谱管
- c++笔试面试之数据结构与算法
- 教学计划编制 C++ 数据结构
- 数据结构C++版第三版 习题解析 邓俊辉
- 算法精解:C语言描述中文版 含随书源
- 谭浩强C语言_pdf带目录完整清晰版.p
- MUSIC算法C语言+MATLAB
- c语言头文件库
- 51单片机C语言编程入门(详讲版)
- C语言实现的红外发送STM32F10x单片机应
- C语言程序设计(谭浩强)最终完整
- C语言参考手册 第五版 PDF扫描无水印
- 谭浩强----C语言程序设计第二版高清晰
- C语言嵌入式系统编程修炼之道
- MSP430系列单片机实用C语言程序设计
- 数据结构课程设计,C++计算器MFC
评论
共有 条评论