名片管理系统练习_python

て烟熏妆下的殇ゞ 提交于 2020-03-05 06:03:56
# 开发一个名片管理系统

# 包含功能:1.新建名片;2.显示全部;3.查询名片

# cards_main为主程序,负责程序的入口;cards_tool为辅助程序,实现不同的功能。

# 1. 导入模块
import cards_tool
import cards_input
import time

while_flag = 1;  # 循环初始化
cards_input.cards_load()

while while_flag:
	# 显示主功能界面(包含功能:1.新建名片;2.显示全部;3.查询名片;0.退出系统)
	cards_tool.window_main()
	user_input = int(input("请输入需要执行的功能:"))  #判断用户输入
	if user_input == 1:
		# print("新建名片")
		# cards_tool.print_center("新建用户名片",60)
		cards_tool.new_card()
		pass # 实现新建名片功能
	elif user_input == 2:
		# print("显示名片")
		cards_input.cards_display()
		flag_change = input("继续操作(1:修改名片 2:删除名片 0:退出系统 其他输入:返回主页)")
		if flag_change =="1":
			# 实现对应名片的修改操作
			cards_input.card_change()
			# print("-"*10+"对某名片进行修改操作"+"-"*10)
			pass
		# pass # 实现显示所有名片的功能
		elif flag_change == "2":
			cards_input.card_del()
			pass

		elif flag_change == "0":
			while_flag = 0
		else:
			pass

	elif user_input == 3:
		# print("查询名片")
		cards_input.card_check()
		flag_change = input("继续操作(1:修改名片 2:删除名片 0:退出系统 其他输入:返回主页)")
		if flag_change =="1":
			# 实现对应名片的修改操作
			cards_input.card_change()
			# print("-"*10+"对某名片进行修改操作"+"-"*10)
			pass
		# pass # 实现显示所有名片的功能
		elif flag_change == "2":
			cards_input.card_del()
			pass

		elif flag_change == "0":
			while_flag = 0

		else:
			pass

	elif user_input == 0:
		# print("系统退出!")
		# cards_tool.user_exit()
		break

	else:
		print("-"*10+"用户输入有误,请检查后重新输入!"+"-"*10)
		continue

	# user_re = input("是否继续运行名片系统(0:结束系统 其他输入:回到主页):")  #判断用户输入
	# if user_re == "0":
	# 	break
	# else:
	# 	continue

	# time.sleep(0.5) # 可以实现软件延迟

# 以下为退出循环后的操作
cards_input.file_save()
cards_tool.user_exit()  # 最后一行,系统退出提醒

上面为主程序,下面为辅助模块。

# 主要实现对名片数据的存取,数据格式化操作

import cards_tool


# 1. 程序执行显示全部时,可以将之前存储的名片数据加载进来:cards.txt

cards = [] #程序执行前,cards列表初始化,用以保存所有的名片

def str_change(s,num): 
	"""
	字符串合并,将列表s中每num个元素合并成一个元组,再将整体合并成一新的列表s_list
	"""
	str_flag = 0
	s_list = []

	for char in s:
		if (str_flag % 4) == 0:
			s_list.append(s[str_flag:str_flag+4:])
			str_flag = str_flag+1

		else:
			str_flag = str_flag+1
			pass

	return s_list



def cards_load():
	"""
	加载之前存储过的所有名片信息
	"""
	# cards = [] #程序执行前,cards列表初始化,用以保存所有的名片

	f_open = open("./Desktop/认识python/名片管理系统/cards.txt")
	cards_raw = f_open.read()
	f_open.close()
	cards_list = cards_raw.split()
	cards_list = cards_list[5::]
	cards_list = str_change(cards_list,4)
	# print(cards_list)
	pass # 列表数据格式化
	for card in cards_list:
		load_card = {}
		load_card["name"] = card[1]
		load_card["age"] = card[2]
		load_card["phone"] = card[3]
		cards.append(load_card)
	else:
		str1 = "-"*10+"保存的名片数据加载完毕!"+"-"*10
		print(str1.center(48))


# 2. 格式化用户名片数据
cards_title = ("序号","姓名","年龄","电话")

def check_exist(name):
	flag = 0
	for card in cards:
		if card["name"] == name:
			flag = flag+1
		else:
			pass
	else:
		return flag


def cards_display():
	"""
	格式化显示所有用户名片信息
	"""

	card_index = 1 #列表序号

	cards_tool.print_center(cards_tool.return_star("*",60),60)
	cards_tool.print_center("用户名片列表",60)
	cards_tool.print_center(cards_tool.return_star("-",60),60)
	for title in cards_title:
		print(title, end = "\t")
	else:
		print()

	for card in cards:
		print(card_index, end = "\t")
		card_index = card_index + 1
		print(card["name"], end = "\t")
		print(card["age"], end = "\t")
		print(card["phone"], end = "\t")
		print()
	else:
		cards_tool.print_center(cards_tool.return_star("*",60),60)


def card_check():
	"""
	用户名片查询
	"""
	flag_check = 0

	cards_tool.print_center(cards_tool.return_star("*",60),60)
	cards_tool.print_center("用户名片查询",60)
	cards_tool.print_center(cards_tool.return_star("-",60),60)
	check_name_c = input("请输入待查询用户姓名:")  # 读取待查询用户姓名

	cards_tool.print_center(cards_tool.return_star("-",60),60)

	for card in cards:
		if card["name"] == check_name_c:

			for title in cards_title:  # 输出表头
				print(title, end = "\t")
			else:
				print()

			print(1, end = "\t")  # 输出待查询用户名片信息
			print(card["name"], end = "\t")
			print(card["age"], end = "\t")
			print(card["phone"], end = "\t")
			print()

			flag_check = flag_check+1

		else:
			# print("-"*10+"查无此人,请确认姓名是否正确!"+"-"*10)
			pass

	else:
		if flag_check == 0:
			print("-"*10+"查无此人,请确认姓名是否正确!"+"-"*10)
		else:
			pass
		cards_tool.print_center(cards_tool.return_star("*",60),60)


def card_change():
	"""
	对某一用户名片信息进行修改
	"""

	flag_change = 0

	cards_tool.print_center(cards_tool.return_star("*",60),60)
	cards_tool.print_center("用户名片修改",60)
	cards_tool.print_center(cards_tool.return_star("-",60),60)
	check_name_change = input("请输入待修改用户姓名:")  # 读取待修改用户姓名

	cards_tool.print_center(cards_tool.return_star("-",60),60)

	for card in cards:
		if card["name"] == check_name_change:
			change_name = input("请输入新的用户姓名(n:该项不修改):")
			change_age = input("请输入新的用户年龄(n:该项不修改):")
			change_phone = input("请输入新的用户电话(n:该项不修改):")
			if change_name == "n":
				pass
			else:
				card["name"] = change_name

			if change_age == "n":
				pass
			else:
				card["age"] = change_age

			if change_phone == "n":
				pass
			else:
				card["phone"] = change_phone

			print("-"*10+"用户 %s 的信息修改完成" % card["name"]+"-"*10)

			flag_change = flag_change +1

		else:
			continue
	else:
		if flag_change == 0:
			print("-"*10+"查无此人,请确认姓名是否正确!"+"-"*10)
		cards_tool.print_center(cards_tool.return_star("*",60),60)


def card_del():
	"""
	对某用户的名片信息进行删除
	"""
	del_index = 0
	flag_del = 0

	cards_tool.print_center(cards_tool.return_star("*",60),60)
	cards_tool.print_center("用户名片删除",60)
	cards_tool.print_center(cards_tool.return_star("-",60),60)
	check_name_del = input("请输入待删除用户姓名:")  # 读取待删除用户姓名

	cards_tool.print_center(cards_tool.return_star("-",60),60)

	for card in cards:
		if card["name"] == check_name_del:
			del cards[del_index]
			print("-"*10+"用户 %s 的名片信息删除完成!" % card["name"]+"-"*10)
			# for title in cards_title:  # 输出表头
			# 	print(title, end = "\t")
			# else:
			# 	print()

			# print(1, end = "\t")  # 输出待查询用户名片信息
			# print(card["name"], end = "\t")
			# print(card["age"], end = "\t")
			# print(card["phone"], end = "\t")
			# print()
			flag_del = flag_del+1

		else:
			# print("-"*10+"查无此人,请确认姓名是否正确!"+"-"*10)
			pass

		del_index = del_index+1 # 删除索引加1

	else:
		if flag_del == 0:
			print("-"*10+"查无此人,请确认姓名是否正确!"+"-"*10)
		cards_tool.print_center(cards_tool.return_star("*",60),60)



# 3. 程序结束时,将目前的名片保存进文件:cards.txt
def file_save():
	save_index = 1
	f_cards = open("./Desktop/认识python/名片管理系统/cards.txt","w")
	f_cards.write("名片信息文本\n\n")
	f_cards.close()

	f_cards = open("./Desktop/认识python/名片管理系统/cards.txt","a")
	for title in cards_title:  # 输出表头
		f_cards.write(title+"\t")
	else:
		f_cards.write("\n")
	
	for card in cards:  # 输出表头
		f_cards.write(str(save_index)+"\t")
		f_cards.write(card["name"]+"\t")
		f_cards.write(card["age"]+"\t")
		f_cards.write(card["phone"]+"\n")
		save_index = save_index+1
	else:
		f_cards.close()
# 实现对名片系统的显示,新建,修改和查询功能
import cards_input


def return_star(char,num):
	"""
	打印num个char字符
	"""
	return char*num 

def print_center(str,num):
	"""
	字符串对其居中
	"""
	print(str.center(num))


def window_main():
	"""
	系统主窗口显示
	"""
	print_center(return_star("*",60),60)
	print_center("名片系统 V1.0",60)
	print_center(return_star("-",60),60)
	print("请输入需要执行的功能编号:".ljust(60))
	print_center("1: 新建名片",60)
	print_center("2: 显示全部",60)
	print_center("3: 查询名片",60)
	print_center("0: 退出系统",60)
	print_center(return_star("-",60),60)
	print("Presented by Hao".rjust(60))
	print_center(return_star("*",60),60)

def user_exit():
	"""
	系统退出!
	"""
	print_center(return_star("*",60),60)
	print_center("用户退出!",60)
	print_center(return_star("*",60),60)


def new_card():
	"""
	新建用户
	"""
	print_center(return_star("*",60),60)
	print_center("新建用户名片",60)
	print_center(return_star("-",60),60)
	new_card = {}
	new_card["name"] = input("请输入新用户姓名:")
	new_card["age"] = input("请输入新用户年龄:")
	new_card["phone"] = input("请输入新用户电话:")
	print_center(return_star("-",60),60)
	print_center("新用户 %s 的名片创建成功!" % new_card["name"],60)
	cards_input.cards.append(new_card) # 将新用户名片加入名片库中
	# print(cards_input.cards)
	print_center(return_star("*",60),60)




运行效果:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!