在这里插入代码片
@TOC
用python和C语言写电话本管理系统,信息保存到本地文件
##Python源码
import json
people={}
try:
with open ("Book.json","r") as obj:
book=json.load(obj)
except FileNotFoundError:
with open ("Book.json","w") as obj:
json.dump(people,obj)
def add():
with open("Book.json","r") as obj:
book=json.load(obj)
name=input("请输入姓名:")
if name in book:
print("已有该用户!!!")
return
a=[0]*2
age=input("请输入年龄:")
a[0]=age
phone=input("请输入电话:")
a[1]=phone
book[name]=a
filename="Book.json"
with open (filename,"w+") as obj:
json.dump(book,obj)
print("添加成功!!!")
def search():
with open("Book.json","r") as obj:
book=json.load(obj)
searchName=input("请输入联系人的姓名:")
if searchName in book:
print("查询成功!!!")
print("--------------------------------------")
print("姓名:{} 年龄:{} 电话:{}".format(searchName,book[searchName][0],book[searchName][1]))
print("--------------------------------------")
else:
print("查询失败!无该联系人")
def change():
with open("Book.json","r") as obj:
book=json.load(obj)
name=input("请输入要修改联系人的姓名:")
if name in book:
book[name][1]=input("请输入新的电话号码:")
with open ("Book.json","w+") as obj:
json.dump(book,obj)
print("修改成功!!!")
else:
print("未找到该联系人!!!")
def delet():
with open("Book.json","r") as obj:
book=json.load(obj)
name=input("请输入要删除联系人的姓名:")
if name in book:
del book[name]
print("删除成功!!!")
with open ("Book.json","w+") as obj:
json.dump(book,obj)
else:
print("未找到该联系人!!!")
def output():
with open("Book.json","r") as obj:
book=json.load(obj)
print("姓名 年龄 电话")
print("--------------------------------------")
for key,val in book.items():
print("{} {} {}".format(key,val[0],val[1]))
print("--------------------------------------")
i=1
while i:
print("请选择下列序号:")
print("--------------------------------------")
print("1.添加联系人 2.查找联系人")
print("3.删除联系人 4.修改联系人")
print("5.显示所有联系人" )
print("--------------------------------------")
choose=eval(input())
if choose==1:
add()
elif choose==2:
search()
elif choose ==3:
delet()
elif choose==4:
change()
elif choose==5:
output()
print("继续请输入1,退出请输入0")
i=eval(input())
##C语言源码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
using namespace std;
typedef struct person{
char name[25];
char age[25];
char num[25];
}person;
void write(person p[100], int count) {
int i;
FILE * fp;
char ans[9]="Book.txt";
if((fp = fopen(ans, "wb")) == NULL) {
printf("\n文件打开失败!\n");
}
fwrite(&count, sizeof(count), 1, fp);
for(i = 1; i <=count; i++) fwrite(&p[i], sizeof(person), 1, fp);//for(i = 0; i <count; i++) fwrite(&p[i], sizeof(person), 1, fp);
printf("保存成功!!!\n");
fclose(fp);
}
int read(person p[100], int count) {
FILE *fp;
int i;
int n = 0;
char ans[9]="Book.txt";
fp = fopen(ans, "rb");
if(fp == NULL) {
printf("\n通讯录文件不存在!\n");
}
fread(&n, sizeof(n), 1, fp);
for(i = count; i < count + n; i++) //for(i = 0; i < n; i++)
{
fread(&p[i], sizeof(person), 1, fp);
}
printf("已从文件中成功读取%d条联系人信息!\n", n);
return n;
}
void add(person *p, int *count)
{
int falg = 0;
printf("请输入姓名:\n");
scanf("%s", p[*count].name);
printf("请输入年龄:\n");
scanf("%s", p[*count].age);
printf("请输入电话号码:\n");
scanf("%s", p[*count].num);
*count += 1;
printf("联系人信息已添加!\n");
}
void show(person *p, int *count)
{
int i = 0;
printf("共有%d个联系人信息:\n", *count);
printf("----------------------------------\n");
printf("序号 姓名 年龄 电话\n");
if(*count != 0)
{
for(i = 0; i < *count; i++)
{
printf("-----------------------------------\n");
printf("%d", i + 1);
printf(" %s", p[i].name);
printf(" %s", p[i].age);
printf(" %s\n", p[i].num);
}
printf("----------------------------------\n");
}
else
{
printf("电话簿内无内容!\n");
}
}
int del(person *p, int *count)
{
show(p, count);
int k, kk;
printf("请输入要删除的编号:");
scanf("%d", &k);
if(k > *count || k < 1) {
printf("序号输入错误,请重新输入!");
return 0;
}
kk = k - 1;
while (kk <= *count)
{
p[kk] = p[kk+1];
kk++;
}
*count -= 1;
}
void sea(person *p, int *count)
{
int i = 0;
int flag = 0;
char mz[10];
printf("请输入要查找的用户名:");
scanf("%s", mz);
printf("------------------------------------\n");
printf("序号 姓名 年龄 联系电话\n");
for (i = 0; i < *count; i++)
{
if (!strcmp(mz, (*(p + i)).name))
{
printf("----------------------------------\n");
printf("%d", i + 1);
printf(" %s", p[i].name);
printf(" %s", p[i].age);
printf(" %s\n", p[i].num);
flag = 1;
printf("-----------------------------------\n");
break;
}
}
if(flag == 0)
printf("无联系人信息!\n");
}
int change(person *p, int *count)
{
show(p, count);
int k, kk;
printf("请输入要修改的编号:\n");
scanf("%d", &k);
if(k > *count || k < 1) {
printf("序号输入错误,请重新输入!");
return 0;
}
kk = k - 1;
printf("请输入姓名:");
scanf("%s", p[kk].name);
printf("请输入年龄:");
scanf("%s", p[kk].age);
printf("请输入电话号码:");
scanf("%s", p[kk].num);
printf("第%d个人的信息已修改\n", k);
}
int main(){
person tel[100];
person *p = tel;
int count = 0, 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(" 0.退出 \n");
printf("********************\n");
scanf("%d", &n);
if(n == 0) break;
if(n == 1) add(p, &count);
if(n == 2) del(p, &count);
if(n == 3) show(p, &count);
if(n == 4) sea(p, &count);
if(n == 5) change(p, &count);
if(n == 6) write(tel, count);
if(n == 7) count = read(tel, count);
if(n == 0) break;
}
}