鱼C论坛

 找回密码
 立即注册
查看: 746|回复: 12

[已解决]我想写这样一个代码操作

[复制链接]
发表于 2020-5-5 16:30:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

也不知道我有没有表达清楚,如果有听懂的大佬能给点思路嘛?我是个刚入Python过了一遍基础的小白,谢谢啦!
最佳答案
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[name]
                else:
                    print('取消成功!')
                    break
            value = int(input('请输入学生分数:'))
            cdic[name] = value
            ydic[name] = '暂无记录!'
            print('增加成功!')
            break
    if do == 2:
        name = input('请输入学生姓名:')
        try:
            print('学生' + name + '的分数:' + str(cdic[name]))
            print('分数记录:')
            print(ydic[name])
        except:
            print('该学生不存在!')
    if do == 3:
        name = input('请输入学生姓名:')
        try:
            del cdic[name]
            del ydic[name]
            print('删除成功!')
        except KeyError:
            print('该学生不存在!')
    if do == 4:
        name = input('请输入学生姓名:')
        try:
            do = input('请输入需要对' + name + '分数进行的操作:')
            if do[0] == '+':
                cdic[name] += int(do[0:])
                ydic[name] = do + ','
            elif do[0] == '-':
                cdic[name] -= int(do[0:])
                ydic[name] = do + ','
            else:
                print('输入不合法!')
            tish = input('请输入操作理由:')
            if ydic[name] != '暂无记录!':
                ydic[name] += tish
            else:
                ydic[name] += tish,'\n'
            print('操作成功!')
        except KeyError as a:
            print('该学生不存在!')
    if do == 5:
        print('感谢使用学生分数管理程序!')
        break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-5 16:32:06 | 显示全部楼层
用字典
如果不会,那就用两个列表,一个存放名字,一个存放分数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 16:33:50 | 显示全部楼层
用字典吖
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 17:15:59 From FishC Mobile | 显示全部楼层
要想带保存的,就得使用文件或者数据库
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[name]
                else:
                    print('取消成功!')
                    break
            value = int(input('请输入学生分数:'))
            cdic[name] = value
            ydic[name] = '暂无记录!'
            print('增加成功!')
            break
    if do == 2:
        name = input('请输入学生姓名:')
        try:
            print('学生' + name + '的分数:' + str(cdic[name]))
            print('分数记录:')
            print(ydic[name])
        except:
            print('该学生不存在!')
    if do == 3:
        name = input('请输入学生姓名:')
        try:
            del cdic[name]
            del ydic[name]
            print('删除成功!')
        except KeyError:
            print('该学生不存在!')
    if do == 4:
        name = input('请输入学生姓名:')
        try:
            do = input('请输入需要对' + name + '分数进行的操作:')
            if do[0] == '+':
                cdic[name] += int(do[0:])
                ydic[name] = do + ','
            elif do[0] == '-':
                cdic[name] -= int(do[0:])
                ydic[name] = do + ','
            else:
                print('输入不合法!')
            tish = input('请输入操作理由:')
            if ydic[name] != '暂无记录!':
                ydic[name] += tish
            else:
                ydic[name] += tish,'\n'
            print('操作成功!')
        except KeyError as a:
            print('该学生不存在!')
    if do == 5:
        print('感谢使用学生分数管理程序!')
        break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 17:20:29 From FishC Mobile | 显示全部楼层
wuqramy 发表于 2020-5-5 17:18
简陋版

无法存盘
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-5 17:26:54 | 显示全部楼层

辛苦了辛苦了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 17:27:37 | 显示全部楼层

所以简陋
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 17:37:57 From FishC Mobile | 显示全部楼层
wuqramy 发表于 2020-5-5 17:27
所以简陋

这就最佳答案了,给你点个赞
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-5 21:13:57 | 显示全部楼层

我自己用Tkinter加工了一下,最后加入存盘的操作时出现了问题,大佬有时间帮我看看嘛,谢谢啦!
import tkinter as tk
import tkinter.messagebox
import pickle

def saveup(cdic,ydic):
    a = [cdic,ydic]
    file = open('数据.pkl','wb')
    pickle.dump(a,file)
    file.close()
    
def savedown():
    file = open('数据.pkl','rb')
    a = pickle.load(file)
    return a[0],a[1]


def addstudent():
    def save():
        while True:
            if str(v1.get()) in cdic:
                if tk.messagebox.askokcancel('提示', '该学生已存在!是否重新编辑?') == True:
                    del cdic[str(v1.get())]
                else:
                    tk.messagebox.showinfo('提示','取消成功')
                    break
            valu = int(v2.get())
            cdic[str(v1.get())] = valu
            ydic[str(v1.get())] = '暂无记录!'
            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[v1.get()])).grid(row = 1,column = 1)
            tk.Label(root3,text = '分数记录:').grid(row = 2,column = 1)
            tk.Label(root3,text = ydic[v1.get()]).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[v1.get()]
            del ydic[v1.get()]
            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[0] == '+':
                cdic[v1.get()] += int(do[0:])
                ydic[v1.get()] = '变动分数:' + do + ', '
            elif do[0] == '-':
                cdic[v1.get()] -= int(do[0:])
                ydic[v1.get()] = '变动分数:' + do + ', '
            else:
                tk.messagebox.showerror('错误','输入不合法!')
            tish = '变动原因:' + str(v2.get())
            if ydic[v1.get()] != '暂无记录!':
                ydic[v1.get()] += tish
                tk.messagebox.showinfo('提示','更新成功')
            else:
                ydic[v1.get()] += 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

具体发生了什么bug?
是报错还是怎么样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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[str(v1.get())] = valu
TypeError: 'set' object does not support item assignment
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 22:52:58 | 显示全部楼层
lbxx916 发表于 2020-5-5 22:18
比如我新增一个人就会出现以下错误

set 这个实例不支持或不能分配给item类型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 02:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表