电话薄程序java程序实现
程序员文章站
2022-04-22 10:57:45
...
实验项目名称电话薄程序
使用了数据库+JDBC+面向对象知识,主要分为五个功能页面,分别为添加记录、查找记录、修改记录、删除记录和排序记录。
实现这五个功能模块共创建了六个类:
1.App.java 程序的主类
2.Meau.java 菜单类或窗口类
3.Operate.java 功能实现类
4. Person.java 定义属性和方法
5. TelNotRegex.java 用户输入验证类
6. Package.java
运行后的信息:
数据库建table表:
CREATE TABLE telephone(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(32),
age INT,
sex VARCHAR(32),
telNum VARCHAR(32),
address VARCHAR(32)
);
SELECT *FROM telephone
具体代码实现部分:
App.java 程序的主类
package cn.itcast.datasource.Telephone;
import cn.itcast.datasource.JDBCUtils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;
public class App {
public static void main(String[] args) {
/*获取连接池方法*/
JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
Menu m = new Menu();
m.mainMenu();
}
}
Meau.java 菜单类或窗口类
import cn.itcast.datasource.JDBCUtils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.Scanner;
public class Menu {
static Operate o = new Operate();
Scanner sc = new Scanner(System.in);
/*获取连接池方法*/
JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
public void mainMenu() {
System.out.println("**************电话薄系统**************");
System.out.println("**************************************");
System.out.println("** 1 添加记录 **");
System.out.println("** 2 查找记录 **");
System.out.println("** 3 修改记录 **");
System.out.println("** 4 删除记录 **");
System.out.println("** 5 排序记录 **");
System.out.println("** 6 退出记录 **");
System.out.println("**************************************");
System.out.println("请输入正确的数字,最小是:1 最大是:6");
int select = sc.nextInt();
switch (select) {
case 1:
addMenu (); //添加用户菜单
break;
case 2:
searchMenu (); //查找用户菜单
break;
case 3:
modifyMenu (); //修改用户信息主菜单
break;
case 4:
deleteMenu ();// 删除用户信息菜单
break;
case 5:
orderMenu (); //排序用户信息菜单
break;
case 6: {
//一旦退出系统自动清空所有的订单信息
String sql = "TRUNCATE TABLE telephone";
template.update(sql);
System.out.println("欢迎下次使用????????????");
System.exit(0);//退出
}
}
}
public void addMenu (){
System.out.println("****************添加记录**************");
System.out.println("**************************************");
System.out.println("** 1 添加新记录 **");
System.out.println("** 2 查找全记录 **");
System.out.println("** 3 返回上一级 **");
System.out.println("**************************************");
System.out.println("请输入正确的数字,最小是:1 最大是:3");
o.addLogic();
}
public void searchMenu (){
o.empty();
// searchLogic() 用户查询信息业务逻辑控制
System.out.println("****************查找记录**************");
System.out.println("**************************************");
System.out.println("** 1 按姓名查找 **");
System.out.println("** 2 按年龄查找 **");
System.out.println("** 3 按性别查找 **");
System.out.println("** 4 按号码查找 **");
System.out.println("** 5 按住址查找 **");
System.out.println("** 6 查看全记录 **");
System.out.println("** 7 返回上一级 **");
System.out.println("**************************************");
System.out.println("请输入正确的数字,最小是:1 最大是:7");
o.searchLogic();
}
// modifyMenu () 修改用户信息主菜单
public void modifyMenu (){
o.empty();
System.out.println("****************修改记录**************");
System.out.println("**************************************");
System.out.println("** 1 查看全记录 **");
System.out.println("** 2 修改指定记录 **");
System.out.println("** 3 返回上一级 **");
System.out.println("**************************************");
System.out.println("请输入正确的数字,最小是:1 最大是:3");
o.modifyLogicLogic();
}
public void modify(){
System.out.println("****************修改记录**************");
System.out.println("**************************************");
System.out.println("** 1 修改姓名 **");
System.out.println("** 2 修改年龄 **");
System.out.println("** 3 修改性别 **");
System.out.println("** 4 修改号码 **");
System.out.println("** 5 修改住址 **");
System.out.println("** 6 返回上一级 **");
System.out.println("**************************************");
System.out.println("请输入正确的数字,最小是:1 最大是:6");
}
// deleteLogic() 删除信息业务逻辑控制
public void deleteMenu (){
o.empty();
System.out.println("****************删除记录**************");
System.out.println("**************************************");
System.out.println("** 1 查看全记录 **");
System.out.println("** 2 删除指定记录 **");
System.out.println("** 3 删除全部记录 **");
System.out.println("** 4 返回上一级 **");
System.out.println("**************************************");
System.out.println("请输入正确的数字,最小是:1 最大是:4");
o.deleteLogic();
}
//排序用户信息菜单
public void orderMenu (){
o.empty();
System.out.println("****************排序记录**************");
System.out.println("**************************************");
System.out.println("** 1 按姓名排序 **");
System.out.println("** 2 按年龄排序 **");
System.out.println("** 3 按性别排序 **");
System.out.println("** 4 查看全记录 **");
System.out.println("** 5 返回上一级 **");
System.out.println("**************************************");
System.out.println("请输入正确的数字,最小是:1 最大是:5");
o.orderLogic();
}
}
Operate.java 功能实现类
import cn.itcast.datasource.JDBCUtils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class Operate {
/*获取连接池方法*/
JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
static Menu m = new Menu();
TelNoteRegex tel = new TelNoteRegex();
Scanner sc = new Scanner(System.in);
Package pk =new Package();
int count = 100;//电话薄的内存
int s;//定义全局变量s
int choice;
Long tot;
//用户信息为空的时候,输出提示信息
public void empty(){
tot = pk.total();
if(tot==0){
System.out.println("对不起,还未存储,请存储后操作!!!");
m.mainMenu();
}
}
//查找是判断用户是否存在
public void judge(List list){
if(list != null && !list.isEmpty()){
System.out.println(list);
}else{
System.out.println("查找的用户不存在,请核对后查找!");
}
}
// ddLogic() 用户添加信息业务逻辑控制
public void addLogic() {
int select = sc.nextInt();
select= tel.selectRegex(select);
switch (select) {
case 1:
addOperation();//添加新记录
m.mainMenu();
case 2:
showAll();//查看全记录
m.mainMenu();
case 3:
m.mainMenu();//返回上级菜单
break;
}
}
//更新表中的数据
public void addOperation() {
for (int j = s; j <= count; j++) {//限定数据库表长
++s;
if (s <= count) { //添加电话薄信息
//添加一条记录,为每一个电话薄的电话号码初始置为123456
String sql = "insert into telephone(telNum )values (?)";
template.update(sql, "123456");
System.out.println("s的值"+s);
System.out.println("输入姓名,1-10位字母");
String name = sc.next();
tel.nameRegex(name);
//判断用户名是否已存在
String sql9= "select *from telephone where name = ?";
List<Map<String, Object>> list1 = template.queryForList(sql9, name);
if(list1 != null && !list1.isEmpty()){
System.out.println("用户名已存在,请核对后重新输入!");
//删除当前添加的空白行
String sql10 ="delete from telephone where id = ?";
// System.out.println("未减之前的"+s);
template.update(sql10,s);
s--;
// System.out.println("减完之后的"+s);
m.addMenu();
}else{
tel.nameRegex(name);
}
//对数据库内容重新排序
pk.update();
//更新表中的数据
String sql1 = "update telephone set name = ? where id = ?";
template.update(sql1, name, s);
System.out.println("输入年龄,1-100岁");
int age = sc.nextInt();
tel.ageRegex(age);
String sql2 = "update telephone set age = ? where id = ?";
template.update(sql2, age, s);
System.out.println("输入性别,(男 m or M) (女 f or F)");
String sex = sc.next();
tel.sexRegex(sex);
String sql3 = "update telephone set sex = ? where id = ?";
template.update(sql3, sex, s);
System.out.println("输入电话号码,6-10位字母");
String telNum = sc.next();
tel.telNumRegex(telNum);
String sql4 = "update telephone set telNum = ? where id = ?";
template.update(sql4, telNum, s);
System.out.println("输入地址,1-20位字母或数字");
String address = sc.next();
tel.addressRegex(address);
System.out.println(address);
String sql5 = "update telephone set address = ? where id = ?";
template.update(sql5, address, s);
System.out.println("添加成功!");
break;
} else {
System.out.println("对不起,电话薄内存已满!");
break;
}
}
}
public void showAll() {
//遍历telephone表
String sql = "select * from telephone";
List<Map<String, Object>> list = template.queryForList(sql);
for (Map<String, Object> stringObjectMap : list) {
System.out.println(stringObjectMap);
}
}
// searchLogic() 用户查询信息业务逻辑控制
public void searchLogic(){
int select = sc.nextInt();
select= tel.selectRegex(select);
switch (select){
case 1:
searchByName();//按姓名查询用户信息
m.mainMenu();
case 2:
searchByAge();//按年龄查询用户信息
m.mainMenu();
case 3:
searchBySex();// 按性别查询用户信息
m.mainMenu();
case 4:
searchByTelNum();// 按电话号码查询用户信息
m.mainMenu();
case 5:
searchByAdd();// 按地址查询用户信息
m.mainMenu();
case 6:
showAll();// 查询全部用户信息
m.mainMenu();
case 7:
m.mainMenu();//返回上级菜单
break;
}
}
public void searchByName(){
System.out.println("输入姓名,1-10位字母");
String name = sc.next();
tel.nameRegex(name);
String sql = "select *from telephone where name = ?";
List<Map<String, Object>> list = template.queryForList(sql, name);
judge(list);
}
public void searchByAge(){
System.out.println("输入年龄,1-100岁");
int age = sc.nextInt();
tel.ageRegex(age);
String sql = "select *from telephone where age = ?";
List<Map<String, Object>> list = template.queryForList(sql, age);
judge(list);
}
public void searchBySex(){
System.out.println("输入性别,(男 m or M) (女 f or F)");
String sex = sc.next();
tel.sexRegex(sex);
String sql = "select *from telephone where sex = ?";
List<Map<String, Object>> list = template.queryForList(sql, sex);
judge(list);
}
public void searchByTelNum(){
System.out.println("输入电话号码,6-10位字母");
String telNum = sc.next();
tel.telNumRegex(telNum);
String sql = "select *from telephone where telNum = ?";
List<Map<String, Object>> list = template.queryForList(sql, telNum);
judge(list);
}
public void searchByAdd(){
System.out.println("输入地址,1-20位字母或数字");
String address = sc.next();
tel.addressRegex(address);
String sql = "select *from telephone where address = ?";
List<Map<String, Object>> list = template.queryForList(sql, address);
judge(list);
}
// modifyLogicLogic() 修改信息业务逻辑控制
public void modifyLogicLogic(){
int select = sc.nextInt();
select= tel.selectRegex(select);
switch (select){
case 1:
showAll();//查看全记录
m.mainMenu();
case 2:
modify();// 修改指定用户信息
m.mainMenu();
case 3:
m.mainMenu();//返回上级菜单
}
}
public void modify(){
System.out.println("请输入记录序号:");
System.out.println("请输入正确的数字:最小是 1 最大是 "+tot);
choice=sc.nextInt();
m.modify();
int select = sc.nextInt();
select= tel.selectRegex(select);
switch (select){
case 1:
modifyByName();// 按姓名
m.modifyMenu();
case 2:
modifyByAge();// 按年龄
m.modifyMenu();
case 3:
modifyBySex();// 按性别
m.modifyMenu();
case 4:
modifyByTelNum();// 按电话号码
m.modifyMenu();
case 5:
modifyByAdd();// 按地址
m.modifyMenu();
case 6:
m.modifyMenu();//返回上级菜单
break;
}
}
public void modifyByName(){
String sql = "update telephone set name = ? where id = ?";
System.out.println("输入姓名,1-10位字母");
String name = sc.next();
tel.nameRegex(name);
template.update(sql,name,choice);
System.out.println("姓名,修改成功!");
}
public void modifyByAge(){
String sql = "update telephone set age = ? where id = ?";
System.out.println("输入年龄,1-100岁");
int age = sc.nextInt();
tel.ageRegex(age);
template.update(sql,age,choice);
System.out.println("年龄,修改成功!");
}
public void modifyBySex(){
String sql = "update telephone set sex = ? where id = ?";
System.out.println("输入性别,(男 m or M) (女 f or F)");
String sex = sc.next();
tel.sexRegex(sex);
template.update(sql,sex,choice);
System.out.println("性别,修改成功!");
}
public void modifyByTelNum(){
String sql = "update telephone set telNum = ? where id = ?";
System.out.println("输入电话号码,6-10位字母");
String telNum = sc.next();
tel.telNumRegex(telNum);
template.update(sql,telNum,choice);
System.out.println("电话号码,修改成功!");
}
public void modifyByAdd(){
String sql = "update telephone set address = ? where id = ?";
System.out.println("输入地址,1-20位字母或数字");
String address = sc.next();
tel.addressRegex(address);
template.update(sql,address,choice);
System.out.println("地址,修改成功!");
}
public void deleteLogic(){
int select = sc.nextInt();
select= tel.selectRegex(select);
switch (select){
case 1:
showAll();//查看全记录
m.deleteMenu();
case 2:
delete();// 删除指定用户信息
m.deleteMenu();
case 3:
deleteAll();// 删除全部用户信息
m.deleteMenu();
case 4:
m.mainMenu();//返回上级菜单
break;
}
}
public void delete(){
System.out.println("请输入正确的数字:最小是 1 最大是 "+tot);
System.out.println("请输入记录序号:");
int select = sc.nextInt();
String sql = "delete from telephone where id = ?";
template.update(sql,select);
System.out.println("删除成功,请继续操作!");
//对数据库内容重新排序
pk.update();
}
public void deleteAll(){
String sql = "TRUNCATE TABLE telephone";
template.update(sql);
System.out.println("电话薄内容已清空,请继续操作!");
m.mainMenu();
}
// orderLogic() 排序信息业务逻辑控制
public void orderLogic(){
int select = sc.nextInt();
select= tel.selectRegex(select);
switch (select){
case 1:
orderName();//按姓名排序用户信息
m.orderMenu();
case 2:
orderAge();//按年龄排序用户信息
m.orderMenu();
case 3:
orderSex();// 按性别排序用户信息
m.orderMenu();
case 4:
showAll();
case 5:
m.mainMenu();//返回上级菜单
break;
}
}
public void orderName(){
System.out.println("按姓名排序后的结果:");
String sql ="SELECT * FROM telephone ORDER BY name asc";
List<Map<String,Object>> list = template.queryForList(sql);
for (Map<String,Object>stringObjectMap:list){
System.out.println(stringObjectMap);
}
}
public void orderAge(){
System.out.println("按年龄排序后的结果:");
String sql ="SELECT * FROM telephone ORDER BY age DESC";
List<Map<String,Object>> list = template.queryForList(sql);
for (Map<String,Object>stringObjectMap:list){
System.out.println(stringObjectMap);
}
}
public void orderSex(){
System.out.println("按性别排序后的结果:");
String sql ="SELECT * FROM telephone ORDER BY sex asc";
List<Map<String,Object>> list = template.queryForList(sql);
for (Map<String,Object>stringObjectMap:list){
System.out.println(stringObjectMap);
}
}
}
Person.java 定义属性和方法
public class Person {
private int id; //用户ID 属性
private String name;// 用户姓名属性
private int age;// 用户年龄属性
private String sex; //用户性别属性
private String telNum;// 用户电话号码属性
private String address; //用户地址属性
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", age='" + age + '\'' +
", sex='" + sex + '\'' +
", telNum='" + telNum + '\'' +
", address='" + address + '\'' +
'}';
}
public Person() {
}
public Person(int id, String name, int age, String sex, String telNum, String address) {
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
this.telNum = telNum;
this.address = address;
}
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getTelNum() {
return telNum;
}
public void setTelNum(String telNum) {
this.telNum = telNum;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
TelNotRegex.java 用户输入验证类
import cn.itcast.datasource.JDBCUtils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.Scanner;
public class TelNoteRegex {
/*获取连接池方法*/
static JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
static Scanner sc = new Scanner(System.in);
static Operate o =new Operate();
static Package pk = new Package();
public static int selectRegex(int select){
while (true){
if (select<0||select>10){
System.out.println("您的输入操作不正确!请重新输入");
select=sc.nextInt();
selectRegex(select);
}else {
break;
}
}
return select;
}
public static String nameRegex(String name){
while (true){
if(name.length()<1||name.length()>10){
System.out.println("您的输入操作不正确!请重新输入");
name = sc.next();
}else {
break;
}
}
return name;
}
public static int ageRegex(int age){
while (true){
if (age<1||age>138){
System.out.println("您的输入操作不正确!请重新输入");
age=sc.nextInt();
ageRegex(age);
}else {
break;
}
}
return age;
}
public static String sexRegex(String sex){
while (true){
String str = "m";
if(!(sex.equals("m") || sex.equals("M") || sex.equals("f") || sex.equals("F"))) {
System.out.println("您的输入操作不正确!请重新输入");
sex = sc.next();
sexRegex(sex);
}else {
break;
}
}
return sex;
}
public static String telNumRegex(String telNum){
boolean a = false,b;
char[]ch=telNum.toCharArray();
for (int i = 0; i <ch.length ; i++) {
if (ch[i]>='1'&&ch[i]<='9'){
a=true;
}else {
a=false;
}
}
if(telNum.length()<=11||telNum.length()>=6){
b=true;
}else {
b=false;
}
if(!a&&b){
System.out.println("您的输入操作不正确!请重新输入");
telNum=sc.next();
telNum=telNumRegex(telNum);
}
return telNum;
}
public static String addressRegex(String address){
while (true){
int len = address.length();
if (len>20||len<1){
System.out.println("您的输入操作不正确!请重新输入");
address=sc.next();
address=addressRegex(address);
}else {
break;
}
}
return address;
}
}
Package.java
import cn.itcast.datasource.JDBCUtils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;
public class Package {
JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource()); /*获取连接池方法*/
public Long total(){
//查询telephone表的总记录数
String sql= "select count(Id) from telephone";
Long total = template.queryForObject(sql,Long.class);
return total;
}
//对数据库内容按id值重新排序
public void update() {
String sql1="ALTER TABLE telephone DROP id";
String sql2="ALTER TABLE telephone ADD id INT(3) NOT NULL FIRST";
String sql3="ALTER TABLE telephone MODIFY COLUMN id INT( 3 ) NOT NULL AUTO_INCREMENT,ADD PRIMARY KEY(id)";
template.update(sql1);
template.update(sql2);
template.update(sql3);
}
}
如需源码请访问百度网盘链接:
https://pan.baidu.com/s/1Xs3vpKn2zTNX6ZlAih0UVQ
提取码:81kw