# 基于 C#和 MySQL 的模拟车票购票系统
## 1.设计背景
### 1.1 引言
在 21 世纪之前,我国互联网信息技术还处于萌芽阶段,计算机使用者更是少之又少,那时乘坐汽车一般都是在车上买票,但这样会有一个问题,就是不能提前知道有没有票,上车时间等信息都不能提前知道,而且买票也不方便。但随着信息时代的飞速发展,计算机已经是大部分家庭所必备的上网工具,人们也在寻找可以更加方便购买车票的方法,为了改善买车票的体验,车票购票系统应运而生。车票购票系统可以同时为车票提供者和车票购买者提供服务,车票提供者可以对车票增删查改,而车票购买者则能够查询车票和购买车票。作为一个基于 Window 的购票程序,大大提高了人们购票的便利性。
### 1.2 技术背景
C#是微软公司发布的一种面向对象的、运行于.NET Framework 之上的高级程序设计语言。C#由 C 和 C++ 衍生出来的面向对象的编程语言,具有安全、稳定、简单、优雅的特点。它在继承 C 和 C++ 强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了 VB 简单的可视化操作和 C++ 的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET 开发的首选语言。
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 Web 应用方面,MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
### 1.3 设计目的
通过这次的实验设计,最重要的是了解数据库设计内容:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的实施和数据库的运行和维护。即:透过现实现象学会分析需求是什么;通过概念结构设计学会以需求分析为基础画 E-R 模型图;通过逻辑结构设计学会将 E-R 模型图转化为数据库关系表;通过物理结构设计了解不同的数据存储结构和方法对数据的访问效率的影响;最后就是了解数据库的实施过程和数据库运行常见问题及如何解决。
### 1.4 开发环境
处理器:Intel Core Family
操作系统:Windows 10
编译器:Visual Studio Community 2017
数据库:MySQL 8.0,MySQL Workbench
## 2.系统分析
### 2.1 系统功能
车票管理员:
(1) 新增班次(添加新的班次信息)
(2) 删除班次(删除已有班次信息)
(3) 修改班次信息(修改已有班次的信息)
(4) 查询班次(查看已有班次信息)
(5) 管理用户
车票购买者:
(1) 查询班次(查询已公布班次信息)
(2) 购买车票(购买已公布班次的车票)注:因为是模拟,所以这里不提供实际的支付功能
(3) 退票(将已购买的车票退掉)
(4) 注册账户
### 2.2 系统实现
(1) 新增班次:即在数据库的表中增加数个元组
(2) 删除班次:即在数据库的表中删除数个元组
(3) 修改班次信息:即在数据库的表中修改数个元组
(4) 查询班次:即在数据库的表中查看全部或者特定要求的元组
(5) 购买车票:即在数据库的表中删除一个元组(一张身份证只能买一张票)
(6) 退票:即在数据库的表中增加一个元组(一张身份证只能买一张票)
### 2.3 可行性分析
图形用户界面使用 WinForm 实现;数据库操作只涉及基本的增删查改和简单的过程及触发器;暂时不考虑并发处理、多线程以及网络编程技术。在已学知识基础上,通过自学完成程序设计理论上可行。
## 3.需求分析
### 3.1 数据流图
#### 3.1.1 顶层图
![](https://www.writebug.com/myres/static/uploads/2022/1/19/fc77587b943c593920e6ed3b44c4186a.writebug)
说明:顶层图仅保留核心的数据流
以下进行数据流图分成细化。
#### 3.1.2 二层图
![](https://www.writebug.com/myres/static/uploads/2022/1/19/26ace2230b2b2f621625404342a95baa.writebug)
说明:成绩管理系统细分为 1 管理班次信息、2 查询班次信息、3 管理用户账号、4 管理个人帐号、5 管理车票,5 个子系统(加工)。
#### 3.1.3 三层图
(1)对加工 1 的细分:
![](https://www.writebug.com/myres/static/uploads/2022/1/19/c551dc1da8396f47e7de13669468c6da.writebug)
(2)对加工 2 的细分:
![](https://www.writebug.com/myres/static/uploads/2022/1/19/1a82f69aa51a958b9a82e0d1b8e29cec.writebug)
(3)对加工 3 的细分:
![](https://www.writebug.com/myres/static/uploads/2022/1/19/eb819d135e999824712bfc37fac7c4c1.writebug)
(4)对加工 4 的细分
![](https://www.writebug.com/myres/static/uploads/2022/1/19/b215333764f8381ad0605fa9c4b4006d.writebug)
(5)对加工 5 的细分
![](https://www.writebug.com/myres/static/uploads/2022/1/19/fa2ee04a5c4a9c45d8b71571fcdae6d6.writebug)
### 3.2 数据字典
#### 3.2.1 数据流条目
#### 3.2.2 数据项条目
#### 3.2.3 加工条目
#### 3.2.4 源或宿条目
### 3.3 数据库设计
#### 3.3.1 概念结构设计
(1)数据实体
根据需求分析,数据库实体包括:用户实体,班次实体,车票实体,实体图如下
班次实体:
![](https://www.writebug.com/myres/static/uploads/2022/1/19/c6dc6dd73093a7a6e3dd5e89426e6386.writebug)
用户实体:
![](https://www.writebug.com/myres/static/uploads/2022/1/19/ee9c92db4d9d23d7061a120c3944b334.writebug)
车票实体:
![](https://www.writebug.com/myres/static/uploads/2022/1/19/34e1366c74dfb105b8211a5b98374f84.writebug)
(2)E-R 图
![](https://www.writebug.com/myres/static/uploads/2022/1/19/66b92c965e53804a9016c81ea813a0ce.writebug)
#### 3.3.2 逻辑结构设计
数据库模式设计:
1.班次表 schedule
![](https://www.writebug.com/myres/static/uploads/2022/1/19/b19b00e07f20d3067aaa698d78b601d2.writebug)
2.用户表 user
![](https://www.writebug.com/myres/static/uploads/2022/1/19/9353a6d829486d59c2b276f85fec4cc3.writebug)
3.车票表 ticket
![](https://www.writebug.com/myres/static/uploads/2022/1/19/354a4981489d1359951ab236a63fd300.writebug)
4.触发器 schedule_AFTER_INSERT
用途:当管理员插入新的班次时如果没有指定剩余车票数,那么数据库将自动填充剩余车票数等于总车票数。
#### 3.3.3 物理结构设计
利用 DDL 描述的物理数据库:
1.schedule 表
```
CREATE TABLE `ticket_sys`.`schedule` (
`schedule_id` VARCHAR(10) NOT NULL,
`from` VARCHAR(20) NOT NULL,
`to` VARCHAR(20) NOT NULL,
`time` DATETIME NOT NULL,
`price` DOUBLE NOT NULL,
`ticket_total` INT NOT NULL,
`ticket_remain` INT NULL DEFAULT 0,
`car_id` VARCHAR(10) NOT NULL,
`info` VARCHAR(100) NULL,
PRIMARY KEY (`schedule_id`),
UNIQUE INDEX `schedule_id_UNIQUE` (`schedule_id` ASC) VISIBLE);
```
2.user 表
```
CREATE TABLE `ticket_sys`.`user` (
`user_id` INT NOT NULL AUTO_INCREMENT,
`user_card` VARCHAR(20) NOT NULL,
`user_name` VARCHAR(10) NOT NULL,
`phone_number` VARCHAR(11) NOT NULL,
`password` VARCHAR(20) NOT NULL,
PRIMARY KEY (`user_id`),
UNIQUE INDEX `user_id_UNIQUE` (`user_id` ASC) VISIBLE,
UNIQUE INDEX `user_card_UNIQUE` (`user_card` ASC) VISIBLE,
UNIQUE INDEX `phone_number_UNIQUE` (`phone_number` ASC) VISIBLE);
```
3.ticket 表
```
`ticket_id` INT NOT NULL AUTO_INCREMENT,
`identifier` VARCHAR(15) NOT NULL,
`seat_number` INT NOT NULL,
`schedule_id` VARCHAR(1
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
系统实现 (1) 新增班次:即在数据库的表中增加数个元组 (2) 删除班次:即在数据库的表中删除数个元组 (3) 修改班次信息:即在数据库的表中修改数个元组 (4) 查询班次:即在数据库的表中查看全部或者特定要求的元组 (5) 购买车票:即在数据库的表中删除一个元组(一张身份证只能买一张票) (6) 退票:即在数据库的表中增加一个元组(一张身份证只能买一张票)
资源推荐
资源详情
资源评论
收起资源包目录
100012376-基于 C#和 MySQL 实现的(WinForm)模拟车票购票系统.zip (80个子文件)
ticketseller
.classpath 1KB
.settings
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.jdt.core.prefs 400B
org.eclipse.core.resources.prefs 70B
.jsdtscope 555B
org.eclipse.wst.common.component 465B
org.eclipse.wst.common.project.facet.core.xml 334B
org.eclipse.wst.jsdt.ui.superType.container 49B
src
data
ScheduleDataAccessObject.java 5KB
UserDataAccessObject.java 4KB
TicketDataAccessObject.java 4KB
DataAccessObject.java 1KB
entity
Admin.java 2KB
Schedule.java 2KB
Ticket.java 1KB
User.java 2KB
Test.java 536B
sys
UserInfo.java 396B
TicketSeller.java 2KB
TicketIdentifierCreator.java 239B
UserRegister.java 692B
Login.java 1KB
tickets.iml 2KB
LICENSE 10KB
.idea
vcs.xml 180B
misc.xml 262B
modules.xml 254B
WebContent
buyTicket.jsp 4KB
login_deal.jsp 900B
initialize.jsp 451B
WEB-INF
web.xml 428B
index.jsp 5KB
chgPwd.jsp 3KB
js
bootstrap.js 66KB
npm.js 484B
bootstrap.min.js 35KB
bootstrap3.0.3.min.js 27KB
jquery.min.js 94KB
admin.jsp 4KB
BoughtTicketInfo.jsp 3KB
chgPwd_deal.jsp 868B
newSchedule_deal.jsp 2KB
register_deal.jsp 2KB
showUser.jsp 3KB
Test2.html 301B
img
slide2.png 149KB
slide3.png 109KB
1.jpg 167KB
logo.jpg 12KB
slide1.png 55KB
favicon.png 65KB
css
bootstrap.min.css 115KB
bootstrap-theme.css.map 42KB
bootstrap-theme.css 22KB
bootstrap.css.map 372KB
bootstrap.css 138KB
ziji.css 1KB
bootstrap-theme.min.css 19KB
newSchedule.jsp 8KB
withdraw_schedule.jsp 1KB
MyTicket.jsp 4KB
withdraw_deal.jsp 1KB
register.jsp 6KB
Info.jsp 3KB
buy_deal.jsp 1KB
META-INF
MANIFEST.MF 36B
TiecketInfo.jsp 3KB
fonts
glyphicons-halflings-regular.svg 106KB
glyphicons-halflings-regular.ttf 44KB
glyphicons-halflings-regular.woff 23KB
glyphicons-halflings-regular.eot 20KB
glyphicons-halflings-regular.woff2 18KB
.project 876B
.gitignore 278B
README.en.md 856B
README.md 21KB
数据库综合性实验数据集.ncx 1KB
项目文档
数据流图.vsdx 41KB
类图.vsdx 82KB
数据库设计实验报告.docx 501KB
共 80 条
- 1
资源评论
神仙别闹
- 粉丝: 2679
- 资源: 7667
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功