python读取txt文件实现药店药品管理系统

首先需要建立一个大概这样的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()
  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值