C语言实现通讯管理系统设计

 更新时间:2018年01月15日 11:28:57   作者:想飞的孤独少年  
这篇文章主要为大家详细介绍了C语言实现通讯管理系统设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

脚本之家 / 编程助手:解决程序员“几乎”所有问题!
脚本之家官方知识库 → 点击立即使用

本文实例为大家分享了C语言实现通讯管理系统的具体代码,供大家参考,具体内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
 
typedef struct{
 char num[5];
 char name[9];
 char sex[9];
 char phone[13];
 char addr[31];
}DataType;
typedef struct node{
 DataType data;
 struct node*next;
} ListNode, *LinkList;
 
LinkList head;
ListNode *p;
 
int menu_select();
LinkList CreateList(void);
void InsertNode(LinkList head,ListNode *p);
ListNode *ListFind(LinkList head);
void DelNode(LinkList head);
void printList(LinkList head);
void ChangeNode(LinkList head);
 
int main(void){
 for(; ;){
  switch(menu_select()){
   case 1:
    printf("**********************\n");
    printf("* 通 讯 录 链 表 建 立 *\n");
    printf("***********************\n");
    head=CreateList();
    break;
   case 2:
    printf("*********************\n");
    printf("通 讯 录 信 息 的 插 入 *\n");
    printf("*********************\n");
    printf("请输入编号,姓名,性别,电话和地址 \n");
    printf("**********************************\n");
    p=(ListNode*)malloc(sizeof(ListNode));
    scanf("%s%s%s%s%s",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.addr);
    InsertNode(head,p);
    break;
   case 3:
    printf("***********************\n");
    printf("通 讯 录 的 查 询 *\n");
    p=ListFind(head);
    if(p!=NULL){
     printf("编号 姓名 性别 电话 地址 \n");
     printf("-------------------------- \n");
     printf("%s%s%s%s%s",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.addr);
}    else
     printf("没查到要查询的通讯者!\n");
     break;
   case 4:
    printf("***********************\n");
    printf("* 通 讯 者 信 息 的 修 改 *\n");
    printf("**********************\n");
    ChangeNode(head);
    break;
   case 5:
    printf("************************\n");
    printf("通 讯 录 的 信 息 删 除 *\n");
    printf("*************************\n");
    DelNode(head);
    break;
   case 6:
    printf("************************\n");
    printf("通 讯 录 链 表 的 输 出 *\n");
    printf("*************************\n");
    printList(head);
    break;
   case 0:
    printf("\t 再 见!\n");
    return 0;
 }
 }
 
}
int menu_select(){
 int sn;
 printf(" 通讯录管理系统\n");
 printf("========================\n");
 printf(" 1. 通讯录链表的建立\n");
 printf(" 2. 通讯录信息的插入\n");
 printf(" 3. 通讯录信息的查询\n");
 printf(" 4. 通讯录信息的修改\n");
 printf(" 5. 通讯录信息的删除\n");
 printf(" 6. 通讯录信息的输出\n");
 printf(" 0. 退出管理系统\n");
 printf(" 请 选 择 0—6:");
 for(; ;){
  scanf("%d",&sn);
  if(sn<0 || sn>6)
   printf("\n\t输入错误,重选0-6:");
  else
   break;
}
 return sn;
 
 
}
LinkList CreateList(void){
 LinkList head=(ListNode *)malloc(sizeof(ListNode));
 ListNode *p,*rear;
 char flag='y';
 rear=head;
 while(flag=='y'){
  p=(ListNode *)malloc(sizeof(ListNode));
  printf("请顺序输入编号,姓名,性别,电话和地址\n");
  printf("--------------------------------------\n");
  scanf("%s%s%s%s%s",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.addr);
  rear->next=p;
  rear=p;
  printf("继续输入吗? (y/n):");
  getchar();
  scanf("%c",&flag);
}
 
 rear->next=NULL;
 return head;
 
}
void InsertNode(LinkList head,ListNode *p){
 ListNode *p1,*p2;
 p1=head;
 p2=p1->next;
 while(p2!=NULL && strcmp(p2->data.num,p->data.num)<0)
 {
  p1=p2;
  p2=p2->next;
 
 }
 
 p1->next=p;
 p->next=p2;
 
}
ListNode *ListFind(LinkList head){
 ListNode *p;
 char num[5];
 char name[9];
 int xz=0;
 printf("===========\n");
 printf("1. 按编号查询 \n");
 printf("2. 按姓名查询 \n");
 printf("===========\n");
 printf(" 请选择:");
 p=head->next;
 scanf("%d",&xz);
 if(xz==1){
  printf("请输入要查询者的编号:");
  scanf("%s",num);
  while(p && strcmp(p->data.num,num)<0)
   p=p->next;
  if(p==NULL||strcmp(p->data.num,num)>0)
   p=NULL;
 
}
 else
  if(xz==2) {
   printf("请输入要查询者的姓名:");
   scanf("%s",name);
   while(p && strcmp(p->data.name,name)!=0)
    p=p->next;   
 }
 
 return p;
}
void DelNode(LinkList head){
 char jx;
 ListNode *p,*q;
 p=ListFind(head);
 if(p==NULL){
  printf("没有查到要删除的通讯者!\n");
  return;
 
 }
 printf("真的要删除该节点吗?(y/n):");
 getchar();
 scanf("%c",&jx);
 if(jx=='y'||jx=='Y'){
  q=head;
  while(q!=NULL && q->next!=p)
   q=q->next;
  q->next=p->next;
  free(p);
  printf("通讯录已经删除!\n");
 }
}
void printList(LinkList head){
 ListNode *p;
 p=head->next;
 printf("编号 姓名 性别 电话 地址\n");
 printf("--------------------------------------\n");
 while(p!=NULL)
 {
  printf("%s%s%s%s%s\n",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.addr);
  printf("--------------------------------\n");
  p=p->next;
 }
}
void ChangeNode(LinkList head){
 ListNode *p;
 p=ListFind(head);
 if(p!=NULL){
  printf("编号 姓名 性别 电话 地址\n");
  printf("--------------------------------------\n");
  scanf("%s%s%s%s%s\n",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.addr);
  printf("--------------------------------------\n");
  printf("输入该通讯录者正确的联系电话 通讯地址:\n中间用空格号分隔\n");
  scanf("%s%s",p->data.phone,p->data.addr);
 
}
 else
  printf("没查到要查询的通讯录者!\n");
}

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

蓄力AI

微信公众号搜索 “ 脚本之家 ” ,选择关注

程序猿的那些事、送书等活动等着你

原文链接:http://blog.csdn.net/qq_33735635/article/details/73743400

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!

相关文章

  • C语言中函数的声明、定义及使用的入门教程

    C语言中函数的声明、定义及使用的入门教程

    这篇文章主要介绍了C语言中函数的声明、定义及使用的入门教程,重点讲述了main函数的相关知识,需要的朋友可以参考下
    2015-12-12
  • 详解C++中的一维数组和二维数组

    详解C++中的一维数组和二维数组

    这篇文章主要介绍了详解C++中的一维数组和二维数组,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • VC++简单实现关机、重启计算机实例代码

    VC++简单实现关机、重启计算机实例代码

    这篇文章主要介绍了VC++简单实现关机、重启计算机实例代码,很实用的功能,需要的朋友可以参考下
    2014-07-07
  • Vscode配置C/C++环境使用minGW(保姆级配置过程)

    Vscode配置C/C++环境使用minGW(保姆级配置过程)

    本文主要介绍了Vscode配置C/C++环境使用minGW(保姆级配置过程),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 浅析bilateral filter双边滤波器的理解

    浅析bilateral filter双边滤波器的理解

    这篇文章主要介绍了bilateral filter双边滤波器的通俗理解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • C语言 CRITICAL_SECTION用法案例详解

    C语言 CRITICAL_SECTION用法案例详解

    这篇文章主要介绍了C语言 CRITICAL_SECTION用法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • C++基于消息队列的多线程实现示例代码

    C++基于消息队列的多线程实现示例代码

    这篇文章主要给大家介绍了关于C++基于消息队列的多线程实现的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C++具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • 一文解析C语言中动态内存管理

    一文解析C语言中动态内存管理

    这篇文章主要为大家详细介绍了C语言中动态内存管理的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以跟随小编一起学习一下
    2024-02-02
  • 深入Main函数中的参数argc,argv的使用详解

    深入Main函数中的参数argc,argv的使用详解

    本篇文章是对Main函数中的参数argc,argv的使用进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++ decltype用法举例说明

    C++ decltype用法举例说明

    decltype是C++11添加的一个新的关键字,目的是选择并返回操作数的数据类型,重要的是,在此过程中编译器分析表达式并得到它的类型,却不实际计算表达式的值,今天通过本文给大家介绍C++ decltype用法,通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2021-07-07

最新评论