基于Python和SQL SERVER数据库实现的实验信息综合管理系统
1 需求分析
1.1 需求来源
本系统是对于实验综合信息进行管理的系统。
1.1.1 功能需求
-
学生用户: 修改系统登陆密码、查询选择的课程、查询选择课程对应的实验课表、导出查询到的课程数据、实验课表数据
-
教师用户: 修改系统登陆密码、修改个人联系方式、查询教授的课程、查询实验安排、增加课程信息、增加实验信息、按学号查询出勤率、按班级查询出勤率、导出查询到的数据记录
-
管理员用户: 增加学生信息、修改学生信息、增加教师信息、修改教师信息、增加课程信息、修改课程信息,增加实验信息、修改实验信息,增加实验室信息、修改实验室信息,更新实验打卡信息
1.1.2 数据需求
系统涉及的数据表为8个表,管理员信息表(ADMINB)、教师表(JSB)、教师课程表(JSKCB)、课程表(KCB)、实验打卡表(SYDKB)、实验室表(SYSB)、实验信息表(SYXXB)、学生表(XSB)。
其中管理员信息表包含的基本属性为管理员用户名、登陆密码。教师表包含的几本书新为教师姓名、联系方式、登陆密码。教师课程表包含的基本属性为教师姓名、课程代码。课程表包含的基本属性为课程代码、课程名称、开课学院。实验打卡表包含的基本属性为实验编号、学生学号、打卡状态。实验室表包含的基本属性为实验中心、实验分室、上课地点。实验信息表包含的基本属性为实验编号、课程代码、实验项目、上课老师、辅助教师、上课日期、星期几、上课地点。学生表包含的基本属性为学号、姓名、班级、登陆密码。
1.1.3 性能需求
-
要求系统在本地访问时数据具有可靠性、运行速度快,简单快捷
-
要求系统能在多系统(Windows、Linux)、多终端(PC、手机)
1.2 设计目的
利用服务器和大容量存储等最新的硬件设备,以及数据库和网络技术所开发出的实验信息管理系统使用户能对大量的实验综合信息进行高效的管理。通过实验信息管理系统,信息录入、查询等原先繁复枯燥的工作的效率得到了显著的提升;更重要的是数据的准确性和安全性也同时得到了保证。
1.3 设计要求
不同类型的用户能够通过本系统使用不同的功能,对实验综合信息进行管理。
1.4 开发工具及相关技术
通过采用Microsoft SQL Server等大型关系型数据库,实验的各项数据的存储更为规范和完整。数据库技术也使得实验数据的备份和恢复变得简单便捷。而在硬件方面,采取RAID5等存储解决方案组成的磁盘阵列,以极低的存储成本极大的提高了数据的安全性。通过采用python平台开发,采用了基于B/S的三层开发结构(UI、BLL、DAL)。同时运用tkinter等GUI的最新技术,提供美观实用的系统界面和顺畅的用户体验。
2 总体设计
2.1 总体结构设计
为了满足实验综合信息管理系统各方面信息的管理功能,需要明确用户的各个功能。数据库中应该有教师、学生以及管理员的基本信息,这些来自于本系统。教师、学生只能在客户端进行操作。管理员可以使用管理端操作,修改、删除、增加教师、学生的信息。此类权限不对教师、学生用户开放。除此之外,还要通过登录名和密码严格限定登陆者的身份并且控制相应的操作权限,只有管理员有权限修改账户以及密码,防止其他密码泄露造成的其他问题。
2.1.1 模块设计
系统模块设计:
2.2.2 模块功能描述
“管理员用户”子系统针对管理员用户的日常工作流程,分为“学生管理”,“教师管理”,“课程管理”,“实验管理”,“实验室管理”等子模块。其模块具体功能描述如下:
-
“学生管理”模块: 该模块对学生信息进行维护,如对增加新入学学生的信息,为转专业学生更改班级信息,为改名学生更改姓名信息,删除退学、毕业学生信息,为忘记登陆密码的学生用户重新设置用户密码等
-
“教师管理”模块: 该模块对教师信息进行维护,如对增加新入职老师的信息,删除离职老师的信息,为忘记登陆密码的教师用户重新设置登陆密码等
-
“课程管理”模块: 该模块对课程信息进行维护,如对课程名称、开课学院等信息系的修改,增加新开设课程的信息
-
“实验管理”模块: 该模块对实验信息进行维护,如对实验下属各种信息的修改调整、增加新的实验信息、更新实验打卡信息等
-
“实验室管理”模块: 该模块对实验室信息进行维护,如对实验中心、实验分室、实验教师信息的修改、增加等
“教师用户”子系统针对教师用户的日常使用流程,分为“学生管理”模块,“课程管理”模块,“实验管理”模块、“个人管理”模块。其模块具体功能描述如下:
-
“学生管理”模块: 该模块对学生信息进行查询,如对班级整体实验打卡记录的查询,对指定具体学号的学生实验打卡记录的查询,对查询到的信息进行导出等
-
“课程管理”模块: 该模块对课程信息进行查询与维护,如将新教授的课程信息录入系统,查询正在教授的课程信息等
-
“实验管理”模块: 该模块对实验信息进行查询与维护,如查询已安排为授课教师的实验信息,添加新的实验信息等
-
“个人管理”模块: 该模块对教师个人信息进行维护,如修改自己的登陆密码、修改个人的联系方式等
“学生用户”子系统针对学生用户的日常使用流程,分为“个人管理”模块,“课程管理”模块,“实验管理”模块等。其模块具体功能描述如下:
-
“个人管理”模块: 该模块对学生用户个人信息进行维护,如修改自己的登陆密码等
-
“课程管理”模块: 该模块对课程信息进行查询,如查询自己选择的课程信息等
-
“实验管理”模块: 该模块对实验信息进行查询,如查询自己选择的课程所安排的实验信息等
2.2 数据库设计
2.2.1 概念结构设计
-
管理员信息表(ADMINB) 主要用于在系统中储存管理员信息,包含了管理员的登陆ID、密码,其中登陆ID是主键
-
教师表(JSB) 主要用于在系统中储存教师信息,包含了教师用户的姓名、密码、联系方式,其中姓名是主键。管理员用户可对该表进行维护
-
教师课程表(JSKCB) 主要用于在系统中储存教师授课信息,包含了教师姓名、课程代码。管理员用户、教师用户可对该表进行维护
-
课程表(KCB) 主要用于储存课程信息,包含了课程代码、开课学院、课程名称,其中课程代码是主键。管理员用户可对该表进行维护
-
实验打卡表(SYDKB) 主要用于储存学生打卡信息,包含了实验编号,学生学号、打卡状态。管理员用户可对该表进行维护,教师用户可对该表进行查询
-
实验室表(SYSB) 主要用于储存实验室信息,包含了实验中心、实验分室、实验教室,其中实验教室是主键。管理员用户可对该表进行维护
-
实验信息表(SYXXB) 主要用于储存实验信息,包含了实验编号、课程代码、实验项目、上课老师、辅助教师、上课日期、星期几、上课地点,其中实验编号是主键。管理员用户、教师用户可对该表进行维护
-
学生表(XSB) 主要用于储存学生信息,包含了学号、姓名、班级、登陆密码,其中学号是主键。管理员用户可对该表进行维护
系统E-R图
2.2.2 逻辑结构设计
根据E-R模型转换关系结构:
- 教师实体集(JSB)可以转换化为关系:
教师用户(姓名,联系方式,登陆密码)
- 管理员实体集(ADMINB)可以转化为关系:
管理员用户(登陆ID,密码)
- 课程实体集(KCB)可以转化为关系:
课程(课程代码,开课学院,课程名称)
- 实验室实体集(SYSB)可以转化为关系:
实验室(实验分室、实验中心、实验教室)
- 实验信息实体集(SYXXB)可以转化为关系:
实验信息(实验编号、课程代码、实验项目、上课老师、辅助教师、上课日期、星期几)
- 学生实体集(XSB)可以转换为关系:
学生(姓名、学号、班级)
- 教师与课程之间是n:m的联系,可以转化为一个关系:
教师课程(JSKCB)(教师姓名、课程编号)
- 学生与实验打卡信息之间是1:m的联系,可以对学生关系进行拓展,但由于打卡信息较多,进行扩展会导致数据库冗余信息较多,故单独转化为一个关系:
学生打卡(XSDKB)(学号、实验编号、打卡信息)
- 实验室与实验信息之间是n:m的联系,可以对实验信息进行拓展,不必单独转为一个关系:
实验信息(实验编号、课程代码、实验项目、上课老师、辅助教师、上课日期、星期几、实验教室)
2.2.3 物理结构设计
教师表(JSB)
字段名称 | 数据类型 | 字段长度 | 是否为空 | 备注 |
---|---|---|---|---|
姓名 | varchar | 20 | No | 主码 |
联系电话 | varchar | 20 | Yes | |
登陆密码 | varchar | 255 | Yes |
教师课程表(JSKCB)
字段名称 | 数据类型 | 字段长度 | 是否为空 | 备注 |
---|---|---|---|---|
课程代码 | varchar | 20 | No | |
上课教师 | varchar | 20 | No |
课程表(KCB)
字段名称 | 数据类型 | 字段长度 | 是否为空 | 备注 |
---|---|---|---|---|
课程代码 | varchar | 20 | No | 主码 |
开课学院 | varchar | 20 | No | |
课程名称 | varchar | 255 | No |
**实验打卡表(SYDKB)
字段名称 | 数据类型 | 字段长度 | 是否为空 | 备注 |
---|---|---|---|---|
实验编号 | varchar | 20 | No | |
学号 | varchar | 20 | No | |
实际上课时间 | varchar | 255 | No | |
状态 | varchar | 255 | No |
实验室表(SYDKB)
字段名称 | 数据类型 | 字段长度 | 是否为空 | 备注 |
---|---|---|---|---|
实验中心 | varchar | 255 | No | |
实验分室 | varchar | 255 | No | |
实验教室 | varchar | 255 | No | 主码 |
实验信息表(SYXXB)
字段名称 | 数据类型 | 字段长度 | 是否为空 | 备注 |
---|---|---|---|---|
实验编号 | varchar | 255 | No | 主码 |
课程代码 | varchar | 255 | No | |
实验项目 | varchar | 255 | No | |
上课老师 | varchar | 255 | No | |
辅助教师 | varchar | 255 | Yes | |
上课日期 | varchar | 255 | No | |
星期几 | varchar | 255 | No | |
实验教室 | varchar | 255 | No |
学生表(XSB)
字段名称 | 数据类型 | 字段长度 | 是否为空 | 备注 |
---|---|---|---|---|
姓名 | varchar | 20 | No | |
学号 | char | 11 | No | 主码 |
班级 | varchar | 255 | No | |
登陆密码 | varchar | 255 | Yes |
管理员表(XSB)
字段名称 | 数据类型 | 字段长度 | 是否为空 | 备注 |
---|---|---|---|---|
登陆ID | varchar | 20 | No | 主码 |
登陆密码 | varchar | 255 | No |
3 详细设计
3.1 数据库的创建
python
create database SYDK
3.2 表的创建
```python import pyodbc cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=127.0.0.1;DATABASE=SYDK;UID=sa;PWD=test') cursor = cnxn.cursor() cursor.execute(""" Create Table XSB ( 班级 varchar(20), 学号 char(11), 姓名 varchar(20), 登陆密码 varchar(255) ) """)#学生表
cursor.execute(""" Create Table KCB ( 课程代码 varchar(20), 课程名称 varchar(255), 开课学院 varchar(20) ) """)#课程表
cursor.execute(""" Create Table JSB ( 姓名 varchar(20), 联系电话 varchar(20), 登陆密码 varchar(255) ) """)#教师表
cursor.execute(""" Create Table SYXXB ( 实验编号 varchar(20), 课程代码 varchar(20), 实验项目 varchar(20), 上课老师 varchar(20), 辅助教师 varchar(20), 上课日期 varchar(255), 星期几 varchar(20), 实验中心 varchar(255), 实验分室 varchar(255), 上课地点 varchar(255) ) """)#实验信息表
cursor.execute(""" Create Table SYDKB ( 实验编号 varchar(20), 学号 varchar(20), 实际上课时间 varchar(255), 状态 varchar(255) ) """)#实验打卡表
cursor.execute(""" Create Table SYSB ( 实验中心 varchar(255), 实验分室 varchar(255), 上课地点 varchar(255) ) """)#实验室表
cursor.execute(""" Create Table JSKCB ( 课程代码 varchar(20), 上课老师 varchar(20) ) """)#教师课程表
cursor.execute(""" Create Table ADMINB ( id varchar(20), password varchar(20) ) """)#管理员表
cursor.commit() cursor.close() ```
3.3 数据设定
本系统对接南京信息工程大学实践教学综合管理平台,通过访问平台接口,以正则表达式的方法,获取得到教师信息、学生信息、实验信息,从其内含的依赖关系衍生出实验打卡表,实验室表,课程表,教室课程表。同时,管理员用户通过本系统,也可调用该程式对数据库中信息进行维护工作。核心代码如下:
python
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=127.0.0.1;DATABASE=SYDK;UID=sa;PWD=test')
cursor = cnxn.cursor()
cursor.execute("SELECT * FROM SYXXB WHERE 实验编号="+str(i))
row = cursor.fetchall()
print(i)
if (len(row)!=0):
cursor.close()
continue
url="http://sjjx.nuist.edu.cn/syjx/admin/experiment/looksyzx.aspx?type=kb&id="+str(i)
try:
req=urllib.request.Request(url)
resp=urllib.request.urlopen(req)
except:
print("oppops")
continue
data=resp.read().decode('GBK')
w1='<td width=\'610\' height=\'25\' style=\'padding-left:5px;\'>'
w2='</td></tr>'
pat=re.compile(w1+'(.*?)'+w2,re.S)
sybz=pat.findall(data)
if(len(sybz)==0):
continue
del(sybz[9])
w1='<td height=\'25\' style=\'padding-left:5px; width: 82px;\'>'
w2='</td>'
pat2=re.compile(w1+'(.*?)'+w2,re.S)
syb=pat2.findall(data)
del(syb[9])
for j in range(0,len(syb)):
print (syb[j]+':'+sybz[j])
if(sybz[4].find("(")!=-1):
tmp=sybz[4]
tmp=tmp[0:tmp.find("(")]
sybz[4]=tmp
print(sybz[4])
print(sybz[5])
w1='<td align=\'center\'>'
w2='</td>'
pat3=re.compile(w1+'(.*?)'+w2,re.S)
xsbz=pat3.findall(data)
cursor.execute("SELECT * FROM JSB WHERE 姓名=\'"+sybz[4]+"\'")
row = cursor.fetchall()
if (len(row)==0):
cursor.execute("insert into JSB values ("+"\'"+sybz[4]+"\'"+",\'"+sybz[5]+"\'"+",\'\')")
cursor.execute("SELECT * FROM KCB WHERE 课程代码="+sybz[0])
cursor.commit();
cursor.close();
3.4 模块设定
3.4.1 登陆模块
本模块供不同类型的用户登陆使用,通过单选框的选择,可以选择登陆的用户类型,输入账号密码后,登陆本系统。系统访问数据库判断密码情况,若密码错误则无法成功登陆,访问请求被系统拒绝,若密码正确则进入对应的综合管理模块。
其核心代码如下:
python
from tkinter import *
from CoCenter import *
import tkinter.messagebox
class LoginFrame (Frame):
def __init__(self,master):
def ButtonClick(self):
s1 = self.ent1.get()
s2 = self.ent2.get()
if(self.v.get() == 0):
self.login(s1,s2,"XSB","学号")
elif(self.v.get() == 1):
self.login(s1,s2,"JSB","姓名")
elif(self.v.get() == 2):
self.login(s1,s2,"admin")
else:
showinfo(title = '错误', message = '未选择登陆方式!')
def login(self,name,pwd,tbname="XSB",ab="学号"):
if(tbname=="admin"):
import pyodbc
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=127.0.0.1;DATABASE=SYDK;UID=sa;PWD=test')
cursor = cnxn.cursor()
cursor.execute("SELECT password FROM ADMINB WHERE id =\'" +name+"\'")
row = cursor.fetchall()
cursor.close()
if(len(row)==0):
tkinter.messagebox.showinfo(title = '错误', message = '用户名不存在')
else:
if(getVal(str(row[0]))==pwd):
tkinter.messagebox.showinfo(title = '成功', message = '登陆成功')
3.4.2 综合管理模块
学生用户管理模块
学生用户登陆成功后,则可以进入学生用户管理模块,通过点击学生用户管理模块上的按钮,可以调用相应的信息维护模块。
其核心代码如下:
python
self.button=tk.Button(frame,text = "更改登陆密码",pady=10,command = self.XSinfoUpdate)
self.button.grid(row = 0,column = 0,padx=10)
self.button1=tk.Button(frame,text = "查询个人选课",pady=10,command = self.XSCrouseQry)
self.button1.grid(row = 0,column = 1,padx=10,pady=15)
self.button2=tk.Button(frame,text = "查询实验课表",pady=10,command = self.XSCrouseQry2)
self.button2.grid(row = 0,column = 2,padx=10)
self.geometry('310x80')
教师用户管理模块
教师用户登陆成功后,则可以进入教师用户管理模块,通过点击教师用户管理模块上的按钮,可以调用相应的信息维护模块。
其核心代码如下:
python
self.button=tk.Button(frame, text = "更改个人信息",pady=10,command = self.JSinfoUpdate)
self.button.grid(row = 0,column = 0,padx=10,pady=10)
self.button1=tk.Button(frame,text = "更改登陆密码",pady=10,command = self.JSPwdUpdate)
self.button1.grid(row = 0,column = 1)
self.button2=tk.Button(frame,text = "查询所教课程",pady=10,command = self.JSCrouseQry)
self.button2.grid(row = 1,column = 0,padx=10,pady=10)
self.button3=tk.Button(frame,text = "查询实验信息",pady=10,command = self.JSExpQry)
self.button3.grid(row = 1,column = 1)
管理员用户管理模块
管理员用户登陆成功后,则可以进入管理员用户管理模块,通过点击管理员用户管理模块上的按钮,可以调用相应的信息维护模块。
其核心代码如下:
python
self.button=tk.Button(frame,text = "添加学生信息",pady=10,command = self.AdStuAdd)
self.button.grid(row = 0,column = 0,padx=10,pady=10)
self.button1=tk.Button(frame,text = "修改学生信息",pady=10,command = self.AdStuUpdate)
self.button1.grid(row = 0,column = 1,padx=10,pady=10)
self.button2=tk.Button(frame,text = "添加教师信息",pady=10,command = self.AdJSAdd)
self.button2.grid(row = 1,column = 0,padx=10,pady=10)
self.button3=tk.Button(frame,text = "修改教师信息",pady=10,command = self.AdJSUpdate)
self.button3.grid(row = 1,column = 1,padx=10,pady=10)
self.button4=tk.Button(frame,text = "添加课程信息",pady=10,command = self.AdKCAdd)
self.button4.grid(row = 2,column = 0,padx=10,pady=10)
self.button5=tk.Button(frame,text = "修改课程信息",pady=10,command = self.AdKCUpdate)
self.button5.grid(row = 2,column = 1,padx=10,pady=10)
self.button6=tk.Button(frame,text = "添加实验信息",pady=10,command = self.AdExpAdd)
self.button6.grid(row = 3,column = 0,padx=10,pady=10)
self.button6=tk.Button(frame,text = "修改实验信息",pady=10,command = self.AdExpUpdate)
self.button6.grid(row = 3,column = 1,padx=10,pady=10)
self.button6=tk.Button(frame,text = "添加实验室信息",pady=10,command = self.AdExpPlaceAdd)
self.button6.grid(row = 4,column = 0,padx=10,pady=10)
3.4.3 信息维护模块
用户信息维护模块
根据不同用户,调用不同的信息维护模块,具体描述如下:
学生用户调用本模块对登陆密码进行维护
其核心代码如下:
python
Sql("EXEC XS_INFO_UPDATE \'"+self.name+"\',\'"+str(self.newp.get())+"\'",2)
tk.messagebox.showinfo('提示','修改成功')
教师用户调用本模块对登陆密码、联系方式进行维护。
其核心代码如下:
python
Sql("EXEC JS_PWD_UPDATE \'"+self.name+"\',\'"+str(self.newp.get())+"\'",2)
tk.messagebox.showinfo('提示','修改成功')
管理员用户调用本模块对学生的所有属性、教师用户的所有属性进行维护。
其核心代码如下:
python
if(self.element=="STUDENT"):
if(self.flag=="ADD"):
Sql("INSERT INTO XSB VALUES (\'"+str(self.clsname.get())+"\',\'"+str(self.id.get())+"\',\'"+str(self.name.get())+"\',\'"+str(self.pwd.get())+"\')",2)
else:
Sql("UPDATE XSB SET 班级=\'"+str(self.clsname.get())+"\',姓名=\'"+str(self.name.get())+ "\',登陆密码=\'"+str(self.pwd.get())+"\' \n WHERE 学号=\'"+str(self.id.get())+"\'",2)
if(self.element=="TEACHER"):
if(self.flag=="ADD"):
Sql("INSERT INTO JSB VALUES (\'"+str(self.id.get())+"\',\'"+str(self.tel.get())+"\',\'"+str(self.pwd.get())+"\')",2)
else:
Sql("UPDATE JSB SET 联系电话=\'"+str(self.tel.get())+ "\',登陆密码=\'"+str(self.pwd.get())+"\' \n WHERE 姓名=\'"+str(self.id.get())+"\'",2)
课程信息维护模块
不同用户对于课程信息维护模块具有不同的权限,具体如下:
学生用户具有对课程信息的查询权限,对于查询到的课程信息,学生用户可以选择是否导出为excel表格形式:
其核心代码如下:
python
row=Sql("EXEC XS_Course_Qry1 \'"+ self.stuid+"\'",1)
table=PrettyTable(["课程代码","课程名称","开课学院"])
row1=getVal(row)
for i in range(0,int(len(row1)/3)):
table.add_row([row1[i*3],row1[i*3+1],row1[i*3+2]])
tk.messagebox.showinfo(title = '课程', message = table)
a=tk.messagebox.askokcancel('提示', '是否导出选课表')
教师用户具有对课程信息的查询、创建权限,对于查询到的课程信息,教师用户可以选择是否导出为excel表格形式:
核心代码如下:
python
row=Sql("EXEC JS_Course_Qry \'"+ self.stuid+"\'",1)
table=PrettyTable(["课程代码","课程名称","开课学院"])
row1=getVal(row)
for i in range(0,int(len(row1)/3)):
table.add_row([row1[i*3],row1[i*3+1],row1[i*3+2]])
tk.messagebox.showinfo(title = '课程', message = table)
管理用户具有对课程信息的所有权限:
其核心代码如下:
python
if(self.element=="CROUSE"):
if(self.flag=="ADD"):
Sql("INSERT INTO KCB VALUES (\'"+str(self.id.get())+"\',\'"+str(self.name.get())+"\',\'"+str(self.inst.get())+"\')",2)
elif(self.flag=="UPDATE"):
Sql("UPDATE KCB SET 开课学院=\'"+str(self.inst.get())+ "\',课程名称=\'"+str(self.name.get())+"\' \n WHERE 课程代码=\'"+str(self.id.get())+"\'",2)
else:
Sql("INSERT INTO KCB VALUES (\'"+str(self.id.get())+"\',\'"+str(self.name.get())+"\',\'"+str(self.inst.get())+"\')",2)
tmp=str(self.flag).split("2")
Sql("INSERT INTO JSKCB VALUES (\'"+str(self.id.get())+"\',\'"+str(tmp[1])+"\')",2)
实验信息维护模块
根据不同用户,调用不同的信息维护模块,具体描述如下:
学生用户对于实验信息具有查询权限,对于查询到的实验信息,可以选择是否导出为EXCEL表格
其核心代码如下:
python
row =Sql("EXEC XS_Course_Qry2 \'"+ self.stuid+"\'",1)
table=PrettyTable(["实验编号","课程代码","实验项目",
"上课老师","辅助教师","上课日期","星期几",
"实验中心","实验分室","上课地点"])
row1=getVal(row)
for i in range(0,int(len(row1)/10)):
table.add_row([row1[i*10],row1[i*10+1],row1[i*10+2],
row1[i*10+3],row1[i*10+4],row1[i*10+5],
row1[i*10+6],row1[i*10+7],row1[i*10+8],row1[i*10+9]])
tk.messagebox.showinfo(title = '课表', message = table)
a=tk.messagebox.askokcancel('提示', '是否导出课表')
教师用户对于实验信息具有查询、修改权限,对于查询到的实验信息,可以导出为EXCEL表格
其核心代码如下:
python
if(self.element=="EXP"):
if(self.flag=="ADD"):
Sql("INSERT INTO SYXXB VALUES (\'"+str(self.id.get())+"\',\'"+str(self.kcdm.get())+"\',\'"+str(self.syxm.get())+"\',\'"+str(self.skls.get())+"\',\'" +str(self.fzjs.get())+"\',\'"+str(self.skrq.get())+"\',\'"+str(self.xqj.get())+"\',\'"+str(self.syzx.get())+"\',\'"+str(self.syfs.get())+"\',\'"+str(self.skdd.get())+"\')",2)
tk.messagebox.showinfo('提示','更新成功!')
同时,教师用户对于实验打卡信息具有查询权限,可以通过学生学号查询打卡信息,也可以通过所教班级查询打卡信息,并将打卡信息导出到EXCEL表格。
其核心代码如下:
python
for i in range(0,len(row1)):
if(len(row1[i])==11):
row=Sql("EXEC JS_STU_QRY5 \'"+self.name+"\',\'"+row1[i]+"\'",1)
if(len(row)==0):
continue
else:
row=Sql("""
declare @f1 float
declare @f2 float
EXEC JS_STU_Qry2 \'"""+str(row1[i])+"\',\'"+self.name+"""\',@f1 output,@f2 output
SELECT @f1,@f2""",1)
row2=getVal(row)
table.add_row([str(row1[i]),str(row2[0]),str(row2[1])])
tk.messagebox.showinfo(title = '查询结果', message =table)
管理员用户对于实验信息具有全部权限
核心代码如下:
python
Sql("UPDATE SYXXB SET 课程代码=\'"+str(self.kcdm.get())+"\',实验项目=\'"
+str(self.syxm.get())+"\',上课老师=\'"
+str(self.skls.get())+"\',辅助教师=\'"
+str(self.fzjs.get())+"\',上课日期=\'"
+str(self.skrq.get())+"\',星期几=\'"
+str(self.xqj.get())+"\',实验中心=\'"
+str(self.syzx.get())+"\',实验分室=\'"
+str(self.syfs.get())+"\',上课地点=\'"
+str(self.skdd.get())
+"\' \n WHERE 实验编号=\'"+str(self.id.get())+"\'",2)
实验室信息维护模块
管理员用户对实验室信息具有全部权限
其核心代码如下:
python
if(self.element=="EXPPLACE"):
if(self.flag=="ADD"):
Sql("INSERT INTO SYSB VALUES (\'"+str(self.syzx.get())+"\',\'"+str(self.syfs.get())+"\',\'"+str(self.skdd.get())+"\')",2)
else:
Sql("UPDATE SYSB SET 实验中心=\'"+str(self.syzx.get())+ "\',实验分室=\'"+str(self.syfs.get())+"\' \n WHERE 上课地点=\'"+str(self.skdd.get())+"\'",2)
4 总结
整个系统的设计过程对于我来说算是个学习、探索的过程,通过实践和对比别人开发程序的过程。在整个设计过程中,出现过很多的问题,很多繁琐的东西都需要反复的修改,主要是前期工作不彻底,对系统的需求分析的要求认识不够清楚,使得在后边的工作中不得不经常反复去修改。使我体会到设置中每一步的重要性。所以在分析一个问题时,我们需要站在一个有远见的高度。
虽然时间紧迫但我学会了很多,也感到自身知识的贫乏,希望在日后的努力中能做出更完善的系统。
参考文献
- 基于SSH框架的实验室信息管理系统的设计与实现(西安电子科技大学·侯庭栋)
- 基于Struct模式的实验室管理系统的设计与实现(大连理工大学·施瑛)
- 实验课教学信息管理系统的设计与实现(吉林大学·胡洋)
- 高校实验室教学管理系统的分析与设计(云南大学·谢金涛)
- 虚实结合网络实验室管理系统的研究与实现(浙江大学·翁超平)
- 实验课教学信息管理系统的设计与实现(吉林大学·胡洋)
- 高校实验室综合信息管理系统研究与开发(大连海事大学·安生立)
- 工程实验中心管理系统的研究与实现(河海大学·褚南峰)
- 基于Struct模式的实验室管理系统的设计与实现(大连理工大学·施瑛)
- 泰州学院实验室管理系统的设计与实现(电子科技大学·韩鑫)
- 泰州学院实验室管理系统的设计与实现(电子科技大学·韩鑫)
- 基于.NET技术的实验教学管理系统设计与实现(吉林大学·刘静)
- 高校实验室综合信息管理系统研究与开发(大连海事大学·安生立)
- 实验室管理信息系统的设计与实现(电子科技大学·钟仙)
- 基于.NET技术的实验教学管理系统设计与实现(吉林大学·刘静)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码港湾 ,原文地址:https://bishedaima.com/yuanma/35294.html