用python和C语言写电话本管理系统,信息保存到本地文件

在这里插入代码片@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;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值