目录
代码展示
2021/9/20 22:45 第一次更新
2021/9/25 17:30 第二次更新
2021/9/26 18:11 第三次更新(最终版)
效果展示
主界面
查看联系人
添加联系人
修改联系人
删除联系人
结束界面
检验结果
2021/9/20 22:45 第一次更新
#include
#include
void menu();
void select();
int main(){
int option;
do{
menu();
scanf("%d",&option);
switch(option){
case 1:
select();
break;
case 2:
printf("添加\n");
break;
case 3:
printf("修改\n");
break;
case 4:
printf("删除\n");
break;
case 5:
printf("查询\n");
break;
case 6:
printf("退出\n");
break;
default:
printf("错误指令\n");
fflush(stdin); // 这里避免进入死循环输出"错误指令"
}
}while(option != 6);
return 0;
}
void menu(){
printf("\n\n\n\n");
printf("\t\t\t\t-----------电话本-----------\n");
printf("\t\t\t\t*******查看 联系人(1)*******\n");
printf("\t\t\t\t*******添加 联系人(2)*******\n");
printf("\t\t\t\t*******修改 联系人(3)*******\n");
printf("\t\t\t\t*******删除 联系人(4)*******\n");
printf("\t\t\t\t*******查询 联系人(5)*******\n");
printf("\t\t\t\t*******退 出 程 序(6)*******\n");
printf("\n\n\n\n");
}
void select(){
system("cls");
fflush(stdin);
printf("查看\n");
system("pause");
system("cls");
fflush(stdin);
}
2021/9/25 17:30 第二次更新
#include
#include
#include
#include
#define Len 5
int n = 0; // 有几行数据
typedef struct node{
char name[20];
int num;
}Node;
void show(Node a[],int len); // 展示数组
void intailize(Node a[],int len); // 数组初始化
void add(Node a[],int len); // 添加
void del(Node a[],int len);// 删除
void mod(Node a[],int len);// 修改
void sea(Node a[],int len);// 查找
void Write(Node nodes[],int len); // 写文件
void Read(Node nodes[]); // 读文件
int main(){
// 定义数组,初始化
Node a[Len];
intailize(a,Len);
Read(a);
// //录入信息
// for(int i = 0; i < Len - 1;i++){
// add(a,Len);
// }
show(a,Len);
//Write(a,Len);
return 0;
}
void Write(Node nodes[],int len){ // 写文件
// 定义一个文件指针
FILE *fp ;
// 打开文件,没有文件自动创建
fp = fopen("node.dat","wb"); // b:表示以二进制写入
// 写入数据
fwrite( (char*)nodes,sizeof(Node),len,fp); // len:表示将数组中len行写入文件
fclose(fp);
}
void Read(Node nodes[]){ // 读文件
// 定义一个文件指针
FILE *fp ;
// 定义一个buf结构体,用于得到文件内容
struct stat buf;
// 求文件中的行数(用全局变量n收取)
stat("node.dat",&buf);
n = buf.st_size/sizeof(Node);
// 打开文件
fp = fopen("node.dat","rb");
// 读取数据到数组中
fread((char *)nodes,sizeof(Node),n,fp);
// 关闭文件
fclose(fp);
// 遍历数组,打印数据信息
for(int i=0;i
2021/9/26 18:11 第三次更新(最终版)
#include
#include
#include
#include
#define LEN 1000
int n = 0; // 数据有效行数
typedef struct person{
char name[20]; // 姓名
char sex[20]; // 性别
char num[20]; // 手机号
}Person;
void menu();// 主界面
void select(Person person[]);// 查看联系人
void add(Person person[]);// 添加联系人
void mod(Person person[]);// 修改联系人
void del(Person person[]);// 删除联系人
void sea(Person person[]);// 查询联系人
void Read(Person person[]);// 读文件
void Write(Person person[],int len);// 写文件
void intailize(Person person[],int len);// 初始化
void thanks();// 结束界面
int main(){
system("color e1"); // 更换背景、文字颜色
int option;
Person person[LEN];
intailize(person,LEN); // 初始化数组
Read(person); // 程序启动时自动读取文件,Read中会读取行数赋值给 n
do{
menu();
scanf("%d",&option);
switch(option){
case 1:
select(person);
break;
case 2:
add(person);
break;
case 3:
mod(person);
break;
case 4:
del(person);
break;
case 5:
sea(person);
break;
case 6:
Write(person,n); // 退出时自动保存
system("pause");
thanks();
break;
default:
system("cls");
fflush(stdin);
}
}while(option != 6);
return 0;
}
void menu(){
printf("\n\n\n\n");
printf("\t\t\t\t-----------电话本-----------\n");
printf("\t\t\t\t*******查看 联系人(1)*******\n");
printf("\t\t\t\t*******添加 联系人(2)*******\n");
printf("\t\t\t\t*******修改 联系人(3)*******\n");
printf("\t\t\t\t*******删除 联系人(4)*******\n");
printf("\t\t\t\t*******查询 联系人(5)*******\n");
printf("\t\t\t\t*******退 出 程 序(6)*******\n");
printf("\n\n\n\n");
}
void select(Person person[]){ // 查看
system("cls");
fflush(stdin);
printf("\n\n\t\t\t\t=========通讯录名单=========\n");
for(int i = 0;i < n;i++){
printf("\t\t\t\t%s \t %s \t %s\n",person[i].name,person[i].sex,person[i].num);
}
printf("\n\n");
system("pause");
system("cls");
fflush(stdin);
}
void add(Person person[]){ // 添加
system("cls");
fflush(stdin);
printf("★添加联系人★\n\n");
printf("请按此格式添加信息(每条信息以一个空格隔开):\n例:小明 男 11648618462\n\n");
scanf("%s %s %s",&person[n].name,&person[n].sex,&person[n].num);
n++; // 先输入,再 n++
system("pause");
system("cls");
fflush(stdin);
}
void mod(Person person[]){ //修改
system("cls");
fflush(stdin);
printf("★修改联系人★\n\n");
printf("输入修改联系人的人名:");
char name[20];
scanf("%s",name);
for(int i =0;i < n; i++){
int cmp = strcmp(person[i].name,name);
if(cmp == 0){
printf("输入修改信息(0人名)(1性别)(2号码):");
int choose;
scanf("%d",&choose);
printf("修改后的结果:");
switch(choose){
case 0:
char tempName[20];
scanf("%s",tempName);
strcpy(person[i].name,tempName);
break;
case 1:
char tempSex[20];
scanf("%s",tempSex);
strcpy(person[i].sex,tempSex);
break;
case 2:
char tempNum[20];
scanf("%s",tempNum);
strcpy(person[i].num,tempNum);
break;
}
printf("修改第 %i 条数据!\n",i+1);
}
}
system("pause");
system("cls");
fflush(stdin);
}
void del(Person person[]){ // 删除
system("cls");
fflush(stdin);
printf("★删除联系人★\n\n");
printf("输入删除联系人的人名:");
char name[20];
scanf("%s",name);
for(int i =0;i < n; i++){
int cmp = strcmp(person[i].name,name);
if(cmp == 0){
for(int j =i; j < n-1;j++){
person[j] = person[j+1];
}
n--;
printf("删除第 %i 条数据!\n",i+1);
}
}
system("pause");
system("cls");
fflush(stdin);
}
void sea(Person person[]){ // 查询
system("cls");
fflush(stdin);
printf("★查询联系人★\n\n");
printf("输入要查找联系人的人名:");
char name[20];
scanf("%s",name);
for(int i =0;i < n; i++){
int cmp = strcmp(person[i].name,name);
if(cmp == 0){
printf(" 姓名:%s\n 性别:%s\n 电话号码:%s\n",person[i].name,person[i].sex,person[i].num);
}
}
system("pause");
system("cls");
fflush(stdin);
}
void Read(Person person[]){ // 读文件
FILE *fp ;
struct stat buf;// 定义一个buf结构体,用于得到文件内容
stat("person.dat",&buf);
n = buf.st_size/sizeof(Person); // 求文件中的行数(用全局变量n收取)
fp = fopen("person.dat","rb");
fread((char *)person,sizeof(Person),n,fp);// 读取数据到数组中
fclose(fp);
printf("\n\n\n\n");
}
void Write(Person person[],int len){ // 写文件
FILE *fp ;
fp = fopen("person.dat","wb");
fwrite( (char*)person,sizeof(Person),len,fp); // len:表示将数组中len行写入文件
fclose(fp);
printf("保存成功!");
}
void intailize(Person person[],int len){ // 初始化
for(int i = 0;i < len; i++){
strcpy(person[i].name,"未录入");
strcpy(person[i].sex,"未录入");
strcpy(person[i].num,"未录入");
}
}
void thanks(){ // 结束界面
system("cls");
printf("\n感谢使用!\n");
printf("\n *\n");
printf(" * *** ****\n");
printf(" *** **** ****\n");
printf(" **** **** **** ****\n");
printf(" **** **** **** ****\n");
printf(" **** **** **** ****\n");
printf(" **** **** **** ****\n");
printf(" **** **** **** ****\n");
printf(" **** ******* ****\n");
printf(" *************\n");
printf(" *****\n");
printf("\n作者:Goodrain7");
}