Python学生信息管理系统修改版
在学习之前先要了解sqlite游标的使用方法python使用sqlite3时游标的使用方法
继上篇博客Python实现学生信息管理系统后,我就觉得写的太复杂了,然后又是一通优化、优化、优化;
本次优化主要修改了:
1.使用游标的方法连接、增、删、改、查数据库;
2.一般二级菜单是不能直接退出程序的,所以去掉了二级菜单退出程序的功能;
3.增加了连表查询;
4.但是还有一点很不满意,就是每次退出后都退出到主菜单而不是当前菜单,这点还没改好,希望小伙伴能一起学习交流!
#-*-coding:utf-8-*-
importsqlite3
#打开本地数据库用于存储用户信息
cx=sqlite3.connect('student.db')
#在该数据库下创建学生信息表
cx.execute('''CREATETABLEStudentTable(
IDINTEGERPRIMARYKEYAUTOINCREMENT,
StuIdINTEGERNOTNULL,
NAMETEXTNOTNULL,
CLASSINTNOTNULL);''')
print"Tablecreatedsuccessfully";
#在该数据库下创建课程信息表
cx.execute('''CREATETABLECourseTable(
IDINTEGERPRIMARYKEYAUTOINCREMENT,
CourseIdINTNOTNULL,
NameTEXTNOTNULL,
TeacherTEXTNOTNULL,
ClassroomTEXTNOTNULL,
StartTimeCHAR(11)NOTNULL,
EndTimeCHAR(11)NOTNULL);''')
print"Tablecreatedsuccessfully";
#在该数据库下创建选课情况信息表
cx.execute('''CREATETABLEXuankeTable(
IDINTEGERPRIMARYKEYAUTOINCREMENT,
StuIdINTNOTNULL,
CourseIdINTNOTNULL);''')
print"Tablecreatedsuccessfully";
#以上三个表创建完后,再次运行程序时,需要把三个建表代码注释掉,否则会提示:该表已存在。即建表只需建一次。
definsert_stu():#录入学生信息
cu=cx.cursor()
stu_id=input("请输入学生学号:")
cu.execute("SELECTStuIdfromStudentTablewhereStuId='%s';"%stu_id)
row=cu.fetchone()
ifrow:
print"sorry,该学号已存在,请重新输入"
else:
stu_name=raw_input("请输入学生姓名:")
stu_class=input("请输入学生班级:")
sql1="INSERTINTOStudentTable(StuId,NAME,CLASS)"
sql1+="VALUES(%d,'%s',%d);"%(stu_id,stu_name,stu_class)
cu.execute(sql1)
cx.commit()
print"恭喜你,学生录入成功!"
cu.close()
defxuanke():#学生选课
cu=cx.cursor()
stu_id=input('请输入要选课的学生学号:')
sql2="selectStuIdfromStudentTablewhereStuId=%d;"%(stu_id)
cu.execute(sql2)
row=cu.fetchone()
ifrow:
sql3="selectCourseId,Name,Teacher,Classroom,StartTime,EndTimefromCourseTable"
cu.execute(sql3)
rows=cu.fetchall()
forrowinrows:
print"CourseId=",row[0]
print"Name=",row[1]
print"Teacher=",row[2]
print"Classroom=",row[3]
print"StartTime=",row[4]
print"EndTime=",row[5],"\n"
cou_id=input("请输入要选的课程号:")
sql0="selectCourseIdfromCourseTablewhereCourseId=%d;"%(cou_id)
cu.execute(sql0)
row=cu.fetchone()
ifrow:
sql="selectStuIdCourseIdfromXuankeTable"
sql+="whereCourseId=%dandStuId=%d;"%(cou_id,stu_id)
cu.execute(sql)
rows=cu.fetchone()
ifrow:
print"该课程已选,不能重复选课!"
break
else:
sql3="insertintoXuankeTable(StuId,CourseId)values(%d,%d)"%(stu_id,cou_id)
cu.execute(sql3)
cx.commit()
print"恭喜你,选课成功!"
else:
print"sorry,该课程不存在!"
else:
print"sorry,没有该学生号"
cu.close()
defstu_id_search():#按照学生学号查询学生信息
cu=cx.cursor()
search_stu_id=input("请输入要查询的学号:")
sql4="SELECTID,StuId,NAME,CLASSfromStudentTable"
sql4+="whereStuId=%d;"%(search_stu_id)
cu.execute(sql4)
row=cu.fetchone()
ifrow:
print
print"您要查询的学生信息为:"
print"ID=",row[0]
print"StuId=",row[1]
print"NAME=",row[2]
print"CLASS=",row[3],"\n"
else:
print"sorry,没有该学生信息!"
cu.close()
defstu_id_cou():#按照学生学号查询该学生所选课程
cu=cx.cursor()
stu_id=input("请输入要查询学生号:")
sql5="selectStuIdfromStudentTablewhereStuId=%d;"%(stu_id)
cu.execute(sql5)
row=cu.fetchone()
ifrow:
sql6="selectA.*,B.*,C.*fromXuankeTableA,CourseTableB,StudentTableC\
whereA.StuId=%dandA.CourseId=B.CourseIdandA.StuId=C.StuId"%(stu_id)#连表查询
cu.execute(sql6)
rows=cu.fetchall()
forrowinrows:
print"该学生所选课程为:"
print"StuId=",row[1]
print"CourseId=",row[2]
print"Name=",row[7]
print"Teacher=",row[8]
print"Classroom=",row[9]
print"StartTime=",row[10]
print"EndTime=",row[11],"\n"
print
else:
print"sorry,没有该学生选课信息!"
cu.close()
defcou_id_search():#按照课程号查询课程信息
cu=cx.cursor()
cou_id=input("请输入要查询的课程号:")
sql7="selectCourseId,Name,Teacher,Classroom,StartTime,EndTimefromCourseTable"
sql7+="whereCourseId=%d;"%(cou_id)
cu.execute(sql7)
row=cu.fetchone()
ifrow:
print"您要查询的课程信息为:"
print"CourseId=",row[0]
print"Name=",row[1]
print"Teacher=",row[2]
print"Classroom=",row[3]
print"StartTime=",row[4]
print"EndTime=",row[5],"\n"
else:
print"sorry,没有该课程信息!"
cu.close()
defcou_id_stu():#按照课程号查询选择该课程的学生列表
cu=cx.cursor()
cou_id=input('请输入课程号:')
sql8="selectCourseIdfromXuankeTablewhereCourseId=%d;"%(cou_id)
cu.execute(sql8)
row=cu.fetchone()
ifrow:
sql9="selectA.*,B.*,C.*fromXuankeTableA,CourseTableB,StudentTableC\
whereA.CourseId=%dandA.CourseId=B.CourseIdandA.StuId=C.StuId"%(cou_id)
cu.execute(sql9)
rows=cu.fetchall()
forrowinrows:
print
print"选择该课程的学生为:"
print"StuId=",row[1]
print"CourseId=",row[2]
print"NAME=",row[14]
print"CLASS=",row[15],"\n"
else:
print"sorry,没有该课程信息!"
cu.close()
defmenu():
print'1.进入学生信息系统(学生信息录入)'
print'2.进入学生选课系统(学生选课操作)'
print'3.进入学生选课信息系统(学生信息查询和选课情况查询)'
print'4.退出程序'
defstudent():
print'1.录入学生信息'
print'2.返回主菜单'
defCourse():
print'1.开始选课'
print'2.返回主菜单'
definformation():
print'1.按学号查询学生信息'
print'2.按学号查看学生选课课程列表'
print'3.按课程号查看课程信息'
print'4.按课程号查看选课学生列表'
print'5.返回主菜单'
whileTrue:
menu()
print
x=raw_input('请输入您的选择菜单号:')
ifx=='1':
#进入学生信息系统
student()
stu=raw_input('您已进入学生录入系统,请再次输入选择菜单:')
print
ifstu=='1':
insert_stu()
continue
ifstu=='2':
continue
else:
print"输入的选项不存在,请重新输入!"
continue
ifx=='2':
#进入选课信息系统
Course()
cou=raw_input('您已进入学生选课系统,请再次输入选择菜单:')
print
ifcou=='1':
xuanke()
continue
ifcou=='2':
continue
else:
print"输入的选项不存在,请重新输入!"
continue
ifx=='3':
#进入学生选课信息表
information()
inf=raw_input('您已进入学生选课信息系统,请再次输入选择菜单:')
print
ifinf=='1':
stu_id_search()
continue
ifinf=='2':
stu_id_cou()
continue
ifinf=='3':
cou_id_search()
continue
ifinf=='4':
cou_id_stu()
continue
ifinf=='5':
continue
else:
print"输入的选项不存在,请重新输入!"
continue
ifx=='4':
print"谢谢使用!"
exit()
else:
print"输入的选项不存在,请重新输入!"
continue
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。