项目需求说明书:
项目名称:We need Music 音乐小软件
主菜单:
1.登录
2.注册
3.试听
4.退出
登录成功后进入二级菜单:
1.听歌
2.下载
3.我的歌单
4.充值
5.个人信息
6.退出账号
功能实现:
主菜单:
1.登录--所有用户信息存放于xml文档中,登录时解析遍历,输入正确时进入二级菜单
2.注册--用户名不得包含某些特定字符,密码长度不得小于6位,区分大小写
3.试听--遍历输出歌曲,用户通过输入歌曲编号来听歌
4.退出--退出程序。
二级菜单:
登录成功后进入二级菜单
1.听歌--基于试听功能,听歌完毕后询问是否进入下载歌曲界面
2.下载--下载歌曲时,通过遍历输出歌曲编号、歌名、价格,用户通过输入歌曲编号来选择下载哪首歌,部分歌曲需要付费下载,不需要付费下载的歌曲在用户选择后自动添加到用户的歌单和用户信息中,付费歌曲询问是否付费,确认后判断余额是否充足,确认下载并且余额充足的情况下下载,否则退出下载。
3.我的歌单--输出用户已下载歌曲信息,可同步到本地文件,如果用户确认同步,询问存放路径,路径正确,同步。
4.充值--判断用户输入金额是否正确,正确后修改用户余额并判断用户输入金额是否大于100,单次充值金额大于100,系统分配一个4位数的随机会员卡号(已经是会员的不再重新分配会员),会员下载付费歌曲8折。
5.个人信息--常规操作,输出用户信息(会员输出会员卡号)
6.退出账号--退出当前账号,返回主菜单
运用知识点:
1.基本的就是面向对象思维了
2.集合、泛型
3.实用类
4.线程
5.I/O
6.异常
7.静态
8.DOM4J
项目第一次做完后的结果就是------滑铁卢
所以进行了二次修改
修改部分
1.有提示输入数字的地方,使用异常捕捉,防止用户输入错误而导致程序终止
2.在有数据变动时,调用保存方法保存用户信息,防止出现异常后丢失本次操作数据
3.存储路径由用户进行选择
4.歌曲采用List对象,然后结合编号存储在Map集合中
5.xml文档修改路径
6.判断用户歌单中是否有歌曲文件,如果没有,则并不提示同步
分析:
1.在开始编写项目代码时,考虑不足,用户密码输入可不区分大小写,虽然用户方便,但是与实际业务不符。
2.关于保存路径需要询问用户意见,强制设定路径不符合业务需求。
3.在用户执行关键操作时,例如下载、充值等,完毕后立即保存信息,防止程序出错而丢失数据。
4.关于有可能报错的地方要考虑到位,多进行测试
5.用户选择多用整型数字实现,尽量避免需要用户输入字符串,为用户的方便考虑。
需要改进的地方:
1.换位思考,多测试,找不足。
2.程序功能设计需要更准确
3.方法的抽调
4.高内聚低耦合
5.避免主观设定行为