图书馆座位预定系统开发

article/2025/9/30 13:27:28

图书馆座位预定系统开发

功能:

登陆---〉预定--〉退出

 

#create_sql.py:创建用户数据库

import sqlite3
#建一个数据库
def create_sql():sql = sqlite3.connect("user_data.db")sql.execute("""create table if not exists%s(%s integer primary key autoincrement,%s varchar(128),%s varchar(128),%s varchar(128),%s char(128))"""% ('user','id','name','passworld','number','status'))sql.close()
create_sql()#user_data.db为数据库文件名
#create table if not exists为建立一个数据库指令,如果文件存在就打开,不存在就创建一个
#%s对应后面的四个参数
# 'user':表名
# 'id':相当于一个索引,autoincrement指定为自动增量
# 'name':用户名
# 'passworld':用户密码
# 'number':座位号
# 'status:状态
# sql.close():是关闭数据库,每次对数据库进行操作后,都要记得进行关闭操作#数据库的格式
# file:user_data.db
#     table:user
#         id      name    passworld    number    status

 

 

#create_library:创建图书馆座位数据库

import sqlite3
#建一个数据库
def create_sql():sql = sqlite3.connect("library_data.db")sql.execute("""create table if not exists%s(%s integer primary key autoincrement,%s varchar(128),%s varchar(128),%s char(128),%s Smalldatetime(128),%s Smalldatetime(128))"""% ('library','id', #主键'name',#姓名'number',#座位编号'status',#使用状态'sdate',#开始时间'ddate'#到期时间))sql.close()
create_sql()#2019-01-19 8:00:00

 

 

 

 

#data_operations.py:服务端数据库管理

import sqlite3,time


# 数据库增加数据
def add_data():
input_name = input("请输入您的用户名:")
input_passworld = input("请输入您的密码:")
number=input('请输入学号')
status=None
sql = sqlite3.connect("user_data.db")
sql.execute("insert into user(name,passworld,number,status) values(?,?,?,?)",
(input_name,input_passworld,number,status))
sql.commit()
print("添加成功")
sql.close()


# 这里增加了读取四个个参数values(?,?,?,?)字段里的四个?号,对应了参数input_name,input_passworld,number,status

def showalldata():
sql = sqlite3.connect("user_data.db")
data = sql.execute("select * from user").fetchall()
sql.close()
return data
# "select * from user"为查询user对应的表的所有资料的指令


def drop():
print('指定id删除')
sql = sqlite3.connect("user_data.db")
data = sql.execute("select * from user").fetchall()
print('所有数据:'+str(data))
while 1:
id=input('请输入你要删除的数据的id:')
sql.execute("DELETE FROM user WHERE id = %s" % id)
sql.commit()
print('删除完成')
sql.close()
break


def add_library():
number = input("请输入座位号:")
name=input('请输入姓名')
status = None
s_date=input("请输入开始时间:")
# time.strftime("%Y-%m-%d %X",time.localtime())
d_date=input('请输入到期时间:')
sql = sqlite3.connect("library_data.db")
sql.execute("insert into library(name,number,status,sdate,ddate) values(?,?,?,?,?)",
(name,number,status,s_date,d_date))
sql.commit()
print("添加成功")
sql.close()

def visit_data():
sql = sqlite3.connect("library_data.db")
data = sql.execute("select * from library").fetchall()
sql.close()
return data

def drop_library():
print('指定id删除')
library = sqlite3.connect("library_data.db")
data = library.execute("select * from library").fetchall()
print('所有数据:' + str(data))
while 1:
id = input('请输入你要删除的数据的id:')
library.execute("DELETE FROM library WHERE id = %s" % id)
library.commit()
print('删除完成')
library.close()
break


print("""
1:增加用户数据
2:查询用户表
3.删除用户数据
4:增加图书馆座位
5.查询图书馆座位表
6.删除图书馆座位数据
q:退出
""")
while 1:
option =None
cho =input('选择您想要的进行的操作:')
if cho == '1':
add_data()
elif cho == '2':
data=showalldata()
print(data)
elif cho == '3':
drop()
elif cho == 'q':
break
elif cho =='4':
add_library()

elif cho =='5':
data2=visit_data()
print(data2)
elif cho == '6':
drop_library()
else:
print("输入错误")

  

 

 

 

 

#login.py:用户登陆与预定座位

import sqlite3, getpass,time
#保证每一个用户名和学号不同
#输入用户名正确后,输入密码。用户名正确的情况下,密码连续输错三次,用户将被锁定,禁止登录系统
#输入用户名后,如果用户名被锁定及无效用户名,程序会退出,请确保输入正确。def showdate(username):sql = sqlite3.connect('user_data.db')data = sql.execute("select * from user where name='%s'" % username).fetchone()sql.close()return data
# ("select * from user where username='%s'"% name)这条指令用来查询表user的name字段的对应的数据
# 最后返回用户名对应的资料def val():while 1:name = input("用户名:")  # 输入用户名data = showdate(name)  # 获取用户名对应的数据库资料if data:# passworld = getpass.getpass("密码")  # 输入密码passworld=input('密码:')if data[2] == passworld:print("登录成功")return nameelse:print("密码错误")else:print("用户名不存在")# getpass模块可以使输入的字符不可见,在python的shell中可能无效,在终端中和用户登录效果相同,不出现输入字符#预定座位
#首先查询用户有没有已经在使用的座位,如果在使用,不能继续预定,只能等时间过了之后才能预定
def schedule(name):pass# user=sqlite3.connect('user_data.db')library=sqlite3.connect('library_data.db')data = library.execute("select * from library where name='%s'" % name).fetchone()if data:print('已经在使用,请过了时间再预定')#获得当前时间date1=time.time()#获得数据库里的到期时间date2=library.execute("select * from library where name='%s'" % name).fetchone()[5]print(date2)#将时间转为时间戳date2=time.strptime(date2,"%Y-%m-%d %X")date2=time.mktime(date2)print('还剩'+str(date1-date2)+'时间可以预约下次')else:# sum=library.execute("select * from library").fetchall()count=library.execute("select * from library where name=''").fetchall()print('现在共有空位:'+str(len(count)))#存储所以没有被预约的座位,供用户选择count_list=[]for i in count:#从数据库中读取count_list.append(i[2])print('你可以选择如下座位进行预定:'+str(count_list))print('''预定座位:预约的时间(最低2个小时,最多12个小时)预约的座位''')#座位cards=input('输入你想要预约的座位')# 预约的时间time_date =input('输入你要预约的时间')time_date=int(time_date)*3600#当前时间date3=time.time()#到期时间=当前时间+预约时间date4=date3+time_dateprint(date4)#将数据存储到数据库library.execute("DELETE FROM library WHERE number = '%s'" % cards)library.execute("insert into library(name,number,status,sdate,ddate) values(?,?,?,?,?)",(name, cards, None,date3, date4))library.commit()library.close()print('''
按1进入登陆预定环节
按q退出程序
''')
while 1:option = Nonecho = input('选择您想要的进行的操作:')if cho=='1':name=val()schedule(name)elif cho =='q':breakelse:print("输入错误")

 

 

 

 

 

实际演示

我已经事先准备好两个用户:

用户:liyi  密码:123098     已经在使用座位

用户:hanming  密码:123456 还未预约使用座位

首先运行数据库管理程序:

 

 

 然后运行登陆程序

测试用户liyi

测试结果显示:

用户

liyi已经在预约使用,所以不能再次预约使用其他座位

 

 

 

测试用户hanming

因为hanming没有在使用座位,可以预约座位,成功预约座位

 

我们到数据库中查看,发现已经成功修改信息

这里只是时间的各种转换格式,忘记转换过来就存储进去了

 

 

 

 

最后:

代码没有进一步的优化,很多地方,比如对用户输入的内容过滤消毒、判断等

使用过多的数据库连接语句,影响程序运行效率

最重要的问题是还没有解决服务端程序运行后自动检测用户使用到期后的操作

 

转载于:https://www.cnblogs.com/-wenli/p/10293613.html


http://chatgpt.dhexx.cn/article/Dj9M5AIr.shtml

相关文章

图书馆座位预约系统,图书馆座位管理系统,图书馆座位预约毕业设计

项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于web网页的教室图书馆座位预约系统,整个网站项目使用了B/S架构,基于python的Django框架下开发;管理员通过后台录入信息、管理信息,设置网站信息&#xff0c…

技术分享——SSM图书馆预约占座系统

介绍 最近闲来无事,帮学校开发了一套系统,就是咱们特别普通的这种图书馆预约占座系统,我用的最基本的技术ssm框架,啊freestyle啊今天下午播放中国新说唱啊,666啊双击老铁! Demo样例图 核心代码实现&#…

图书馆占座系统(七)

第一次更新(2018.8.19 19:50) 嗯,好久没更新了,是因为做项目做兴奋了,图书馆占座系统已经开发完了,另外我又开发了其他两个系统,这个另说。 上一章讲到cookie,登录过去…

图书馆占座系统-产品需求规格说明书

图书馆占座系统-产品需求规格说明书 一. 文档介绍1. 文档目的2. 文档范围3. 读者对象4. 参考文档5. 术语与缩写解释 二. 产品介绍1. 产品背景2. 产品功能三. 产品面向的用户群体四. 产品应当遵循的标准或规范五. 产品范围六. 产品中的角色七. 产品的功能性需求1. 数据流图2. 用…

图书馆占座系统(SSM,JQUERY-EASYUI,MYSQL)

图书馆预约占座管理系统(SSM,JQUERY-EASYUI,MYSQL)(毕业论文14000字,共47页,程序代码,MySQL数据库) 【项目演示视频】 【运行环境】 Eclipse, IDEA JDK1.7(JDK1.8) Tomcat7(Tomcat8) 【技术栈】 JAVA, JSP, SSM, JQUERY, JQUERY EASYUI, MYSQL, HTML, CSS, JAVASCR…

ubuntu查看OpenGL版本

glxinfo | grep "OpenGL version" 或者 glxinfo | grep OpenGL 版本为3.3

Linux - 如何查看Ubuntu系统的版本信息

1、打开终端:可以用快捷键CtrlAltt,也可以点击左侧的终端图标: 2、命令:cat /proc/version 作用: 查看目录"/proc"下version的信息,也可以得到当前系统的内核版本号及系统名称 。 补充说明: &a…

查看ubuntu系统的版本信息

目录 1)查看linux内核、gcc版本、ubuntu版本 2)显示linux的内核版本和系统是多少位 1)查看linux内核、gcc版本、ubuntu版本 显示如下 Linux version 4.15.0-29-generic (builddlcy01-amd64-024) linux内核版本号 gcc version 5.4…

ubuntu 查看mysql版本

简言 办法1:运行命令:mysql -V 效果如下图 办法:2:连接进mysql,运行命令:select version(); 办法3:连接进mysql,运行命令:show variables like ‘%version%’; 效果如下图 办法4…

Ubuntu-查看ubuntu系统的版本信息

安装软件或者搭建服务的时候,需要了解当前系统的版本信息,在这里分享怎么查看当前ubuntu系统的版本信息。 注:我这里使用的是带图形界面的Ubuntu 工具/原料 Ubuntu系统的电脑一台或Ubuntu虚拟机 Linux系统的电脑一台或Linux虚拟机 方法/…

Ubuntu查看cuDNN版本

1、先成功下载cuDNN(如果这个有问题的,请参考我的另一个博客,地址:tensorflow2.0及以上版本用GPU加速计算_English ONly的博客-CSDN博客) 2、将下载成功的cudnn后得到的cuda里面的信息放到不同的 /usr/local/cuda目录里。(其中红色为下载cuD…

Linux如何查看当前Ubuntu系统的版本

1 使用命令:lsb_release -a 查看 2 使用命令:cat /proc/version 查看 Linux version 3.16.0-30-generic (builddkissel) linux内核版本号 gcc version 4.8.2 gcc编译器版本号 Ubuntu 4.8.2-19ubuntu1 Ubuntu版本号 3 使用命令:uname -a 查…

linux查看ubuntu版本命令,检查Ubuntu版本号的三种方法:从终端和设置中检查及使用Neofetch...

如果你运行Ubuntu系统,但你不确定你使用的是哪个Ubuntu版本(Ubuntu Version),有三种方法可以快速找到答案:从终端和设置中检查Ubuntu版本及使用Neofetch。在本文中,你将学习可用于立即检查Ubuntu版本号的命令行和GUI方法&#xff…

查看ubuntu版本号命令

查看ubuntu版本号命令 1、uname -a 查看内核版本号 2、cat /etc/issue 查看ubuntu版本号 3、sudo lsb_release -a 查看ubuntu版本号 posted on 2018-10-26 16:50 skyfall007 阅读(...) 评论(...) 编辑 收藏

ubuntu查看eigen版本

ubuntu查看eigen版本 1.方法一 CtrlAltT 打开Macros.h文件 gedit /usr/include/eigen3/Eigen/src/Core/util/Macros.h如上图中的eigen版本为3.3.7 2.方法二 pkg-config --modversion eigen3

Ubuntu查看ros的版本号

Ubuntu查看ros的版本号 打开第一个终端输入roscore 打开第二个终端输入rosparam get /rosdistro

Linux 下查看Ubuntu系统版本信息

文章目录 1. cat /proc/version2. uname -a3. uname -m4. lsb_release -a5 其他 1. cat /proc/version 作用: 查看目录"/proc"下version的信息,也可以得到当前系统的内核版本号及系统名称 。 补充说明: /proc文件系统…

ubuntu版本查看命令

简单的 在命令终端输入 1.cat /etc/issue (简单) 2.cat /etc/lsb-release(具体) 3.uname -a(内核) 具体的 有时候我们安装软件或者搭建服务的时候,需要了解当前系统的版本信息,下…

ubuntu查看系统版本

一、Ubuntu 版本号 Ubuntu 基础版本号由日期组成。比如 Ubuntu 21.10 表示 2021年10月份发布的版本。Ubuntu 一年会发布两个正式版本,分别在4月份和10月份。 也因为 Ubuntu 每半年就有一次大版本升级,因此对于特别在意稳定性的用户可以选择 LTS(Long T…