客戶資訊管理系統
- 課程設計的題目及簡介
- 設計說明
- 程式流圖
- 程式清單
- Customer 類
- MainView類
- Tools類
- DataManager類
- 除錯結果
- 課程設計體會
- 視頻教程
課程設計的題目及簡介
客戶資訊管理系統,功能如下:
(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;
}
}
除錯結果
-
添加用戶

-
修改用戶

-
洗掉用戶

-
客戶串列

-
退出

課程設計體會
此次課程設計,從最初的環境安裝開始,到開發工具的配置及使用,模擬真實的開發流程,使我初步認識到了軟體工程專案開發的程序,在此之間又初步學習了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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/404119.html
標籤:其他
上一篇:新版軟體測驗定義詮釋
下一篇:解決VS2017啟動除錯C++程式時彈出/Community/Common7/IDE/PrivateAssemblies/plugin.vs.js 腳本錯誤的問題
