大二下java课的课程项目是写一个简易的进销存管理系统,最近也是一直在做,现在基本做完了,就来做个总结。
这是写的所有文件,看起来挺多的,其实用到的也就是一些基础语法。接下来一个一个阐述里面实现的功能吧。
注:以下涉及到具体信息的纯属虚构。
一. 登录界面
效果:
1. 点击登陆之后和数据库中的账号密码进行比较,正确与否都会弹出对话框
2. 密码框实现按回车相当于点击登陆(keyAdapter)
3. 点击注册,创建ZhuCe类实例,设置本界面不可见
4. 点击登陆成功后,显示:
自定义的dialog,无图标,message内容为一张gif图,用一个计时器控制时间,点击确定直接进入主界面。若不点击,则3秒后dispose掉(模拟登陆状态),若期间点击关闭则程序终止。
二. 注册界面
效果:
1. 输入所有参数后,比较:密码和确认密码是否相同、数据库中有没有该账号,通过对话框来提示
2. 若比较无误,则关闭该窗口,释放资源。并通过传入的LonIn对象重新设置其可见。
三. 主界面
主界面,主要用于排版各个菜单信息以及点击创建对象(很多都传入一个用户对象,根据用户权限来使某些功能不可用)
布局:
1. 用户管理---修改密码、退出
2. 供应商信息---添加供应商、修改/删除供应商
3. 进货管理---进货单、退货单
4. 销售管理---销售单、销售退货单
5. 库存管理---查看库存/调整价格
6. 查询/详情---详情表、销售排行榜
四. 修改密码
效果:
1. 用户名不可编辑,下面三项必填,否则对话框提示。
2. 旧密码区有keyAdapter,每次输入都比较与该用户的密码是否相同,以图标来显示
3. 确认修改成功后, 显示密码修改成功,并更新数据库,最后dispose掉。
五. 添加供应商
效果:
1. 全称和电话必填,只读权限无法添加
2. 成功添加完一个后,数据库更新,刷新所有文本框
六. 修改/删除供应商
效果:
1. 界面出来时就将数据库中的内容事先拿出来,并在选择供应商那里添加好所有的供应商,
然后每次点击一个时,其他文本框内容显示成该供应商的。
2. 除全称外都可以改,只读用户无法执行修改和删除操作。
七. 进货单
效果:
1. 进货编号和经手人两个文本框有FocusListener,进货时间默认为系统时间,可以修改
2. 点击添加后,table中出现空行,可以在里面编辑数据,带*必填,否则报错
3. 填完一行后,品种数量,货品总数和合计金额自动更新,且这三个文本框不可修改。
4. 验收结论默认正常,操作人员为本用户且不可修改。
5. 点击进货入库,将进货信息存入进货信息表,将货物存到库存表(有除数量外一样的则不添加,只更新数量)
八. 退货单
效果:
1. 界面基本和进货单一致,继承自同一个框架类
2. 选择一个供应商,则表格显示来自该供应商的所有货物
3. 可在表格中修改数量,点击选中后,表格该行颜色改变,下面三个文本框数据更新。此处用一个ArrayList来存选中的那几个,table有个自定义的渲染器TableCellRenderer来实现选中的那几行颜色和没选中的不一样。
4. 点击取消选中,从那个ArrayList中去掉那一行,下面数据更新。
5. 有权限要求,只读的无法点击退货-出库
6. 点击退货-出库,退货信息存到退货信息表,库存表相应的减少那些货物
九. 销售单
效果:
1. 框架一样,只是中间那个表格变成了两个表格两个按钮和两个label
2. 选择一个供应商后,下面显示来自该供应商的货物,选中一个后,点击右箭头则会添加到购物车,下面数据更新;右边选择一行,点击左箭头,则删除,下面数据更新。
3. 点击销售,将销售信息存到销售信息表,库存表内减少相应的货物。
4. 有权限限制,只读用户无法销售
十. 销售退货单
和退货单基本一样,一个表示退给供应商,一个表示客户退回来。
十一. 库存盘点/调整价格
效果:
1. 界面显示时将所有库存信息显示出来,此表格可排序,不可编辑
2. 输入关键词文本框有keyAdapter,根据输入内容(输入关键词或者正则表达式)将匹配的相关结果显示出来(突然意识到查询按钮貌似没用了...)这里用到了TableSorter,需要注意的一点是排序或者筛选后行的对应有变。详见另一篇博文《TableSorter的使用及行对应问题》
3. 选中一行,点击价格调整,则该行的单价单元格可以编辑。(自定义DefaultTableModel,多一个函数来传入该单元格的行列值,然后再isEditable里设置即可;此外,有个cellEditListener,当用户编辑完后直接连接数据库更新)
十二. 详情表
效果:
1. 有四个界面,分别用来显示数据库中的四张表。
2. 选择删选方式那里用到了CardLayout,用来切换不同删选方式的内容。
十三. 销售排行榜
没啥效果..
主要还是table的使用问题。