作业就是写一个简单 的图书信息管理系统,实现增删改查功能,附带了登录注册功能,就是把上一次的代码直接拿来用了。如下:
主函数:main.py
import pymysql import getpass import time from operate import manage #查询用户名是否存在 def check(uname): namelist = [] conn1 = pymysql.connect("localhost", "root", "admin", "login", charset='utf8') cur = conn1.cursor() sql1 = "select uName from logintable" cur.execute(sql1) results = cur.fetchall() for row in results: namelist.append(row[0]) i = 0 for x in namelist: if (uname == x): i = 1 break return i # 注册函数 def register(): i = 1 username = "" passwd = "" while i == 1: username = input("请输入用户名:") if (check(username) == 1): print('该用户名已被占用,请重新输入') continue if (username.isalnum()): break else: print("用户名只能包含数字与英文字母!!!") while i == 1: passwd = getpass.getpass("请输入密码:") if (len(passwd) > 5 and len(passwd) < 21): break else: print("密码为6至20位!!!") pswd = getpass.getpass('请再输入一遍密码:') if (passwd == pswd): print('注册成功!') else: print('两次密码不相同,请重新注册!!!') register() # 打开数据库连接 conn = pymysql.connect("localhost", "root", "admin", "login", charset='utf8') # 使用corsor()方法创建一个游标对象 cursor = conn.cursor() # 使用execute()方法执行sql语句,将注册的信息插入到数据库中 sql = "INSERT INTO logintable (uName,pw) VALUES (%s,%s)" val = (username, passwd) # 这两行执行sql语句 cursor.execute(sql, val) conn.commit()#提交数据库执行 cursor.close() conn.close() # 返回主界面 first() # 登录函数 def login(): sql = "select * from logintable" conn = pymysql.connect("localhost", "root", "admin", "login", charset='utf8') cursor = conn.cursor() cursor.execute(sql) result = cursor.fetchall() i = 1 s = 0 while i == 1: uname = input('请输入用户名:') if (check(uname) == 0): print('该用户不存在!!!') continue else: while s < 3: passwd = getpass.getpass("请输入密码:") key = 0 for row in result: if (uname == row[0] and passwd == row[1]): key = 1 if (key == 1): print('登录成功!!!') break else: print('密码错误!请重新登录!') s = s + 1 if s == 3: print('账户已锁定!!!请 5 s 后重新登录!!!') time.sleep(5) break manage() #主界面函数 def first(): print('--------------xxx图书信息管理系统------------') print('输入序号,进行选择:') print('1、注册') print('2、登录') print('3、退出') select = input('请选择: ') if select == '1': register() elif select == '2': login() elif select == '3': exit(0) else: print('请输入正确序号:') first() first()
增删改查模块 :operate.py
import pymysql #from sqlConnect import addToMysql,check_bookname,check_author from mysqlOperate import* import mysqlOperate #管理函数 def manage(): m=1 while m == 1: print("-----------------------图书管理----------------------") print("1、查询图书信息") print("2、添加图书信息") print("3、删除图书信息") print("4、修改图书信息") print("5、退出") select = input("请输入编号选择功能:") if select == '1': check() elif select == '2': add() elif select == '3': delete() elif select == '4': update() elif select == '5': exit(0) else: print("请输入正确序号!!!") #添加函数 def add(): print("请输入图书信息:") bookname=input("请输入书籍名称:") author=input('请输入作者姓名:') price=input('请输入价格:') addToMysql(bookname,author,price) #查询函数 def check(): print("-----------------------查询---------------------") print("请选择:") print("1、按书名查询 2、按作者查询 3、查询所有图书 (其他任意键返回)") select=input('请输入编号:') if select=='1': bookname = input("请输入书名:") check_bookname(bookname) elif select=='2': authorname=input("请输入作者姓名:") check_author(authorname) elif select=='3': check_all() #删除函数 def delete(): print("-----------------------删除----------------------") bookname=input("请输入要删除的书名:") check_bookname(bookname) select=input("确定删除?(请输入y/n):") if select=='y': delete_book(bookname) elif select=='n': print("未删除!!!") else: print("输入错误!!已退出!!!") #修改函数 def update(): print("-----------------------修改------------------------") bookname=input("请输入要修改的书名:") check_bookname(bookname) select=input('确定修改?(y/n):') if select=='n': print('已返回') elif select=='y': update_book(bookname)
数据库操作模块:mysqlOperate.py
import pymysql #创建数据库连接 conn=pymysql.connect("localhost","root","admin","login",charset='utf8') #创建游标对象 cursor=conn.cursor() #添加图书 def addToMysql(name,author,price): str="INSERT INTO bookinfo (bookname,author,price) VALUES (%s,%s,%s)" val=(name,author,price) cursor.execute(str,val) conn.commit() print("添加成功") #按书名查询 def check_bookname(bookName): cursor.execute('SELECT * FROM bookinfo WHERE bookname = %s',(bookName,)) result=cursor.fetchall() i = 0 if result==None: print ('该书不存在!!!') else: for row in result: print("-------第%s本书-------" % i) print("book_id:", row[0]) print("书名:", row[1]) print("作者:", row[2]) print("价格:", row[3]) i = i + 1 # 按作者查询 def check_author(author): cursor.execute('SELECT * FROM bookinfo WHERE author = %s',(author,)) result=cursor.fetchall() i=1 if result==None: print('该作者不存在!!!') else: for row in result: print('-------第%s本书--------'% i) print("book_id:", row[0]) print("书名:", row[1]) print("作者:", row[2]) print("价格:", row[3]) i = i + 1 #查询所有图书 def check_all(): cursor.execute('SELECT * FROM bookinfo') result=cursor.fetchall() i=1 for row in result: print('-------第%s本书--------' % i) print("book_id:", row[0]) print("书名:", row[1]) print("作者:", row[2]) print("价格:", row[3]) i = i + 1 # 删除书籍 def delete_book(bookname): cursor.execute('DELETE FROM bookinfo WHERE bookname = %s' ,(bookname,)) conn.commit() print('删除成功!!!') #修改书籍信息 def update_book(bookname): new_bookname=input('请输入修改书名:') new_author=input('请输入修改作者名称:') new_price=input('请输入修改价格:') cursor.execute('UPDATE bookinfo SET bookname=%s,author=%s,price=%s WHERE bookname=%s',(new_bookname,new_author,new_price,bookname)) conn.commit() print('修改成功')
数据库设计:
bookinfo表
logintable表:
另外,执行时跟上一次作业一样,通过cmd执行