from tkinter import *
from tkinter import ttk
import tkinter as tk
import tkinter.messagebox as msgbox
from tkinter import scrolledtext
import os
def Close():
reply=msgbox.askyesno('提示',"您确定退出系统吗?")
if reply==True:
root.destroy()
def Help():
HelpGUI=Toplevel()
HelpGUI.title('帮助')
HelpGUI.geometry('350x350')
HelpGUI.resizable(False,False)
scr=scrolledtext.ScrolledText(HelpGUI,width=40,height=20,font=("Microsoft YaHei",12))
scr.insert(tk.INSERT,"""\
用户须知:
1.本产品功能有限,仅支持这些操作:
(1)录入书籍信息
(2)浏览书籍信息
(3)删除书籍信息
(4)修改书籍信息
(5)按书名统计书籍的数量
(6)按作者统计书籍的数量
(7)按出版社统计书籍的数量
(8)按类别统计书籍的数量
2.有关上述操作的说明:
(1)1.1至1.4功能全部在基本功能菜单栏下,且每录入一条书籍信息或者修改书籍信息或者删除书籍信息,都会实时更新在文件中,用户无需进行点击保存的操作,如果用户想要浏览文件信息,需要选择菜单栏下的“浏览书籍信息”即可看到当前存入的所有书籍
(2)1.5至1.8功能在高级需求菜单栏下,这部分的功能会用一张表格输出
(3)有关排序的操作直接点击界面中的列名称即可,系统会自动根据选中的列信息进行排序
(4)退出的功能直接点击关闭即可
3.产品说明:
·开发者:
计算机20-2班 王思进 201002603
""")
scr.configure(state='disabled')
scr.pack()
def CreateBookInfo():
CBIGUI=Toplevel()
CBIGUI.title('录入书籍信息')
CBIGUI.geometry('300x300')
def IsEmpty(text):
temp=0
for i in text:
if not i.isspace():
temp=1
break
if temp==1:
return 0
else:
return 1
def click():
num=addnuminput.get()
name=addnameinput.get()
author=addauthorinput.get()
press=addpressinput.get()
category=v.get()
if IsEmpty(num) or IsEmpty(name) or IsEmpty(author) or IsEmpty(press) or IsEmpty(category):
msgbox.showerror(title='提示',message="请填写所有信息!")
else:
f=open('图书.csv','r',encoding='utf-8-sig')
for line in f.readlines():
info=line[:-1].split(",")
if len(info)<5:
break
if info[0]==num:
msgbox.showinfo(title='错误',message="序号已存在!")
f.close()
CBIGUI.destroy()
return
f.close()
f=open('图书.csv','a',encoding='utf-8-sig')
f.write('{},{},{},{},{}\n'.format(num,name,author,press,category))
f.close()
reply=msgbox.showinfo(title='提示',message ="写入成功!")
if reply:
CBIGUI.destroy()
addnum=Label(CBIGUI,text="序号",font=("Microsoft YaHei",10),anchor='w')
addnum.place(x=30,y=30,height=20,width=80)
addnuminput=Entry(CBIGUI,font=("Microsoft YaHei",10))
addnuminput.place(x=100,y=30,height=24,width=150)
addname=Label(CBIGUI,text="书名",font=("Microsoft YaHei",10),anchor='w')
addname.place(x=30,y=60,height=20,width=80)
addnameinput=Entry(CBIGUI,font=("Microsoft YaHei",10))
addnameinput.place(x=100,y=60,height=24,width=150)
addauthor=Label(CBIGUI,text="作者",font=("Microsoft YaHei",10),anchor='w')
addauthor.place(x=30,y=90,height=20,width=80)
addauthorinput=Entry(CBIGUI,font=("Microsoft YaHei",10))
addauthorinput.place(x=100,y=90,height=24,width=150)
addpress=Label(CBIGUI,text="出版社",font=("Microsoft YaHei",10),anchor='w')
addpress.place(x=30,y=120,height=20,width=80)
addpressinput=Entry(CBIGUI,font=("Microsoft YaHei",10))
addpressinput.place(x=100,y=120,height=24,width=150)
addcategory=Label(CBIGUI,text="类别",font=("Microsoft YaHei",10),anchor='w')
addcategory.place(x=30,y=150,height=20,width=80)
"""addcategoryinput=Entry(CBIGUI,font=("Microsoft YaHei",10))
addcategoryinput.place(x=100,y=150,height=24,width=150)"""
v=StringVar()
v.set('其它')
w1=Radiobutton(CBIGUI,text="专业书", value='专业书',variable=v)
w2=Radiobutton(CBIGUI,text="工具书", value='工具书',variable=v)
w3=Radiobutton(CBIGUI,text="报告", value='报告',variable=v)
w4=Radiobutton(CBIGUI,text="小说", value='小说',variable=v)
w5=Radiobutton(CBIGUI,text="其它", value='其它',variable=v)
w1.place(x=100,y=150,height=20,width=60)
w2.place(x=100,y=170,height=20,width=60)
w3.place(x=95,y=190,height=20,width=60)
w4.place(x=95,y=210,height=20,width=60)
w5.place(x=95,y=230,height=20,width=60)
Buttonadd=Button(CBIGUI,command=click,text="添加",font=("Microsoft YaHei",10))
Buttonadd.place(x=120,y=260,height=30,width=70)
def DeleteBook():
DBGUI=Toplevel()
DBGUI.title('删除书籍信息')
DBGUI.geometry('400x400')
def click():
num=addnuminput.get()
fl=False
def confirm():
reply=msgbox.askyesno('提示',"您确定要删除该图书信息吗?")
if reply==True:
with open("图书.csv","r",encoding="utf-8-sig") as f:
lines=f.readlines()
with open("图书.csv","w",encoding="utf-8-sig") as f_w:
for line in lines:
info=line[:-1].split(",")
if info[0]==num:
continue
f_w.write(line)
DBGUI.destroy()
f=open('图书.csv','r',encoding='utf-8-sig')
for line in f.readlines():
info=line[:-1].split(",")
if len(info)<5:
break
if info[0]==num:
fl=True
name=info[1];author=info[2];press=info[3];category=info[4]
f.close()
if fl==False:
msgbox.showinfo(title='错误',message="未找到该图书信息!")
DBGUI.destroy()
else:
Info=Label(DBGUI,text="当前图书信息如下:")
Info.place(x=50,y=60)
addnum=Label(DBGUI,text="序号:"+num,font=("Microsoft YaHei",10),anchor='w')
addnum.place(x=50,y=90,height=15,width=80)
addname=Label(DBGUI,text="书名:"+name,font=("Microsoft YaHei",10),anchor='w')
addname.place(x=50,y=120,height=15,width=80)
addauthor=Label(DBGUI,text="作者:"+author,font=("Microsoft YaHei",10),anchor='w')
addauthor.place(x=50,y=150,height=15,width=80)
addpress=Label(DBGUI,text="出版社:"+press,font=("Microsoft YaHei",10),anchor='w')
addpress.place(x=50,y=180,height=15,width=80)
addcategory=Label(DBGUI,text="类别:"+category,font=("Microsoft YaHei",10),anchor='w')
addcategory.place(x=50,y=210,height=15,width=80)
adddeletebutton=Button(DBGUI,command=confirm,text="确认删除",font=("Microsoft YaHei",10))
adddeletebutton.place(x=170,y=270,height=30,width=60)
addnum=Label(DBGUI,text="序号",font=("Microsoft YaHei",10),anchor='w')
addnum.place(x=50,y=30,height=20,width=80)
addnuminput=Entry(DBGUI,font=("Microsoft YaHei",10))
addnuminput.place(x=100,y=30,height=24,width=150)
addsearchbutton=Button(DBGUI,command=click,text="查询",font=("Microsoft YaHei",10))
addsearchbutton.place(x=270,y=30,height=24,width=40)
def ModifyBook():
MBGUI=Toplevel()
MBGUI.title('修改书籍信息')
MBGUI.geometry(
评论0