wordpress 迁移网站,网站网站制作,wordpress 图片 自动重命名,江西省城乡住房建设厅网站一、项目介绍
1、项目背景: 该项目旨在模拟真实的移动业务大厅#xff0c;。用户可以注册新卡、查询账单、管理套餐、充值话费、打印消费记录等功能。同时#xff0c;项目还模拟了用户使用场景#xff0c;如通话、上网、发短信等#xff0c;并根据套餐规则进行相应的扣费…一、项目介绍
1、项目背景: 该项目旨在模拟真实的移动业务大厅。用户可以注册新卡、查询账单、管理套餐、充值话费、打印消费记录等功能。同时项目还模拟了用户使用场景如通话、上网、发短信等并根据套餐规则进行相应的扣费和消费记录。 2、项目目标: 开发一个名为“嗖嗖移动业务大厅”的系统为用户提供以下功能 用户管理: 用户注册、登录、退网。套餐管理: 查询套餐余量、变更套餐、打印消费详情。账单管理: 查询本月账单、充值话费。消费模拟: 模拟用户通话、上网、发送短信等场景并记录消费信息。其他功能: 查看资费说明、退出系统。 3、项目技术: 面向对象: 使用面向对象的思想设计类和接口实现封装、继承和多态。异常处理: 合理使用异常处理机制提高程序的健壮性。集合框架: 使用集合框架存储和管理数据。I/O 操作: 实现文件的写入操作保存消费记录。数据库: 使用 MySQL 数据库存储用户信息、消费记录等数据并通过 JDBC 进行数据库操作。 4、项目功能: 用户登录/注册: 用户可以输入手机号和密码登录系统或者注册新用户。使用嗖嗖: 系统随机模拟用户进行通话、上网、发送短信等操作并记录消费信息。本月账单查询: 查询当前用户的套餐费用、实际消费金额和账户余额。套餐余量查询: 查询当前用户的套餐余量包括通话时长、上网流量和短信条数。打印消费详情: 将用户的消费记录写入文件并打印出来。套餐变更: 用户可以根据需要变更套餐类型。办理退网: 用户可以注销手机卡并退出系统。话费充值: 用户可以给手机卡充值话费。查看资费说明: 查看嗖嗖移动提供的所有套餐的资费说明。 补充功能 查询余额用户可以输入手机号进行查询余额操作。在线小说阅读用户登录之后可进入二级菜单进行在线小说阅读操作相册用户登录之后可查看相册中的照片 5、项目实现: 项目使用 Java 语言开发通过JDBC操作 MySQL 数据库对数据“增、删、改、查”。项目代码结构清晰功能完善能够满足用户的基本需求。 为了让大家更好的了解到这个项目我将展示出该项目的效果图 一级菜单界面和功能展示 注册功能展示 使用嗖嗖功能展示 查询余额效果展示 话费充值功能展示 充值后查看使用嗖嗖功能能否正常使用 可以正常使用 资费说明效果图展示 登录展示 在这里的登录有一个功能当手机号欠费状态时也会提示登录失败由于我这里账号处于正常状态所以不作演示 二级菜单界面和功能展示 本月账单查询功能展示 套餐余量查询 打印消费详单展示部分 学富五车在线阅读效果图展示 相册效果展示 备注本人真实照片 不处 套餐变更功能展示 参考下图资费说明套餐已经变更为超人套餐 退网效果展示退网后直接返回第一菜单而且登录失败账号不能使用 效果展示完毕(^_^)
二、技术实现
1、Java面向对象技术
1. 封装 数据库连接封装 将数据库连接信息如 URL、用户名、密码封装在 DataSource 或 DBConnection 类中方便管理和复用。数据库操作封装 将 SQL 语句和数据库操作如增删改查封装在方法中提高代码的可读性和可维护性。结果集封装 将查询结果封装在 ResultSet 对象中方便获取和处理数据。 2. 继承 JDBC 接口继承 JDBC 提供了一系列接口如 Connection、Statement、ResultSet 等实现了对数据库操作的抽象。开发者可以通过继承这些接口创建自己的数据库操作类实现更灵活的功能。异常处理继承 JDBC 异常类继承自 SQLException开发者可以自定义异常类扩展异常处理功能。 3. 多态 数据库连接池 使用 DataSource 接口的实现类可以创建数据库连接池实现数据库连接的复用提高性能。结果集处理 使用 ResultSetMetaData 接口获取结果集的元数据可以根据不同的数据类型进行处理。 4. 接口 JDBC 接口定义 JDBC 接口定义了数据库操作的标准方便开发者进行数据库编程。数据库驱动实现 数据库驱动实现了 JDBC 接口提供对特定数据库的操作功能。 5. 其他作用 对象关系映射 (ORM) 使用面向对象技术可以将数据库表映射为 Java 对象简化数据库操作。数据库连接池管理 使用面向对象技术可以创建数据库连接池管理类实现数据库连接的创建、管理和回收。数据库事务管理 使用面向对象技术可以创建数据库事务管理类实现事务的开始、提交和回滚。 2、JDBC操作技术三层架构思想
1. 数据库连接 JDBC 提供了连接数据库的标准方法例如 DriverManager.getConnection()方便开发者建立与数据库的连接。 2. 数据库操作 JDBC 提供了执行 SQL 语句的方法例如 Statement.execute()、PreparedStatement.executeUpdate() 等方便开发者对数据库进行增删改查操作。JDBC 提供了结果集处理的方法例如 ResultSet.next()、ResultSet.getString() 等方便开发者获取查询结果。 3. 数据类型转换 JDBC 提供了数据类型转换的方法例如 ResultSet.getInt()、ResultSet.getString() 等方便开发者将数据库中的数据转换为 Java 数据类型。 4. 事务管理 JDBC 提供了事务管理的方法例如 Connection.setAutoCommit(false)、Connection.commit()、Connection.rollback() 等方便开发者控制事务的提交和回滚。 5. 数据库连接池 JDBC 可以与数据库连接池技术结合使用提高数据库连接的效率和性能。 3、MySQL数据库创建
1. 数据存储 MySQL 存储了大量数据包括用户信息、订单信息、商品信息等。开发者可以使用 JDBC 连接到 MySQL 数据库并对其进行增删改查操作从而实现对数据的存储和管理。 2. 数据查询 开发者可以使用 JDBC 执行 SQL 查询语句从 MySQL 数据库中获取所需的数据。JDBC 提供了 ResultSet 对象来存储查询结果方便开发者进行处理和分析。 3. 数据更新 开发者可以使用 JDBC 执行 SQL 更新语句修改 MySQL 数据库中的数据。例如可以使用 PreparedStatement.executeUpdate() 方法更新用户信息、订单状态等。 4. 事务管理 开发者可以使用 JDBC 进行事务管理确保数据库操作的原子性、一致性、隔离性和持久性。例如可以使用 Connection.setAutoCommit(false) 开启事务使用 Connection.commit() 提交事务使用 Connection.rollback() 回滚事务。 4、集合框架 ResultSet 对象是 JDBC 中用于存储查询结果的类它本身实现了 Iterable 接口可以直接用于循环遍历。开发者可以使用集合框架将 ResultSet 中的数据封装到 List、Set 或 Map 等集合中方便后续处理和分析。例如可以将查询结果封装到 List 集合中然后使用 for-each 循环遍历每个元素或者使用 Stream API 进行处理。 5、I/O流 开发者可以使用 IO 流实现文件上传和下载功能例如使用 FileInputStream 和 FileOutputStream 读写文件数据并使用 JDBC 执行 SQL 语句将文件数据写入数据库或从数据库中读取文件数据。 三、系统设计
为了方便大家更能清晰的梳理项目我用图片的形式展示项目系统设计 具体的工具使用方法将在后面代码中展示
四、数据库设计 Tb_Card(选电话号码表) 序号 字段名 数据类型 长度 是否为null 默认值 要求 备注 1 Id Int 否 无 主键自增 主键 1 CardNumber char 11 否 无 唯一,关联 电话号码 2 status Int 2 否 默认0 0可选1不可选 状态
tb_serpackage_type(套餐类型) 序号 字段名 数据类型 长度 是否为null 默认值 要求 备注 1 Id Int 11 否 主键自增 Id 2 name varchar 50 否 NULL 套餐类型名称 3 type Int(2) 6 否 NULL 套餐类型
tb_serpackage(套餐) 序号 字段名 数据类型 长度 是否为null 默认值 要求 备注 1 Id Int 否 主键自增 Id 2 talk_time Int 6 否 NULL 通话时长 3 sms_count Int 6 否 NULL 短信条数 5 flow Int 6 否 NULL 上网流量 4 price Double 7,2 否 NULL 套餐月资费 6 type Int(2) 6 否 NULL 套餐类型
Tb_Mobole_Card(嗖嗖移动卡表) 序号 字段名 数据类型 长度 是否为null 默认值 要求 备注 1 Id Int 否 主键自增 Id 2 card_number char 11 否 外键关联唯一 手机号码 3 ser_package Int 2 否 外键关联tb_serpackage 所属套餐 4 Username Vachar 11 否 用户名 5 Password Vachar 12 否 密码 7 Money double 72 否 0 账户余额 8 status Int 1 否 0 0-正常1-冻结 状态
Tb_monthly_consumption_records(月消费记录表) 序号 字段名 数据类型 长度 是否为null 默认值 要求 备注 1 Id Int 否 主键自增 Id 2 card_number char 11 否 外键关联唯一 手机号码 3 Consum_Amount Int 2 否 0 所属套餐 4 Real_Talk_Time int 6 0 当月实际通话时长 5 Real_SMSCount int 6 0 当月实际发送短信条数 6 Real_Flow Int 6 0 当月实际上网流量 7 ConsumeDate Date 否 消费日期
tb_recharge_record(充值记录) 序号 字段名 数据类型 长度 是否为null 默认值 要求 备注 1 Id Int 否 主键自增 Id 2 card_number char 11 否 外键关联唯一 手机号码 3 amount double 7,2 否 充值金额 4 recharge_date date 6 NULL 充值时间
tb_consuminfo(消费记录) 序号 字段名 数据类型 长度 是否为null 默认值 要求 备注 1 Id Int 否 主键自增 Id 2 card_number char 11 否 关联唯一 手机号码 3 type varchar 50 否 Null 消费类型 4 consum_data int 6 NULL 消费数据 5 consume_date date Null 消费日期
tb_scene(模拟场景) 序号 字段名 数据类型 长度 是否为null 默认值 要求 备注 1 Id Int 否 主键自增 Id 2 type char 30 否 NULL 场景类型 3 data Int 6 否 NULL 场景类型序号 4 description Double 7,2 否 NULL 场景描述 tb_novel(小说图片地址) 序号 字段名 数据类型 长度 是否为null 默认值 要求 备注 1 id Int 11 否 主键 id 2 path varchar 60 否 小说照片地址 五、难点分析 对于整个项目我认为最有难度的就是使用soso了因为他涉及到的SQL语句比较多逻辑结构也比较复杂 下面我将用思维导图对使用嗖嗖这个功能进行分析 图片链接我把图片放到了SM.MS图床上面https://sm.ms/image/SiV1q5ncKvI7PuH
请结合流程图分析代码
6、结语 在嗖嗖移动大厅的编写过程中我遇到了很多错误经过我将近俩天时间的修改将bug的数量降低到了5%左右甚至更少但是我不能保证我的代码绝对正确我的思路就是答案但我能保证我的嗖嗖移动业务大厅的主要功能都基本可以正常使用希望我的项目对在做嗖嗖移动业务大厅项目的你有所帮助 每个人的想法都不一样你自己的项目才是最棒的下面我将我的项目分享给大家仅做参考