通讯录--第一版
来源:互联网 发布:xmr显卡算力 知乎 编辑:程序博客网 时间:2024/05/21 11:34
//基于顺序表实现的简易通讯录-----1#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct stu //定义一个学生信息的结构体类型{char name[20];char sex[6];int age;char tele[20];char address[40];}stu;typedef struct //创建一个顺序表{stu data[1000];int i;}suquence;int find(suquence *book, char *names){int n = 0;while (n < book->i){if (strcmp(book->data[n].name, names) == 0)break;n++;}if (n != book->i)return n; //如果找到则返回这个位置return -1; //没找到返回-1}void Add(suquence *book){if (book->i >= 1000) //最多存储1000条信息{printf("通讯录已满\n");}else{printf("请输入名字:");scanf("%s", book->data[book->i].name);printf("请输入性别:");scanf("%s", book->data[book->i].sex);printf("请输入年龄:");scanf("%d",&book->data[book->i].age);printf("请输入电话:");scanf("%s", book->data[book->i].tele);printf("请输入地址:");scanf("%s", book->data[book->i].address);++book->i;printf("添加成功\n");}}void delete(suquence *book,char *names){if (book->i <= 0) {printf("通讯录已空\n");}else{int n = 0;n = find(book, names); //根据名字查找if (n==0) {printf("没有此人\n");}else{while (n < book->i - 1) //如果找到,则进行删除,依次向前覆盖{book->data[n] = book->data[n + 1];}book->i--; //删除一个,则记录位置的book->i也要减一printf("删除成功\n");}}}void change(suquence *book , char *names){int ret = 0;ret = find(book,names); //先找到这个人的位置if (ret == -1){printf("没有此人\n");}else{printf("请输入名字:");scanf("%s", book->data[ret].name);printf("请输入性别:");scanf("%s", book->data[ret].sex);printf("请输入年龄:");scanf("%d", &book->data[ret].age);printf("请输入电话:");scanf("%s", book->data[ret].tele);printf("请输入地址:");scanf("%s", book->data[ret].address);printf("修改成功\n");}}void output(suquence *book){if (book->i <=0){printf("通讯录为空\n");}else{int n =0;while (n < book->i){printf("名字:%s 性别: %s 年龄: %d 电话: %s 地址: %s\n", book->data[n].name, book->data[n].sex,book->data[n].age,book->data[n].tele,book->data[n].address);n++;}}}void init(suquence *book){book->i = 0; //只要将记录位置的book->i置0printf("初始化成功\n");}void sort(suquence *book){if (book->i >1) //当通讯录中有1个以上记录再进行排序{int i= 0;int j = 0;int flag = 0;for (i = 0; i < book->i-1; i++) {flag = 1;for (j = 0; j < book->i - i - 1; j++){ if (strcmp(book->data[j].name, book->data[j + 1].name) < 0) //根据名字进行排序{char arr[50];strcpy(arr, book->data[j].name);strcpy(book->data[j].name, book->data[j + 1].name);strcpy(book->data[j + 1].name, arr);strcpy(arr, book->data[j].sex);strcpy(book->data[j].sex, book->data[j + 1].sex);strcpy(book->data[j + 1].sex, arr);int tmp = book->data[j].age;book->data[j].age = book->data[j + 1].age;book->data[j + 1].age = tmp;strcpy(arr, book->data[j].tele);strcpy(book->data[j].tele, book->data[j + 1].tele);strcpy(book->data[j + 1].tele, arr);strcpy(arr, book->data[j].address);strcpy(book->data[j].address, book->data[j + 1].address);strcpy(book->data[j + 1].address, arr);flag = 0;} //if 结束}if (flag) //如果已经有序,则flag为真break;}}printf("排序成功\n");}void execute(suquence book){int n = 0;char name[20];while (1){printf("请选择:");scanf("%d", &n);switch (n){case 0:exit(1);break;case 1:Add(&book);break;case 2:printf("请输入姓名:");scanf("%s", name);delete(&book, name);break;case 3:printf("请输入姓名:");scanf("%s", name);change(&book, name);break;case 4:printf("请输入姓名:");scanf("%s", name);int ret = find(&book, name);if (ret ==-1)printf("查询无果\n");elseprintf("名字:%s 性别: %s 年龄: %d 电话: %s 地址: %s\n",book.data[ret].name,book.data[ret].sex,book.data[ret].age,book.data[ret].tele,book.data[ret].address);break;case 5:init(&book);break;case 6:output(&book);break;case 7:sort(&book);break;default:printf("选择无效\n");break;}}}int main(){printf("*******************************\n");printf("*0.exit 1.Add *\n");printf("*2.deletel 3.change *\n");printf("*4.find 5.init *\n");printf("*6.output 7.sort *\n\n");suquence book;book.i = 0;execute(book);system("pause");return 0;}
0 0
- 通讯录--第一版
- 通讯录第一版
- 通讯录-第一版番外篇
- 简单的通讯录——第一版
- 用顺序表实现的简易通讯录(第一版)
- 可以动态增长的通讯录(在第一版的基础上进行了改进)
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- 通讯录
- ListView复用机制
- JAVA Scanner类里next方法和nextLine方法的区别
- PAT-B 1043. 输出PATest
- sql server 数据库差异还原
- leetcode29 : Divide Two Integers
- 通讯录--第一版
- 隐马尔可夫模型的计算
- JAVA SQL语句---注册
- 【问题】.net framework 3.5安装教程
- Charset.defaultCharset() 获取的语言环境的编码到底是哪里来的 ?
- C++实验-5数组分离
- JAVA SQL语句--登陆
- 使用16进制编码的RSA公钥进行RSA加密
- 得到函数所在脚本的绝对路径