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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。