程序使用说明(该博客图片水印为改名前所加故与博客昵称不同)
该程序为汽车销售管理系统,可通过功能7实现对车库文件内(文件CarMessage.txt)车辆车辆的查看;如果有新车将要进入车库则会使用到功能1-4,功能1-4仅是新车信息的预处理。功能1为新车信息预录入;功能2可实现通过新车id号查询单辆新车信息,以便确定信息是否有误;功能3则是查看本次录入的全部信息;功能4如果通过功能2/3发现信息录入错误组通过该功能修改;功能5是将功能1录入的信息保存至车库文件(文件CarMessage.txt);功能6
是通过车辆id将已出售车辆的信息录入销售文件(Carsale.txt),同时删除车库文件内该车信息。退出系统则使用功能8
"""
汽车销售管理系统
借鉴内容:
1.保存学生数据时使用UTF-8防止乱码
"""
import os
#使用本代码请注明出处,蟹蟹
car_list = []#用于储存存有汽车信息的字典的列表
#菜单
def display_menu():
#1-4为新信息录入不操作文件,5为保存1-4信息,6对文件内的车辆信息修改(根据车号已售出的信息改为已售出)
#7查看文件信息
print("*******************************************")
print("-----------汽车销售管理系统------------------")
print("+++++++++++++++++++++++++++++++++++++++++++")
print("1.添加新车信息 2.查看单辆新车信息 ")
print("+++++++++++++++++++++++++++++++++++++++++++")
print("3.查看全部新车信息 4.修改新车信息 ")
print("+++++++++++++++++++++++++++++++++++++++++++")
print("5.保存新车信息 6.销售汽车 ")
print("+++++++++++++++++++++++++++++++++++++++++++")
print("7.查看车库车辆信息 8.查看售出信息 ")
print("+++++++++++++++++++++++++++++++++++++++++++")
print("9.退出系统 ")
print("*******************************************")
def get_choice():
selected_key = input("请输入选择的序号:")
return selected_key
def check_kind(new_kind):
flag = True
while flag:
if new_kind == '电动' or new_kind == '汽油':
flag = False
else:
new_kind = input("输入种类有误,请重新输入(电动/汽油):")
return new_kind
def check_id(new_id):
flag = True
while flag:
# 先检查是不是纯数字再去考虑是否重复
if new_id.isdigit():#确认是否为纯数字
for i in range(len(car_list)):
if car_list[i]['id'] == new_id:
new_id = check_id(input("您输入的id重复,请重新输入:"))
flag = False
else:
new_id = input("您输入的id有误,请重新输入:")
return new_id
def add_Car():#添加汽车信息
while 1:
new_info = {}
new_id = check_id(input("请输入编号:"))
new_info['id'] = new_id
new_color = input("请输入颜色:")
new_info['color'] = new_color
new_kind = check_kind(input("请输入类型(电动/汽油):"))
new_info['kind'] = new_kind
car_list.append(new_info)
a = input("是否继续添加(Y/N)")
if a == "N":
print("success")
break
elif a == "Y":
print("continue add")
def find_NewCar():# 查看单辆新车信息
find_id_is = input("请输入要查询的汽车编号:")
flag = False
index = 0
for i in range(len(car_list)):
if car_list[i]['id'] == find_id_is:
flag = True
index = i
break
if flag:
print("汽车查询到,汽车信息为:")
print(car_list[index]['id'],car_list[index]['color'],car_list[index]['kind'])
else:
print("汽车未找到!")
# 查询所有新车信息
def find_AllNewCar():
print("=" * 30)
for car in car_list:
print(car['id'], car['color'], car['kind'])
print("=" * 30)
# 修改细节函数
def choice_of_name(index):
while True:
choice = input("请输入要修改学生的(1.id 2.颜色 3.种类 ,4.全部修改):")
if choice == '4':
new_id = input("请输入新的id:")
car_list[index]['id'] = new_id
new_color = input("请输入新的颜色:")
car_list[index]['color'] = new_color
new_kind = check_kind(input("请输入种类(电动/汽油):"))
car_list[index]['kind'] = new_kind
break
elif choice == '1':
new_id = input("请输入新的id:")
car_list[index]['id'] = new_id
break
elif choice == '2':
new_color = input("请输入新的颜色:")
car_list[index]['color'] = new_color
break
elif choice == '3':
new_kind = check_kind(input("请输入种类(电动/汽油):"))
car_list[index]['kind'] = new_kind
break
else:
print("输入有误,请重新输入!")
# 修改新车信息
def re_NewCar():
id_is = input("请输入要修改的新车的id:")
flag = False
index = 0
# 先找到要修改的新车的id
for i in range(len(car_list)):
if car_list[i]['id'] == id_is:
flag = True
index = i
break
if flag:
choice_of_name(index)
print("修改成功!")
else:
print("修改失败,新车信息匹配失败!")
# 保存新车信息
def save_Car():
cars = str(car_list)
with open('CarMessage.txt', 'a+', encoding='utf-8') as f:
f.write(cars)
print("保存成功!文件位置在" + os.getcwd())
f.close()
#售出信息保存
def save1_Car():
cars = str(car_list)
with open('CarMessage.txt', 'w', encoding='utf-8') as f:
f.write(cars)
print("保存成功!文件位置在" + os.getcwd())
f.close()
#已售出车辆信息录入
def sale_Car():
num = input("请输入销售的汽车编号")
for new_info in car_list:
if num == new_info.get("id"):
f = open("Carsale.txt","a+",encoding='utf-8')
f.write(str(new_info["id"]) + "\t"
+ str(new_info["color"]) + "\t"
+ str(new_info["kind"]))
f.close()
car_list.remove(new_info)
print("已售出")
save1_Car()
#查看车库信息
def find_Car():
print("*"*50)
with open('CarMessage.txt','r',encoding='utf-8') as file:
CarMessage = file.readlines()
print(CarMessage)
print("\n","*"*23,"over","*"*23,"\n")
file.close()
#查看售出信息
def find_sale_Car():
print("*"*50)
with open('Carsale.txt','r',encoding='utf-8') as file:
Carsale = file.readlines()
print(Carsale)
print("\n","*"*23,"over","*"*23,"\n")
file.close()
def main():
exit_car = True
while exit_car:
display_menu()
key = get_choice()
if key == '1':
add_Car()
elif key == '2':
find_NewCar()
elif key == '3':
find_AllNewCar()
elif key == '4':
re_NewCar()
elif key == '5':
save_Car()
elif key == '6':
sale_Car()
elif key == '7':
find_Car()
elif key == '8':
find_sale_Car()
elif key == '9':
exit_car = False
else:
print("非法输入")
main()
功能设计与分析
通过main函数调用实现各项菜单功能的调用
main()函数通过上方get_choice()函数的返回值来确定功能
通过创建列表
实现储存汽车信息
以下代码为添加汽车信息代码,
再添加新信息前通过调用check_id()函数即以下代码
判断汽车id是否重复,重复则提示重新输入。
不重复则继续输入汽车信息,当输入到汽车种类时通过以下代码
判断输入的种类是否符合格式,不符合则提示重新输入。
以下代码为查看新车信息代码
首先输入要查询的新车id,后遍历功能1输入的数据查找是否有一致的id,若有则将flag变量值改为True,并通过if flag打印信息,若没有则flag值不变并显示未找到
上图为查看所有新车信息代码
以下为修改函数代码
.先输入有修改的新车id,后遍历功能1输入的新车id,若有相同的则将变量flag值变为True并调用chack_of_name()函数开始信息修改,,若没有则flag值不变并显示修改失败
以下为保存信息函数代码
将功能1写入的信息保存至CarMessage.txt文件
以下为销售数据录入代码
先输入已售出车辆id,后遍历列表内是否有相同id,当有相同id时则打开文件Carsale.txt并录入拥有该id的车辆信息,录入后删除列表内该车信息,并调用函数Save1_Car()覆盖CarMessage.txt文件内原有信息以达到删除CarMessage.txt文件内售出车辆信息的目的
以下为查看文件功能代码
打开CarMessage.txt文件并逐行读取文件内内容
运行结果
功能1
当id重复时则提示如下图
类型错误时提示如下
功能2
当没有相同id时提示如下
功能3
功能4
当没有相同id时提示如下
功能5
功能6
功能7
功能8