为了实现我几天前的梦想(抄作业)(CSDN上面居然没有可以直接抄的作业),只好自己写,不过也是看了CSDN上面搜索通讯录管理系统置顶的那篇文章然后自己再写一部分。(不想写,抄了一部分,CV战士所向披靡!)
注意:本文主要帮助大一下大作业的朋友们。
通讯录管理系统
好的,废话不多说,直接源代码(我自群众中来,最懂大家需要什么)
#include<iostream>
#include<string>
#include<assert.h>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
FILE* fp;//读取txt或写入txt的指针
enum contactCapacity
{
MaxName = 50,//名字长度
MaxSex = 3,//性别
MaxNumberofTele = 18,//电话号码长度
Maxaddr = 30,//地址长度
Maxuser = 20//通讯录用户最大数量
};
enum operate
{
add=1,
del,
search,
modify,
print,
exitt=0
};
void menu()
{
printf("-----------------------------\n");
printf("| 1.增加联系人 |\n");
printf("| 2.删除联系人 |\n");
printf("| 3.查找联系人 |\n");
printf("| 4.修改联系人 |\n");
printf("| 5.查看通讯录 |\n");
printf("| 0.退出通讯录并保存 |\n");
printf("-----------------------------\n");
}
typedef struct Users
{
char name[MaxName];
char sex[MaxSex];
int age;
char tele[MaxNumberofTele];
char addr[Maxaddr];
}User;
typedef struct Contact
{
User con[Maxuser];
int sy;//序号
}contact;
void Initcon(contact* PC)//初始化结构体
{
assert(PC);
PC->sy = 0;
memset(PC->con, 0, sizeof(PC->con));
}
void Add(contact* PC)
{
assert(PC);
if (PC->sy == Maxuser)
printf("通讯录已经存满!");
printf("请输入姓名:\n");
cin >> PC->con[PC->sy].name;
printf("请输入性别:\n");
cin >> PC->con[PC->sy].sex;
printf("请输入年龄:\n");
cin >> PC->con[PC->sy].age;
printf("请输入电话号码:\n");
cin >> PC->con[PC->sy].tele;
printf("请输入地址:\n");
cin >> PC->con[PC->sy].addr;
PC->sy++;
printf("此联系人添加成功!\n");
}
void printcon(const contact* PC)
{
assert(PC);
printf("%-15s %-5s %-5s %-12s %-30s\n", "姓名", "性别", "年龄", "电话", "地址");
for (int i = 0; i < PC->sy; i++)
{
printf("%-15s %-5s %-5d %-12s %-30s\n", PC->con[i].name, PC->con[i].sex, PC->con[i].age, PC->con[i].tele, PC->con[i].addr);
}
}
int Findname(const contact* PC, char* name)
{
assert(PC && name);
for (int i = 0; i < PC->sy; i++)
{
if ( strcmp(PC->con[i].name, name)==0)
return i;
}
return -1;
}
void Search(contact* PC)
{
assert(PC);
char name[MaxName];
printf("请输入要查找的联系人名字:\n");
cin >> name;
int xzrxb = Findname(PC, name);
if (xzrxb == -1)
printf("未不到此人!\n");
else
{
printf("%-15s %-5s %-5s %-12s %-30s\n", "姓名", "性别", "年龄", "电话", "住址");
printf("%-15s %-5s %-5d %-12s %-30s\n", PC->con[xzrxb].name, PC->con[xzrxb].sex, PC->con[xzrxb].age, PC->con[xzrxb].tele, PC->con[xzrxb].addr);
}
}
void Modify(contact* PC)
{
assert(PC);
char name[MaxName];
printf("请输入要修改的联系人名字\n");
cin >> name;
int xzrxb = Findname(PC, name);
if (xzrxb == -1)
printf("没有找到!\n");
else
{
int num = 0;
do
{
printf("请输入要修改的联系人信息\n");
printf("0.退出\n1.姓名\n2.性别\n3.年龄\n4.电话号码\n5.地址\n");
cin >> num;
switch (num)
{
case 1:
printf("请输入你要修改成的姓名:\n");
cin >> PC->con[xzrxb].name;
break;
case 2:
printf("请输入你要修改成的性别:\n");
cin >> PC->con[xzrxb].sex;
break;
case 3:
printf("请输入你要修改成的年龄:\n");
cin >> PC->con[xzrxb].age;
break;
case 4:
printf("请输入你要修改成的电话号码:\n");
cin >> PC->con[xzrxb].tele;
break;
case 5:
printf("请输入你要修改成的地址:\n");
cin >> PC->con[xzrxb].addr;
break;
case 0:
printf("返回界面\n");
break;
default:printf("无效操作!\n");
}
} while (num);
}
}
void Del(contact* PC)
{
assert(PC);
char name[MaxName];
printf("请输入要删除的用户名字:\n");
cin >> name;
int xzrxb = Findname(PC, name);
if (xzrxb == -1)
printf("未找到此人!\n");
else
{
for (int i = xzrxb; i < PC->sy; i++)
{
PC->con[i] = PC->con[i + 1];
}
PC->sy--;
printf("删除成功!\n");
}
}
void duru(contact* PC)
{
fp=fopen( "C:\\Users\\00\\Desktop\\c\\vs\\Project1\\xinxi.txt", "r");
if (fp == NULL)
printf("读入失败!\n");
else
{
fscanf(fp, "%d", &PC->sy);
for(int i=0;i<PC->sy;i++)
{
fscanf(fp, "%s", &PC->con[i].name);
fscanf(fp, "%s", &PC->con[i].sex);
fscanf(fp, "%d", &PC->con[i].age);
fscanf(fp, "%s", &PC->con[i].tele);
fscanf(fp, "%s", &PC->con[i].addr);
}
printf("读入成功!\n");
}
}
void xieru(contact* PC)
{
fp = fopen("C:\\Users\\00\\Desktop\\c\\vs\\project1\\xinxi.txt", "w+");
fprintf(fp, "%d\n", PC->sy);
for (int i = 0; i < PC->sy; i++)
{
fprintf(fp, "%s\n", PC->con[i].name);
fprintf(fp, "%s\n", PC->con[i].sex);
fprintf(fp, "%d\n", PC->con[i].age);
fprintf(fp, "%s\n", PC->con[i].tele);
fprintf(fp, "%s\n", PC->con[i].addr);
}
fclose(fp);
}
void text()
{
contact con;
Initcon(&con);
duru(&con);
int input = 0;
do {
menu();
cin >> input;
switch (input)
{
case add:
Add(&con);
break;
case del:
Del(&con);
break;
case search:
Search(&con);
break;
case modify:
Modify(&con);
break;
case print:
printcon(&con);
break;
case exitt:
xieru(&con);
printf("退出程序!\n");
break;
default:
printf("无法识别该数字的操作\n");
}
} while (input);
}
int main()
{
FILE* fp = NULL;
text();
return 0;
}
通讯录功能包括:增加、删除、查找、查看全部通讯录、修改、保存和读取本地文本文档的存档功能。
ok,分享到此为止,如果有不懂可以...额自己搜索,主要是问了万一我回答不上那多尴尬。
对了,如果用VS编译器记得改项目属性SDL检查改成否,不然又要安全警告。