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" ); } |
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
相关文章
Vscode配置C/C++环境使用minGW(保姆级配置过程)
本文主要介绍了Vscode配置C/C++环境使用minGW(保姆级配置过程),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2022-02-02
最新评论