- #include <stdio.h>
- #include <string.h>
- #define NAMELEN 22
- #define TELLEN 12
- #define CONTECTNUM 100
- void writeFile();
- void init();
- void doAdd();
- void doShow();
- void doDelete();
- void doUpdata();
- void doSearch();
- //定义文件指针
- char *filePath = "telbook_tree.data";
- typedef struct{
- char name[NAMELEN];
- char telNum[TELLEN];
- }Person;
- //定义联系人结构体数组
- Person contacts[CONTECTNUM];
- //定义联系人数量
- int contactsnum = 0;
- int main(int argc, const char * argv[]) {
-
- //初始化通讯录
- init();
- printf("通讯录初始化完成!\n");
- while (1) {
- printf("**************************\n");
- printf("****** 欢迎使用通讯录 ******\n");
- printf("****** 1、添加联系人 ******\n");
- printf("****** 2、删除联系人 ******\n");
- printf("****** 3、修改联系人 ******\n");
- printf("****** 4、查看所有联系人 ****\n");
- printf("****** 5、搜索联系人 ******\n");
- printf("****** 6、退出系统 ******\n");
- printf("**************************\n\n");
- int no = 0;
- printf("请输入您要选择的操作序号:");
- scanf("%d",&no);
- if (no<1||no>6) {
- printf("您的操作请求不合法");
- }else{
- switch (no) {
- case 1:
- doAdd();
- break;
- case 2:
- doDelete();
- break;
- case 3:
- doUpdata();
- break;
- case 4:
- doShow();
- break;
- case 5:
- doSearch();
- break;
- case 6:
- printf("系统正在退出...\n系统推出成功\n");
- return 0;
- break;
- default:
- break;
- }
- }
- printf("\n");
- }
- return 0;
- }
- void init(){
-
- FILE *fp = fopen(filePath, "r");
- if (fp!=NULL) {
- //如果不为空 将文件中的数据更新到程序中
- fread(&contactsnum, sizeof(contactsnum), 1, fp);
- for (int i=0; i<contactsnum; i++) {
- fread(&contacts[i], sizeof(Person), 1, fp);
- }
- }else{
- //如果为空 新建文件 将人员个数写入
- fp = fopen(filePath, "wb");
- fwrite(&contactsnum, sizeof(contactsnum), 1, fp);
- printf(" */文件初始化中/*\n");
- printf("通讯录文件创建成功\n");
- }
- fclose(fp);
- }
- void writeFile(){
- FILE *fp = fopen(filePath, "wb");
- if (fp!=NULL) {
- fwrite(&contactsnum, sizeof(contactsnum), 1, fp);
- for (int i=0; i<contactsnum; i++) {
- fwrite(&contacts[i], sizeof(Person), 1, fp);
- }
- }
- fclose(fp);
- }
- void doAdd(){
- printf("请输入联系人姓名(注意中间不可有空格):\n");
- scanf("%s",contacts[contactsnum].name);
- printf("请输入联系人电话(注意中间不可有空格):\n");
- scanf("%s",contacts[contactsnum].telNum);
-
- printf("您确定要添加吗?1.确定 0.取消\n");
- int flag;
- scanf("%d",&flag);
- if (flag) {
- contactsnum++;
- writeFile();
- printf("文件更新成功\n");
- }else{
- printf("您的操作已经取消\n");
- }
- }
- void doDelete(){
- doShow();
- printf("请输入删除的联系人的编号:\n");
- int no;
- scanf("%d",&no);
- if (no == contactsnum) {
- contactsnum--;
- }else{
- for (int i=no-1; i<contactsnum; i++) {
- contacts[i]=contacts[i+1];
- }
- contactsnum--;
- }
- writeFile();
- printf("联系人删除成功\n");
- }
- void doShow(){
-
- if (contactsnum == 0) {
- printf("您的通讯录里暂时没有联系人,请自行维护。\n");
- }else{
- printf("序号\t 联系人\t\t 联系方式\t\n");
- for (int i=0; i<contactsnum; i++) {
- printf("%d\t %s\t\t %s\t\n",i+1,contacts[i].name,contacts[i].telNum);
- }
- }
-
- }
- void doUpdata(){
-
- doShow();
- printf("请输入您要修改的联系人序号:\n");
- int no = 0;
- scanf("%d",&no);
- printf("请选择您要修改的项目:1.联系人 2.联系方式 3.全部修改 0.取消操作\n");
- int fno = 0;
- scanf("%d",&fno);
- switch (fno) {
- case 1:
- printf("请输入新的联系人姓名:\n");
- char name[NAMELEN];
- scanf("%s",name);
- strcpy(contacts[no-1].name,name);
- break;
- case 2:
- printf("请输入新的联系方式:\n");
- char tel[TELLEN];
- scanf("%s",tel);
- strcpy(contacts[no-1].telNum, tel);
- break;
- case 3:
- printf("请输入新的联系人姓名:\n");
- char name1[NAMELEN];
- scanf("%s",name1);
- strcpy(contacts[no-1].name,name1);
- printf("请输入新的联系方式:\n");
- char tel1[TELLEN];
- scanf("%s",tel1);
- strcpy(contacts[no-1].telNum, tel1);
- break;
- case 0:
- printf("您的操作应经成功取消\n");
- break;
- default:
- break;
- }
- writeFile();
- printf("您的通讯录已经同步更新\n");
- }
- void doSearch(){
-
- printf("请选择您要搜索的方式:1.按姓名搜索 2.按号码搜索\n");
- int flag = 0;
- scanf("%d",&flag);
- if (flag ==1 ) {
- printf("请输入您要搜索人的姓名:\n");
- char name[NAMELEN];
- scanf("%s",name);
- printf("您的搜索结果是:\n");
- int i;
- for (i=0; i<contactsnum; i++) {
- if (strcmp(name,contacts[i].name)==0) {
- printf("序号\t 联系人\t\t 联系方式\t\n");
- printf("%d\t %s\t\t %s\t",i+1,contacts[i].name,contacts[i].telNum);
- break;
- }
- }
- if (i == contactsnum ) {
- printf("联系人不存在,请核对后查找\n");
- }
- }else if (flag == 2){
- printf("请输入您要搜索的联系方式:\n");
- char tel[TELLEN];
- scanf("%s",tel);
- printf("您的搜索结果是:\n");
- int i;
- for (i=0; i<contactsnum; i++) {
- while (strcmp(contacts[i].telNum,tel) == 0) {
- printf("序号\t 联系人\t\t 联系方式\t\n");
- printf("%d\t %s\t\t %s\t",i+1,contacts[i].name,contacts[i].telNum);
- break;
- }
- }
- if (i == contactsnum ) {
- printf("联系人不存在,请核对后查找\n");
- }
-
- }
- }
复制代码
|
|