发布时间 : 星期三 文章C课程设计更新完毕开始阅读bf83eed56ad97f192279168884868762cbaebb08
精品文档
Fx.c.下。
下面仅具体阐述一下各功能模块的工作原理。
函数Build,首先判断该表是否已建立过,即表内是否有一个空结点(头结点),表未初始化时便建立一个空表,否则提示“表已存在,无需建立”。提示后延时2 s自动跳转到主菜单。
插入函数Insert,首先输入有效信息,然后利用头插法将其插入到头指针的下一个结点,再输出提示,提示用户选择N或Y,判断是否继续,若要继续,则递归本函数,否,直接返回主菜单。
删除函数Delete,首先判断表是否为空,表为空时,不允许删除,并弹出提示,按任意键继续后后跳转到主菜单;表非空时,输入要删除人的姓名,利用循环查找表中人的信息(暂不支持多元素的查找与删除),若查找成功则输出提示,询问是否确定删除,按需求,删除该结点(暂不支持误删恢复)或取消操作;若查找失败,不存在该联系人,则输出提示。最后按任意键退回到主菜单。
查询函数Search,首先判断表是否为空,表为空时,不允许查找,并弹出提示,按任意键继续后后跳转到主菜单;表非空时,输入要查询人的姓名,利用循环查找表中人的信息(暂不支持多元素的查找),然后输出信息,按任意键退回到主菜单。 退出函数Exit,先输出表内所有信息,信息输出完毕后,按任意键结束程序。 3、源代码
MSY.h:
#ifndef MSY_H #define MSY_H
#include
typedef struct Node {
char name[N]; char num[N];
struct Node *next;
.
精品文档
}NODE;
void Welcome(); void jiemian(); int Num();
void Build(NODE **head); void insert(NODE **head); void Delete(NODE *head); void Find(NODE *head); void Exit(NODE *head);
//待改进:多元素查询
//待改进:当head没有初始化,要直接关闭,不允许进行插入和删除等操作
#endif
Fx.c:
#include \
void jiemian() {
static NODE *head=NULL; system(\
printf(\通讯录管理系统\\n\
printf(\**\\n\
printf(\……通讯录单链表的建立 *\\n\
printf(\……通讯者的插入 *\\n\
printf(\……通讯者的删除 *\\n\
printf(\……通讯者的查询 *\\n\
printf(\……退出 *\\n\
printf(\**\\n\
printf(\提示:在2,3,4功能执行前,须先执行1.操作! *\\n\
printf(\**\\n\
switch(Num()) {
.
精品文档
case 1:
Build(&head); break; case 2:
insert(&head); break; case 3:
Delete(head); break; case 4:
Find(head); break; case 0:
Exit(head); break; } }
int Num() {
int k;
printf(\请选择菜单号(0…4):\ scanf(\ getchar(); if(k<0||k>4) {
printf(\输入错误!按任意键继续...\ getch();
system(\ jiemian(); } else
return k; }
void Build(NODE **head)
//建立一个有头结点的链表(以头结点是否已存在为判定依据) {
system(\ if((*head)!=NULL) {
printf(\链表已存在,无需创建!************\\n\
.
精品文档
} else {
(*head)=(NODE *)malloc(sizeof(NODE)); if( (*head) ) {
(*head)->next=NULL;
printf(\\\n\
printf(\创建成功! -------- #\\n\
printf(\\\n\
} else
printf(\内存分配失败!\ }
Sleep(2000); jiemian(); }
void insert(NODE **head) {
char ch; NODE *p;
system(\
printf(\##\\n\
printf(\ printf(\##\\n\
p=(NODE *)malloc(sizeof(NODE));
printf(\请输入新联系人的姓名(1~%d位字母或数字):\待改进 判定溢出 及 字符或是数字
scanf(\
printf(\请输入新联系人的电话号码(1~%d位数字):\
scanf(\ getchar();
p->next=(*head)->next; (*head)->next=p;
.