#python小组作业 写好了代码但有部分看不懂 求教
# 1.登录页面的图案设计
import os
import sys
import numpy as np
import matplotlib.pyplot as plt
def ShowUI():
for i in range(1, 11):
for j in range(1, 7 - i):
print(' ', end=' ')
for k in range(1, 2 * i):
print('*', end=' ')
print()
for m in range(5, 20 - i):
print(' ', end=' ')
# 打印房顶
for i in range(6):
for o in range(1, 6):
print('*', end=' ')
for k in range(1, 7):
print(' ', end=' ')
for j in range(8):
print('*', end=' ')
i += 1
print('*')
for m in range(15, 25):
print(' ', end='')
# 打印房屋(矩形)
print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
print(" 《 景点管理系统 》")
print(" 《 》")
print(" 《 1-显示景点信息 》")
print(" 《 2-添加景点信息 》")
print(" 《 3-删除景点信息 》")
print(" 《 4-修改景点信息 》")
print(" 《 5-景点图片展示 》")
print(" 《 6-退出系统 》")
print(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
# 读取文件信息
areaInfo = readFile()
# 2.用户点击进入窗口
while True:
# answer = eval(input("请选择您的操作:"))
answer = input("请选择您的操作:")
if answer == '1':
ShowAreaInfo(areaInfo)
# 添加景点信息
elif answer == '2':
areaInfo = AddAreaInfo(areaInfo)
# 删除景点信息
elif answer == '3':
areaInfo = DelAreaInfo(areaInfo)
# 修改景点信息
elif answer == '4':
areaInfo = ModiAreaInfo(areaInfo)
# 景点图片展示
elif answer == '5':
ShoeAreaPic()
# 退出系统
elif answer == '6':
sys.exit()
else:
print('输入无效!')
def readFile():
file = r"景点信息.csv"
areas = []
areaInfo = {}
with open(file, mode='r', encoding='utf8') as f:
lines = f.readlines()
f.close()
for content in lines:
info = content.strip().split(',')
areas.append(info)
areaInfo[info[0]] = [info[1], info[2]]
return areaInfo
# 保存文件
def SaveFile(result):
if not result: return
content = ''
for k, v in result.items():
content += '{},{},{}\n'.format(k, v[0], v[1])
file = r"景点信息.csv"
with open(file, mode='w', encoding='utf8') as f:
f.write(content)
f.close()
def ShowAreaInfo(result):
for k, v in result.items():
print('{}\t{}\t{}'.format(k, v[0], v[1]))
# 添加景点信息
def AddAreaInfo(areaInfo):
print('{}添加景点信息{}'.format('=' * 10, '=' * 10))
answer = input("请分别输入编号、名称、城市,以中文逗号间隔:")
info = answer.split(',')
if len(info) < 3:
print('景点信息输入有误,添加景点失败!')
return areaInfo
if info[0] in areaInfo.keys():
print('景点编号已存在,添加景点失败!')
return areaInfo
areaInfo[info[0]] = [info[1], info[2]]
SaveFile(areaInfo)
return areaInfo
# 删除景点信息
def DelAreaInfo(areaInfo):
print('{}删除景点信息{}'.format('=' * 10, '=' * 10))
ID = input('请输入景点ID:')
if ID in areaInfo.keys():
areaInfo.pop(ID)
SaveFile(areaInfo)
print('删除景点信息成功!!!')
else:
print('景点编号不存在,删除景点失败!')
return areaInfo
# 修改景点信息
def ModiAreaInfo(areaInfo):
print('{}修改景点信息{}'.format('=' * 10, '=' * 10))
ID = input('请输入景点ID:')
if ID in areaInfo.keys:
answer = input("请分别输入景点名称、城市,以中文逗号间隔:")
info = answer.split(',')
if len(info) < 2:
print('景点信息输入有误,修改景点信息失败!')
return areaInfo
areaInfo[ID] = [info[0], info[1]]
SaveFile(areaInfo)
return areaInfo
# 景点图片展示
def ShoeAreaPic():
k=' ' * 7
print(k+' '*20+'<>')
print(k+' '*20+'¦¦')
print(k+' '*18+'¦¦'*3)
print(k+' '*15+'¦¦'*6)
print(k+' '*7+'¦'+'_'*4+'¦¦'*9+'_'*4+'¦')
print(k+' '*5+'='*32)
print(k+' '*7+'¦¦'+' '*24+'¦¦')
print(k+' '*7+'¦¦'+' '*6+'¦'+' '*4+'¦'+' '*4+'¦'+' '*7+'¦¦')
print(k+' '*7+'¦¦'+' '*6+'¦'+' '*4+'¦'+' '*4+'¦'+' '*7+'¦¦')
print(k+' '*7+'¦¦'+' '*6+'ˉ'*11+' '*7+'¦¦')
print(k+' '*7+'¦¦'+' '*24+'¦¦')
print(k+' '*7+'¦¦'+' '*24+'¦¦')
print('='*56)
path='./img/'
# files=os.listdir('./img/')
flag=True
areaPicPaths={}
num=1
for root, dirs, files in os.walk(path):
area=root.split('/')[-1]
if area:
# areaPicPaths[num]={area:[os.path.join(root,p) for p in files]}
areaPicPaths[num]={area:[root+'/'+p for p in files]}
# print(root, dirs, files)
num+=1
else:
continue
print(k+' '*16,'杭州八景')
for i,v in areaPicPaths.items():
print('{}{}-{}'.format(k+' '*16,i,list(v.keys())[0]))
print('{}{}-{}'.format(k+' '*16,num,'返回主界面'))
print('='*56)
while True:
answer=eval(input("请选择您的操作:"))
if answer in areaPicPaths:
ShowPic(list(areaPicPaths[answer].values())[0])
elif answer==num:
break
else:
print('输入无效!')
ShowUI()
def ShowPic(imgs):
fig = plt.figure(figsize=(12, 4),)
# matplotlib.use('Qt5Agg')
plt.style.use('_mpl-gallery')
num=len(imgs)
num_row=num//2 if num>1 else 1
for i in range(num):
img = plt.imread(imgs[i])
plt.subplot(num_row, 2, i + 1)
plt.imshow(img)
plt.xticks([])
plt.yticks([])
plt.show()
if __name__ == '__main__':
ShowUI()