侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Python学生信息管理系统修改版

Python  /  管理员 发布于 7年前   322

在学习之前先要了解sqlite游标的使用方法python使用sqlite3时游标的使用方法

继上篇博客Python实现学生信息管理系统后,我就觉得写的太复杂了,然后又是一通优化、优化、优化;

本次优化主要修改了:

1.使用游标的方法连接、增、删、改、查数据库;
2.一般二级菜单是不能直接退出程序的,所以去掉了二级菜单退出程序的功能;
3.增加了连表查询;
4.但是还有一点很不满意,就是每次退出后都退出到主菜单而不是当前菜单,这点还没改好,希望小伙伴能一起学习交流!

#-*- coding:utf-8 -*-import sqlite3#打开本地数据库用于存储用户信息cx = sqlite3.connect('student.db')#在该数据库下创建学生信息表cx.execute ('''CREATE TABLE StudentTable( ID INTEGER PRIMARY KEY AUTOINCREMENT, StuId   INTEGER  NOT NULL, NAME   TEXT  NOT NULL, CLASS   INT  NOT NULL);''')print "Table created successfully";#在该数据库下创建课程信息表cx.execute ('''CREATE TABLE CourseTable( ID INTEGER PRIMARY KEY AUTOINCREMENT, CourseId  INT  NOT NULL, Name   TEXT  NOT NULL, Teacher   TEXT  NOT NULL, Classroom   TEXT  NOT NULL, StartTime    CHAR(11) NOT NULL, EndTime    CHAR(11) NOT NULL);''')print "Table created successfully";#在该数据库下创建选课情况信息表cx.execute ('''CREATE TABLE XuankeTable( ID INTEGER PRIMARY KEY AUTOINCREMENT, StuId   INT   NOT NULL, CourseId   INT   NOT NULL);''')print "Table created successfully";#以上三个表创建完后,再次运行程序时,需要把三个建表代码注释掉,否则会提示:该表已存在。即建表只需建一次。def insert_stu():#录入学生信息 cu = cx.cursor() stu_id = input("请输入学生学号:") cu.execute("SELECT StuId from StudentTable where StuId = '%s';"%stu_id) row = cu.fetchone() if row:  print "sorry,该学号已存在,请重新输入" else:  stu_name = raw_input("请输入学生姓名:")  stu_class = input("请输入学生班级:")  sql1 = "INSERT INTO StudentTable(StuId,NAME,CLASS)"  sql1 += " VALUES(%d,'%s',%d);"%(stu_id,stu_name,stu_class)  cu.execute(sql1)  cx.commit()  print "恭喜你,学生录入成功!" cu.close()def xuanke():#学生选课 cu = cx.cursor() stu_id = input('请输入要选课的学生学号:') sql2 = "select StuId from StudentTable where StuId = %d;"%(stu_id) cu.execute(sql2) row = cu.fetchone() if row:  sql3 = "select CourseId,Name,Teacher,Classroom, StartTime,EndTime from CourseTable"  cu.execute(sql3)  rows = cu.fetchall()  for row in rows:   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 = "select CourseId from CourseTable where CourseId =%d;"%(cou_id)  cu.execute(sql0)  row = cu.fetchone()  if row:   sql = "select StuId CourseId from XuankeTable "   sql += "where CourseId = %d and StuId=%d;"%(cou_id,stu_id)   cu.execute(sql)   rows = cu.fetchone()   if row:    print "该课程已选,不能重复选课!"    break   else:    sql3 = "insert into XuankeTable (StuId,CourseId) values (%d,%d)"%(stu_id,cou_id)    cu.execute(sql3)    cx.commit()    print "恭喜你,选课成功!"  else:   print "sorry,该课程不存在!" else:  print "sorry,没有该学生号" cu.close()def stu_id_search():#按照学生学号查询学生信息 cu = cx.cursor() search_stu_id = input("请输入要查询的学号:") sql4 = "SELECT ID,StuId,NAME, CLASS from StudentTable " sql4 += "where StuId= %d;" % (search_stu_id) cu.execute(sql4) row = cu.fetchone() if row:   print  print "您要查询的学生信息为:"  print "ID = ", row[0]  print "StuId = ", row[1]  print "NAME = ", row[2]  print "CLASS = ",row[3], "\n" else:  print "sorry,没有该学生信息!" cu.close()def stu_id_cou():#按照学生学号查询该学生所选课程 cu = cx.cursor() stu_id = input("请输入要查询学生号:") sql5 = "select StuId from StudentTable where StuId = %d;"%(stu_id) cu.execute(sql5) row = cu.fetchone() if row :  sql6 = "select A.*,B.*,C.* from XuankeTable A, CourseTable B, StudentTable C \  where A.StuId = %d and A.CourseId=B.CourseId and A.StuId=C.StuId"%(stu_id)#连表查询  cu.execute(sql6)  rows = cu.fetchall()  for row in rows:   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()def cou_id_search(): #按照课程号查询课程信息 cu = cx.cursor() cou_id = input("请输入要查询的课程号:") sql7 = "select CourseId ,Name,Teacher,Classroom,StartTime,EndTime from CourseTable " sql7 += "where CourseId = %d;"%(cou_id) cu.execute(sql7) row = cu.fetchone() if row:  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()def cou_id_stu():#按照课程号查询选择该课程的学生列表 cu = cx.cursor() cou_id = input('请输入课程号:') sql8 = "select CourseId from XuankeTable where CourseId =%d;"%(cou_id) cu.execute(sql8) row = cu.fetchone() if row:  sql9 = "select A.*,B.*,C.* from XuankeTable A, CourseTable B, StudentTable C \  where A.CourseId = %d and A.CourseId=B.CourseId and A.StuId=C.StuId"%(cou_id)  cu.execute(sql9)  rows = cu.fetchall()  for row in rows:   print   print "选择该课程的学生为:"   print "StuId = ", row[1]   print "CourseId = ", row[2]   print "NAME = ", row[14]   print "CLASS = ",row[15],"\n" else:  print "sorry,没有该课程信息!" cu.close()def menu(): print '1.进入学生信息系统(学生信息录入)' print '2.进入学生选课系统(学生选课操作)' print '3.进入学生选课信息系统(学生信息查询和选课情况查询)' print '4.退出程序'def student(): print '1.录入学生信息' print '2.返回主菜单'def Course(): print '1.开始选课' print '2.返回主菜单'def information(): print '1.按学号查询学生信息' print '2.按学号查看学生选课课程列表' print '3.按课程号查看课程信息' print '4.按课程号查看选课学生列表' print '5.返回主菜单'while True: menu() print x = raw_input('请输入您的选择菜单号:') if x == '1':  #进入学生信息系统  student()  stu = raw_input('您已进入学生录入系统,请再次输入选择菜单:')  print  if stu == '1':   insert_stu()   continue  if stu == '2':   continue  else:   print "输入的选项不存在,请重新输入!"   continue if x == '2':  #进入选课信息系统  Course()  cou = raw_input('您已进入学生选课系统,请再次输入选择菜单:')  print  if cou == '1':   xuanke()   continue  if cou == '2':   continue  else:   print "输入的选项不存在,请重新输入!"   continue if x == '3':  #进入学生选课信息表  information()  inf = raw_input('您已进入学生选课信息系统,请再次输入选择菜单:')  print  if inf == '1':   stu_id_search()   continue  if inf == '2':   stu_id_cou()   continue  if inf == '3':   cou_id_search()   continue  if inf == '4':   cou_id_stu()   continue  if inf == '5':   continue  else:   print "输入的选项不存在,请重新输入!"   continue if x == '4':  print "谢谢使用!"  exit() else:  print "输入的选项不存在,请重新输入!"  continue

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


  • 上一条:
    Python使用Django实现博客系统完整版
    下一条:
    python之pandas用法大全
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客