2、设计一个小型的数据库应用程序 可利用现有的数据库,也可重新设计数据库。 要求实现数据的增加、删除、修改、查询的功能。 在报告中描述清楚使用的数据库、数据表及实现的功能(要求截图,并附 代码)
设计一个小型的数据库应用程序 数据库名:student 表名:infor 字段: Sno:学号 Sname:姓名 Ssex:性别 Sage:年龄 Smaj:专业 Srew:奖项 功能实现 1. 添加学生信息:向表中插入学生的学号、姓名、性别、年龄、专业、奖项。 2. 修改学生信息:根据学号修改学生的姓名、性别、年龄、专业、奖项。 3. 删除学生信息:根据学号删除学生的所有信息。 4. 查询学生信息:根据学号查询学生的所有信息。 程序实现(Python连接MySQL) import pymysql # python连接mysql的驱动 import tkinter as tk # 图形化界面的模块 import tkinter.ttk as ttk import tkinter.messagebox # 要使用messagebox先要导入模块 table = "infor" # 建立连接,在每个按钮的函数里创建游标 db = pymysql.connect(host="192.168.163.241", user="root", passwd="123456", db="student", port=3306, charset='utf8') # 清空输入框内容 def clearAll(): entryId.delete(0, 'end') entryName.delete(0, 'end') entryMaj.delete(0, 'end') entryRew.delete(0, 'end') spinboxSex.delete(0, 'end') spinboxAge.delete(0, 'end') # 根据学号进行查询 def search(): cursor = db.cursor() student_id = entryId.get() if student_id != '': try: student_id = int(student_id) sql = "SELECT *, Srew FROM {} WHERE Sno = {}".format(table, student_id) cursor.execute(sql) result = cursor.fetchone() if result is not None: data = list(result) tk.messagebox.showinfo(title='Info', message=tuple(data)) else: tk.messagebox.showerror(title='错误!', message='查无此人!请重新输入!') except: tk.messagebox.showerror(title='错误!', message='输入错误!请重新输入!') clearAll() cursor.close() # 修改 信息 def alter(): cursor = db.cursor() id = entryId.get() name = entryName.get() sex = spinboxSex.get() age = spinboxAge.get() maj = entryMaj.get() rew = entryRew.get() if (id != ''): try: id = int(id) sql = "select * from {} where Sno = {}".format(table, id) cursor.execute(sql) if (cursor.fetchone() != None): sql1 = "update infor set Sname = '{}', Ssex = '{}', Sage = {}, Smaj = '{}', Srew = '{}' where Sno = {}".format( name, sex, age, maj, rew, id) cursor.execute(sql1) tk.messagebox.showinfo(title='Info', message='修改成功') else: tk.messagebox.showerror(title='错误!', message='查无此人!请重新输入!') except: tk.messagebox.showerror(title='错误!', message='输入错误!请重新输入!') else: tk.messagebox.showerror(title='错误!', message='学号不能为空!请重新输入!') db.commit() clearAll() cursor.close() # 根据学号 进行删除 def delete(): cursor = db.cursor() id = entryId.get() if (id != ''): try: id = int(id) sql = "select * from {} where Sno = {}".format(table, id) cursor.execute(sql) if (cursor.fetchone() != None): sql1 = "delete from {} where Sno = {}".format(table, id) cursor.execute(sql1) sql2 = "delete from {} where Sno = {}".format(table, id) cursor.execute(sql2) tk.messagebox.showinfo(title='Info', message='删除成功') else: tk.messagebox.showerror(title='错误!', message='查无此人!请重新输入!') except: tk.messagebox.showerror(title='错误!', message='输入错误!请重新输入!') else: tk.messagebox.showerror(title='错误!', message='学号不能为空!请重新输入!') db.commit() clearAll() cursor.close() # !!!python对MySQL进行数据的插入、更新和删除之后需要commit,数据库才会真的有数据操作。插入内容 def insert(): cursor = db.cursor() id = entryId.get() name = entryName.get() sex = spinboxSex.get() age = spinboxAge.get() maj = entryMaj.get() rew = entryRew.get() if (id != ''): id = int(id) sql = "select * from {} where Sno = {}".format(table, id) cursor.execute(sql) if (cursor.fetchone() != None): tk.messagebox.showerror(title='错误!', message='已有此人!请重新输入!') else: sql1 = "insert into infor (Sno, Sname, Ssex, Sage, Smaj, Srew) values({}, \"{}\", \"{}\", {}, \"{}\", \"{}\")".format( id, name, sex, age, maj, rew) cursor.execute(sql1) tk.messagebox.showinfo(title='Info', message='添加成功!') else: tk.messagebox.showerror(title='错误!', message='学号不能为空!请重新输入!') db.commit() clearAll() cursor.close() # 控件的布局 windows = tk.Tk() windows.title('学生信息管理') # 第1行控件 lblId = tk.Label(text='学号:') lblId.grid(row=0, column=0) entryId = tk.Entry() entryId.grid(row=0, column=1) lblName = tk.Label(text='姓名:') lblName.grid(row=0, column=2) entryName = tk.Entry() entryName.grid(row=0, column=3) # 第2行控件 lblSex = tk.Label(text='性别:') lblSex.grid(row=1, column=0) spinboxSex = tk.Spinbox(windows, value=('男', '女')) spinboxSex.grid(row=1, column=1) lblAge = tk.Label(text='年龄:') lblAge.grid(row=1, column=2) spinboxAge = tk.Spinbox(windows, from_=15, to=40) spinboxAge.grid(row=1, column=3) # 第3行控件 lblMaj = tk.Label(text='专业:') lblMaj.grid(row=2, column=0) entryMaj = tk.Entry() entryMaj.grid(row=2, column=1) lblRew = tk.Label(text='奖励:') lblRew.grid(row=2, column=2) entryRew = tk.Entry() entryRew.grid(row=2, column=3) # 分割线 ttk.Separator(orient=tk.HORIZONTAL).grid(row=3, column=0, columnspan=6, pady=10, sticky=tk.W + tk.E) # 按钮控件 btnSer = tk.Button(text='查询', command=search) btnSer.grid(row=4, column=0) btnIdx = tk.Button(text='插入', command=insert) btnIdx.grid(row=4, column=1) btnRep = tk.Button(text='修改', command=alter) btnRep.grid(row=4, column=2) btnDel = tk.Button(text='删除', command=delete) btnDel.grid(row=4, column=3) windows.mainloop()
玄机博客
© 版权声明
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
THE END
暂无评论内容