python学习2019-1-18

图书管理系统

1.建立test0118.py文件

在test0118.py中输入如下代码

#导包
import xlrd
from xlutils.copy import copy
import  hashlib
#建立函数login(用于登陆程序,输入用户名密码)
def login(username,password):

#将book表格放入所建工程下
python学习2019-1-18

#读取名为“book”的表格!
python学习2019-1-18
python学习2019-1-18

    book = xlrd.open_workbook("book.xls")
#读取表格中名字是user的表格页
    sheet = book.sheet_by_name("user")
#确定有效行
    r = sheet.nrows
#确定有效列
    c = sheet.ncols
#定义一个falg为False
    flag = False
#表格中username(用户名)列所在的列下标
    m = 0
#表格中password(密码)列所在的列下标
    p = 0
#表格中state(状态)所在的列下标
    q = 0
    for j in range(c):
#从0开始判断表格中有效行中值为“username”的所在列
        if sheet.cell(0,j).value=="username":
#将“username”列的下标值赋与m
            m = j
#从0开始判断表格中有效行中值为“password”的所在列
        elif sheet.cell(0,j).value=="password":
# 将“password”列的下标值赋与p
            p = j
# 从0开始判断表格中有效行中值为“state”的所在列
        elif sheet.cell(0,j).value=="state":
# 将“seated”列的下标值赋与q
            q = j
#对密码进行 md5加密
# ***将加密好的密码记录在表格中  此代码才生效
    password = hashlib.md5(password.encode("utf-8")).hexdigest()
    for i in range(1,r):
#判断从1到有效行开始到state列结束 有“正常”并且
#在username列是否有与输入的用户名匹配的值 并且
#在password列是否有与输入的密码匹配的值
        if sheet.cell(i,q).value == "正常" and sheet.cell(i,m).value == username and sheet.cell(i,p).value == password:
#将flag 赋为 True
            flag = True
#结束循环
            break
#将flag值返回为True
    return flag
#证明密码正确
#否则flag值为False

python学习2019-1-18

def showBook():
#获取表格
    book = xlrd.open_workbook("book.xls")
#打开表格中名字为book的表格页
    sheet = book.sheet_by_name("book")
#有效行
    r = sheet.nrows
#有效列
    c = sheet.ncols
#只显示状态为“正常”的信息
#将q赋值为“正常”
    q = "正常"
    for j in range(c):
#判断从0开始到有效列 循环找到state列的下标值
        if sheet.cell(0, j).value == "state":
#将下标值赋与q
            q = j
    for i in range(1,r):
#找到state列中 值为“已下架”的数据
        if sheet.cell(i, q).value == "已下架" :
#跳过此次循环  (不要显示已下架数据)
            continue
        for k in range(c):
#如果k等于已下架产品的行数
            if k==q:
#跳过此次循环
                continue
#输出除已下架行之外的数据
            print(sheet.cell(i,k).value,end="   ")
#换行显示
        print()

def addBook(a):
#打开表格
    book = xlrd.open_workbook("book.xls")
#打开表格页
    sheet = book.sheet_by_name("book")
#有效行
    r = sheet.nrows
#有效列
    c = sheet.ncols
#备份表格,防止数据丢失
    book_copy = copy(book)
#将下标为1的表格页取出来 备份
# (不能在源文件里改动,要将所改动的表格页取出来备份,再添加)
    sheet_copy = book_copy.get_sheet(1)
#循环c次
    for i in range(c):
#尝试执行可能异常的代码
        try:
#如果代码正确 在r行i列 添加数据(在没有数据的行添加数据)
            sheet_copy.write(r,i,a[i])
#如果代码错误结束循环(即不现实错误)
        except:
            break
#保存
    book_copy.save("book.xls")

def updateBook(a):
#打开表格
    book = xlrd.open_workbook("book.xls")
#打开表格页
    sheet = book.sheet_by_name("book")
#行
    r = sheet.nrows
#列
    c = sheet.ncols
#复制表格
    book_copy = copy(book)
#将下标为1的表格页取出来 备份
# (不能在源文件里改动,要将所改动的表格页取出来备份,再改动)
    sheet_copy = book_copy.get_sheet(1)
#要修改的行号   将要修改的行初始值定为0
    cr = 0
#循环r次
    for i in range(r):
#判断输入第一个序号值与原表格里的第一列的值是否一致
        if sheet.cell(i,0).value==a[0]:
#输入的值与原表格中的序号值一致  将i(修改的行)赋予cr
            cr = i
#找出要修改的行后结束循环
            break
#循环c次
    for i in range(c):
#如果代码正确 在第cr行第i列 修改为所输入的值
        try:
            sheet_copy.write(cr,i,a[i])
#如果代码错误 不显示
        except:
            break
#保存
    book_copy.save("book.xls")
def deleteBook(a):
    book = xlrd.open_workbook("book.xls")
    sheet = book.sheet_by_name("book")
    r = sheet.nrows
    c = sheet.ncols
    book_copy = copy(book)
    sheet_copy = book_copy.get_sheet(1)
# 要删除的行   将cr初始值定为0
    cr = 0
#循环r次
    for i in range(r):
#如果输入的要删除的数据行数等于第0列中的数
#(判断哪一行是要删除的)
        if sheet.cell(i, 0).value == a:
#将所删除的行 赋予cr
            cr = i
#找出哪一行要删除后  结束循环
            break
#将要删除的行的最后一列“state”中的值修改为“已下架”
    sheet_copy.write(cr, c-1, "已下架")
#保存
    book_copy.save("book.xls")

2.建立test01181.py文件

在test01181.py文件中输入如下代码:

将表格中的数据全部改为文本格式!

#导包
import test0118 as book
import xlrd
from xlutils import copy
print("=============欢迎登陆=============")
#定义count = 0
count = 0
#控制输入三次密码错误后锁定账户
while count<3:
#输入用户名和密码
    username = input("请输入用户名:")
    password = input("请输入密码:")
#导入test0118中的login函数
#令result等于login的值(True或False)
    result = book.login(username,password)
#判断如果用户名密码输入正确(即result的值为True)
    if result:
        while True:
            print("1---查看图书信息")
            print("2---添加图书信息")
            print("3---修改图书信息")
            print("4---删除图书信息")
            op = input("请输入编号:")
#如果用户输入的是1(即查看图书信息)
            if op == "1":
#调用test0118里的shaowBook函数
#查看表格中的“book”表格页
#(即调用test0118.py文件中的showBook函数
                book.showBook()
#结束并返回上一层
                print("=================%s=====================" % "end")
#如果管理员输入2(即添加图书信息)
            elif op == "2":
#管理员添加信息
                a = input("请输入图书编号:")
                b = input("请输入图书名字:")
                c = input("请输入图书出版社:")
                d = input("请输入图书价格:")
                e = input("请输入图书作者:")
#添加的数据换成列表类型
                book_ = [a,b,c,d,e,"0"]
#调用test0118.py文件中的addBook函数
                book.addBook(book_)
                print("=================%s=====================" % "end")
#用户输入3(即修改信息)
            elif op == "3":
#输入修改内容
                a = input("请输入图书编号:")
                b = input("请输入图书名字:")
                c = input("请输入图书出版社:")
                d = input("请输入图书价格:")
                e = input("请输入图书作者:")
#修改内容改成列表类型
                book_ = [a, b, c, d, e]
#调用test0118.py文件中的updateBook函数
                book.updateBook(book_)
#输出并返回上一层
                print("=================%s=====================" % "end")
#用户输入4(即删除信息)
            elif op == "4":
                a = input("请输入图书编号:")
#调用test0118.py文件中的deleteBook函数
                book.deleteBook(a)
                print("=================%s=====================" % "end")
#否则编号输入错误,重新输入(***此代码没有此项功能)
            else:
                print("请输入正确编号:")
                print("=================%s====================="%"end")
#用户名密码输入错误后提示
    else:
        print("密码错误!")
#count + 1  回到上述循环
        count += 1
#count等于3(当用户名密码错误三次后)
if count==3:
    book = xlrd.open_workbook("book.xls")
#调用表格中存储密码的表格页
    sheet = book.sheet_by_name("user")
    r = sheet.nrows
    c = sheet.ncols
#备份表格
    book_copy = copy.copy(book)
#备份表格中 下标为0的表格页
#(不能在原文件中或源文件页中修改)
    sheet_copy = book_copy.get_sheet(0)
    for i in range(r):
#循环找到username列中输入三次错误的用户名
#(找到输入错误3次的用户名)
        if sheet.cell(i,1).value==username:
#将储存密码页(user)的state列的输入三次错误的用户名的行 修改为“已锁定”
#即(将“0”修改为“已锁定”)
#注意:应该利用循环找到state列(即“3”的位置不确定)
#注意:此代码锁定功能 只适用于用户名输入正确 密码输入错 才能锁定
#即(将正确用户名的“state”列的状态改为“已锁定”
            sheet_copy.write(i,3,"已锁定")
#结束循环
            break
#保存
    book_copy.save("book.xls")
```

注意:表格里密码是加密后的形式!python学习2019-1-18

#查看“root”加密后的值
import hashlib
print(hashlib.md5("root".encode("utf-8")).hexdigest())