课程设计之通讯录管理
来源:互联网 发布:大数据培训学什么课程 编辑:程序博客网 时间:2024/04/25 04:47
/* 烟台大学计算机与控制工程学院 文件名称:main.cpp 作者: 边朔 完成日期:2016.12.29 问题描述:个人通讯录管理系统 程序说明:主函数*/
1.主函数
#include "Contacts.h"int main(){struct address_list *head=NULL;char num[10];printf("*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n");printf("*=* 程序说明 *=*\n");printf("*=* 请及时保存创建完毕的通讯录内容! *=*\n");printf("*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n");while(1){printf("******************************\n");printf("*** 1 创建通讯录 ****\n");printf("*** 2 按名字排序 ****\n");printf("*** 3 综合操作 ****\n");printf("*** 4 保存 ****\n");printf("*** 5 打开 ****\n");printf("*** 6 删除 ****\n");printf("*** 7 退出 ****\n");printf("******************************\n");printf("请输入您选择的操作:");gets(num);switch(*num){case '1':{ system("cls");if(head==NULL){head=creat(); //创建print(head);}else{ system("cls");head=shifang(head);head=creat(); //重新创建print(head);}}break;case '2':{ system("cls");head=paixu(head); //排序}break;case '3':{ system("cls");head=menu(head); //综合操作}break;case '4':{ system("cls");save(head); //文件保存print(head);}break;case '5':{ system("cls");head=load(head); //文件输出}break;case '6':{ system("cls");head=delete_txl(head); //删除print(head);}break;case '7': system("cls");head=shifang(head);break;default: system("cls");printf("操作错误,此项不存在!\n");break;}if(strcmp(num,"7")==0)break;}return 0;}
/*烟台大学计算机与控制工程学院 文件名称:Contacts.h 作者: 边朔 完成日期:2016.12.29 问题描述:个人通讯录管理系统 程序说明:头文件*/
2.头文件
#ifndef CONTACTS_H_INCLUDED#define CONTACTS_H_INCLUDED#include <stdio.h>#include <malloc.h> //得到指向大小为Size的内存区域的首字节的指针#include <string.h>#include <stdlib.h> //标准库函数#define NULL 0#define LEN sizeof(struct address_list) //计算字节struct address_list{char name[30]; //名字char work[30]; //职业char handset[30]; //手机char email[30]; //电子邮件char address[30]; //通讯地址struct address_list *next;};struct address_list *shifang(struct address_list *head); // 释放内存函数声明struct address_list *creat(void);void print(struct address_list *head);struct address_list *insert(struct address_list *head);struct address_list *delete_txl(struct address_list *head);struct address_list *display(struct address_list *head);struct address_list *paixu(struct address_list *head);struct address_list *search(struct address_list *head);struct address_list *shifang(struct address_list *head);void save(struct address_list *head);struct address_list *load(struct address_list *head);struct address_list *menu(struct address_list *head);
/*烟台大学计算机与控制工程学院 文件名称:Contacts.cpp 作者: 边朔 完成日期:2016.12.29 问题描述:个人通讯录管理系统 程序说明:源文件*/
3.源文件
#include "Contacts.h"int n;//创建函数,不带头结点的链表struct address_list *creat(void){struct address_list *head,*p1,*p2;char name[20];n=0;p1=(struct address_list *)malloc(LEN);p2=p1; //强制内存转换printf("请输入通讯录的内容!\n姓名输入为0时表示创建完毕!\n");printf("请输入姓名:");gets(name);if(strcmp(name,"0")!=0){strcpy(p1->name,name);printf("请输入职业:"); gets(p1->work);printf("请输入手机:"); gets(p1->handset);printf("请输入电子邮件:"); gets(p1->email);printf("请输入通讯地址:"); gets(p1->address);head=NULL;while(1){n=n+1; //记录通讯录人数个数if(n==1)head=p1;elsep2->next=p1;p2=p1;printf("请输入姓名:");gets(name);if(strcmp(name,"0")==0){break;}else{p1=(struct address_list *)malloc(LEN);strcpy(p1->name,name);printf("请输入职业:"); gets(p1->work);printf("请输入手机:"); gets(p1->handset);printf("请输入电子邮件:"); gets(p1->email);printf("请输入通讯地址:"); gets(p1->address);}}p2->next=NULL;return head;}elsereturn 0;}//功能描述:输出函数void print(struct address_list *head){struct address_list *p;if(head!=NULL){p=head;printf("本通讯录现在共有%d人:\n",n);printf("---姓名-------职业--------手机-------Email-------通讯地址\n");printf("==================================\n");do{printf("== %s",p->name); printf(" ");printf("%s",p->work); printf(" ");printf("%s",p->handset); printf(" ");printf("%s",p->email); printf(" ");printf("%s",p->address); printf(" \n");p=p->next;}while(p!=NULL);printf("==================================\n");}elseprintf("通讯录为空,无法输出!\n");}//功能描述:增加函数struct address_list *insert(struct address_list *head){struct address_list *p0,*p1,*p2;char name[20];p1=head;printf("请输入增加的内容:\n");printf("请输入姓名:"); gets(name);if(strcmp(name,"0")==0){printf("姓名不能为0,增加失败!\n");return(head);}else{p0=(struct address_list *)malloc(LEN);strcpy(p0->name,name);printf("请输入职业:"); gets(p0->work);printf("请输入手机:"); gets(p0->handset);printf("请输入电子邮件:"); gets(p0->email);printf("请输入通讯地址:"); gets(p0->address);n=n+1;if(head==NULL){head=p0;p0->next=NULL;return head;}else{while(strcmp(p0->name,p1->name)>0&&(p1->next!=NULL)){p2=p1;p1=p1->next;}if(strcmp(p0->name,p1->name)<0 || strcmp(p0->name,p1->name)==0){if(head==p1){head=p0;}else{p2->next=p0;}p0->next=p1;}else{p1->next=p0;p0->next=NULL;}return head;}}}//功能描述:删除姓名struct address_list* delete_txl(struct address_list *head){struct address_list *p,*q;char name[30];if(head==NULL){printf("通讯录为空,无法显示!\n");return head;}p=head;printf("请输入需要删除的人的姓名:");gets(name);if(strcmp(head->name,name)==0){head=head->next;free(p);printf("删除操作成功!\n"); n--;return head;}else{q=head,p=head->next;while(p!=NULL){if(strcmp(p->name,name)==0){q->next=p->next;free(p);printf("删除操作成功!\n"); n--;return head;}p=p->next;q=q->next;}}}//显示函数struct address_list *display(struct address_list *head){struct address_list *p1,*p2;char name[30];int m;if(head==NULL){printf("通讯录为空,无法显示!\n");return head;}p1=head;m=0;printf("请输入需要显示人的姓名:");gets(name);while(p1!=NULL){while((strcmp(p1->name,name))!=0 && p1->next!=NULL){p2=p1;p1=p1->next;}if(strcmp(p1->name,name)==0){m++;printf("%s的通讯内容如下:\n",name);printf("---姓名--------职业--------手机-------Email------通讯地址\n");printf("==================================\n");printf("== %s",p1->name);printf(" ");printf("%s",p1->work);printf(" ");printf("%s",p1->handset);printf(" ");printf("%s",p1->email);printf(" ");printf("%s",p1->address); printf(" \n");printf("==================================\n");}p1=p1->next;}if(m==0){printf("此人未在本通讯录中!\n");}return(head);}//排序函数struct address_list *paixu(struct address_list *head){struct address_list *p1,*p2;int i,j;struct address_list1{char name[30];char work[30];char handset[30];char email[30];char address[30];};struct address_list1 px[200];struct address_list1 temp;if(head==NULL){printf("通讯录为空,无法排序!\n");return(head);}p1=head;for(i=0;i<n,p1!=NULL;i++){strcpy(px[i].name,p1->name);strcpy(px[i].work,p1->work);strcpy(px[i].handset,p1->handset);strcpy(px[i].email,p1->email);strcpy(px[i].address,p1->address);p2=p1;p1=p1->next;}head=shifang(head);for(j=0;j<n-1;j++){for(i=j+1;i<n;i++){if(strcmp(px[i].name,px[j].name)<0){temp=px[i];px[i]=px[j];px[j]=temp;}}}p1=(struct address_list *)malloc(LEN);p2=p1;strcpy(p1->name,px[0].name);strcpy(p1->work,px[0].work);strcpy(p1->handset,px[0].handset);strcpy(p1->email,px[0].email);strcpy(p1->address,px[0].address);head=p1;for(i=1;i<n;i++){p1=(struct address_list *)malloc(LEN);strcpy(p1->name,px[i].name);strcpy(p1->work,px[i].work);strcpy(p1->handset,px[i].handset);strcpy(p1->email,px[i].email);strcpy(p1->address,px[i].address);p2->next=p1;p2=p1;}p2->next=NULL;printf("按姓名排序后为:\n");print(head);return(head);}//姓名查找函数struct address_list *search(struct address_list *head){struct address_list *p1,*p2;int m;char name[30];if(head==NULL){printf("通讯录为空,无法分类查找!\n");return(head);}p1=head;printf("****************************\n");printf("** 请输入需要查找的姓名 **\n");printf("****************************\n");m=0;gets(name);while(p1!=NULL){while(strcmp(p1->name,name)!=0&&p1->next!=NULL){p2=p1;p1=p1->next;}if(strcmp(p1->name,name)==0){m++;printf("你查找的内容是:\n");printf("+++++++++++++++++++++++++++++++++++\n");printf("++ %s %s %s %s %s\n",p1->name,p1->work,p1->handset,p1->email,p1->address);printf("+++++++++++++++++++++++++++++++++++\n");}p1=p1->next;if(m==0){printf("此人未在本通讯录中!\n");}break;}return(head);}//释放内存函数struct address_list *shifang(struct address_list *head){struct address_list *p1;while(head!=NULL){p1=head;head=head->next;free(p1);}return(head);}//文件写入函数void save(struct address_list *head){FILE *fp;struct address_list *p1;char tong[30];if(head==NULL){printf("通讯录为空,无法存储!\n");return;}printf("请输入保存后的文件名:");gets(tong);fp=fopen(tong),"w");if(fp==NULL){printf("cannot open file\n");return;}p1=head;fprintf(fp,"姓名 职业 手机 Email 通讯地址\n");for(;p1!=NULL;){fprintf(fp,"%s %s %s %s %s\n",p1->name,p1->work,p1->handset,p1->email,p1->address);p1=p1->next;}printf("保存完毕!\n");fclose(fp);}//文件读出函数struct address_list *load(struct address_list *head){FILE *fp;char tong[30];struct address_list *p1,*p2;printf("请输入要输出的文件名:");gets(tong);fp=fopen(tong,"r");if(fp==NULL){printf("此通讯录名不存在,无法输出!\n");return(head);}else{head=shifang(head);}p1=(struct address_list *)malloc(LEN);fscanf(fp,"%s%s%s%s%s",&p1->name,&p1->work,&p1->handset,&p1->email,&p1->address);if(feof(fp)!=0){printf("文件为空,无法打开!\n");return(head);}else{rewind(fp);p2=p1;head=p1;n=0;while(feof(fp)==0){fscanf(fp,"%s%s%s%s%s",&p1->name,&p1->work,&p1->handset,&p1->email,&p1->address);if(feof(fp)!=0)break;p2->next=p1;p2=p1;p1=(struct address_list *)malloc(LEN);n=n+1;}p2->next=NULL;p1=head;head=head->next;n=n-1;free(p1);print(head);printf("打开完毕!\n");return(head);}fclose(fp);}//综合操作函数struct address_list *menu(struct address_list *head){char num[10];while(1){printf("************************\n");printf("*** 1 姓名查找 ****\n");printf("*** 2 单个显示 ****\n");printf("*** 3 增加 ****\n");printf("*** 4 退出 ****\n");printf("************************\n");printf("请输入您选择的操作:");gets(num);switch(*num){case '1':{head=search(head); //姓名查找print(head);}break;case '2':{head=display(head); //显示}break;case '3':{head=insert(head); //增加print(head);}break;case '4':return head;default:printf("操作错误,此项不存在!\n");break;}if(strcmp(num,"6")==0)break;}return head;}
运行结果:
0 0
- 课程设计之通讯录管理
- c++课程设计之通讯录电话簿管理设计
- 数据结构课程设计之通讯录管理系统
- 【课程设计-通讯录管理系统】
- 课程设计 个人通讯录管理助手
- 数据结构课程设计 - 通讯录管理系统
- 课程设计之通讯录(修改)
- 课程设计——通讯录管理系统
- 数据结构实践课程设计【通讯录管理系统】
- 课程设计——通讯录管理系统
- 数据结构课程设计——通讯录管理系统
- 数据结构课程设计—通讯录管理系统
- 数据结构课程设计—通讯录管理系统
- 数据结构课程设计—通讯录管理系统
- 数据结构课程设计—通讯录管理系统
- 数据结构课程设计—通讯录管理系统
- 通讯录管理系统C语言课程设计
- C++课程设计报告--通讯录管理系统
- 我的第一篇CSDN博客
- 直播进入深水区,谁才是给一直播们输氧的“氧气瓶”?
- 获取豆瓣分类排行电影的URL
- Do a summary,C编程信条1.0
- arcgis地图编辑及服务发布
- 课程设计之通讯录管理
- springmvc+hibernate+spring在maven中整合
- WIN10下安装VMware Workstation Pro 12+CentOS 7
- ERP项目——Ibatis2.3Excel导入及数据库优化
- JAVA小白的奋斗之旅Day2与Day3
- SQLite 聚合函数中的 group_concat()
- 2017年值得一看的设计趋势(三)
- Insert Interval
- Servlet监听器详解及举例