学生管理系统分为两个模块:
一个负责编辑增删改查的函数命名(student.py),另一个负责调用类来实现功能(demo.py)。
类似于前后端(假想的)
首先先建立数据库(注意数据类型)
CREATE DATABASE stuman;USE stuman;CREATETABLE student( sno INT(11) PRIMARY KEY NOTNULL AUTO_INCREMENT, sname VARCHAR(20)NOTNULL, gender VARCHAR(1)NOTNULL, birthday DATE, address VARCHAR(50)NOTNULL) ENGINE=INNODB DEFAULT CHARSET=utf8;
在MySQL8.0以上版本出现的问题
如果目标计算机积极拒绝链接,则需要配置环境变量
如果出现,1045, "Access denied for user 'mysql80'@'localhost' (using password: YES)
则类同于SQLyog 报错2058
所以连接 mysql 8.0.11 解决方法解决方法:windows 下cmd 登录 mysql -u root -p 登录你的 mysql 数据库,然后 执行这条SQL:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY'password';
上面的password是你的密码(方便好记1234)
student.py
importpymysqlconnect=pymysql.connect(host='localhost', port=3306, user='root', password='1234', database='stuman', charset='utf8') cur=connect.cursor() classStudent(): def__init__(self,sno,name,gender,birthday,address): self.sno=snoself.name=nameself.gender=genderself.birthday=birthdayself.address=addressdefinputstudent(self):#增加sno=int(input("请输入你要添加的学号:")) name=input("请输入你要添加的姓名:") gender=input("请输入性别(1.男 2.女):") birthday=input("请输入出身年月日:") address=input("请输入IP地址:") sql="insert into student values(%s,%s,%s,%s,%s)"date=(sno,name,gender,birthday,address) cur.execute(sql,date)#数据提交connect.commit()#数据更新defdeletestudent(self):#删除sno=input("请输入你要删除学生的学号:") sql="delete from student where sno=%s"cur.execute(sql,(sno,)) print("执行删除命令,剩余如下") sql2="select * from student"cur.execute(sql2) data=cur.fetchall() foritemindata: print(item) connect.commit() defupdatestudent(self):#修改no=input("请输入你要修改的学生学号:") sql1="select * from student where sno=%s"cur.execute(sql1,(no,)) date=cur.fetchall() print(f"学号为{no}的学生信息如下:\n",date) print("请输入新的信息!") sname=input("请输入你要添加的姓名:") sgender=input("请输入性别(1.男 2.女):") sbirthday=input("请输入出身年月日:") saddress=input("请输入IP地址:") sql2="update student set name=%s, gender=%s, birthday=%s ,address=%s,where sno=%s"sdate=(sname,sgender,sbirthday,saddress,no) cur.execute(sql2,sdate) sql3="select * from student where sno=%s"cur.execute(sql3,(no,)) newdate=cur.fetchone() print("修改之后该学生信息如下:\n",newdate) connect.commit() defsearchstudent(self):#查询sno=input("请输入您要查询学生的学号:") sql1="select * from student where sno=%s"cur.execute(sql1,(sno,)) date=cur.fetchone() print(f"学号为{sno}的学生信息如下:\n",date) connect.commit() defallinstudent(self):#显示所有学生print("所有学生信息如下:") sql1="select * from student"cur.execute(sql1) date=cur.fetchall() print(date)
demo.py
importpymysqlfromstudentimportStudentasa#定义功能函数界面definfo_print(): print("请选择功能--------------------") print("1、添加学员") print("2、删除学员") print("3、修改学员") print("4、查询学员") print("5、显示所有学员") print("6、退出系统") print('-'*20) #用户变量循环使用,直到用户输入6,才退出系统1defmain(): withpymysql.connect(host='localhost', port=3306, user='root', password='1234', database='stuman', charset='utf8') asconn: cur=conn.cursor() whileTrue: info_print() #1.显示功能界面#2.用户输入功能序号user_num=int(input("请输入功能序号:")) #3.按照用户输入的功能序号,执行不同的功能(函数)#如果用户输入1,执行添加;如果用户输入2,执行删除----多重判断ifuser_num==1: print("添加") a.inputstudent(cur) elifuser_num==2: print("删除") a.deletestudent(cur) elifuser_num==3: print("修改") a.updatestudent(cur) elifuser_num==4: print("查询") a.searchstudent(cur) elifuser_num==5: print("显示所有成员信息") a.allinstudent(cur) elifuser_num==6: print("退出系统") exit_flag=input("确定要退出吗?yes or no ") ifexit_flag=='yes': breakelse: print("输入有误!") main()
希望我的文章对你有所帮助!