首先需要建立一个大概这样的txt文件,文件名需要与代码中读取的文件名一致。
# -*- coding:utf-8 -*-
import os
import sys
import random
import string
'''
f=open('药店药品信息.txt','r')
flist=f.readlines()
for i in flist:
print(i)
f.close()
'''
#用户信息列表
users_list=[
{'username':'1705990219','password':'990219'},
{'username':'1705990220','password':'990220'}
]
#药品信息的类,包括查询,修改,删除,插入,统计,排序功能
class drugManage:
def __init__(self):
self.main_choose()
#用户选择登录还是注册
def main_choose(self):
print('欢迎来到药品信息管理系统!')
print('1---登录 2---注册')
choose=int(input('请输入您的操作(数字): '))
if choose==1 :
self.login() #跳转到登录页面
if choose==2 :
self.register() #跳转到注册页面
#系统登录模块
def login(self):
'''users_list=[
{'username':'1705990219','password':'990219'},
{'username':'1705990220','password':'990220'}
]'''
username=input('\n请输入用户名: ')
password=input('请输入密码: ')
judge_dic={} #空字典,用于临时存放输入的用户名和密码
judge_dic['username']=username #将用户名添加进字典
judge_dic['password']=password #将用户密码添加进字典
if judge_dic in users_list:
print("\n\t登录成功!将跳转至系统主菜单..........\n")
self.main()
else:
print('输入错误,请输入正确的账号和密码!')
print('请选择重新登录或注册账号:\n\t1---登录 2---注册')
choose=int(input('请输入您的操作(数字): '))
if choose==1 :
self.login() #跳转到登录页面
if choose==2 :
self.register() #跳转到注册页面
#账户注册
def register(self):
username=input('请输入要注册的用户名: ')
for i in users_list:
if username in users_list:
print('用户名已存在,请重新登录或注册!')
print('请选择重新登录或注册账号:\n\t1---登录 2---注册')
choose=int(input('请输入您的操作(数字): '))
if choose==1 :
self.login() #跳转到登录页面
if choose==2 :
self.register() #跳转到注册页面
else:
userpassword=input('请设置您的登录密码: ')
user_password=input('请在次确认您的登录密码:')
if userpassword==user_password:
dic={} #构造一个空字典,用来存放用户名和密码
dic['username']=username #将用户名添加进字典
dic['password']=userpassword #将用户密码添加进字典
#users_list.append(',') #插入换行符和逗号
#users_list.append(\n)
users_list.append(dic) #将字典存放到用户信息列表users_list
#print(dic) #测试
#print(users_list) #测试
print('\n\t注册成功!\n用户名为:',username,'\n密码为:',userpassword)
print('\n您需要重新登录,即将跳转到登录页面...............')
self.login() #跳转到登录页面
else:
print("两次密码不一致,请重新输入!")
continue
def main(self): #主菜单
exit_main=1
while exit_main:
i=os.system('cls') #清屏
self.menu_screen() #主菜单界面
x=input("\n\t\t-----------请选择对应的功能(0-6)----------\t\t\n")
if x in "1,2,3,4,5,6,0": #选择相应的分支,跳转到选择的功能界面
#查询功能
if x=='1':
i=os.system('cls')
print(" \t\t<查找药品信息>\t\t")
self.search()
continue
#修改功能
if x=='2':
i=os.system('cls')
print("\t\t <修改药品信息>\t\t")
self.change()
continue
#删除
elif x=='3':
i=os.system('cls')
print(" \t\t<删除药品信息>\t\t")
self.delete()
continue
#插入功能
elif x=='4':
i=os.system('cls')
print(" \t\t<插入药品信息>\t\t")
self.insert()
continue
#统计功能
elif x=='5':
i=os.system('cls')
print(" \t\t<药品的数量>\t\t")
self.count()
continue
#排序功能
elif x=='6':
i=os.system('cls')
print(" \t\t<药品排序>\t\t")
self.sort()
continue
elif x=='0':
y=input("确定退出系统吗?输入Y/N:")
if y in "Y,y":
exit_main=0
i=os.system('cls')
print('\n已退出登录!将跳转到登录页面..........\n')
self.main_choose()
elif y in "N,n":
continue
else:
print("\t\t输入错误,请重新输入!\t\t")
else:
print("输入错误,请重新输入(0-6)对应功能\n")
continue
def menu_screen(self):
print(''' \t\t--------欢迎进入药品信息管理系统----------\t\t
\t\t$功能菜单$\t\t
\t\t1.查询药品信息\t\t
\t\t2.修改药品信息\t\t
\t\t3.删除药品信息\t\t
\t\t4.插入药品信息\t\t
\t\t5.统计药品数量\t\t
\t\t6.排序\t\t
\t\t0.退出登录\t\t''')
#查询功能
def search(self):
file=open("药店药品信息.txt",'r')
file.seek(0,0)
flist=file.readlines()
#line = file.readline()
#print("读取的字符串为:",line)
exit_search=1
while exit_search:
s=input("\n请输入要查询药品的编号或名称:")
j=0
for i in flist:
if s not in flist[j]:
j=j+1
#print(flist[j]) #测试
if s in flist[j]:
print("\n\t查询结果如下:\n",flist[j])
break
z=input("你是否还要查询,请输入Y/N:")
if z in 'Y,y':
continue
elif z in 'N,n':
exit_search=0
else:
print("\t\t输入错误,查询结束!\t\t")
break
file.close()
#修改功能
def change(self):
file=open("药店药品信息.txt",'r+')
file.seek(0,0)
flist=file.readlines()
exit_change=1
#print(flist) #ceshi
while exit_change:
ch=input("\n请输入要修改药品的编号或名称:")
j=0
for i in flist:
#print(i) #ceshi
if ch not in flist[j]:
j=j+1
#print(flist[j]) #测试
if ch in flist[j]:
print("您要修改的信息如下\n",flist[j]) #打印修改前的信息
flist_j=input("\n请输入您要修改的信息:"+'\n')
flist[j]=flist_j+'\n' #加换行符
#file.write('\n')
#flist[j].append('\n') 'str'不能用append()函数插入换行符
file.close()
file=open("药店药品信息.txt",'w') #覆盖写入
#flist=[line+'\n' for line in flist] #每一行加入换行符
file.writelines(flist) #将修改的信息写入
print("\n您修改的结果如下:")
#打印修改后的信息
file.close()
self.show()
break #结束遍历''
z=input("\n你是否还要继续修改,请输入Y/N:")
if z in 'Y,y':
continue
elif z in 'N,n':
exit_change=0
else:
print("\t\t输入错误,请重新输入!\t\t")
continue
file.close()
#删除功能
def delete(self):
file=open("药店药品信息.txt",'r+')
file.seek(0,0)
flist=file.readlines()
exit_delete=1
while exit_delete:
d=input("请输入要删除药品的编号或名称:")
j=0
for i in flist:
if d not in flist[j]:
j=j+1
if d in flist[j]:
print("您要删除的信息如下\n",flist[j]) #打印要删除的信息
m=input("是否确认删除,请输入Y/N:")
if m in 'Y,y':
del flist[j]
print("删除成功,删除结果如下:\n")
file.close()
file=open("药店药品信息.txt",'w')
file.writelines(flist) #写入列表,并覆盖原文件
file.close()
self.show() #打印删除结果
break
#else:
# print("您要删除的信息不存在或已经删除,请检查输入是否正确")
z=input("你是否还要继续删除药品信息,请输入Y/N:")
if z in 'Y,y':
continue
elif z in 'N,n':
exit_delete=0
else:
print("\t\t输入错误,请重新输入!\t\t")
continue
file.close()
#插入
def insert(self):
file=open("药店药品信息.txt",'r+')
#a+可以读、写,指针在结尾
flist=file.readlines()
exit_insert=1
while exit_insert:
ins=input("请输入要插入药品信息:")
j=0 #j表示列表的行数
if ins in flist:
print("药品信息已存在,请重新输入!\n")
continue
else:
#flist.append('\n')
flist.append(ins) #将添加的信息写入列表
flist.append('\n') #在列表最后加入一个换行符
file.close() #关闭读写
#重新打开文件,覆盖原文件写入
file=open("药店药品信息.txt",'w')
file.writelines(flist) #将列表的元素写入文件
print("插入成功!插入结果如下:\n")
file.close()
self.show()
z=input("你是否还要继续插入信息,请输入Y/N:")
if z in "Y,y":
continue
elif z in "N,n":
exit_insert=0
else:
print("\t\t输入错误,请重新输入!\t\t")
continue
file.close()
#统计列表有多少种药品
def count(self):
file=open("药店药品信息.txt",'r')
flist=file.readlines()
'''for i in flist:
if i=='\n':
j=j+1'''
print("药品的种量为:",len(flist))
file.close()
#排序
def sort(self):
file=open("药店药品信息.txt",'r+')
flist=file.readlines()
exit_sort=1
while exit_sort: #3个排序都不成功
sort_select=input("""请输入按什么排序:
1.按名称排序(拼音首字母)
2.按药品价格排序
3.按药品数量排序
0.按药品编号排序\n""")
if sort_select == '1':
flist.sort(key=lambda x:x.split()[1],reverse=1)
print("\n排序结果如下:\n")
file.close()
file=open("药店药品信息.txt",'w')
file.writelines(flist) #将列表的元素写入文件
file.close()
self.show()
elif sort_select == '2':
flist.sort(key=lambda x:x.split()[2],reverse=1)
print("\n排序结果如下:\n")
file.close()
file=open("药店药品信息.txt",'w')
file.writelines(flist) #将列表的元素写入文件
file.close()
self.show()
elif sort_select == '3':
flist.sort(key=lambda x:x.split()[3],reverse=1)
print("\n排序结果如下:\n")
file.close()
file=open("药店药品信息.txt",'w')
file.writelines(flist) #将列表的元素写入文件
file.close()
self.show()
elif sort_select == '0':
flist.sort(key=lambda x:x.split()[0],reverse=1)
print("\n排序结果如下:\n")
file.close()
file=open("药店药品信息.txt",'w')
file.writelines(flist) #将列表的元素写入文件
file.close()
self.show()
else:
print("输入有误,重新输入1-3")
z=input("你是否还要更改排序,请输入Y/N:")
if z in "Y,y":
continue
elif z in "N,n":
exit_sort=0
else:
print("\t\t输入错误,请重新输入!\t\t")
continue
file.close()
#展示列表中的信息
def show(self):
file=open("药店药品信息.txt",'r')
flist=file.readlines()
print("编号\t","\t名称\t "," \t价格\t ","\t数量\t")
for i in flist:
print(i)
file.close()
#实例化对象
a=drugManage()
a.main_choose()