一、前言
1. 项目描述
中国移动,中国联通,中国电信是国内3大通信运营商,每个运营商都提供了不同的品牌套餐来应对不同的用户群,比如北京移动主要有全球通,神州行,动感地带等3大品牌套餐,每种套餐的内容和费用不同,嗖嗖移动是一个假定的通信运营商,提供了话痨套餐,网虫套餐,超人套餐,各种套餐所包含的服务内容及费用如下表:
品牌套餐 | 话痨套餐 | 网虫套餐 | 超人套餐 |
---|---|---|---|
通话时长(分钟) | 600 | 0 | 300 |
上网流量 | 0 | 20 | 10 |
短信条数(条) | 100 | 0 | 50 |
费用(元/月) | 58 | 68 | 78 |
如实际使用中超出套餐内包含的通话时长,短信条数和上网流量,则按一下规则计费:
-
超出的通话: 0.2元/分
-
超出的短信:0.1元/条
-
超出的上网流量:0.1元/MB
2. 本文目的
本文针对完成后的回顾,反思进行总结。
二、项目概述
1. 项目功能模块
菜单级别 | 功能 | 描述 |
---|---|---|
主菜单 | 用户登录 | 输入正确的手机号码和密码进入二级菜单列表 |
主菜单 | 用户注册 | 录入信息并开卡,用户输入的信息包括:选择卡号,选择套餐类型,输入用户名和密码,预存话费金额(预存话费金额必须满足以支付所选套餐的一个月的费用) |
主菜单 | 使用嗖嗖 | 输入正确的手机号码和密码之后,随机进入本号码所属套餐可以支持的一个场景,消费套餐余量或者话费余额,并记录消费信息.当话费余额不足时,抛出异常提醒用户充值 |
主菜单 | 话费充值 | 输入正确的用户名和密码之后,可为该卡号充值 |
主菜单 | 资费说明 | 提供各品牌套餐所包含的通话时长,上网流量,短信条数,月费用等 |
主菜单 | 退出系统 | 提出本系统 |
二级菜单 | 本月账单查询 | 可查询该卡号的套餐费用,实际消费金额,账户余额 |
二级菜单 | 套餐余量查询 | 可查询该卡号的套餐余量 |
二级菜单 | 打印消费详情 | 输入正确的卡号和密码后,可打印当前卡号用户的消费详单, 使用输出流把用户信息输出到文件 |
二级菜单 | 套餐变更 | 可变更为其他套餐类型,变更后话费余额需减去变更后的套餐费用,余额不足时需要给出信息提示,套餐变更后重新统计卡中实际消费数据以及当月消费金额 |
二级菜单 | 办理退网 | 输入正确的卡号和密码后,可以从已注册的号码列表中删除本号码,并退出系统 |
三、项目实施过程
1.数据库设计
Card(电话号码类)
cardNumber 卡号
status 状态
MoboleCard(嗖嗖移动卡类)
cardNumber 卡号
username 用户名
password 密码
serPackage 所属套餐
money 账户余额
status 状态
monthlyConsumptionRecords(月消费记录类)
cardNumber 卡号
consumAmount 当月消费金额
realTalkTime 当月实际通话时长
realSMSCount 当月实际发送短信条数
realFlow 当月实际上网流量
consumeDate 消费日期
套餐类 SerPackage
talkTime 通话时长
smsCount 短信条数
price 套餐月资费
flow 上网流量
type 套餐类型
套餐类型类 SerPackageType
name 套餐名称
ConsumInfo(消费信息类)
cardNumber 卡号
type 消费类型
consumData 消费数据
consumeDate 消费日期
Scene(使用场景类)
type 场景类型
data 场景消费数据
description description
RechargeRecord(充值记录类)
amount 充值金额
rechargeDate 充值日期
cardNumber 卡号
2.完成后的效果图
对应展示完成的一二层的目录展示,对应通过在数据库中保存的信息进行登录验证,根据用户登录信息的确认,从一层进入到二层,对应实现不同的功能,满足客户需求。
1.主要感觉困难的点在于在最开始的时候对于项目的整体分析,对于代码的编写方法的返回值,传递参数,在正式编写前最好是有一个整体的结构。此处对应明白了dao层与服务层接口存在的意义,可以在整理思路时对应编写好对应的方法,确认方法的参数,返回值。在最后整体都流畅完成后,对应只需要在对应实现类中编写方法即可。
2.在分析需求时对应的数据变化也需要对应完成整体融合的分析,对应的数据的变化需要达到一致性,此时对应数据库中学习的事务回滚是一个很好的限制方法。
3.整体项目完成后的总结
首先在本次项目完成后有以下的收获
- 面向对象编程思想的运用: 项目中使用了类和对象来模拟现实世界的实体,例如
MobileCard
类代表手机卡,SerPackage
类代表套餐,ConsumInfo
类代表消费信息等。通过封装、继承、多态等面向对象特性,实现了代码的模块化和可复用性,提高了代码的可维护性和扩展性。 - 数据库操作的实践: 项目中使用了MySQL数据库来存储用户信息、消费记录等数据。通过JDBC连接数据库,并使用SQL语句进行数据的增删改查操作,实现了数据的持久化存储和管理。
- 文件操作的实践: 项目中使用了I/O操作将消费记录输出到文件,实现了数据的备份和查看。通过学习文件操作的相关知识,掌握了文件读写的基本方法。
- 编程实践能力的提升: 通过完成项目,我加深了对Java编程语言的理解,并提升了代码编写、调试和测试的能力。同时,也学会了如何进行项目规划和设计,以及如何使用版本控制工具进行代码管理。
另外在有收获的同时,知道自己在完成一个项目的不足:
- 需求分析: 在项目开始之前,要进行充分的需求分析,明确项目目标、功能模块和用户界面等。这样可以避免后期出现需求变更导致项目延期或返工。
- 模块化设计: 将项目分解成多个模块,每个模块负责实现一个功能。这样可以提高代码的可读性和可维护性,也方便进行单元测试和模块测试。
- 异常处理: 要对可能出现的异常情况进行全面的分析,并设计合理的异常处理方案。例如,捕获输入异常、数据库操作异常等,并进行相应的处理,例如提示用户重新输入、回滚数据库操作等。
- 测试: 对项目进行全面的测试,包括功能测试、性能测试和安全性测试等。确保项目能够正常运行,并满足用户的需求。
- 代码规范: 遵守代码规范,例如命名规范、注释规范等。这样可以提高代码的可读性和可维护性,也方便团队协作。