python通讯录管理系统设计_数据结构课程设计-通讯录管理系统(C语言版)

##数据结构课程设计-通讯录管理系统

一,前言

自从上次C语言课设写完后,这次数据结构课设就写的游刃有余了,很快啊,不足三天就写完了它(年轻人不讲武德),如果你认真看过我之前写的C语言课程设计-球队管理系统,你就不难发现,这次数据结构的课设完全就是那篇直接改过来的,也就存储结构变了一下。

C语言课设在这里-----球队管理系统(C语言版)

废话先不多说,直接上完整代码:

二,直接上代码

#include

#include

#include

#include

typedef int ElemType;

typedef struct person{

char num[10];//编号

char name[10];//姓名

char sex[10];//性别

char phone[10];//电话

}personal;/*={};测试*/

typedef struct node

{

person data;//数据域

struct node * next;//指针域

}ListNode,* LinkList;

LinkList InitList();

LinkList Create(LinkList head);

void List(LinkList head);//显示所有记录

void save(LinkList head);//保存到文件

void Find(LinkList head);//按要求查找

int GetLength(LinkList head);//总记录条数

void Add(LinkList head);//增加新的记录

void Alter(LinkList head);//修改

void Delete(LinkList head); //删除

void Statis_sex(LinkList head);//性别个数

void Quit();//退出选单

void Menu(LinkList head);//选单

//Creat模块已通过读取文件信息实现

LinkList InitList()

{

LinkList head=(LinkList)malloc(sizeof(ListNode));//创立头结点

if(head==NULL)

{

printf("空间分配无效!");

exit(-1);//退出程序

}

head->next=NULL;

return head;

}

LinkList Create(LinkList head)

{

person LM;//接受文件数据

LinkList rear;

rear=head;

FILE *fp= fopen("file.txt","r");

if(fp==NULL)

{

printf("打开文件失败!");

return NULL;

}

while(fscanf(fp,"%s%s%s%s",LM.num,LM.name,LM.sex,LM.phone)!=EOF)//处理到文件尾

{

LinkList s=(LinkList)malloc(sizeof(ListNode));

s->data=LM;

s->next=NULL;

rear->next=s;

rear=s;

}

fclose(fp);

return head;

}

void List(LinkList head) {

LinkList p;

p = head->next;

if (!p) //如果head指针为空说明链表为空

{

printf("\n链表为空!\n\n");

}

else

{

printf("\n通信录:\n\n");

printf("编号姓名性别电话 \n");

while (p) //循环将各个节点值输出

{

printf("%s\t%s\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.phone);//打印

p = p->next;//此句放在打印后面,防止产生野指针

}

Statis_sex(head);

printf("\n返回主菜单\n");

system("pause");//页面停留

Menu(head);

}

}

void save(LinkList head)

{

LinkList rear;

person LM;

rear=head->next;//跳过头节点

FILE *fp;

int i;

if((fp=fopen("file.txt","wb"))==NULL)/*只打开或建立一个二进制文件,只允许写数据*/

{

printf("\n文件不存在!\n");

}

while(rear)//处理到文件尾

{

LM=rear->data;

fprintf(fp,"%s\t%s\t%s\t%s\n",LM.num,LM.name,LM.sex,LM.phone);

rear=rear->next;

}

fclose(fp);

}

void Find(LinkList head)

{

int Loop=0;

char name[10];

printf("请输入要查询联系人的姓名[ ]\b\b\b\b\b\b");

scanf("%s",name);

LinkList rear=head->next;

while(rear)

{

if (strcmp(rear->data.name,name)==0)

{

printf("编号姓名性别电话 \n");

printf("%s\t%s\t%s\t%s\n",rear->data.num,rear->data.name,rear->data.sex,rear->data.phone);

Loop=1;

}

rear=rear->next;

}

if(Loop==1)

{

printf("\n查询联系人成功!返回菜单\n");

system("pause");

Menu(head);

}

else

{

int n;

printf(&

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。 
   第二个模块——Menu()的功能是:显示提示选单。 
   第三个模块——Quit()的功能是:退出选单。 
   第四个模块——Create()的功能是:创建新的数据记录。 
   第五个模块——Add()的功能是:增加新的数据记录,并返回选单。 
   第六个模块——Find()的功能是:按要求查询相关的信息,如果找到了,则显示该信息,如果未找到,则提示文件中没有该信息,并返回选单。 
   第七个模块——Alter()[的功能是:修改某条记录的信息,如果未找到要修改的记录,则提示系统中无此记录,并返回选单。 
   第八个模块——Delete()的功能是:删除某条记录,如果未找到要删除的记录,则提示通讯录中没有,并返回选单。 
   第九个模块——List()的功能是:显示所有记录。 一、用链表或者顺序表实现以下系统,完成线性表的建立(至少包括10个结点),以及线性表中信息(结点)的插入、查找、删除、修改、输出等操作,具体的模块要求见上方的“总的模块要求”。建议用“文件”存储数据。 1.通讯录管理系统设计与实现 (1)通讯者信息包括:编号(char num[10])、姓名(char name[10])、性别(char sex[10])、电话(char phone[20]) (2)除了总的模块要求外,还需统计通讯录中男性人数及女性人数,并求出通讯录中的第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。 
   第二个模块——Menu()的功能是:显示提示选单。 
   第三个模块——Quit()的功能是:退出选单。 
   第四个模块——Create()的功能是:创建新的数据记录。 
   第五个模块——Add()的功能是:增加新的数据记录,并返回选单。 
   第六个模块——Find()的功能是:按要求查询相关的信息,如果找到了,则显示该信息,如果未找到,则提示文件中没有该信息,并返回选单。 
   第七个模块——Alter()[的功能是:修改某条记录的信息,如果未找到要修改的记录,则提示系统中无此记录,并返回选单。 
   第八个模块——Delete()的功能是:删除某条记录,如果未找到要删除的记录,则提示通讯录中没有,并返回选单。 
   第九个模块——List()的功能是:显示所有记录。 一、用链表或者顺序表实现以下系统,完成线性表的建立(至少包括10个结点),以及线性表中信息(结点)的插入、查找、删除、修改、输出等操作,具体的模块要求见上方的“总的模块要求”。建议用“文件”存储数据。 1.通讯录管理系统设计与实现 (1)通讯者信息包括:编号(char num[10])、姓名(char name[10])、性别(char sex[10])、电话(char phone[20]) (2)除了总的模块要求外,还需统计通讯录中男性人数及女性人数,并求出通讯录中的男女比例。 男女比例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值