#!/usr/bin/env python
# coding: utf-8
# In[29]:
import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy import Column
from sqlalchemy.types import CHAR, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from random import randint
from sqlalchemy import ForeignKey,select
from sqlalchemy import Table, MetaData
from sqlalchemy.orm import sessionmaker
from sqlalchemy import and_,or_
import numpy as np
HOSTNAME = "127.0.0.1"
PORT = "3306"
DATABASE = "ticketsystem"
USERNAME = "root"
PASSWORD = "110303"
DB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8". format(username=USERNAME,password=PASSWORD,host=HOSTNAME,port=PORT,db=DATABASE)
engine = create_engine(DB_URI)
conn = engine.connect()
result = conn.execute("select 1")
print(result.fetchone())
# In[30]:
import tkinter as tk
import tkinter.messagebox
import pickle
n=np.random.randint(0,1000)
window = tk.Tk()
window.title("欢迎使用铁路客票系统!")
window.geometry('500x600')
canvas = tk.Canvas(window, width=400, height=135, bg='pink')
canvas.pack(side='top')
tk.Label(window, text='铁路客票服务系统欢迎您',font=('Arial', 16)).pack()
tk.Label(window, text='用户名:', font=('Arial', 14)).place(x=10, y=170)
tk.Label(window, text='密码:', font=('Arial', 14)).place(x=10, y=210)
#用户名
var_usr_name = tk.StringVar()
var_usr_name.set('在此键入您的用户名')
entry_usr_name = tk.Entry(window, textvariable=var_usr_name, font=('Arial', 14))
entry_usr_name.place(x=120,y=175)
# 用户密码
var_usr_pwd = tk.IntVar()
entry_usr_pwd = tk.Entry(window, textvariable=var_usr_pwd, font=('Arial', 14), show='*')
entry_usr_pwd.place(x=120,y=215)
purchased_ticket_id=0
usr_name="test"
lookup_ticket_id=0
# 定义用户登录功能
def usr_login():
# 获取用户输入的usr_name和usr_pwd
global usr_name
usr_name = var_usr_name.get()
usr_pwd = var_usr_pwd.get()
Base=declarative_base()
md = MetaData(bind=engine) #引用MetaData
class user_info(Base):
__table__ = Table("user_info", md, autoload=True)
Session=sessionmaker(bind=engine)
session=Session()
record = session.query(user_info).filter(user_info.usr_name == usr_name).first()
if (record.usr_pwd == usr_pwd):
print("匹配成功")
tkinter.messagebox.showinfo(title='Welcome', message='欢迎使用铁路客票服务系统! ' + usr_name)
Buy_Ticket()
else:
tk.messagebox.showerror(message='密码输入错误,请重试')
def usr_sign_up():
def sign_to_system():
# 以下三行就是获取我们注册时所输入的信息
np = new_pwd.get()
npf = new_pwd_confirm.get()
nn = new_name.get()
nphone = new_phone.get()
md = MetaData(bind=engine)
user_info = Table('user_info', md, autoload=True)
# 判断,如果两次密码输入不一致,则提示Error, Password and confirm password must be the same!
if np != npf:
tkinter.messagebox.showerror('错误', '两次密码输入请保持一致!')
ins_usr= user_info.insert()
ins_usr.execute(
usr_id=n,
usr_name=nn,
usr_pwd=np,
usr_phone=nphone
)
tkinter.messagebox.showinfo('Welcome', '恭喜!您已成功注册!')
window_sign_up.destroy()
window_sign_up = tk.Toplevel(window)
window_sign_up.geometry('300x200')
window_sign_up.title('Sign up window')
new_name = tk.StringVar() # 将输入的注册名赋值给变量
#new_name.set('example@tlxxxt.com')
tk.Label(window_sign_up, text='请输入用户名: ').place(x=10, y=10) # 将`User name:`放置在坐标(10,10)。
entry_new_name = tk.Entry(window_sign_up, textvariable=new_name) # 创建一个注册名的`entry`,变量为`new_name`
entry_new_name.place(x=130, y=10) # `entry`放置在坐标(150,10).
new_pwd = tk.StringVar()
tk.Label(window_sign_up, text='密码 ').place(x=10, y=50)
entry_usr_pwd = tk.Entry(window_sign_up, textvariable=new_pwd, show='*')
entry_usr_pwd.place(x=130, y=50)
new_pwd_confirm = tk.StringVar()
tk.Label(window_sign_up, text='请再次输入密码 ').place(x=10, y=90)
entry_usr_pwd_confirm = tk.Entry(window_sign_up, textvariable=new_pwd_confirm, show='*')
entry_usr_pwd_confirm.place(x=130, y=90)
new_phone = tk.StringVar()
tk.Label(window_sign_up,text='请输入电话号码').place(x=10,y=130)
entry_usr_phone = tk.Entry(window_sign_up, textvariable=new_phone)
entry_usr_phone.place(x=130, y=130)
btn_comfirm_sign_up = tk.Button(window_sign_up, text='注册', command=sign_to_system)
btn_comfirm_sign_up.place(x=180, y=170)
btn_login = tk.Button(window, text='登陆', command=usr_login)
btn_login.place(x=120, y=240)
btn_sign_up = tk.Button(window, text='新用户?请注册新账户', command=usr_sign_up)
btn_sign_up.place(x=200, y=240)
var_admin_name = tk.StringVar()
var_admin_pwd = tk.StringVar()
def admin_login():
def verify_admin():
admin_name= var_admin_name.get()
admin_pwd = var_admin_pwd.get()
print(admin_name)
print(admin_pwd)
Base=declarative_base()
md = MetaData(bind=engine) #引用MetaData
class admin_info(Base):
__table__ = Table("admin_info", md, autoload=True)
Session=sessionmaker(bind=engine)
session=Session()
record = session.query(admin_info).filter(admin_info.admin_name==admin_name).first()
print("成功打开数据库")
print(record.admin_pwd)
if(record.admin_pwd == admin_pwd):
print("匹配成功")
tkinter.messagebox.showinfo(title='Welcome', message='欢迎使用系统管理功能! ' + admin_name)
admin_manage()
window_admin_login.destroy()
else:
print("匹配失败")
tkinter.messagebox.showerror(message='密码输入错误,请重试')
window_admin_login = tk.Toplevel(window)
window_admin_login.geometry('300x200')
window_admin_login.title('管理员登陆')
#获得用户输入的值
#管理员名
tk.Label(window_admin_login, text='管理员账户名 ').place(x=50, y=10) # 放置管理员登陆
entry_admin_name = tk.Entry(window_admin_login, textvariable=var_admin_name) #创建entry
entry_admin_name.place(x=130, y=10)
#管理员密码
tk.Label(window_admin_login, text='管理员账户密码').place(x=40, y=50) #放置管理员登陆密码
entry_admin_pwd = tk.Entry(window_admin_login, textvariable=var_admin_pwd, show='*') #创建entry
entry_admin_pwd.place(x=130, y=50)
btn_sign_up=tk.Button(window_admin_login,text='登陆',command=verify_admin)
btn_sign_up.place(x=150,y=100)
btn_admin_login = tk.Button(window, text='管理员登陆', command=admin_login)
btn_admin_login.place(x=400, y=240)
var_line_id = tk.StringVar()
var_line_station_1 = tk.StringVar()
var_line_station_2 = tk.StringVar()
var_line_station_3 = tk.StringVar()
var_line_station_4 = tk.StringVar()
var_line_station_5 = tk.StringVar()
int_line_distance = tk.IntVar()
int_station_id = tk.IntVar()
var_station_name = tk.StringVar()
var_station_open = tk.StringVar()
var_station_close = tk.StringVar()
var_station_location = tk.StringVar()
int_ticket_id = tk.IntVar()
var_start_station = tk.StringVar()
var_terminal_station = tk.StringVar()
var_stopping_station = tk.StringVar()
int_ticket_price = tk.IntVar()
int_available_seats = tk.IntVar()
var_go_time = tk.StringVar()
var_arr_time = tk.StringVar()
var_line_id = tk.StringVar()
var_train_id = tk.StringVar()
def admin_manage():
window_admin_manage=tk.Toplevel(window)
win
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源介绍】 基于python+tkinter+MySQL开发的铁路客票管理系统源码+项目说明.zip 基于python+tkinter+MySQL开发的铁路客票管理系统源码+项目说明.zip 该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 基于MySQL,使用tkinter制作的GUI。 使用本地数据库服务器,制作的客票管理系统。 未附带数据库文件,可根据自己的需求自己建表。 是课程“铁路信息系统架构”的大作业。有需求的同学可以参考。 v1.0版本说明 用户为购票者和管理员。 购票者可以在系统中输入用户名/密码注册用户信息,然后再进行登陆。输入正确的密码后才可以进行购票/退票。 可以购票/退票,查看当前行程的所有经停站。 管理员可以添加新的线路信息(包括一条线路的所有经停站信息等)/站点信息 可以发布新的客票,供用户购买 可以查看任意注册用户的购票信息 可以为任意注册用户办理退票手续 仅仅是一个课程的大作业,实现了老师要求的基本功能。感兴趣的同学可以参考参考。 v2.0 支持输入城市查找客票,类似12306 支持用户修改用户名 更新了UI fix bugs
资源推荐
资源详情
资源评论
收起资源包目录
基于python+tkinter+MySQL开发的铁路客票管理系统源码+项目说明.zip (3个子文件)
项目说明.md 1007B
code
ticketmanage v1.0.py 34KB
铁路客票管理系统v2.0.py 38KB
共 3 条
- 1
资源评论
manylinux
- 粉丝: 4537
- 资源: 2485
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功