客户信息管理系统_销售找客户最好的app

客户信息管理系统_销售找客户最好的app客户信息管理系统课程设计的题目及简介设计说明程序流图程序清单Customer类MainView类Tools类DataManager类调试结果课程设计体会课程设计的题目及简介客户信息管理系统,功能如下:(1)添加客户信息(2)修改客户信息(3)删除客户数据(4)查询客户列表(5)所有数据通过JDBC保存到MySql数据库中1,数据库名:cms_hisoft2,表名:users3,字段列表和类型:id,int,主键,自动增长name,varchar(20),姓名gender,var

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

课程设计的题目及简介

客户信息管理系统,功能如下:
(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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/181052.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 【第二篇】Spring-Session实现Session共享Redis集群方式配置教程

    循序渐进,由易到难,这样才更有乐趣!概述本篇开始继续上一篇的内容基础上进行,本篇主要介绍Spring-Session实现配置使用Redis集群,会有两种配置方式,一种是Redis-Cluster,一种是Redis-Sentinel,并通过一个简单的demo进行实例演示!对Redis-Cluster和Redis-Sentinel不太懂,或者不知道在Windows下面如何搭建的…

  • 从高考落榜生到网络专家

    从高考落榜生到网络专家成功的背后,有着许多不为人知的故事,而正是这些夹杂着泪水和汗水的过去,才成就了一个个走 向成功的普通人——凌晨两点半,早已习惯了一个人坐在电脑前的我,望着屏幕,任思绪在暗夜的包容 下静静流淌,时光仿佛又定格在三年多前的那一刻:“283分”。那是被中国万千学子称为“黑色七 月”中的一天,下班回家的母亲从家门打开后说出的一个数字,虽然早知道自己不会考上大学,但如此 的成绩也多少出乎自己

    2022年10月22日
  • 20款优秀的免费代码编辑器

    20款优秀的免费代码编辑器Atom.io(Win7、Win8、OSX10.8、Linux)免费GitHub开发的文本编辑器Atom发布了0.177.0版,其中一个引入注目的变化是从Node.js切换到了io.js。io.js是Node.js的分支,Node.js社区发生分裂后由核心开发者在2014年12月创建的,已经发布了v1.1版,目前开发非常活跃。Atom是切换到io.js的一个重量级项目。At

  • 倍增Floyd「建议收藏」

    倍增Floyd有这样的一道题:给定一张图,求其中恰好经过mm条边的路径的长度最小值。(n<=200,m<=109)(n<=200,m<=10^9)对于这种题型,可以使用倍增Floyd求解。由于Floyd算法的奇特性质:每次加入一个点进行更新。如果我们把它改写为:for(inti=0;i<=n;i++)for(intj=0;j<=n;j++)for(intk=

  • navicat premium 激活码_通用破解码

    navicat premium 激活码_通用破解码,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • 使用Jquery+EasyUI进行框架项目开发案例解说之中的一个—员工管理源代码分享

    使用Jquery+EasyUI进行框架项目开发案例解说之中的一个—员工管理源代码分享

    2021年11月13日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号