List
- List集合代表一个有序集合,集合中每个元素都有其对应的顺序索引。List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。
- ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高。
- LinkedList采用链表存储方式。插入、删除元素时效率比较高。
- add():向集合中添加元素、remove():从集合中移除元素
泛型
优点:
- 泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
- 类型安全
- 消除强制类型转换
- 潜在的性能优势
使用:
List dogs = new ArrayList();//标记元素类型
库存管理项目
阶段一:
视图层: 编写首页、用户管理界面、用户信息的增删改查
业务层:处理登录功能、添加、删除、修改、查看用户等业务逻辑
Dao持久层(负责与数据库打交道):负责处理数据库中的数据,如增删改查、登录
代码部分:(部分代码)
视图层:
首页:
public void indexView(User user) {
System.out.println("\t\t\t欢迎 [" + user.getUsername() + "]登录本系统!");
System.out.println("\t\t\t--------1、基库存管理----------");
System.out.println("\t\t\t-----------1.1 库存查询----------");
System.out.println("\t\t\t-----------1.2 入库管理----------");
System.out.println("\t\t\t-----------1.3 出库管理----------");
System.out.println("\t\t\t--------2、报表管理----------");
System.out.println("\t\t\t-----------2.1 库存月报----------");
System.out.println("\t\t\t-----------2.2 物资台账----------");
System.out.println("\t\t\t--------3、基础信息管理----------");
System.out.println("\t\t\t-----------3.1 用户管理----------");
System.out.println("\t\t\t-----------3.2 部门管理----------");
System.out.println("\t\t\t-----------3.3 仓库管理----------");
System.out.println("\t\t\t-----------3.4 供应商管理----------");
System.out.println("\t\t\t-----------3.5 产品管理----------");
System.out.println("\t\t\t--------4、退出系统----------");
System.out.print("请输入要进行的操作:");
String result = sc.next();
if("3.1".equals(result)){
System.out.println("你已进入用户管理页面");
userView(user);
}else if("3.2".equals(result)){
System.out.println("您已进入部门管理界面");
}
......
}
选项3.1,用户管理界面:
System.out.println("\t\t\t------------------欢迎到用户管理界面------------------");
System.out.println("\t\t\t------------------1、查看用户信息------------------");
System.out.println("\t\t\t------------------2、添加用户信息------------------");
System.out.println("\t\t\t------------------3、修改用户信息------------------");
System.out.println("\t\t\t------------------4、删除用户信息------------------");
System.out.println("\t\t\t------------------5、返回上一级------------------");
System.out.print("请输入要进行的操作:");
用户信息的增删改查操作:
int result = sc.nextInt();
if(result==1){
// 查看用户信息
List<User> list = userService.findUserList();
System.out.println("ID"+"\t姓名"+"\t账号"+"\t\t密码"+"\t职位"+"\t年龄");
for(int i=0;i<list.size();i++){
User u = list.get(i);
System.out.println(u.getId()+"\t"+u.getUsername()+"\t"+u.getUserno()+"\t"+u.getPwd()+"\t"+u.getPosition()+"\t"+u.getAge());
}
userView(user); // 调用当前方法继续进行
}else if(result==2){
// 添加用户信息
System.out.println("请输入要添加的用户姓名:");
String username = sc.next();
System.out.println("请输入账号:");
String userno = sc.next();
System.out.println("请输入密码:");
String pwd = sc.next();
System.out.println("请输入职位:");
String position = sc.next();
System.out.println("请输入年龄:");
int age = sc.nextInt();
User u = new User();
u.setUsername(username);
u.setUserno(userno);
u.setPwd(pwd);
u.setPosition(position);
u.setAge(age);
Boolean flag = userService.addUser(u);
if(flag){
// 添加成功
System.out.println("添加成功!");
}else{
// 添加失败
System.out.println("添加失败!");
}
userView(user); // 调用当前方法继续进行
}else if(result==3){
// 修改用户信息
System.out.println("请输入要修改的用户ID:");
int id = sc.nextInt();
System.out.println("请输入要修改的用户姓名:");
String username = sc.next();
System.out.println("请输入要修改的用户账号:");
String userno = sc.next();
System.out.println("请输入要修改的密码:");
String pwd = sc.next();
System.out.println("请输入要修改的职位:");
String position = sc.next();
System.out.println("请输入要修改的用户年龄:");
int age = sc.nextInt();
User u = new User();
u.setId(id);
u.setUsername(username);
u.setUserno(userno);
u.setPwd(pwd);
u.setPosition(position);
u.setAge(age);
Boolean a = userService.updateUser(u);
if(a){
System.out.println("修改成功!");
}else{
System.out.println("修改失败!");
}
userView(user); // 调用当前方法继续进行
}else if(result==4){
// 删除用户信息
System.out.println("请输入要删除的用户ID:");
int id = sc.nextInt();
User u = new User();
u.setId(id);
Boolean b = userService.deleteUser(u);
if(b){
System.out.println("删除成功!");
}else{
System.out.println("删除失败,请重试!");
}
userView(user); // 调用当前方法继续进行
}
视图层代码略
略
Dao层代码:(以查看用户信息为例)
public List<User> findUserList() {
List<User> list = new ArrayList<User>();
// 处理具体的业务逻辑
String sql = "select * from k_user";
try {
// 1.获得数据库连接
this.conn = this.getConn();
// 2.获得命令执行对象
this.ps = conn.prepareStatement(sql);
// 3. 执行命令
this.rs = ps.executeQuery();
// 4. 处理结果
while(rs.next()){
String username = rs.getString("username"); // 获取表的列名
String position = rs.getString("position"); // 职位
int age = rs.getInt("age"); // 年龄
int id = rs.getInt("id"); // 用户id
String userno = rs.getString("userno");
String pwd = rs.getString("pwd");
User user = new User();
user.setAge(age);
user.setId(id);
user.setPosition(position);
user.setUsername(username);
user.setPwd(pwd);
// user.setPwd(pwd);
user.setUserno(userno);
list.add(user);
}
return list;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
其余功能代码略,方式相同