lbxx916 发表于 2020-5-5 16:30:27

我想写这样一个代码操作

我想写这样一个代码操作:
1、每一个人都有自己对应的分数,输入名字就可以看到他所对应的分数了
2、可以通过更改对他的分数进行加减操作并更新,例如小白5分,我查找小白,然后+5就更新到10分了;
3、每次更新需要输入为什么加分或者减分,输入名字也可以查找看到他的所有加减分操作。

也不知道我有没有表达清楚,如果有听懂的大佬能给点思路嘛?我是个刚入Python过了一遍基础的小白,谢谢啦!

liuzhengyuan 发表于 2020-5-5 16:32:06

用字典
如果不会,那就用两个列表,一个存放名字,一个存放分数

乘号 发表于 2020-5-5 16:33:50

用字典吖

wp231957 发表于 2020-5-5 17:15:59

要想带保存的,就得使用文件或者数据库

wuqramy 发表于 2020-5-5 17:18:47

简陋版
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

wp231957 发表于 2020-5-5 17:20:29

wuqramy 发表于 2020-5-5 17:18
简陋版

无法存盘

lbxx916 发表于 2020-5-5 17:26:54

wuqramy 发表于 2020-5-5 17:18
简陋版

辛苦了辛苦了!

wuqramy 发表于 2020-5-5 17:27:37

wp231957 发表于 2020-5-5 17:20
无法存盘

所以简陋

wp231957 发表于 2020-5-5 17:37:57

wuqramy 发表于 2020-5-5 17:27
所以简陋

这就最佳答案了,给你点个赞

lbxx916 发表于 2020-5-5 21:13:57

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()

wuqramy 发表于 2020-5-5 21:20:44

lbxx916 发表于 2020-5-5 21:13
我自己用Tkinter加工了一下,最后加入存盘的操作时出现了问题,大佬有时间帮我看看嘛,谢谢啦!

具体发生了什么bug?
是报错还是怎么样

lbxx916 发表于 2020-5-5 22:18:33

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

wuqramy 发表于 2020-5-5 22:52:58

lbxx916 发表于 2020-5-5 22:18
比如我新增一个人就会出现以下错误

set 这个实例不支持或不能分配给item类型
页: [1]
查看完整版本: 我想写这样一个代码操作