我想写这样一个代码操作
我想写这样一个代码操作:1、每一个人都有自己对应的分数,输入名字就可以看到他所对应的分数了
2、可以通过更改对他的分数进行加减操作并更新,例如小白5分,我查找小白,然后+5就更新到10分了;
3、每次更新需要输入为什么加分或者减分,输入名字也可以查找看到他的所有加减分操作。
也不知道我有没有表达清楚,如果有听懂的大佬能给点思路嘛?我是个刚入Python过了一遍基础的小白,谢谢啦! 用字典
如果不会,那就用两个列表,一个存放名字,一个存放分数 用字典吖 要想带保存的,就得使用文件或者数据库 简陋版
cdic = {}
ydic = {}
print('欢迎使用学生分数管理程序!')
while True:
print('1.增加学生')
print('2.查找学生')
print('3.删除学生')
print('4.更新学生')
print('5.退出程序')
do = int(input('请输入相关指令代码:'))
if do == 1:
while True:
name = input('请输入学生姓名:')
if name in cdic:
if input('该学生已存在!是否重新编辑(y/n)?:') == 'y':
del cdic
else:
print('取消成功!')
break
value = int(input('请输入学生分数:'))
cdic = value
ydic = '暂无记录!'
print('增加成功!')
break
if do == 2:
name = input('请输入学生姓名:')
try:
print('学生' + name + '的分数:' + str(cdic))
print('分数记录:')
print(ydic)
except:
print('该学生不存在!')
if do == 3:
name = input('请输入学生姓名:')
try:
del cdic
del ydic
print('删除成功!')
except KeyError:
print('该学生不存在!')
if do == 4:
name = input('请输入学生姓名:')
try:
do = input('请输入需要对' + name + '分数进行的操作:')
if do == '+':
cdic += int(do)
ydic = do + ','
elif do == '-':
cdic -= int(do)
ydic = do + ','
else:
print('输入不合法!')
tish = input('请输入操作理由:')
if ydic != '暂无记录!':
ydic += tish
else:
ydic += tish,'\n'
print('操作成功!')
except KeyError as a:
print('该学生不存在!')
if do == 5:
print('感谢使用学生分数管理程序!')
break
wuqramy 发表于 2020-5-5 17:18
简陋版
无法存盘 wuqramy 发表于 2020-5-5 17:18
简陋版
辛苦了辛苦了! wp231957 发表于 2020-5-5 17:20
无法存盘
所以简陋
wuqramy 发表于 2020-5-5 17:27
所以简陋
这就最佳答案了,给你点个赞 wuqramy 发表于 2020-5-5 17:18
简陋版
我自己用Tkinter加工了一下,最后加入存盘的操作时出现了问题,大佬有时间帮我看看嘛,谢谢啦!import tkinter as tk
import tkinter.messagebox
import pickle
def saveup(cdic,ydic):
a =
file = open('数据.pkl','wb')
pickle.dump(a,file)
file.close()
def savedown():
file = open('数据.pkl','rb')
a = pickle.load(file)
return a,a
def addstudent():
def save():
while True:
if str(v1.get()) in cdic:
if tk.messagebox.askokcancel('提示', '该学生已存在!是否重新编辑?') == True:
del cdic
else:
tk.messagebox.showinfo('提示','取消成功')
break
valu = int(v2.get())
cdic = valu
ydic = '暂无记录!'
break
tk.messagebox.showinfo('提示','完成操作')
saveup(cdic,ydic)
cdic,ydic = savedown()
root1 = tk.Frame(root)
root1.place(relwidth = 0.5,relheight = 0.5)
v1 = tk.StringVar()
v2 = tk.IntVar()
tk.Label(root1,text = '请输入学生姓名:').grid(row = 1,column = 1)
tk.Entry(root1,textvariable = v1).grid(row = 1,column = 2,padx = 10,pady = 5)
tk.Label(root1,text = '请输入学生分数:').grid(row = 2,column = 1)
tk.Entry(root1,textvariable = v2).grid(row = 2,column = 2,padx = 10,pady = 5)
tk.Button(root1,text = '保存',command = save).grid(row = 3,column = 2)
def lookstudent():
def save():
root3 = tk.Frame(root)
root3.place(relwidth = 0.5,relheight = 0.5)
try:
tk.Label(root3,text = '学生' + v1.get() + '的分数:' + str(cdic)).grid(row = 1,column = 1)
tk.Label(root3,text = '分数记录:').grid(row = 2,column = 1)
tk.Label(root3,text = ydic).grid(row = 3,column = 1)
except:
tk.messagebox.showerror('错误','该学生不存在')
root2 = tk.Frame(root)
root2.place(relwidth = 0.5,relheight = 0.5)
v1 = tk.StringVar()
tk.Label(root2,text = '请输入学生姓名:').grid(row = 1,column = 1)
tk.Entry(root2,textvariable = v1).grid(row = 1,column = 2,padx = 10,pady = 5)
tk.Button(root2,text = '查询',command = save).grid(row = 3,column = 2)
def delstudent():
def dell():
try:
del cdic
del ydic
tk.messagebox.showinfo('提示','删除成功')
except KeyError:
tk.messagebox.showinfo('提示','该学生不存在!')
saveup(cdic,ydic)
cdic,ydic = savedown()
root4 = tk.Frame(root)
root4.place(relwidth = 0.5,relheight = 0.5)
v1 = tk.StringVar()
tk.Label(root4,text = '请输入学生姓名:').grid(row = 1,column = 1)
tk.Entry(root4,textvariable = v1).grid(row = 1,column = 2,padx = 10,pady = 5)
tk.Button(root4,text = '删除',command = dell).grid(row = 3,column = 2)
def modifystudent():
def save():
try:
do = v3.get()
if do == '+':
cdic += int(do)
ydic = '变动分数:' + do + ', '
elif do == '-':
cdic -= int(do)
ydic = '变动分数:' + do + ', '
else:
tk.messagebox.showerror('错误','输入不合法!')
tish = '变动原因:' + str(v2.get())
if ydic != '暂无记录!':
ydic += tish
tk.messagebox.showinfo('提示','更新成功')
else:
ydic += tish,'\n'
tk.messagebox.showinfo('提示','更新成功')
except KeyError as a:
tk.messagebox.showinfo('提示','该学生不存在!')
saveup(cdic,ydic)
cdic,ydic = savedown()
root5 = tk.Frame(root)
root5.place(relwidth = 0.5,relheight = 0.5)
v1 = tk.StringVar()
v2 = tk.StringVar()
v3 = tk.StringVar()
tk.Label(root5,text = '学生姓名:').grid(row = 1,column = 1)
tk.Entry(root5,textvariable = v1).grid(row = 1,column = 2,padx = 10,pady = 5)
tk.Label(root5,text = '原因:').grid(row = 2,column = 1)
tk.Entry(root5,textvariable = v2).grid(row = 2,column = 2,padx = 10,pady = 5)
tk.Label(root5,text = '加减分数:').grid(row = 3,column = 1)
tk.Entry(root5,textvariable = v3).grid(row = 3,column = 2,padx = 10,pady = 5)
tk.Button(root5,text = '完成',command = save).grid(row = 4,column = 2)
cdic,ydic = savedown()
root = tk.Tk()
root.title('学生分数管理系统')
root.geometry("400x200+500+500")
menubar = tk.Menu(root)
menubar.add_command(label = '学生新增',command = addstudent,)
menubar.add_command(label = '查看学生',command = lookstudent)
menubar.add_command(label = '学生删除',command = delstudent)
menubar.add_command(label = '更新分数',command = modifystudent)
menubar.add_command(label = '退出程序',command = root.destroy)
root.config(menu = menubar)
root.mainloop() lbxx916 发表于 2020-5-5 21:13
我自己用Tkinter加工了一下,最后加入存盘的操作时出现了问题,大佬有时间帮我看看嘛,谢谢啦!
具体发生了什么bug?
是报错还是怎么样 wuqramy 发表于 2020-5-5 21:20
具体发生了什么bug?
是报错还是怎么样
比如我新增一个人就会出现以下错误Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Lbxx916\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "C:\Users\Lbxx916\Desktop\学生管理系统.py", line 27, in save
cdic = valu
TypeError: 'set' object does not support item assignment lbxx916 发表于 2020-5-5 22:18
比如我新增一个人就会出现以下错误
set 这个实例不支持或不能分配给item类型
页:
[1]