资源简介
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
相关资源
- C语言编程常见问题解答.pdf
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 利用C++哈希表的方法实现电话号码查
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
川公网安备 51152502000135号
评论
共有 条评论