数据结构课程设计(通讯录制作)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.设计内容(通讯录)
本系统应完成一下几方面的功能:
1) 输入信息——enter();
2) 显示信息———display( );
3) 查找以姓名作为关键字———search( );
4) 删除信息———delete( );
5) 存盘———save ( );
6) 装入———load( ) ;
设计要求:
1) 每条信息至包含:姓名(NAME )街道(STREET)城市(CITY)邮编(EIP)国家(STATE)几项
2) 作为一个完整的系统,应具有友好的界面和较强的容错能力二.设计思路
通过visual c++6.0(用的是C语言)编写一个dos界面的控制台程序,该程序通过链表的操作,文件存储来实现通讯录的基本功能
struct address{ /*定义结构*/
char name[10]; /*姓名*/
char street[50]; /*街道*/
char city[10]; /*城市*/
char state[15]; /*国家*/
char eip[7]; /*邮编*/
struct address *next; /*后继指针*/
struct address *prior; /*前驱指针*/
}
链表的插入,删除来实现通讯录里的内容的插入删除
当操作完成通过文件件来存储链表的信息,下次打开程序时,读取文件里的内容到内存中,放在链表,然后又可以对链表进行操作;
在这里面,文件内容不可以在外部更改,只能通过读取到内存链表中,通过程序进行更改,然后再写入到文件,写入过程会覆盖上次的内容。
struct address *start; /*首结点*/
struct address *last; /*尾结点*/
struct address *find(char *); /*声明查找函数*/
void enter(); /*函数声明*/
void search(); /*查找,查找过程中调用find函数*/
void save(); /*存盘,将链表信息保存到文件中*/
void load(); /*导入,将文件内容导入到内存链表中*/
void list(); /*显示当前链表中信息*/
void ddelete(struct address **,struct address **);
void insert(struct address *i,struct address **start,
struct address **last);
void inputs(char *,char *,int);
void display(struct address *);
int menu_select(void);
三.详细设计
1.主界面设计
通过switch语句调用各种函数,实现各种操作。然后把switch嵌套到无限的for循环(for(;;))中,使完成每一步操作都回到到选择操作的主界面
void main()
main
menu_select
enter
ddelete
list search
save
load
exit
inputs insert
find
display
文件
函数之间的相互调用
{
start = last = NULL;
for(;;) /*无限循环*/
{
switch(menu_select()) /*调用主界面的选择函数,带回返回值*/ {
case 1:enter();
continue;
case 2:ddelete(&start,&last);
continue;
case 3:list();
continue;
case 4:search();
continue;
case 5:save();
continue;
case 6:load();
continue;
case 7:exit(0);
}
}
}
int menu_select(void) /*主目录*/
{
char s[80];
int c;
printf("………………^欢迎使用DOS通讯录系统^………………\n");
printf("************请在做其它操作前先导入*************\n");
printf("***********************************************\n"); printf("***************** 1.输入信息 ******************\n"); printf("***************** 2.删除信息 ******************\n"); printf("***************** 3.显示信息 ******************\n"); printf("***************** 4.查找 ******************\n"); printf("***************** 5.存盘 ******************\n"); printf("***************** 6.导入 ******************\n"); printf("***************** 7.退出 ******************\n"); printf("***********************************************\n"); do{
printf("\nPlease enter your choice:\n");
gets(s);
c = atoi(s); /*将获取的字符串转换成整型*/
}while(c<0||c>7);
return c; /*返回输入值*/
}
2.输入信息函数