C课程设计 联系客服

发布时间 : 星期三 文章C课程设计更新完毕开始阅读bf83eed56ad97f192279168884868762cbaebb08

精品文档

Fx.c.下。

下面仅具体阐述一下各功能模块的工作原理。

函数Build,首先判断该表是否已建立过,即表内是否有一个空结点(头结点),表未初始化时便建立一个空表,否则提示“表已存在,无需建立”。提示后延时2 s自动跳转到主菜单。

插入函数Insert,首先输入有效信息,然后利用头插法将其插入到头指针的下一个结点,再输出提示,提示用户选择N或Y,判断是否继续,若要继续,则递归本函数,否,直接返回主菜单。

删除函数Delete,首先判断表是否为空,表为空时,不允许删除,并弹出提示,按任意键继续后后跳转到主菜单;表非空时,输入要删除人的姓名,利用循环查找表中人的信息(暂不支持多元素的查找与删除),若查找成功则输出提示,询问是否确定删除,按需求,删除该结点(暂不支持误删恢复)或取消操作;若查找失败,不存在该联系人,则输出提示。最后按任意键退回到主菜单。

查询函数Search,首先判断表是否为空,表为空时,不允许查找,并弹出提示,按任意键继续后后跳转到主菜单;表非空时,输入要查询人的姓名,利用循环查找表中人的信息(暂不支持多元素的查找),然后输出信息,按任意键退回到主菜单。 退出函数Exit,先输出表内所有信息,信息输出完毕后,按任意键结束程序。 3、源代码

MSY.h:

#ifndef MSY_H #define MSY_H

#include #include //#include #include #define N 20

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;

.