精华内容
下载资源
问答
  • 2020-07-22 23:40:18

    1、环境配置

    参考上一篇maven环境配置过程:
    https://blog.csdn.net/weixin_42189888/article/details/107456448

    2、开发流程

    在ssm中有一个相对固定的开发模式。这里就实际操作方法做一下一般的解释:

    首先要明确项目的骨架,一般都是分为这么几个层次模块:

    • dao 用于编写与数据库相关操作的接口
    • service 编写业务逻辑服务
    • cotroller 根据用户与界面的交互进行对应的反馈操作
    • 页面编写

    一般的开发流程是明确了项目的功能之后,定好用户操作会引起的一系列业务反馈逻辑。思考逻辑会用到哪些数据,在dao层编写最底层的数据操作。抽象出业务可能会用到哪些服务,编写service方法。明确用户会有哪些操作,我们要给用户怎么样的反馈,以此编写controller方法。下面就以此为基础展示系统中增删改查操作的实现。

    2.1 查询和登录

    1.明确查询的相关接口,根据用户名返回用户,或者是返回一个所有用户的列表:

     User findByUserName(String username);
     List<User> findAll();
    

    2.在mapper中编写sql语句

    <select id="findByUserName" parameterType="String" resultType="user">
            select  * from user_tb where username=#{username}
    </select>
    
    <select id="findAll" resultType="user">
            select  * from user_tb
    </select>
    

    3.编写service层:
    注意,在smm中,不用new而用注入的方式生成变量。
    这里提供了与查询相关的登录服务。在调用dao层查询到相关用户之后(或查不到)与用户输入的密码进行对比,完成简单的登录身份认证。

     @Autowired
        //private UserDao userDao;//不用new,spring中的Ioc
        private UserDao userDao;
        @Override
        public int login(String username, String password) {
            User user=userDao.findByUserName(username);
            if(user!=null && user.getPassword().equals(password)){
                return user.getId();
            }
            return -1;
        }
    
        @Override
        public List<User> findAll() {
            return userDao.findAll();
        }
    

    4.编写controller层获取用户的表单,调用登录服务。并根据登录服务的返回结果,返回不同的界面。
    注意请求的注解要根据jsp界面来设置。

       @RequestMapping("/login.do")
        private ModelAndView login(User user){
            int id=userService.login(user.getUsername(),user.getPassword());
            ModelAndView mv=new ModelAndView();
            if(id!=-1){
                mv.setViewName("main");
            }else{
                mv.setViewName("../failer");
            }
            return mv;
        }
    
        @RequestMapping("/findAll.do")
        public ModelAndView findAll(){
            List<User> users=userService.findAll();
            ModelAndView mv=new ModelAndView();
            mv.addObject("users",users);
            mv.setViewName("user-list");
            return mv;
        }
    

    2.2 增加用户

    1.编写增加用户的dao层接口:

       void add(User user);
    

    2.编写insert语句:

     <insert id="add" parameterType="user">
            insert into user_tb (username,password) values (#{username},#{password})
        </insert>
    

    3.编写服务层:

      @Override
        public void add(User user) {
            userDao.add(user);
        }
    

    4.编写controller:
    这里注意一下增加完用户之后直接重定向到主界面体验更好。

        @RequestMapping("/add.do")
        public String add(User user){
            userService.add(user);
            return "redirect:findAll.do";
        }
    

    2.3 删除用户

    1.编写增加用户的dao层接口:

        void deleteById(int id);
    

    2.编写delete语句:

    <delete id="deleteById" parameterType="int">
            delete from user_tb where id=#{id}
        </delete>
    

    3.编写服务层:

      @Override
        public void deleteById(int id) {
            userDao.deleteById(id);
        }
    

    4.编写controller:
    同样删除用户之后直接重定向到主界面体验更好。

       @RequestMapping("/deleteById.do")
        public String delete(int id){
            userService.deleteById(id);
            return "redirect:findAll.do";
        }
    
    

    2.4 更新用户

    这里分两步,第一步是获取要更新的用户信息到用户更新表单,第二步是获取更新信息,更新数据库信息,然后重定向到用户列表

    1.编写增加用户的dao层接口:

         User selectById(int id);
        void update(User user);
    

    2.编写update select语句:

     <select id="selectById" parameterType="int" resultType="user">
            select * from user_tb where id=#{id}
        </select>
        <update id="update" parameterType="user">
            update user_tb set username=#{username},password=#{password} where id=#{id}
        </update>
    

    3.编写服务层:

        @Override
        public User selectUserById(int id) {
            return userDao.selectById(id);
        }
    
        @Override
        public void update(User user) {
            userDao.update(user);
        }
    

    4.编写controller:
    这里有两个用户操作,一个是用户点击更新之后去往用户修改表单。一个是用户填完表单之后提交新的用户信息,并重定向。

     @RequestMapping("/toUpdate.do")
        public ModelAndView toUpdate(int id){
            User user=userService.selectUserById(id);
            ModelAndView mv=new ModelAndView();
            mv.setViewName("user-update");
            mv.addObject("user",user);
            return mv;
        }
    
        @RequestMapping("/update.do")
        public String update(User user){
            userService.update(user);
            return "redirect:findAll.do";
        }
    

    3、测试

    当前数据库的信息
    在这里插入图片描述

    3.1 运行,登录

    在这里插入图片描述
    进入主界面
    在这里插入图片描述

    3.2 进入用户列表,添加一个新用户:

    在这里插入图片描述
    在这里插入图片描述

    3.3 删除用户:

    在这里插入图片描述
    在这里插入图片描述

    3.4 更新用户信息

    在这里插入图片描述
    在这里插入图片描述

    更多相关内容
  • 银行客户信息管理系统

    热门讨论 2012-06-14 22:30:09
    2、目的:客户信息管理系统是针对数据库作的一个系统,主要是为了将公司的客户统一起来进行管理,方便为客户服务,对客户信息的快速了解,能有效地帮助公司对客户的信息快捷地了解,方便查询,使工作效率提高。...
  • 客户信息管理系统

    万次阅读 2022-01-04 14:32:41
    客户信息管理系统 课程设计的题目及简介设计说明程序流图程序清单Customer 类MainView类Tools类DataManager类调试结果课程设计体会 课程设计的题目及简介 客户信息管理系统,功能如下: (1)添加客户信息 (2)修改...

    课程设计的题目及简介

    客户信息管理系统,功能如下:
    (1)添加客户信息
    (2)修改客户信息
    (3)删除客户数据
    (4)查询客户列表
    (5)所有数据通过JDBC保存到MySql数据库中
    1,数据库名:cms_hisoft
    2,表名:users
    3,字段列表和类型:
    id,int,主键,自动增长
    name,varchar(20),姓名
    gender,varchar(5),性别
    age,int,年龄
    phone…

    设计说明

    实现一个基于文本界面的《客户信息管理软件》
    • 进一步掌握编程技巧和调试技巧,熟悉面向对象编

    • 主要涉及以下知识点:
    – 类和对象(属性、方法及构造器)
    – 类的封装
    – 数据库的基本操作
    – 数据的插入、删除和替换
    – 对象的聚集处理
    – java通过jdbc链接数据库
    • 实现基于文本界面的《客户信息管理软件》。
    • 该软件能够实现对客户对象的插入、修改和删除(
    用数组实现),并能够打印客户明细表。
    • 项目采用分级菜单方式,主菜单如下:
    在这里插入图片描述
    “添加客户”的界面及操作过程如下所示:
    在这里插入图片描述
    “修改客户”的界面及操作过程如下所示:
    在这里插入图片描述
    “删除客户”的界面及操作过程如下所示:
    在这里插入图片描述
    “客户列表”的界面及操作过程如下所示:
    在这里插入图片描述
    客户应当包含的信息:
    – String name : 客户姓名
    – char gender : 性别
    – int age : 年龄
    – String phone: 电话号码
    – String email : 电子邮箱

    程序流图

    在这里插入图片描述

    程序清单

    Customer 类

    这是一个用来封装客户信息的类,这里面封装了客户的基本信息,并提供了各属性的 get / set 方法以及自编的构造器对属性进行初始化,下方代码省略了 get / set 方法

    // Customer 实体类,用于封装客户信息
    public class Customer {
    	private int id;
    	private String name;
    	private String gender;
    	private int age;
    	private String phone;
    	private String email;
    	
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getGender() {
    		return gender;
    	}
    	public void setGender(String gender) {
    		this.gender = gender;
    	}
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    	public String getPhone() {
    		return phone;
    	}
    	public void setPhone(String phone) {
    		this.phone = phone;
    	}
    	public String getEmail() {
    		return email;
    	}
    	public void setEmail(String email) {
    		this.email = email;
    	}
    }
    

    MainView类

    主函数所在的类,其为主模块,负责菜单的显示和处理用户操作以及对数据库进行增删改查操作,其中该类下的成员方法仅供 MainView() 方法调用,该类中实现的主要有以下函数:

    import java.sql.ResultSet;
    
    public class MainView {
    	private DataManager dataManager;
    	
    	public static void main(String[] args) {
    		new MainView();
    	}
    	
    	public MainView() {
    		try {
    		//初始化dataManager
    		dataManager = new DataManager();
    		//链接数据库
    		dataManager.connetSql();
    		while (true) {
    		System.out.println("--客户信息管理软件--");
    		System.out.println("\t1 添 加 客 户");
    		System.out.println("\t2 修 改 客 户");
    		System.out.println("\t3 删 除 客 户");
    		System.out.println("\t4 客 户 列 表");
    		System.out.println("\t5 退 出");
    		System.out.println();
    		System.out.print("\t请选择(1-5):");
    				
    		switch (Tools.getMenu()) {
    				case 1:
    					addCustomer();
    					break;
    				case 2:
    					modifyCustomer();
    					break;
    				case 3:
    					delCustomer();
    					break;
    				case 4:
    					//查询客户列表
    					queryCustomerList();
    					break;
    				case 5:
    					dataManager.closeSql();
    				System.out.println("bye bye !");
    					return;
    				}
    			}
    		} catch (Exception e) {
    			// TODO: handle exception
    			System.out.println(e);
    		}
    	}
    	
    	/**
    	 * 修改客户信息
    	 */
    private void modifyCustomer() throws Exception {
    	/**
    	 * ---------------------修改客户---------------------
    	 *  请选择待修改客户编号(-1退出):1 姓名(张三):<直接回车表示不修改> 
    	 *  性别(男): 年龄(30): 电话(010-52776976): 		 		      	*  邮箱(zhang@abc.com):zsan@abc.com 
    	 * ---------------------修改完成---------------------
    	 */
    	System.out.println("--修改客户--");
    	System.out.print("请输入客户编号:");
    	int id = Tools.getNum();
    	if(id == -1) {
    		System.out.println("--取消修改--");
    		return;
    	}
    	//进入修改逻辑,
    	ResultSet rs = dataManager.getCustomer(id);
    	//保存数据条数
    	int num=0;
    	// 展开结果集数据库
       while(rs.next()){
           	num++;
           	Customer customer = new Customer();
           	customer.setId(id);
                //修改值
            System.out.print("姓名("+rs.getString("name")+"):");
            customer.setName(Tools.getStr(rs.getString("name")));
            System.out.print("性别("+rs.getString("gender")+"):");
            customer.setGender(Tools.getStr(rs.getString("gender")));
            System.out.print("年龄("+rs.getInt("age")+"):");
            customer.setAge(Tools.getNum(rs.getInt("age")));
            System.out.print("电话("+rs.getString("phone")+"):");
            customer.setPhone(Tools.getStr(rs.getString("phone")));
            System.out.print("邮箱("+rs.getString("email")+"):");
            customer.setEmail(Tools.getStr(rs.getString("email")));    
     		int num2=dataManager.modifyCustomer(customer);
            if(num2 == 1) {
            		System.out.println("--修改完成--");
            		return;
            	}
            	System.out.println("--修改失败--");
            }
            if(num==0) {
            	System.out.println("没有查到数据!");
            	return;
            }
    	}
    	/**
    	 * 删除客户信息
    	 */
    private void delCustomer() throws Exception {
    	/**
    	 * -------------------- 
    	 * 请选择待删除客户编号(-1退出):1 确认是否删除(Y/N):y 
    	 * --------------------
    	 */
    	System.out.println("--删除客户--");
    	System.out.print("请输入客户编号:");
    	int id = Tools.getNum();
    	if(id == -1) {
    		System.out.println("--取消删除--");
    		return;
    	}
    	System.out.print("确认是否删除(Y/N):");
    	String ynStr = Tools.getYn();
    	//取消删除
    	if(ynStr.equals("N")) {
    		System.out.println("--取消删除--");
    		return;
    	}
    	//确定删除
    	int num = dataManager.delCustomer(id);
    	if(num==0) {
    		System.out.println("--删除失败--");
    		return;
    	}
    	System.out.println("--删除完成--");
    }
    	
    /**
     * 添加用户
     */
    private void addCustomer() throws Exception {
    	System.out.println("--添加客户--");
    	Customer customer = new Customer();	
    	System.out.print("姓名:");
    	customer.setName(Tools.getStr());
    	
    	System.out.print("性别:");
    	customer.setGender(Tools.getStr());
    		
    	System.out.print("年龄:");
    	customer.setAge(Tools.getNum());
    		
    	System.out.print("电话:");
    	customer.setPhone(Tools.getStr());
    		
    	System.out.print("邮箱:");
    	customer.setEmail(Tools.getStr());
    		
    	int num = dataManager.addCustomer(customer);
    	//判断是否添加成功
    	if(num==1) {
    		System.out.println("--添加完成--");
    	}else {
    		System.out.println("--添加失败--");
    	}
    }
    /**
     * 查询客户信息
     * @throws Exception
     */
    public void queryCustomerList()throws Exception {
    	System.out.println("--客户列表--");
    	ResultSet rs = dataManager.getCustomerList();
    	
    	System.out.println("编号\t姓名\t性别\t年龄\t电话\t邮箱");
    	//保存数据条数
    	int num=0;
    	// 展开结果集数据库
          while(rs.next()){
           	num++;
              // 输出数据
                System.out.print(rs.getInt("id")+"\t");
                System.out.print(rs.getString("name")+"\t");
                System.out.print(rs.getString("gender")+"\t");
                System.out.print(rs.getInt("age")+"\t");
                System.out.print(rs.getString("phone")+"\t");
                System.out.print(rs.getString("email"));
                System.out.print("\n");
            }
            if(num==0) {
            	System.out.println("没有查到数据!");
            }
            // 完成后关闭
            rs.close();
    		System.out.println("--客户列表完成--");
    	}
    }
    

    Tools类

    该类主要对用户进行的输入的不合法数据进行修改,让用户输入数据合法

    import java.util.Scanner;
    
    public class Tools {
    	private static Scanner sc = new Scanner(System.in);
    	
    	/**
    	 * 得到y/n
    	 * @return
    	 */
    	public static String getYn() {
    		String ynStr;
    		
    		while (true) {
    			ynStr = getStr().toUpperCase();
    			if(ynStr.equals("Y") || ynStr.equals("N")) {
    				return ynStr;
    			}
    			System.out.print("输入错误,请输入y/n:");
    		}
    		
    	}
    	/**
    	 * 获得用户输入菜单
    	 * @return 菜单
    	 */
    	public static int getMenu() {
    		//菜单数字
    		int menuNum;
    		while (true) {
    			menuNum = getNum();
    			if(menuNum>=1 && menuNum<=5) {
    				return menuNum;
    			}
    			System.out.print("输入错误,请输入(1-5):");
    		}
    	}
    	
    	/**
    	 * 获得数字
    	 * @return
    	 */
    	public static int getNum() {
    		String numStr;
    		int num;
    		
    		while (true) {
    			numStr = getStr();
    			try {
    				num = Integer.parseInt(numStr);
    				return num;
    			} catch (Exception e) {
    				System.out.print("输入错误,请输入数字:");
    				continue;
    			}
    		}
    	}
    	/**
    	 * 获取数字,有默认值
    	 * @param num0
    	 * @return
    	 */
    	public static int getNum(int num0) {
    		String numStr;
    		int num;
    		
    		while (true) {
    			numStr = getStr("");
    			if(numStr.length() == 0) {
    				//直接回车
    				return num0;
    			}
    			try {
    				num = Integer.parseInt(numStr);
    				return num;
    			} catch (Exception e) {
    				System.out.print("输入错误,请输入数字:");
    				continue;
    			}
    		}
    	}
    	
    	
    	/**
    	 * 接收非空字符串
    	 * @return
    	 */
    	public static String getStr() {
    		String str;
    		while (true) {
    			str = sc.nextLine();
    			//直接回车,得到空字符串
    			if(str.length()==0) {
    				System.out.print("内容不许为空,重新输入:");
    				continue;
    			}
    			//字符串非空,返回
    			return str;
    		}
    	}
    	/**
    	 * 接收字符串,允许为空
    	 * @return
    	 */
    	public static String getStr(String str0) {
    		String str = sc.nextLine();
    		//直接回车,得到空字符串
    		if(str.length()==0) {
    			return str0;
    		}
    		//字符串非空,返回
    		return str;
    	}
    }
    

    DataManager类

    import java.util.Scanner;
    
    public class Tools {
    	private static Scanner sc = new Scanner(System.in);
    	
    	/**
    	 * 得到y/n
    	 * @return
    	 */
    	public static String getYn() {
    		String ynStr;
    		
    		while (true) {
    			ynStr = getStr().toUpperCase();
    			if(ynStr.equals("Y") || ynStr.equals("N")) {
    				return ynStr;
    			}
    			System.out.print("输入错误,请输入y/n:");
    		}
    		
    	}
    	/**
    	 * 获得用户输入菜单
    	 * @return 菜单
    	 */
    	public static int getMenu() {
    		//菜单数字
    		int menuNum;
    		while (true) {
    			menuNum = getNum();
    			if(menuNum>=1 && menuNum<=5) {
    				return menuNum;
    			}
    			System.out.print("输入错误,请输入(1-5):");
    		}
    	}
    	
    	/**
    	 * 获得数字
    	 * @return
    	 */
    	public static int getNum() {
    		String numStr;
    		int num;
    		
    		while (true) {
    			numStr = getStr();
    			try {
    				num = Integer.parseInt(numStr);
    				return num;
    			} catch (Exception e) {
    				System.out.print("输入错误,请输入数字:");
    				continue;
    			}
    		}
    	}
    	/**
    	 * 获取数字,有默认值
    	 * @param num0
    	 * @return
    	 */
    	public static int getNum(int num0) {
    		String numStr;
    		int num;
    		
    		while (true) {
    			numStr = getStr("");
    			if(numStr.length() == 0) {
    				//直接回车
    				return num0;
    			}
    			try {
    				num = Integer.parseInt(numStr);
    				return num;
    			} catch (Exception e) {
    				System.out.print("输入错误,请输入数字:");
    				continue;
    			}
    		}
    	}
    	
    	
    	/**
    	 * 接收非空字符串
    	 * @return
    	 */
    	public static String getStr() {
    		String str;
    		while (true) {
    			str = sc.nextLine();
    			//直接回车,得到空字符串
    			if(str.length()==0) {
    				System.out.print("内容不许为空,重新输入:");
    				continue;
    			}
    			//字符串非空,返回
    			return str;
    		}
    	}
    	/**
    	 * 接收字符串,允许为空
    	 * @return
    	 */
    	public static String getStr(String str0) {
    		String str = sc.nextLine();
    		//直接回车,得到空字符串
    		if(str.length()==0) {
    			return str0;
    		}
    		//字符串非空,返回
    		return str;
    	}
    	
    }
    

    调试结果

    1. 添加用户
      在这里插入图片描述

    2. 修改用户
      在这里插入图片描述

    3. 删除用户
      在这里插入图片描述

    4. 客户列表
      在这里插入图片描述

    5. 退出
      在这里插入图片描述

    课程设计体会

    此次课程设计,从最初的环境安装开始,到开发工具的配置及使用,模拟真实的开发流程,使我初步认识到了软件工程项目开发的过程。在此之间又初步学习了mysql的使用,工具类的使用以及怎么控制用户输入等科目。在老师的带领下完成了使用 JDBC 连接 MySQL 数据库,为今后的项目开发积累了宝贵经验。
    这次课程设计目标是制作一个与数据库连接的客户信息管理系统。采用MYSQL作为数据库进行持久化存储。在分析完项目需求后,便开始着手分析和搭建所需要的环境,学习框架和管理工具、开发工具的使用,之后便跟着老师一步步地进行代码的编写。
    在开发过程中,我发现自己还有很多不足之处。本次开发所用到的技术基本上都是第一次上手,从技术到MySQL使用都是第一次使用。这是我充分体验到只有学校学的知识是远不够独立完成一个项目的。知识常学常新,也许到我们真正参加工作时这一套生产环境也已过时,这启发我要有足够的学习能力以应对时代的发展。
    通过这次课程设计,使我灵活应用所学java知识,独立完成问题分析,结合java理论知识,编写程序求解指定问题。初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;并用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,在此过程中培养我们严谨的科学态度和良好的工作作风。熟练掌握数据的存储表示和基本操作的实现,能够利用MySQL高性能、动态扩缩容、高可用、易部署、易使用、海量数据存储、高压缩比的优势,并使用JDBC对数据库进行持久化访问。同时在这学期的’实验中,培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。
    在实验课上,我学会了很多学习的方法。虽然这个项目还有一些bug,但是它的思路我都学会了,它让我学会了独立思考问题还有很多方法。在今后的学习中我们要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我的将来也有很大的帮助。以后,不管有多苦,我想我都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我都可以在实验结束之后变的更加成熟,会面对需要面对的事情,以及学会遇到问题,不急不慌,慢慢解决它。
    这次实训为我提供了与众不同的学习方法和学习体会,从书本中面对现实,为我将来走上社会打下了扎实的基础。作为在校计算机专业的学生,现在我能做的就是吸取知识,提高自身的综合素质,提高自己的职业技能,自己有了能力,到时候才会是 “车到山前必有路”。我相信在不久的未来,会有属于我自己的一片天空。

    视频教程

    B站
    https://www.bilibili.com/video/BV1mq4y117Ej/
    百度网盘:
    https://pan.baidu.com/s/1J-CNriCeoQaFSvgl0T_aQQ?pwd=9t9t
    提取码: 9t9t

    展开全文
  • 用户信息管理系统

    千次阅读 热门讨论 2022-04-01 08:46:35
    该系统功能实现为javaSE+javaWb=用户信息管理系统; 该系统运用功能(包括但不限于):Servlet+JSP+MySQL+JDBCTemplate+Druid+BeanUtils+tomcat...... 该系统功能分类:登录信息验证码验证,简单增删改查,复杂...

    目录

    一、总结

    二、功能实现

    2.1 登录功能

    2.1.1 登录界面样式

    2.1.2 具体代码

    2.2 添加功能

    2.2.1 添加功能逻辑图

    2.2.2 用户信息列表样式(FindUserByPageServlet & list.jsp)

    2.2.3 添加功能(AddUserServlet & add.jsp)

    2.3 删除功能(DeleteUserServlet & delete.jsp)

    2.3.1 删除功能逻辑图

    2.3.2 删除提示框

    2.3.3 删除功能代码(DeleteUserServlet & delete.jsp)

    2.4 修改功能

    2.4.1 修改功能逻辑图

    2.4.2 修改样式

    2.4.3 修改功能代码(update.jsp & UpdateUserServlet)

    2.5 查询功能

    2.5.1 查询功能逻辑图

    2.5.2 查询功能样式

    2.5.3 查询功能代码

    三、一些包、一些特殊类、一些功能的实现


    一、总结


    该系统结合以前所学+现在所学=用户管理系统;

    该系统功能实现为javaSE+javaWb=用户信息管理系统;

    该系统运用功能(包括但不限于):Servlet+JSP+MySQL+JDBCTemplate+Druid+BeanUtils+tomcat......

    该系统功能分类:登录信息验证码验证,简单增删改查,复杂分页查询,复查条件查询;

    页面展示:

    用户信息管理系统.avi

    二、功能实现


    2.1 登录功能

    2.1.1 登录界面样式

     该界面功能:用户名&密码验证,验证码验证,错误信息提示

    2.1.2 具体代码

    展示界面:(login.jsp)

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="utf-8"/>
        <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
        <meta name="viewport" content="width=device-width, initial-scale=1"/>
        <title>管理员登录</title>
    
        <!-- 1. 导入CSS的全局样式 -->
        <link href="css/bootstrap.min.css" rel="stylesheet">
        <!-- 2. jQuery导入,建议使用1.9以上的版本 -->
        <script src="js/jquery-2.1.0.min.js"></script>
        <!-- 3. 导入bootstrap的js文件 -->
        <script src="js/bootstrap.min.js"></script>
    
        <script type="text/javascript">
            //切换验证码
            function refreshCode() {
                //1.获取验证码的图片对象
                var vcode = document.getElementById("vcode");
    
                //2.设置其src属性,加时间戳
                vcode.src="${pageContext.request.contextPath}/checkCodeServlet?time="+new Date().getTime();
            }
        </script>
    
    </head>
    
    <body>
    <div class="container" style="width: 400px;">
        <h3 style="text-align: center;">管理员登录</h3>
        <form action="${pageContext.request.contextPath}/loginServlet" method="post">
            <div class="form-group">
                <label for="user">用户名:</label>
                <input type="text" name="username" class="form-control" id="user" placeholder="请输入用户名"/>
            </div>
    
            <div class="form-group">
                <label for="password">密码:</label>
                <input type="password" name="password" class="form-control" id="password" placeholder="请输入密码"/>
            </div>
    
            <div class="form-inline">
                <label for="vcode">验证码:</label>
                <input type="text" name="verifycode" class="form-control" id="verifycode" placeholder="请输入验证码" style="width: 120px;"/>
                <a href="javascript:refreshCode()"><img src="${pageContext.request.contextPath}/checkCodeServlet" title="看不清点击刷新" id="vcode"/></a>
            </div>
            <hr/>
            <div class="form-group" style="text-align: center;">
                <input class="btn btn btn-primary" type="submit" value="登录">
            </div>
        </form>
    
        <!-- 出错显示的信息框 -->
        <div class="alert alert-warning alert-dismissible" role="alert">
            <button type="button" class="close" data-dismiss="alert" >
                <span>&times;</span>
            </button>
            <strong>${login_msg}</strong>
        </div>
    </div>
    </body>
    </html>

    后台实现界面:(LoginServlet)

    package cn.itcast.web.servlet;
    
    import cn.itcast.domain.User;
    import cn.itcast.service.UserService;
    import cn.itcast.service.impl.UserServiceImpl;
    import org.apache.commons.beanutils.BeanUtils;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import java.io.IOException;
    import java.lang.reflect.InvocationTargetException;
    import java.util.Map;
    
    @WebServlet("/loginServlet")
    public class LoginServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //1.设置编码
            request.setCharacterEncoding("utf-8");
    
            //2.获取数据
            //2.1获取用户填写验证码
            String verifycode = request.getParameter("verifycode");
            Map<String, String[]> map = request.getParameterMap();
    
            //3.验证码校验
            HttpSession session = request.getSession();
            String checkcode_server = (String) session.getAttribute("CHECKCODE_SERVER");
            //确保代码的一次性
            session.removeAttribute("CHECKCODE_SERVER");
    
            if (!checkcode_server.equalsIgnoreCase(verifycode)){
                //验证码不正确
                //提示信息
                request.setAttribute("login_msg", "验证码错误!");
                //跳转登录界面
                request.getRequestDispatcher("/login.jsp").forward(request, response);
    
                return;
            }
    
            //4.封装User对象
            User user=new User();
            try {
                BeanUtils.populate(user, map);
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
    
            //5.调用Service查询
            UserService service=new UserServiceImpl();
            User loginUser = service.login(user);
    
            //6.判断是否登录成功
            if (loginUser != null){
                //登录成功
                //将用户存入session
                session.setAttribute("user", loginUser);
                //跳转页面
                response.sendRedirect(request.getContextPath()+"/index.jsp");
            }else {
                //登录失败
                //提示信息
                request.setAttribute("login_msg","用户名或密码错误!");
                //跳转登录页面
                request.getRequestDispatcher("/login.jsp").forward(request, response);
            }
    
    
    
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }

     验证码实现界面:CheckCodeServlet

    package cn.itcast.web.servlet;
    
    import javax.imageio.ImageIO;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.util.Random;
    
    /**
     * 验证码
     */
    @WebServlet("/checkCodeServlet")
    public class CheckCodeServlet extends HttpServlet {
    	public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
    		
    		//服务器通知浏览器不要缓存
    		response.setHeader("pragma","no-cache");
    		response.setHeader("cache-control","no-cache");
    		response.setHeader("expires","0");
    		
    		//在内存中创建一个长80,宽30的图片,默认黑色背景
    		//参数一:长
    		//参数二:宽
    		//参数三:颜色
    		int width = 80;
    		int height = 30;
    		BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
    		
    		//获取画笔
    		Graphics g = image.getGraphics();
    		//设置画笔颜色为灰色
    		g.setColor(Color.GRAY);
    		//填充图片
    		g.fillRect(0,0, width,height);
    		
    		//产生4个随机验证码,12Ey
    		String checkCode = getCheckCode();
    		//将验证码放入HttpSession中
    		request.getSession().setAttribute("CHECKCODE_SERVER",checkCode);
    		
    		//设置画笔颜色为黄色
    		g.setColor(Color.YELLOW);
    		//设置字体的小大
    		g.setFont(new Font("黑体",Font.BOLD,24));
    		//向图片上写入验证码
    		g.drawString(checkCode,15,25);
    		
    		//将内存中的图片输出到浏览器
    		//参数一:图片对象
    		//参数二:图片的格式,如PNG,JPG,GIF
    		//参数三:图片输出到哪里去
    		ImageIO.write(image,"PNG",response.getOutputStream());
    	}
    	/**
    	 * 产生4位随机字符串 
    	 */
    	private String getCheckCode() {
    		String base = "0123456789ABCDEFGabcdefg";
    		int size = base.length();
    		Random r = new Random();
    		StringBuffer sb = new StringBuffer();
    		for(int i=1;i<=4;i++){
    			//产生0到size-1的随机值
    			int index = r.nextInt(size);
    			//在base字符串中获取下标为index的字符
    			char c = base.charAt(index);
    			//将c放入到StringBuffer中去
    			sb.append(c);
    		}
    		return sb.toString();
    	}
    	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		this.doGet(request,response);
    	}
    }
    

     当用户名&密码&验证码都正确的时候(存在BUG,管理员与用户的区别,现在只能登录管理员),就会跳转到index.jsp跳转页面,就可以查询所有用户信息。

    index.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="utf-8"/>
      <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
      <meta name="viewport" content="width=device-width, initial-scale=1"/>
      <title>首页</title>
    
      <!-- 1. 导入CSS的全局样式 -->
      <link href="css/bootstrap.min.css" rel="stylesheet">
      <!-- 2. jQuery导入,建议使用1.9以上的版本 -->
      <script src="js/jquery-2.1.0.min.js"></script>
      <!-- 3. 导入bootstrap的js文件 -->
      <script src="js/bootstrap.min.js"></script>
      <script type="text/javascript">
      </script>
    </head>
    <body>
    
    <div>${user.name},欢迎您!</div>
    
    <div align="center">
      <a
              href="${pageContext.request.contextPath}/findUserByPageServlet" style="text-decoration:none;font-size:33px">查询所有用户信息
      </a>
    </div>
    </body>
    </html>
    

    2.2 添加功能

    2.2.1 添加功能逻辑图

    2.2.2 用户信息列表样式(FindUserByPageServlet & list.jsp)

    findUserByPageServlet代码:

    package cn.itcast.web.servlet;
    
    import cn.itcast.domain.PageBean;
    import cn.itcast.domain.User;
    import cn.itcast.service.UserService;
    import cn.itcast.service.impl.UserServiceImpl;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.util.Map;
    
    @WebServlet("/findUserByPageServlet")
    public class FindUserByPageServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
            request.setCharacterEncoding("utf-8");
    
            //1.获取参数
            String currentPage = request.getParameter("currentPage");//当前页码
            String rows = request.getParameter("rows");//每页显示条数
    
            if (currentPage == null || "".equals(currentPage)) {
                currentPage = "1";
            }
            if (rows == null || "".equals(rows)) {
                rows = "5";
            }
    
    
            //获取条件查询参数
            Map<String, String[]> condition = request.getParameterMap();
    
            //2.调用service查询
            UserService service = new UserServiceImpl();
            PageBean<User> pb = service.findUserByPage(currentPage, rows,condition);
    
            //3.将PageBean存入request
            request.setAttribute("pb", pb);
            request.setAttribute("condition", condition);//将查询条件存入request
    
            //4.转发到list.jsp
            request.getRequestDispatcher("/list.jsp").forward(request, response);
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }

     list.jsp(※特别重要※)(信息展示的所有样式代码,增删改查所有功能按钮都在此页面)

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    <!DOCTYPE html>
    <!-- 网页使用的语言 -->
    <html lang="zh-CN">
    <head>
        <!-- 指定字符集 -->
        <meta charset="utf-8">
        <!-- 使用Edge最新的浏览器的渲染方式 -->
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <!-- viewport视口:网页可以根据设置的宽度自动进行适配,在浏览器的内部虚拟一个容器,容器的宽度与设备的宽度相同。
        width: 默认宽度与设备的宽度相同
        initial-scale: 初始的缩放比,为1:1 -->
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
        <title>用户信息管理系统</title>
    
        <!-- 1. 导入CSS的全局样式 -->
        <link href="css/bootstrap.min.css" rel="stylesheet">
        <!-- 2. jQuery导入,建议使用1.9以上的版本 -->
        <script src="js/jquery-2.1.0.min.js"></script>
        <!-- 3. 导入bootstrap的js文件 -->
        <script src="js/bootstrap.min.js"></script>
        <style type="text/css">
            td, th {
                text-align: center;
            }
        </style>
    
        <script>
            function deleteUser(id) {
                //用户安全提示
                if (confirm("您确定要删除吗?")){
                    //访问路径
                    location.href="${pageContext.request.contextPath}/delUserServlet?id="+id;
                }
            }
    
            window.onload=function () {
    
                //删除选中
                //给删除选中按钮添加单击事件
                document.getElementById("delSelected").onclick=function () {
                    //给出提示信息
                    if (confirm("您确定要删除选中条目吗?")){
                        var flag=false;
                        //判断是否有选中条目
                        var cbs=document.getElementsByName("uid");
                        for (var i = 0; i < cbs.length; i++) {
                            if (cbs[i].checked){
                                //至少有一个条目被选中
                                flag=true;
                                break;
                            }
                        }
    
                        if (flag){//有条目被选中
                            //表单提交
                            document.getElementById("form").submit();
                        }
                    }
                }
    
                //删除所有选中
                //1.获取第一个cb
                document.getElementById("firstCb").onclick=function () {
                    //2.获取下行列表中所有的cb
                    var cbs=document.getElementsByName("uid");
                    //3.遍历
                    for (var i = 0; i < cbs.length; i++) {
                        //4.设置这些cbs[i]的checked状态 = firstCb.checked
                        cbs[i].checked=this.checked;
                    }
                }
            }
    
        </script>
    
    </head>
    <body>
    <div class="container">
        <h3 style="text-align: center">用户信息列表</h3>
    
        <div style="float: left">
            <form class="form-inline" action="${pageContext.request.contextPath}/findUserByPageServlet" method="post">
                <div class="form-group">
                    <label for="exampleInputName2">姓名</label>
                    <input type="text" value="${condition.name[0]}" name="name" class="form-control" id="exampleInputName2">
                </div>
                <div class="form-group">
                    <label for="exampleInputName3">籍贯</label>
                    <input type="text" value="${condition.address[0]}" name="address" class="form-control" id="exampleInputName3">
                </div>
                <div class="form-group">
                    <label for="exampleInputEmail2">邮箱</label>
                    <input type="text" value="${condition.email[0]}" name="email" class="form-control" id="exampleInputEmail2">
                </div>
                <button type="submit" class="btn btn-default">查询</button>
            </form>
        </div>
    
        <div style="float: right;margin:5px">
            <a class="btn btn-primary" href="${pageContext.request.contextPath}/add.jsp">添加联系人</a>
            <a class="btn btn-primary" href="javascript:void(0);" id="delSelected">删除选中</a>
        </div>
    
        <form id="form" action="${pageContext.request.contextPath}/delSelectedServlet" method="post">
        <table border="1" class="table table-bordered table-hover">
            <tr class="success">
                <th><input type="checkbox" id="firstCb"></th>
                <th>编号</th>
                <th>姓名</th>
                <th>性别</th>
                <th>年龄</th>
                <th>籍贯</th>
                <th>QQ</th>
                <th>邮箱</th>
                <th>操作</th>
            </tr>
    
            <c:forEach items="${pb.list}" var="user" varStatus="s">
                <tr>
                    <td><input type="checkbox" name="uid" value="${user.id}"></td>
                    <td>${s.count}</td>
                    <td>${user.name}</td>
                    <td>${user.gender}</td>
                    <td>${user.age}</td>
                    <td>${user.address}</td>
                    <td>${user.QQ}</td>
                    <td>${user.email}</td>
                    <td><a class="btn btn-default btn-sm" href="${pageContext.request.contextPath}/findUserServlet?id=${user.id}">修改</a>&nbsp;
                        <a class="btn btn-default btn-sm" href="javascript:deleteUser(${user.id});">删除</a></td>
                </tr>
    
            </c:forEach>
        </table>
        </form>
    
        <div>
            <nav aria-label="Page navigation">
                <ul class="pagination">
    
                     <c:if test="${pb.currentPage == 1}">
                        <li class="disabled">
                            <span aria-hidden="true">&laquo;</span>
                        </li>
                     </c:if>
    
                     <c:if test="${pb.currentPage != 1}">
                         <li>
                             <a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${pb.currentPage-1}&rows=5&name=${condition.name[0]}&address=${condition.address[0]}&email=${condition.email[0]}" aria-label="Previous">
                                 <span aria-hidden="true">&laquo;</span>
                             </a>
                         </li>
                     </c:if>
    
    
    
                    <c:forEach begin="1" end="${pb.totalPage}" var="i">
    
                        <c:if test="${pb.currentPage==i}">
                            <li class="active"><a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${i}&rows=5&name=${condition.name[0]}&address=${condition.address[0]}&email=${condition.email[0]}">${i}</a></li>
                        </c:if>
    
                        <c:if test="${pb.currentPage!=i}">
                            <li><a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${i}&rows=5&name=${condition.name[0]}&address=${condition.address[0]}&email=${condition.email[0]}">${i}</a></li>
                        </c:if>
    
                    </c:forEach>
    
                    <c:if test="${pb.currentPage == pb.totalPage}">
                        <li class="disabled">
                            <span aria-hidden="true">&raquo;</span>
                        </li>
                    </c:if>
    
                    <c:if test="${pb.currentPage != pb.totalPage}">
                        <li>
                            <a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${pb.currentPage+1}&rows=5&name=${condition.name[0]}&address=${condition.address[0]}&email=${condition.email[0]}" aria-label="Next">
                                <span aria-hidden="true">&raquo;</span>
                            </a>
                        </li>
                    </c:if>
    
                    <span style="font-size: 25px;margin-left:5px ">
                        共${pb.totalCount}条记录,共${pb.totalPage}页
    
                    </span>
                </ul>
            </nav>
        </div>
    
    </div>
    </body>
    </html>

    2.2.3 添加功能(AddUserServlet & add.jsp)

    样式展示

    AddUserServlet代码

    package cn.itcast.web.servlet;
    
    import cn.itcast.domain.User;
    import cn.itcast.service.UserService;
    import cn.itcast.service.impl.UserServiceImpl;
    import org.apache.commons.beanutils.BeanUtils;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.lang.reflect.InvocationTargetException;
    import java.util.Map;
    
    @WebServlet("/addUserServlet")
    public class AddUserServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //1.设置编码
            request.setCharacterEncoding("utf-8");
            //2.获取参数
            Map<String, String[]> map = request.getParameterMap();
            //3.封装对象
            User user=new User();
            try {
                BeanUtils.populate(user, map);
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
            //4.调用Service保存
            UserService service=new UserServiceImpl();
            service.addUser(user);
            //5.跳转到userListServlet
            response.sendRedirect(request.getContextPath()+"/findUserByPageServlet");
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }

    add.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <!DOCTYPE html>
    <!-- 网页使用的语言 -->
    <html lang="zh-CN">
    <head>
        <!-- 指定字符集 -->
        <meta charset="utf-8">
        <!-- 使用Edge最新的浏览器的渲染方式 -->
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <!-- viewport视口:网页可以根据设置的宽度自动进行适配,在浏览器的内部虚拟一个容器,容器的宽度与设备的宽度相同。
        width: 默认宽度与设备的宽度相同
        initial-scale: 初始的缩放比,为1:1 -->
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
        <title>添加用户</title>
    
        <!-- 1. 导入CSS的全局样式 -->
        <link href="css/bootstrap.min.css" rel="stylesheet">
        <!-- 2. jQuery导入,建议使用1.9以上的版本 -->
        <script src="js/jquery-2.1.0.min.js"></script>
        <!-- 3. 导入bootstrap的js文件 -->
        <script src="js/bootstrap.min.js"></script>
    </head>
    <body>
    <div class="container">
        <center><h3>添加联系人页面</h3></center>
        <form action="${pageContext.request.contextPath}/addUserServlet" method="post">
            <div class="form-group">
                <label for="name">姓名:</label>
                <input type="text" class="form-control" id="name" name="name" placeholder="请输入姓名">
            </div>
    
            <div class="form-group">
                <label>性别:</label>
                <input type="radio" name="gender" value="男" checked="checked"/>男
                <input type="radio" name="gender" value="女"/>女
            </div>
    
            <div class="form-group">
                <label for="age">年龄:</label>
                <input type="text" class="form-control" id="age" name="age" placeholder="请输入年龄">
            </div>
    
            <div class="form-group">
                <label for="address">籍贯:</label>
                <select name="address" class="form-control" id="address">
                    <option value="广东">广东</option>
                    <option value="广西">广西</option>
                    <option value="湖南">湖南</option>
                </select>
            </div>
    
            <div class="form-group">
                <label for="QQ">QQ:</label>
                <input type="text" class="form-control" name="QQ" id="QQ" placeholder="请输入QQ号码"/>
            </div>
    
            <div class="form-group">
                <label for="email">Email:</label>
                <input type="text" class="form-control" name="email" id="email" placeholder="请输入邮箱地址"/>
            </div>
    
            <div class="form-group" style="text-align: center">
                <input class="btn btn-primary" type="submit" value="提交" />
                <input class="btn btn-default" type="reset" value="重置" />
                <input class="btn btn-default" type="button" value="返回" />
            </div>
        </form>
    </div>
    </body>
    </html>

    2.3 删除功能(DeleteUserServlet & delete.jsp)

    2.3.1 删除功能逻辑图

    简单删除功能

     删除选中功能(多选)

    2.3.2 删除提示框

    删除选中一个的时候,在修改旁的删除按钮提示框

    多选时,删除选中按钮提示框

    2.3.3 删除功能代码(DeleteUserServlet & delete.jsp)

    删除数据库中的数据

    删除功能的具体实现地址:list.jsp/javaScript

    <script>
            function deleteUser(id) {
                //用户安全提示
                if (confirm("您确定要删除吗?")){
                    //访问路径
                    location.href="${pageContext.request.contextPath}/delUserServlet?id="+id;
                }
            }
    
            window.onload=function () {
    
                //删除选中
                //给删除选中按钮添加单击事件
                document.getElementById("delSelected").onclick=function () {
                    //给出提示信息
                    if (confirm("您确定要删除选中条目吗?")){
                        var flag=false;
                        //判断是否有选中条目
                        var cbs=document.getElementsByName("uid");
                        for (var i = 0; i < cbs.length; i++) {
                            if (cbs[i].checked){
                                //至少有一个条目被选中
                                flag=true;
                                break;
                            }
                        }
    
                        if (flag){//有条目被选中
                            //表单提交
                            document.getElementById("form").submit();
                        }
                    }
                }
    
                //删除所有选中
                //1.获取第一个cb
                document.getElementById("firstCb").onclick=function () {
                    //2.获取下行列表中所有的cb
                    var cbs=document.getElementsByName("uid");
                    //3.遍历
                    for (var i = 0; i < cbs.length; i++) {
                        //4.设置这些cbs[i]的checked状态 = firstCb.checked
                        cbs[i].checked=this.checked;
                    }
                }
            }
    
        </script>

    DeleteUserServlet

    package cn.itcast.web.servlet;
    
    import cn.itcast.service.UserService;
    import cn.itcast.service.impl.UserServiceImpl;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/delSelectedServlet")
    public class DelSelectedServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //1.获取所有id
            String[] ids = request.getParameterValues("uid");
    
            //2.调用service删除
            UserService service=new UserServiceImpl();
            service.delSelectedUser(ids);
    
            //3.跳转查询所有Servlet
            response.sendRedirect(request.getContextPath()+"/findUserByPageServlet");
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }

    delSelectedUser(封装、继承、多态)

    @Override
    public void deleteUser(String id) {
        dao.delete(Integer.parseInt(id));
    }

    dao.delete();

     @Override
        public void delete(int id) {
            //1.定义sql
            String sql = "delete from user where id = ?";
            //2.执行sql
            template.update(sql, id);
        }

    2.4 修改功能

    2.4.1 修改功能逻辑图

    2.4.2 修改样式

    2.4.3 修改功能代码(update.jsp & UpdateUserServlet)

    update.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    <!DOCTYPE html>
    <!-- 网页使用的语言 -->
    <html lang="zh-CN">
        <head>
    
            <!-- 指定字符集 -->
            <meta charset="utf-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <title>修改用户</title>
    
            <link href="css/bootstrap.min.css" rel="stylesheet">
            <script src="js/jquery-2.1.0.min.js"></script>
            <script src="js/bootstrap.min.js"></script>
            
        </head>
        <body>
            <div class="container" style="width: 400px;">
            <h3 style="text-align: center;">修改联系人</h3>
            <form action="${pageContext.request.contextPath}/updateUserServlet" method="post">
    
                <%--隐藏域,提交id--%>
                <input type="hidden" name="id" value="${user.id}">
    
              <div class="form-group">
                <label for="name">姓名:</label>
                <input type="text" class="form-control" id="name" name="name" value="${user.name}" readonly="readonly" placeholder="请输入姓名" />
              </div>
    
              <div class="form-group">
                <label>性别:</label>
    
                  <c:if test="${user.gender == '男'}">
                      <input type="radio" name="gender" value="男" checked />男
                      <input type="radio" name="gender" value="女"  />女
                  </c:if>
    
                  <c:if test="${user.gender == '女'}">
                      <input type="radio" name="gender" value="男"  />男
                      <input type="radio" name="gender" value="女" checked />女
                  </c:if>
    
              </div>
    
              <div class="form-group">
                <label for="age">年龄:</label>
                <input type="text" class="form-control" id="age" value="${user.age}" name="age" placeholder="请输入年龄" />
              </div>
    
              <div class="form-group">
                <label for="address">籍贯:</label>
                 <select name="address" id="address" class="form-control" >
                     <c:if test="${user.address == '广东'}">
                         <option value="广东" selected>广东</option>
                         <option value="广西">广西</option>
                         <option value="湖南">湖南</option>
                         <option value="陕西" >陕西</option>
                         <option value="北京" >北京</option>
                     </c:if>
                     <c:if test="${user.address == '广西'}">
                         <option value="广东">广东</option>
                         <option value="广西" selected>广西</option>
                         <option value="湖南">湖南</option>
                         <option value="陕西" >陕西</option>
                         <option value="北京" >北京</option>
                     </c:if>
                     <c:if test="${user.address == '湖南'}">
                         <option value="广东">广东</option>
                         <option value="广西">广西</option>
                         <option value="湖南" selected>湖南</option>
                         <option value="北京" >北京</option>
                         <option value="陕西" >陕西</option>
                     </c:if>
                     <c:if test="${user.address == '陕西'}">
                         <option value="广东">广东</option>
                         <option value="广西">广西</option>
                         <option value="湖南" >湖南</option>
                         <option value="陕西" selected>陕西</option>
                         <option value="北京" >北京</option>
                     </c:if>
                     <c:if test="${user.address == '北京'}">
                         <option value="广东">广东</option>
                         <option value="广西">广西</option>
                         <option value="湖南" >湖南</option>
                         <option value="陕西" >陕西</option>
                         <option value="北京" selected>北京</option>
                     </c:if>
    
                </select>
              </div>
    
              <div class="form-group">
                <label for="QQ">QQ:</label>
                <input type="text" class="form-control" name="QQ" id="QQ" value="${user.QQ}" placeholder="请输入QQ号码"/>
              </div>
    
              <div class="form-group">
                <label for="email">Email:</label>
                <input type="text" class="form-control" name="email" id="email" value="${user.email}" placeholder="请输入邮箱地址"/>
              </div>
    
                 <div class="form-group" style="text-align: center">
                    <input class="btn btn-primary" type="submit" value="提交" />
                    <input class="btn btn-default" type="reset" value="重置" />
                    <input class="btn btn-default" type="button" value="返回"/>
                 </div>
            </form>
            </div>
        </body>
    </html>

    UpdateUserServlet

    package cn.itcast.web.servlet;
    
    import cn.itcast.domain.User;
    import cn.itcast.service.UserService;
    import cn.itcast.service.impl.UserServiceImpl;
    import org.apache.commons.beanutils.BeanUtils;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.lang.reflect.InvocationTargetException;
    import java.util.Map;
    
    @WebServlet("/updateUserServlet")
    public class UpdateUserServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //1.设置编码
            request.setCharacterEncoding("utf-8");
            //2.获取map
            Map<String, String[]> map = request.getParameterMap();
            //3.封装对象
            User user=new User();
            try {
                BeanUtils.populate(user, map);
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
            //4.调用Service修改
            UserService service=new UserServiceImpl();
            service.updateUser(user);
            //5.跳转到查询所有Servlet
            response.sendRedirect(request.getContextPath()+"/findUserByPageServlet");
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }

    2.5 查询功能

    2.5.1 查询功能逻辑图

    分页功能查询

    复杂条件分页查询

    2.5.2 查询功能样式

    查询框样式

     查询要求位置

    分页查询位置(特别要求,上一页下一页按钮在第一页和最后一页时不能再点击)

    2.5.3 查询功能代码

    查询用户:FindUserServlet

    package cn.itcast.web.servlet;
    
    import cn.itcast.domain.User;
    import cn.itcast.service.UserService;
    import cn.itcast.service.impl.UserServiceImpl;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/findUserServlet")
    public class FindUserServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //1.获取id
            String id = request.getParameter("id");
            //2.调用Service查询
            UserService service=new UserServiceImpl();
            User user=service.findUserById(id);
    
            //3.将user存入request中
            request.setAttribute("user", user);
            //4.转发到update.jsp
            request.getRequestDispatcher("/update.jsp").forward(request, response);
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    

    分页查询功能代码:FindUserByPageServlet

    package cn.itcast.web.servlet;
    
    import cn.itcast.domain.PageBean;
    import cn.itcast.domain.User;
    import cn.itcast.service.UserService;
    import cn.itcast.service.impl.UserServiceImpl;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.util.Map;
    
    @WebServlet("/findUserByPageServlet")
    public class FindUserByPageServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
            request.setCharacterEncoding("utf-8");
    
            //1.获取参数
            String currentPage = request.getParameter("currentPage");//当前页码
            String rows = request.getParameter("rows");//每页显示条数
    
            if (currentPage == null || "".equals(currentPage)) {
                currentPage = "1";
            }
            if (rows == null || "".equals(rows)) {
                rows = "5";
            }
    
    
            //获取条件查询参数
            Map<String, String[]> condition = request.getParameterMap();
    
            //2.调用service查询
            UserService service = new UserServiceImpl();
            PageBean<User> pb = service.findUserByPage(currentPage, rows,condition);
    
            //3.将PageBean存入request
            request.setAttribute("pb", pb);
            request.setAttribute("condition", condition);//将查询条件存入request
    
            //4.转发到list.jsp
            request.getRequestDispatcher("/list.jsp").forward(request, response);
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    

    三、一些包、一些特殊类、一些功能的实现


    看图说话:

     

     代码太多,所以我上传了。

    链接:https://pan.baidu.com/s/1Pn1mcnnmmZvvYTtBuS_itQ 
    提取码:ck3h

    展开全文
  • Java Web用户信息管理系统的简单设计(增删查改)

    千次阅读 多人点赞 2020-04-28 01:37:53
    用户信息管理系统 技术需求:Servlet +jsp+ mvc +jdbc 软件需求 :Eclipse mysql Tomcat Google 功能需求:完成用户登录 查询所有用户 增加删除用户信息等 数据库设计: 创建用户表 User 首先创建数据库用户表 ...

    用户信息管理系统


    技术需求:Servlet +jsp+ mvc +jdbc

    软件需求 :Eclipse mysql Tomcat Google

    功能需求:完成用户登录  查询所有用户 增加删除用户信息等

    数据库设计: 创建用户表 User


    首先创建数据库用户表 

    创建对应的实体类:User.java

    package cn.qlu.domin;
    
    public class User {
        private Integer uid;
        private String uname;
        private String pwd;
        private String sex;
        private Integer age;
    
        public Integer getUid() {
            return uid;
        }
    
        public void setUid(Integer uid) {
            this.uid = uid;
        }
    
        public String getUname() {
            return uname;
        }
    
        public void setUname(String uname) {
            this.uname = uname;
        }
    
        public String getPwd() {
            return pwd;
        }
    
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "uid=" + uid +
                    ", uname='" + uname + '\'' +
                    ", pwd='" + pwd + '\'' +
                    ", sex='" + sex + '\'' +
                    ", age=" + age +
                    '}';
        }
    }
    

     创建UserService接口及实现类

    创建UserDao接口及实现类

    创建用户登录页面:login.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
        <link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet">
        <script src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
        <title>用户登录页面</title>
        <style>
            .container{
                width: 300px;
                height: 600px;
            }
        </style>
    </head>
    <body>
    <div class="container" style="...">
        <h3 style="text-align:center">管理员登录</h3>
        <form action="/day13/loginServlet"  method="post">
            <div class="form-group">
                <label for="user">用户名</label>
                <input type="text" name="uname" class="form-control" id="user" placeholder="请输入用户名">
            </div>
    
            <div class="form-group">
                <label for="password">密码</label>
                <input type="password" name="pwd" class="form-control" id="password" placeholder="请输入密码">
            </div>  
            <hr/>
            <div class="form-group" style="...">
                <input class="btn btn btn-primary" type="submit" value="登录">
            </div>
        </form>
        <div class="alert alert-warning alert-dismissible" role="alert">
            <button type="button" class="close" data-dismiss="alert">
                <span ></span>
            </button>
            <strong>${login_msg}</strong>
        </div>
    </div>
    </body>
    </html>
    

     

    编写对应的loginServlet

    package cn.qlu.web.servlet;
    
    import cn.qlu.domin.User;
    import cn.qlu.service.UserService;
    import cn.qlu.service.impl.UserServiceImpl;
    import org.apache.commons.beanutils.BeanUtils;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.*;
    import java.io.IOException;
    import java.lang.reflect.InvocationTargetException;
    import java.util.Map;
    
    @WebServlet("/loginServlet")
    public class LoginServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("UTF-8");
            HttpSession session = request.getSession();
            Map<String,String[]> map = request.getParameterMap();
            User user = new User();
            try {
                BeanUtils.populate(user,map);
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
            //调用Service 查询
            UserService service = new UserServiceImpl();
            User loginUser = service.login(user);
            //判断是否登录成功
            if(loginUser!=null){
                //登录成功
                session.setAttribute("user",loginUser);
                response.sendRedirect(request.getContextPath()+"/index.jsp");
            }else{
                request.setAttribute("login_msg","用户名或密码错误!");
                request.getRequestDispatcher("/login.jsp").forward(request,response);
            }
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    }
    

    登录失败显示:

    登录成功后:

    创建list.jsp 即显示列表所有信息

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
        <link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet">
        <script src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
        <title>用户信息管理系统</title>
        <style type="text/css">
            td,th{
                text-align: center;
            }
        </style>
        <script>
            function deleteUser(uid) {
                if(confirm("您确定要删除吗")){
                    location.href="${pageContext.request.contextPath}/deleteUserServlet?uid="+uid;
                }
    
            }
            window.onload = function () {
                //给删除选中按钮添加单击事件
                document.getElementById("delSelected").onclick = function () {
                    //表单提交
                    document.getElementById("form").submit();
    
                }
            }
        </script>
    </head>
    <body>
    <div class="container">
        <h3 style="..." align="center">用户信息列表</h3>
        <div style="float: left;">
            <form class="form-inline">
                <div class="form-group">
                    <label for="exampleInputName2">姓名</label>
                    <input type="text" class="form-control" id="exampleInputName2" >
                </div>
                <div class="form-group">
                    <label for="exampleInputEmail2">性别</label>
                    <input type="email" class="form-control" id="exampleInputEmail2" >
                </div>
                <div class="form-group">
                    <label for="exampleInputEmail2">年龄</label>
                    <input type="email" class="form-control" id="exampleInputEmail3">
                </div>
                <button type="submit" class="btn btn-default">查询</button>
            </form>
        </div>
        <div style="float: right; margin:5px">
            <a class="btn btn-primary" href="add.jsp">增加联系人</a>
            <a class="btn btn-primary" href="javascript:void(0);" id="delSelected">删除选中</a>
        </div>
        <form id="form" action="/day13/DelSelectedServlet" method="post">
            <table border="1" class="table table-bordered table-hover">
                <tr class="success">
                    <th><input type="checkbox"></th>
                    <th>编号</th>
                    <th>姓名</th>
                    <th>密码</th>
                    <th>性别</th>
                    <th>年龄</th>
                    <th>操作</th>
                </tr>
                <c:forEach items="${users}" var="user" varStatus="s">
                    <tr>
                        <td><input type="checkbox" name="uid" value="${user.uid}"></td>
                        <td>${s.count}</td>
                        <td>${user.uname}</td>
                        <td>${user.pwd}</td>
                        <td>${user.sex}</td>
                        <td>${user.age}</td>
                        <td>
                            <a class="btn btn-default btn-sm" href="${pageContext.request.contextPath}/findUserServlet?uid=${user.uid}" />修改
                            <a class="btn btn-default btn-sm" href="javascript:deleteUser(${user.uid})" />删除
                        </td>
                    </tr>
                </c:forEach>
            </table>
        </form>
    
        <div>
            <nav aria-label="Page navigation">
                <ul class="pagination">
                    <li>
                        <a href="#" aria-label="Previous">
                            <span aria-hidden="true">&laquo;</span>
                        </a>
                    </li>
                    <li><a href="#">1</a></li>
                    <li><a href="#">2</a></li>
                    <li><a href="#">3</a></li>
                    <li><a href="#">4</a></li>
                    <li><a href="#">5</a></li>
                    <li>
                        <a href="#" aria-label="Next">
                            <span aria-hidden="true">&raquo;</span>
                        </a>
                    </li>
                    <span style="font-size: 22px;margin-left:20px" >
                        共16条记录,共四页
                    </span>
                </ul>
            </nav>
        </div>
    </div>
    </body>
    </html>
    

    查询所有用户: 

    增加联系人页面:

     修改联系人页面:

     删除页面:

     

     

    项目整体流程如上,因源码比较多展示不太方便,如有需要请留言~

     

     

    展开全文
  • charset=UTF-8" language="java" %> 欢迎登录后台管理系统 回首页 帮助 关于 X3D5S 之后模板添加name,默认的模板是空白的 因为要提交数据所以要放到form表单,验证码先不着急做 4 访问是否成功
  • 利用HTML+CSS3技术设计一个简单的用户信息管理系统,主要包含框架主页、我的工作台、用户注册、用户信息列表共计四个页面。 一、框架结构 二、我的工作台 三、用户注册 四、用户信息列表 源代码:...
  • 基于javaweb的客户信息管理系统搭建

    万次阅读 热门讨论 2017-08-15 22:29:19
    在写这篇博客之前,特意写下,本人暂时学生一名,也是趁暑假时间,学习一些新的技术,正好学习完拿来练手,花了一个星期多写好了完整的基于javaweb的客户信息管理系统,之所以花了很多时间,原因当然各种了,好了不...
  • Java图形界面开发—学生信息管理系统 完整源码

    千次下载 热门讨论 2017-02-28 21:36:13
    学生信息管理系统,使用Java开发。 1、登录界面可以进行登录操作。有俩种权限选择。分别跳转到不同的界面。 2、使用了事件监听、Java操作SQLserver数据库等知识。 3、图形化界面中使用了JTable等组件,将查询结果...
  • 基于JavaSpringMvc+mybatis实现学生信息管理系统

    万次阅读 多人点赞 2021-10-13 21:40:17
    Java经典基础毕设项目--学生信息管理系统详细设计【附源码】 主要模块设计如下: 使用Shiro权限管理框架,实现登录验证和登录信息的储存,根据不同的登录账户,分发权限角色,对不同页面url进行角色设置。 管理员...
  • Java+JSP+Mysql+Tomcat实现Web用户信息管理系统

    千次阅读 多人点赞 2021-06-21 22:47:25
    用户信息管理系统一、系统介绍1.软件环境2.系统功能3.数据库二、系统展示1.登录系统 一、系统介绍 1.软件环境 Java:jdk1.8 Mysql:8.0.13 Tomcat:8.5.23 2.系统功能 1.管理员登录系统 2.增加用户信息 3.修改用户...
  • C++ 信息管理系统

    万次阅读 多人点赞 2018-11-10 12:55:27
    有一个信息管理系统,要求检查每一个登录系统的用户(User)的用户名和口令,系统检查合格以后方可登录系统,用C++程序予以描述。 代码如下: #include&amp;lt;iostream&amp;gt; using namespace std...
  • 基于SSM搭建的学生信息管理系统项目源码+学习视频

    千次阅读 多人点赞 2020-07-04 21:36:07
    基于SSM搭建的学生信息管理系统目录1.为什么要编写学生信息管理系统2.编写学生信息管理系统的过程3.从项目实战中获取到的经验1.1编写项目的起因:疫情在家,每天足不出户,想着说捣鼓些玩意,因为这个学期学校开设了Java...
  • 一个基于SpringBoot+vue的学生信息管理系统详细设计

    万次阅读 多人点赞 2021-11-30 23:23:29
    主要功能:用户登录、用户管理、角色、菜单、灵活控制、sql监控、日志、老师、学生、班级、课程、选课、打分、成绩、新闻、通知公告、附件查看下载等功能
  • 这个系统的主要有三个角色权限,管理员、老师、学生,系统功能模块包括用户管理、班级信息管理、教师信息管理、学生信息管理、科目信息管理、成绩信息管理。 根据本系统的研究现状和发展趋势,系统从需求分析、结构...
  • 学校课程设计作业,完成一个简单的学生信息管理系统,考虑到系统实用性,把它做成了一个简单的能够使用的学生成绩管理系统,包含了学生信息管理,就当做练手吧。发一个博客,做展示用!!第一次做的一个比较完整的...
  • 完整javaEE学生信息管理系统

    千次阅读 多人点赞 2020-12-30 21:42:18
    基于javaweb的ssm学校教务管理系统(管理员,教师,学生)文章结构一、开发框架及业务方向1.开发环境2.开发框架3.整体业务二、项目结构及页面展示1.项目整体结构2.用户页面3.管理员页面***需要源码的加企鹅:...
  • 分为三类用户角色学生用户:修改个人信息、课程...管理员用户:学生管理、教师管理、课程管理、选课管理、成绩管理、院系设置、奖惩信息管理、管理员操作 用的java+MySQL数据库,cs架构。附带设计报告,建表合理规范。
  • 客户信息管理系统4—客户信息的查询 2、功能二:客户信息的查询 (1)查询的流程 (2)实现代码 2.1代码组成 index.jsp+ findAllCustomer.jsp+ FindAllServlet +CustomersService + CustomersDao+ ...
  • 校友信息管理系统

    千次阅读 2021-04-27 20:44:03
    校友信息管理系统作为一种方便校友之间联系的实用系统便应运而生。通过提供完善的校友信息管理服务和规范校友信息的管理,可以达到增进校友之间、校友与母校之间的感情,方便校友联系的目的。我
  • Python学生信息管理系统的开发

    千次阅读 2020-11-29 20:15:17
    # 第一题:设计一个全局变量,来保存很多个学生信息;学生(学号, 姓名,年龄...# 第三题:向用户提供根据学号查看指定学员具体信息,指定学号删除学员功能# 用来保存学生的所有信息stuInfos = []# 全局变量sno = ...
  • 学生信息管理系统课程设计报告.docx

    千次阅读 2020-12-17 07:01:16
    3、职责3.1分公司各部门3.1.1业务部门(1)负责接收订单/合同,与客户进行沟通,提供客户所有要求信息。(2)负责组织相关部门进行订单/合同评审。(3)负责编制“报价联系单”、“大货采购单/购销合同”。3.1.2技术部门(1...
  • C++实现一个基于mfc的学生信息管理系统

    万次阅读 多人点赞 2019-09-25 11:53:23
    本文设计的是学生信息管理系统,能够实现权限管理即不同的用户角色能够拥有不同的限,角色主要是学生、教师和管理员,针对不同的用户,有着不同的操作权限,学生角色只能够查看到学生基础信息,不能够进行删除和添加...
  • Java学生信息管理系统源码

    千次阅读 2019-12-24 11:24:10
    学生信息管理系统 功能说明 学生信息管理,包括学生、班级、院系、课程、成绩等的管理。 本程序仅供学习食用。 工程环境 JDK IntelliJ IDEA MySQL 运行说明 1、安装JDK。 2、导入SQL脚本并配置。 使用...
  • 学生信息管理系统代码

    万次阅读 2018-11-14 00:00:56
    #!/usr/bin/python #!coding:utf-8 ...#定义函数,系统菜单信息,帮助用户选择 def printStuSys(): print('**********学生信息查询系统***********') print(' 1.查询学生信息 ') print(' 2.增加学生信息 ...
  • java学生信息管理系统实训总结

    千次阅读 2019-06-25 15:54:10
    美好的时光总是过得飞快,感觉就是一眨眼的功夫,java学生信息管理系统的实训就已经接近尾声,虽然面对几百行一个属性需要手动码的我很无力,但是当那一个个代码完整无误的敲出来并且实现功能的时候,小小的成就感...
  • 目录 一、引言 2 二、对象与范围 2 展开用户需求获取 2 ...面对庞大的信息量需要有学生信息管理系统来提高学生管理工作的效率。通过这样的系统可以做到信息的规范化管理、科学性统计和快速查询、修改、增加、删
  • C#学生信息管理系统

    千次阅读 2020-02-29 08:59:21
    题目:学生信息管理系统 语言和环境 语言:C#,WinForms 环境:Visual Studio 2010,SQL Server 2008 实现目标 某学校要实现班级学生信息管理,要求使用.NET WinForms技术完成一个班级学生信息管理系统的开发,...
  • 如何自主搭建信息管理系统

    千次阅读 2020-12-11 10:55:37
    本文介绍一种信息化管理的新方案,能让普通用户自主搭建管理系统,适合管理人员、IT人员阅读。 一、引言 市场上的管理软件很多,琳琅满目,但要找到一款适合自己的,往往很难。这里介绍一个新方案,利用快速开发...
  • 基于C# 的学生信息管理系统

    千次阅读 多人点赞 2020-05-20 18:01:32
    最近发布的小项目或者说是毕设都是Java的居多,为了满足广大C#的爱好学习者,今天决定发布一个基于C#的学生信息管理系统。在学校管理中将计算机技术、数据库技术相结合,已成为现代学校管理信息化的重要标志之一。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,004,231
精华内容 801,692
关键字:

用户信息管理系统