计算机软件实习之校园一卡通管理系统

针对,我们小组所设计的校园一卡通管理系统的项目实现。主要分为两个部分

前端 后端
界面的设计以及交互的操作 根据需求进行对数据库中数据的操作

具体设计流程图如下:

此流程图中包含前端的UI界面设计,最基本的功能实现,还有就是后端对数据库的设计。

开发环境

数据库:MySQL
开发语言:python
开发工具:Pycharm
开发环境:Python 3.6

前端UI界面的开发

针对用户的UI界面,主要由我们小组的另外两人进行设计,地址如下:

后端开发

数据库的设计

1.基于对流程图的分析,进行数据库的设计,并对学生基本信息表、交易记录表和注册表的属性列的设计以及考虑各表之间的是否可以建立一定的关系,使得设计的表尽可能的提高到第二或者第三范式以便减少数据的冗余

三个表所具有的属性,如上图所示。学生基本信息表和注册表的主键都是学号,交易记录的主键是学号和消费时间所组成的联合主键,并且交易记录中的主键是来自学生基本信息表的学号所以这两个表是通过学号可以做到级联,这样可以减少一些共同所有的属性列,以减少数据冗余

前端界面基本功能的分析和实现

功能实现的过程需要填充一些学生基本信息和交易记录表的测试数据用于模拟即批量插入。

def StudentInformation(start1, end1):import pymysqlfrom openpyxl import load_workbookimport xlrdfrom datetime import date, datetimedb = pymysql.connect("localhost", "root", "2503325800", "校园一卡通数据库")# 使用cursor()方法获取操作游标# 使用cursor()方法获取操作游标cursor = db.cursor()workbook = load_workbook(filename='./00.xlsx')# print(workbook.sheetnames)sheet1 = workbook["3"]list1 = []list2 = []for q in range(start1, end1):list1.append([])for row in sheet1.iter_rows(min_row=q, max_row=q):for cell in row:from builtins import strstring = str(cell.value)list1[q - start1].append(string)for i in range(1, len(list1)):# p1 = 0date = list1[i]str1 = ""for i in range(6):str1 += "'" + date[i] + "'" + ","str1 = str1[:-1]sql_str = "INSERT INTO 学生基本信息(学号, 姓名, 性别, 学院, 专业, 手机号, 余额) VALUES(%s,%s)" % (str1, int(date[6]))# print(sql_str)try:# 执行sql语句db.ping(reconnect=True)cursor.execute(sql_str)db.commit()except Exception as e:# 如果发生错误则回滚print("修改失败!")print(e)db.rollback()# 关闭数据库连接db.close()

1.登录账号的注册
实现逻辑:需要输入学生的学号,判断学号是否在学生基本信息表中,如果在就输入账号和密保,通过T-SQL语句将账号、密码、密保写道注册表中。即可注册成功。否则重新输入注册。代码如下:

def register(studentNumber, password, SecretGuard):import pymysqldb = pymysql.connect("localhost", "root", "123456", "onecartoon")# 使用cursor()方法获取操作游标# 使用cursor()方法获取操作游标cursor = db.cursor()ch = "select 学号 from 学生基本信息 where 学号='%s'" % studentNumbercursor.execute(ch)ch1 = cursor.fetchone()if ch1 == None:print("学号输入错误")else:sql = """INSERT INTO 注册(学号,密码,密保)VALUES ('%s', '%s', '%s')""" % (studentNumber, password, SecretGuard)try:# 执行sql语句cursor.execute(sql)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()# 关闭数据库连接db.close()else:print("注册成功!")return

2.选项卡——学生基本信息基本功能
此过程包括,从学生基本信息表中查询数据、插入数据、删除数据、修改数据。逻辑如下:
首先查询语句,根据我做UI界面的队友所提的要求和帮助下通过T-SQL语句做的模糊查询操作

# 学生基本信息查询
def informationInput(studentNumber, name, gender, College, major, mobileNumber):lable = [studentNumber, name, gender, College, major, mobileNumber]lable1 = ['学号', '姓名', '性别', '学院', '专业', '手机号']str = ""  # 初始化为空串flag = 0for i in range(6):if lable[i] != '':flag = 1str += lable1[i] + "LIKE '%" + lable[i] + "%' and "  #模糊查询A LIKE '%B%'str = str[:-5]print(str)print(str)import pymysql.cursorsconnection = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='onecartoon',charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor)try:cursor = connection.cursor()if flag == 0:sql = "select * from 学生基本信息"else:sql = "select * from 学生基本信息 where %s" % strcursor.execute(sql)result = cursor.fetchall()# 信息的输出for data in result:print(data)except Exception as e:print("信息输入错误")# 提示错误信息print(e)cursor.close()connection.close()

插入数据:根据所给学生基本信息基本使用T-SQL语句进行插入

def Imformation(studentNumber, name, gender, College, major, mobileNumber):import pymysql# 打开数据库连接db = pymysql.connect("localhost", "root", "123456", "onecartoon")# 使用cursor()方法获取操作游标cursor = db.cursor()money = 100lable = [studentNumber, name, gender, College, major, mobileNumber]lable1 = ['学号', '姓名', '性别', '学院', '专业', '手机号']str2 = ''  # 初始化为空串str1 = ''flag = 0for i in range(4, 6):# print(i)if lable[i] != '':str1 += lable1[i] + ","flag = 1str2 += "'" + lable[i] + "',"str2 = str2[:-1]str1 = str1[:-1]print(studentNumber)# # SQL 插入语句if flag == 0:sql = "INSERT INTO 学生基本信息(学号,姓名,性别,学院,余额) VALUES('%s','%s','%s','%s',%s)" % (studentNumber, name, gender, College, money)else:sql = "INSERT INTO 学生基本信息(学号,姓名,性别,学院,%s,余额) VALUES ('%s','%s','%s','%s',%s, %s)" % (str1, studentNumber, name, gender, College, str, money)try:# 执行sql语句cursor.execute(sql)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚print("信息录入错误")db.rollback()# 关闭数据库连接db.close()else:print('信息录入成功')return

修改数据:根据给的学号,属性名称,该属性所对应的值,进行更新操作

def DataUpdate(studentNumber, attribute, val):import pymysqldb = pymysql.connect("localhost", "root", "123456", "onecartoon")# 使用cursor()方法获取操作游标# 使用cursor()方法获取操作游标cursor = db.cursor()sql = "update 学生基本信息 set %s='%s' where 学号='%s'" % (attribute, val, studentNumber)print(sql)try:# 执行sql语句cursor.execute(sql)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚print("修改失败!")db.rollback()# 关闭数据库连接db.close()else:print("修改成功!")

删除数据:获取该学生的学号,根据学号进行定位,将该学生的基本信息,连同级联的交易记录表中该学生的数据信息一起删除

def DeleteData(studentNumber):import pymysqldb = pymysql.connect("localhost", "root", "123456", "onecartoon")# 使用cursor()方法获取操作游标# 使用cursor()方法获取操作游标cursor = db.cursor()sql = "DELETE FROM 学生基本信息 WHERE 学号='%s'" % (studentNumber)sql1 = "DELETE FROM 交易记录 WHERE 学号='%s'" % (studentNumber)try:# 执行sql语句cursor.execute(sql)# 提交到数据库执行db.commit()cursor.execute(sql1)# 提交到数据库执行db.commit()except Exception as e:# 如果发生错误则回滚print("删除信息失败!")db.rollback()# 关闭数据库连接db.close()else:print("删除成功!")

3.选项卡——交易记录
该页面下的操作只能是查询学生的交易记录信息,同样也做了模糊查询

def TransactionRecords(studentNumber, name, ConsumptionType):lable = [studentNumber, name, ConsumptionType]lable1 = ['学号', '姓名', '消费类型']print(lable1)str = ""  # 初始化为空串flag = 0for i in range(3):if lable[i] != '':flag = 1if i == 0:str += "学生基本信息." + lable1[i] + " LIKE '%" + lable[i] + "%' and "elif i == 1:str += "学生基本信息." + lable1[i] + " LIKE '%" + lable[i] + "%' and "elif i == 2:str += lable1[i] + " LIKE '%" + lable[i] + "%' and "str = str[:-5]# print(str)import pymysql.cursorsconnection = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='onecartoon',charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor)cur = connection.cursor()if flag == 0:sql = "select 学生基本信息.学号,学生基本信息.姓名,学生基本信息.性别,消费类型,金额变动,消费时间 from 交易记录,学生基本信息 where 学生基本信息.学号=交易记录.学号"# sql = "select * from 交易记录"else:sql = "select 学生基本信息.学号,学生基本信息.姓名,学生基本信息.性别,消费类型,金额变动,消费时间 from 交易记录,学生基本信息 where 学生基本信息.学号=交易记录.学号 and %s" % strcur.execute(sql)result = cur.fetchall()lable2 = ["学号", "姓名", "性别", "消费类型", "金额变动", "消费时间"]list = []for i in range(result.__len__()):temp = result[i]list.append([])for j in range(0, lable2.__len__()):list[i].append(temp[lable2[j]])print(list)# return listcur.close()connection.close()

:在做页面和数据库连接操作的时候,因为定义变量等问题做前端UI队友进行过修改和调整

系统的其他方面的细节详情,请见我们小组其他成员的博客。

计算机软件实习之校园一卡通管理系统相关推荐

  1. 软件实习项目4——校园一卡通管理系统(成品展示)

    软件实习项目4--校园一卡通管理系统(成品展示) 成品展示 1.登录界面 2.密保验证 3.重置密码 4.主界面 视频演示 成品展示 1.登录界面 2.密保验证 3.重置密码 4.主界面 1)学生基本 ...

  2. 基于JAVA校园一卡通管理系统计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA校园一卡通管理系统计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA校园一卡通管理系统计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开 ...

  3. java计算机毕业设计校园一卡通管理系统源码+mysql数据库+lw文档+系统+调试部署

    java计算机毕业设计校园一卡通管理系统源码+mysql数据库+lw文档+系统+调试部署 java计算机毕业设计校园一卡通管理系统源码+mysql数据库+lw文档+系统+调试部署 本源码技术栈: 项目 ...

  4. java计算机毕业设计西安财经大学校园一卡通管理系统源代码+数据库+系统+lw文档

    java计算机毕业设计西安财经大学校园一卡通管理系统源代码+数据库+系统+lw文档 java计算机毕业设计西安财经大学校园一卡通管理系统源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S ...

  5. (附源码)SSM校园一卡通管理系统JAVA计算机毕业设计项目

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  6. java一卡通管理系统实现_基于jsp的校园一卡通管理系统

    [实例简介] 校园一卡通管理系统,适合做大作业,课程设计或毕业设计 [实例截图] [核心代码] JSP校园一卡通管理系统. └── studentweb ├── WebRoot │   ├── CSS ...

  7. 【附源码】计算机毕业设计JAVA校园一卡通管理系统

    [附源码]计算机毕业设计JAVA校园一卡通管理系统 目运行 环境项配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(Int ...

  8. Java毕设项目校园一卡通管理系统计算机(附源码+系统+数据库+LW)

    Java毕设项目校园一卡通管理系统计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ E ...

  9. SSM毕设项目高校校园一卡通管理系统hwi15(java+VUE+Mybatis+Maven+Mysql)

    SSM毕设项目高校校园一卡通管理系统hwi15(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuild ...

  10. java毕业设计西安财经大学校园一卡通管理系统源码+lw文档+mybatis+系统+mysql数据库+调试

    java毕业设计西安财经大学校园一卡通管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计西安财经大学校园一卡通管理系统源码+lw文档+mybatis+系统+mysq ...

最新文章

  1. 600余名外出务工者免费乘高铁“返乡专列”回云南过春节
  2. 如何用python画圆形的代码-python – 如何快速绘制数千个圆圈?
  3. 腾讯面试官:如何停止一个正在运行的线程?我一脸蒙蔽。。。
  4. 日常生活 -- 面试思考
  5. 使用ASP.NET广告控件的XML语言创建广告链接--ASP.NET
  6. 【LA3487】最小割-经典模型 两种方法
  7. 算法导论 思考题2-4
  8. 我在优酷 OTT 端做自动化制图
  9. SqlSession介绍
  10. selenium webdriver中的常用鼠标操作
  11. 量子纠缠可能是真实存在
  12. 物联网工程专业考研方向
  13. 近世代数--陪集--|左陪集|=|右陪集|
  14. 前端javascript如何分享内容到twitter和Email
  15. 微信小程序——发送模板消息
  16. 微信授权文件放到域名根目录下
  17. 蚌埠学院教务系统自动导入课程表到小米/Redmi手机小爱同学课程表使用说明
  18. 安卓怎么转移到iphone_如何将联系人从iPhone转移到另一部电话
  19. Python—完美计算个税和税后收入(求职重要参考神器)
  20. 串口通信协议简介—学习笔记

热门文章

  1. 特征向量、标签、模型、算法
  2. DSP28335代码生成——如何使用两个中断
  3. mac安装mysql后找不到_Mac 安装MySQL数据库,系统提示mysql: command not found怎么办
  4. 一款好用的取色工具TakeColor.exe
  5. 使用 Jupyter Notebook
  6. Python处理Excel文件(一)
  7. BackgroundWorker线程控件用法
  8. FW:星巴客装B指南
  9. mysql:Java通过驱动包(jar包)连接MySQL数据库---步骤总结及验证
  10. 计算机怎么看网络密码,怎么查看电脑网络连接密码 - 卡饭网