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


Posted in Python onMarch 13, 2018

在学习之前先要了解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 相关文章推荐
Python爬虫模拟登录带验证码网站
Jan 22 Python
Python读写txt文本文件的操作方法全解析
Jun 26 Python
python3制作捧腹网段子页爬虫
Feb 12 Python
浅析python3中的os.path.dirname(__file__)的使用
Aug 30 Python
numpy数组广播的机制
Jul 12 Python
python Pandas库基础分析之时间序列的处理详解
Jul 13 Python
Python简易版停车管理系统
Aug 12 Python
为什么说Python可以实现所有的算法
Oct 04 Python
wxpython布局的实现方法
Nov 01 Python
Python使用windows设置定时执行脚本
Nov 12 Python
python实现简易名片管理系统
Apr 11 Python
PyTorch dropout设置训练和测试模式的实现
May 27 Python
python之pandas用法大全
Mar 13 #Python
python使用sqlite3时游标使用方法
Mar 13 #Python
Python打印输出数组中全部元素
Mar 13 #Python
python实现学生信息管理系统
Apr 05 #Python
python针对excel的操作技巧
Mar 13 #Python
python实现聊天小程序
Mar 13 #Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
Mar 13 #Python
You might like
一个用php实现的获取URL信息的类
2007/01/02 PHP
深入php 正则表达式的学习探讨
2013/06/06 PHP
PHP中文乱码解决方案
2015/03/05 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
js设置function参数默认值(适合没有传参情况)
2014/02/24 Javascript
使用VS开发 Node.js指南
2015/01/06 Javascript
jQuery中on()方法用法实例
2015/01/19 Javascript
js图片轮播特效代码分享
2015/09/07 Javascript
js带闹铃功能的倒计时代码
2016/09/29 Javascript
实例解析angularjs的filter过滤器
2016/12/14 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
js 作用域和变量详解
2017/02/16 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
jQuery中.attr()和.data()的区别分析
2017/09/03 jQuery
js中如何完美的解析数据
2018/03/18 Javascript
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
微信小程序实现签字功能
2019/12/23 Javascript
pygame学习笔记(6):完成一个简单的游戏
2015/04/15 Python
python使用htmllib分析网页内容的方法
2015/05/08 Python
一百行python代码将图片转成字符画
2021/02/19 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
利用python3 的pygame模块实现塔防游戏
2019/12/30 Python
python性能测试工具locust的使用
2020/12/28 Python
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
Omio中国:全欧洲低价大巴、火车和航班搜索和比价
2018/08/09 全球购物
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
教师演讲稿范文
2014/01/08 职场文书
《大禹治水》教学反思
2014/04/27 职场文书
周年庆典答谢词
2015/01/20 职场文书
毕业论文致谢词
2015/05/14 职场文书
2016年中学端午节主题活动总结
2016/04/01 职场文书
Springboot中如何自动转JSON输出
2022/06/16 Java/Android