加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

解析用python实现学生选课系统及过程

发布时间:2022-01-12 04:23:07 所属栏目:语言 来源:互联网
导读:我们知道Python的功能是很强大的,能够实现多种管理系统,这篇就给大家分享用python怎样实现学生选课系统,下文有详细的实现过程及代码,感兴趣的朋友可以参考看看,接下来我们一起来了解一下吧。 一、实验目的 实现学生选课系统 二、实验环境 Python3.6 p
  我们知道Python的功能是很强大的,能够实现多种管理系统,这篇就给大家分享用python怎样实现学生选课系统,下文有详细的实现过程及代码,感兴趣的朋友可以参考看看,接下来我们一起来了解一下吧。
 
  一、实验目的
  实现学生选课系统
 
  二、实验环境
  Python3.6
  pymysql(Python连接MySQL)
  xlrd(操作Excel)
 
  三、程序结构
 
 
  1.首先运行First_run.py:
  功能:创建数据库、表等信息
 
  2.运行seconnd_run.py:
  功能: 实现学生选课
 
  3.账号密码.xlsx:
  存放学生信息(可以存班级花名册)
 
  如:
 
  ``
 
  四、数据库结构
  表之间的联系
 
 
 
  五、各表功能
  student_login:存放学生账号信息(直接导入班级花名册,具体看代码)
   字段:
   s_no:学生学号,
   s_name:学生姓名,
   s_login:学生账号,
   s_pd:学生密码
   course:存放课程信息
   字段:
   c_id:课程编号
   c_name:课程名称
   student_class:学生选课表,存放学生选课信息
   字段:
   s_no:学生学号(设置外键与student_login表s_no连接)
   c_id:课程编号(设置外键与course表c_id连接)
   admin_login:管理员信息表,存放管理员账号
   字段:
   a_no:  管理员编号
   a_name:  管理员姓名
   a_login:  管理员账号
   a_pd:  管理员密码
  六、代码部分
  First_run.py代码如下:
 
  import pymysql
  import xlrd
  def create_all():
      try:
          password = input('请输入mysql密码(root用户):')
          db = pymysql.connect(host='localhost', user='root', password=password)
          cursor = db.cursor()
      except pymysql.err.OperationalError:
          print('密码输入错误!')
      else:
          try:
              sql = 'create database student charset utf8;'
              cursor.execute(sql)
          except pymysql.err.ProgrammingError:
              print("Can't create database 'student' database exists!")
          else:
              sql0 = 'use student;'
              # 创建课程表
              sql1 = "CREATE TABLE course (c_id int(10) PRIMARY KEY AUTO_INCREMENT, c_name VARCHAR ( 30 ) NOT NULL)default charset utf8;"
              # 创建学生账号表
              sql2 = "create table student_login(s_no char(10), s_name varchar(30), s_login char(20), s_pd char(20) not null, primary key(s_no))
              default charset utf8;"
              # 创建学生选课表
              sql3 = "CREATE TABLE student_class (s_no CHAR(10),c_id INT,CONSTRAINT FOREIGN KEY (s_no) REFERENCES student_login (s_no),CONSTRAINT
              FOREIGN KEY (c_id) REFERENCES course (c_id),unique(s_no,c_id)) default charset utf8;"  # unique(s_no,c_id))联合唯一,确保选课唯一
              # 创建管理员账号表
              sql4 = "create table admin_login(a_no char(10), a_name varchar(30), a_login char(10)  unique, a_pd char(10) not null, primary key(a_no))
              default charset utf8;"
              cursor.execute(sql0)
              cursor.execute(sql1)
              cursor.execute(sql2)
              cursor.execute(sql3)
              cursor.execute(sql4)
              db.commit()
              print('Successful!')
  def insert_student_login(db):
      def open_excel():
          try:
              book = xlrd.open_workbook("账号密码.xlsx")  # 文件名,把文件与py文件放在同一目录下
          except:
              print("Open excel file failed!")
          else:
              try:
                  sheet = book.sheet_by_name("Sheet1")  # execl里面的sheet1
              except:
                  print('No Sheet1')
              else:
                  print('Yes')
                  return sheet
 
      def insert_data():
          sheet = open_excel()
          cursor = db.cursor()
          for i in range(1, sheet.nrows):  # 第一行是标题名,对应表中的字段名所以应该从第二行开始,计算机以0开始计数,所以值是1
              s_no = str(sheet.cell(i, 0).value)[0:10]  # 取第i行第0列
              s_name = sheet.cell(i, 1).value  # 取第i行第1列,下面依次类推
              s_login = str(sheet.cell(i, 2).value)[0:10]
              s_pd = str(sheet.cell(i, 3).value)[0:10]
              # print(name)
              # print(data)
              # value = (name,data)
              # print(value)
              sql = "INSERT INTO student_login VALUES('%s','%s','%s','%s')" % (s_no, s_name, s_login, s_pd)
              cursor.execute(sql)  # 执行sql语句
              db.commit()
      insert_data()
      # cursor.close()  # 关闭连接
      # db.close()#关闭数据
      print("插入成功!")
 
 
  def insert_admin_login(db):
      try:
          cursor = db.cursor()
          sql = 'insert into admin_login values("1","admin","1","1")'
          cursor.execute(sql)
          db.commit()
      except:
          print('Insert admin_login Failed!!!')
      else:
          print('Successful!')
 
  def insert_into_course(db):
      try:
          cursor = db.cursor()
          sql = 'insert into course values(1,"高数"),(2,"大学英语");'      # 默认插入两个课程供选择
          cursor.execute(sql)
          db.commit()
      except:
          print('Insert course Failed!')
      else:
          print('Successful!')
 
  def main():
      create_all()
      try:
          passwd = input('请输入MySQL密码:')
          db = pymysql.connect(host="localhost", user="root", passwd=passwd, db="student", charset='utf8')
      except:
          print("Could not connect to mysql server!")
      else:
          insert_student_login(db)
          insert_admin_login(db)
          insert_into_course(db)
 
  if __name__ == '__main__':
      main()
  second_run.py代码如下:
 
  import pymysql
 
  # 创建游标函数
  def get_db():
      try:
          passwd = input('请输入MySQL密码:')
          db = pymysql.connect('127.0.0.1', 'root', passwd, 'student')
      except pymysql.err.OperationalError:
          print('密码输入错误!Go Die!')
      else:
          return db
  def get_cursor(db):
      cursor = db.cursor()
      return cursor
  # 选择身份
  def login(db, cursor):
      menu_login()
      i = 0
      while True:
          i += 1  # 设置循环,超过三次退出系统
          login_select = input('请输入你的选项:')
          if login_select == '1':  # 这里数字为字符串类型,记得要引号!
              student_login(db, cursor)  # 跳入学生登录页面
          elif login_select == '2':
              admin_login(db, cursor)  # 跳入管理员登录页面
          else:
              print('请输入正确的选项!>>>>>>>>请擦擦眼睛再重选--*--(^_^)--*-- :')
              if i >= 3:
                  print('GoodBye了您啊!')
                  break
 
  # 学生登录认证
  def student_login(db,cursor):
      print('           -----------------****----------^_^|-欢迎进入学生系统-|^_^----------****----------------------------      ')
      l = 0
      while True:
          login = input('请输入你的账号:')
          sql = "SELECT * FROM student_login where student_login.s_login='%s'" % login
          cursor.execute(sql)
          login_id = cursor.fetchall()
          if len(login_id) == 0:
              l += 1
              print('账号不存在,请重新输入:')
              if l >= 3:
                  print()
                  print('账号不存在,请联系管理员申请账号!')
                  exit()

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读