说明书内页
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
目录
一、设计题目 (1)
二、设计目的 (1)
三、设计分析 (1)
四、总体设计 (1)
五、详细设计 (3)
六、结论 (7)
七、附录 (8)
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊一.设计题目
汽车4S客户信息管理系统
二.设计目的。
随着经济的发展,越来越多人拥有私家车,商家如果想提高竞争力,就必须给客户提供优质的服务,这样就需要把客户的信息记录下来,方便给用户提供服务,这样就需要很大的数据量,如果用手记非常麻烦,这个时候就需要有一个系统来记录用户的信息而且可以快速定位和查询用户的信息,这就是这个系统设计的目的。
三.设计分析(包括需求分析):
1.技术架构分析
4S客户信息管理系统主要是对客户进行管理,运用的主要技术eclipse rcp;采用的数据库是mysql;采用的语言为java语言。
2.功能需求分析
主要实现功能有:
①客户信息录入
②客户信息维护
③删除客户信息
④按条件检索客户信息
四.总体设计
(程序主要模块和数据库设计)其中数据库设计给出数据库逻辑结构设计(即设
计出来的具体数据表)。
1.添加效果图
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊2.修改效果图
3.查询效果图
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊4.数据库表结构
五.详细设计
(包括数据库实现和各功能的实现);(其中,数据库实现指 -访问数据库部分要使用封装类包括数据库、数据表的链接,数据的更新、插入、删除和查询等根据功能模块设计,所有功能都是通过调用封装数据库类实现的。
1.添加影片
通过获取各个框里的值同过调用数据库封装类的update方法,插入影片表,这样就达到添加影片记录的目的了。
程序主要实现代码
public void widgetSelected(SelectionEvent e) {
MessageBox box = new MessageBox(new Shell());
String name = text.getText();
String brand = combo.getText();
String price = text_2.getText();
String type = combo_1.getText();
if(name.trim().equals("")){
box.setText("系统消息");
box.setMessage("客户姓名不能为空!");
box.open();
}else if(price.trim().equals("")){
box.setText("系统消息");
box.setMessage("车价不能为空!");
box.open();
}
else{
String sql = "insert into car (name,brand,type,price) values ('"+name+"','"+brand+"','"+type+"',"+price+")";
int i =db.update(sql);
box.setText("系统消息");
box.setMessage("添加成功^-^");
box.open();
text.setText("");
text_2.setText("");
getList();
}
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
}
程序运行效果图
2.删除影片
首先获取选中记录的id。
然后根据id对影片表的记录进行删除程序主要实现代码
public void widgetSelected(SelectionEvent e) {
MessageBox box = new MessageBox(new Shell());
TableItem tableItem = table.getItem(table.getSelectionIndex());
String id = tableItem.getText(0);
boolean flag = MessageDialog.openConfirm(RcpUtil.getPage()
.getWorkbenchWindow().getShell(), "系统消息", "确定删除吗?");
if (flag == true) {
int i = db
.update("delete from car where code = "+ id + "");
if (i != 0) {
box.setText("系统消息");
box.setMessage("删除成功");
box.open();
getList();
}
else {
box.setText("系统消息");
box.setMessage("删除失败!");
box.open();
}
}
}
3.修改影片
首先要获取选中记录,然后获取选中记录的值。
之后传到一个dialog 里然通过dialog里的页面进行修改
程序主要实现代码
打开dialog的代码:
public void widgetSelected(SelectionEvent e) {
TableItem tableItem = table.getItem(table.getSelectionIndex());
String id = tableItem.getText(0);
String name = tableItem.getText(1);
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
String price = tableItem.getText(4);
Update1 update1 = new Update1(container.getShell(), SWT.NONE);
Object result = update1.open(id, name, price);
if (result != null && result.toString().equals("成功")) {
table.removeAll();
getList();
}
}
}
实现修改的代码:
public void widgetSelected(SelectionEvent e) {
MessageBox box = new MessageBox(shell);
String sql = "update car set name = '"
+ text_1.getText() + "',price = '"+text_2.getText()+"' where code = "
+ Integer.parseInt(text.getText()) + "";
System.out.println(sql);
int i = db.update(sql);
Boolean flag = MessageDialog.openConfirm(RcpUtil.getPage()
.getWorkbenchWindow().getShell(), "系统消息",
"确定修改这个客户信息吗?");
if (flag) {
if (i != 0) {
box.setText("系统消息");
box.setMessage("修改成功");
box.open();
result = "成功";
shell.dispose();
} else {
box.setText("系统消息");
box.setMessage("修改失败!");
box.open();
}
}
}
4.查询影片
查询影片可以查询所有影片,也可以按照条件检索所需要的影片程序主要实现代码
在表单中列出所有数据的代码:
p public void getList() {
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
table.removeAll();
List<Map<String, Object>> list = db.query("select * from car");
for (int i = 0; i < list.size(); i++) {
Map<String, Object> map = list.get(i);
TableItem tableItem = new TableItem(table, SWT.NONE);
tableItem.setText(0, map.get("code").toString());
tableItem.setText(1, map.get("name").toString());
tableItem.setText(2, map.get("brand").toString());
tableItem.setText(3, map.get("type").toString());
tableItem.setText(4, map.get("price").toString());
}
}
实现条件查询的代码:
p public void widgetSelected(SelectionEvent e) {
MessageBox box = new MessageBox(new Shell());
String code = text_1.getText();
String brand = combo_2.getText();
String sql = "select * from car where 1=1 ";
if(code.trim().length() == 0&&brand.trim().length() == 0){
box.setText("系统消息");
box.setMessage("客户编号和车品牌不能都为空!");
box.open();
}else{
if (code.trim().length() != 0){
sql = sql + " and code = "+Integer.parseInt(code)+"";
}
if (brand.trim().length() != 0){
sql = sql + " and brand = '"+brand+"'";
}
table.removeAll();
List<Map<String, Object>> list = db.query(sql);
if (list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
Map<String, Object> map = list.get(i);
TableItem tableItem = new TableItem(table, SWT.NONE);
tableItem.setText(0,
map.get("code").toString());
tableItem.setText(1,
map.get("name").toString());
tableItem.setText(2,
map.get("brand").toString());
tableItem.setText(3,
map.get("type").toString());
tableItem.setText(4,
map.get("price").toString());
}
} else {
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
box.setText("系统消息");
box.setMessage("没有找到您需要的客户信息!");
box.open();
}
}
}
五.结论
两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。
在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。
学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。
课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.
在这次设计过程中,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。
在此感谢我们的赵老师.,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次模具设计的每个实验细节和每个数据,都离不开老师您的细心指导。
而您开朗的个性和宽容的态度,帮助我能够很顺利的完成了这次课程设计。
同时感谢对我帮助过的同学们,谢谢你们对我的帮助和支持,让我感受到同学的友谊。
由于本人的设计能力有限,在设计过程中难免出现错误,恳请老师们多多指教,我十分乐意接受你们的批评与指正,本人将万分感谢。
附录
1.封装数据库类
package dx.hyh_cinema.tools;
import java.sql.Connection;
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DbUtils {
private Connection conn = null;
private Statement stmt = null;
private ResultSet rs = null;
String url = "jdbc:mysql://127.0.0.1:3308/tms";
String username = "root";
String password = "mysql";
/**
* @描述:用来在类中最先执行数据库的驱动加载
*/
static{
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e){
System.out.println("请检查驱动包是否导入因为找不到驱动类!");
e.printStackTrace();
}
}
public Connection getConn(){
try{
conn =
DriverManager.getConnection(url,username,password);
return conn;
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
}catch(Exception e){
System.out.println("对不起连接不上数据库,请检查URL OR USERNAME OR PASSWORD");
e.printStackTrace();
return null;
}
}
public int update(String sql){
try{
stmt = this.getConn().createStatement();
return stmt.executeUpdate(sql);
}catch(SQLException e){
System.out.println("更新失败请检查sql语句的语法及格式");
e.printStackTrace();
return -1;
}
}
/**
public List<Map<String,Object>> query(String sql){
try{
ArrayList<Map<String,Object>> list = new
ArrayList<Map<String,Object>>();
stmt = this.getConn().createStatement();
rs = stmt.executeQuery(sql);
//获得结构化的结果集对象包含表信息
ResultSetMetaData rsmd = rs.getMetaData();
//获得我所查询的表的总列数
int columnCount = rsmd.getColumnCount();
while(rs.next()){
Map<String,Object> map = new
HashMap<String,Object>();
for(int i = 1; i<=columnCount; i++){
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
String columnName = rsmd.getColumnName(i);
Object columnValue = rs.getObject(columnName);
map.put(columnName, columnValue);
}
list.add(map);
}
return list;
}catch(SQLException e){
System.out.println("查询失败请检查sql语句的语法及格式");
e.printStackTrace();
guanBi();
return null;
}
}
public void guanBi(){
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}。