Đề tài Xây dựng chương trình quản lý quán café bằng ngôn ngữ Java

MỤC LỤC

MỤC LỤC 1

LỜI MỞ ĐẦU 2

CHƯƠNG TRÌNH QUẢN LÝ QUÁN CAFÉ 3

1. Mục đích của chương trình 3

2. Chức năng của chương trình 3

3. Xây dựng chương trình 3

3.1. Cơ sở dữ liệu 3

3.2. Thiết kế các lớp 4

4. Xây dựng các lớp trong chương trình 5

4.1. Lớp thứ nhất: MenuChinh 5

4.2. Lớp thứ hai: TrangThai 6

4.3. Lớp thứ 3: GoiMon 8

4.4. Lớp thứ 4: ThemBan 10

4.5. Lớp thứ 5: ThucDon 12

4.6. Lớp thứ 6: ThemMon 14

4.7. Lớp thứ 7: GhepBan 16

4.8. Lớp thứ 8: TinhTien 19

4.9 Lớp thứ 9 : TroGiup 21

4.10. Lớp thứ 10: TroGiup 23

 

doc23 trang | Chuyên mục: Java | Chia sẻ: yen2110 | Lượt xem: 577 | Lượt tải: 0download
Tóm tắt nội dung Đề tài Xây dựng chương trình quản lý quán café bằng ngôn ngữ Java, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
trong bảng Thuc_don:
public void First() 
	{
	try{
	connect();
	rs.first();
	txtMaDoUong.setText(rs.getString(1));
	txtTenDoUong.setText(rs.getString(2));
	txtDonGia.setText(Long.toString(rs.getLong(3)));
	}
	catch(Exception e)
	{
	System.err.println("Error: "+e.toString());
	}
	}
	public void Pre() 
	{
	try{
	rs.previous();
	txtMaDoUong.setText(rs.getString(1));
	txtTenDoUong.setText(rs.getString(2));
	txtDonGia.setText(Long.toString(rs.getLong(3)));
	}
	catch(Exception e)
	{
	System.err.println("Error: "+e.getMessage());
	}
	}
	public void Next() 
	{
	try
	{
	rs.next();
	txtMaDoUong.setText(rs.getString(1));
	txtTenDoUong.setText(rs.getString(2));
	txtDonGia.setText(Long.toString(rs.getLong(3)));
	}
	catch(Exception e)
	{
	System.err.println("Error: "+e.getMessage());
	}
	}
	public void Last() 
	{
	try{
	connect();
	rs.last();
	txtMaDoUong.setText(rs.getString(1));
	txtTenDoUong.setText(rs.getString(2));
	txtDonGia.setText(Long.toString(rs.getLong(3)));
	}
	catch(Exception e)
	{
	System.err.println("Error: "+e.toString());
	}
}
4.6. Lớp thứ 6: ThemMon
Mục đích của lớp này là tạo ra một đối tượng dùng để thay đổi số lượng đồ uống mà khách hàng của một bàn bất kì đã gọi trước đó.
Hình 7. Thêm món
Thuật toán:
	- Tạo kết nối đến cơ sở dữ liệu bằng hàm connect() như các phần trên.
	- Xây dựng giao diện cho đối tượng dựa trên thư viện awt, điều đáng chú ý ở đây là tạo các nút choice như chMaBan, chTenBan, chMaDoUong, chTenDoUong với các item là các bản ghi ở trong lần lượt các bảng Ban, Thuc_don.
try
	{
	connect();
	rs = stmt.executeQuery("SELECT * FROM Ban");
	rs.next();
	while(!rs.isAfterLast())
	{
	chBanID.addItem(rs.getString(1));
	chTenBan.addItem(rs.getString(2));
	rs.next();
	}
	}
	catch(SQLException se)
	{
	System.err.println("Error: "+se.getMessage());
	}
	panelSub.add(chTenBan);
	panelSub.add(lbTenDouong);
	try
	{
	connect();
	rs = stmt.executeQuery("SELECT * FROM Thuc_don");
	rs.next();
	while(!rs.isAfterLast())
	{
	chDoUongID.addItem(rs.getString(1));
	chTenDoUong.addItem(rs.getString(2));
	rs.next();
	}
	}
	catch(SQLException se)
	{
	System.err.println("Error: "+se.getMessage());
	}
- Xây dựng hàm Luu() được dùng để lưu lại sự thay đổi về số lượng món trong bàn bất kì(ví dụ như tại bàn 1 muốn bớt café đen với số lượng là 4 xuống còn 2, và thêm vào café sữa từ 1 lên 3).Trong hàm này ta dùng một ResultSet rs là kết quả truy vấn đến bảng Goi_mon. Sau đó, đem so sánh chuỗi BanID,DoUongID mà người dùng mới nhập vào với lần lượt các chuỗi BanID,DoUongID có trong rs. Nếu đúng thì ta thực hiện thao tác thay đổi với số lượng đã được khai báo.
	public void Luu()
	{
	try
	{
	connect();
	rs = stmt.executeQuery("SELECT * FROM Goi_mon");
	String Ban = chBanID.getItem(chTenBan.getSelectedIndex());
	String DoUong = chDoUongID.getItem(chTenDoUong.getSelectedIndex());
	rs.next();
	int i =1;
	while(!((rs.getString(2).equals(Ban))&&(rs.getString(3).equals(DoUong))))
	{
	rs.next();
	i++;
	}
	rs.absolute(i);
	rs.updateLong(4, (rs.getLong(4)+(Long.valueOf(txtSoLuong.getText()))));
	rs.updateRow();//cap nhat lai ban ghi trong rs va bang
	txtSoLuong.setText("");
	}
	catch(Exception e)
	{
	System.err.println("Error: "+e.toString());
	}
	}
4.7. Lớp thứ 7: GhepBan
Mục đích của lớp này là tạo ra đối tượng nhằm phục vụ cho nhu cầu ghép hai bàn lại thành một bàn mà kết quả khi tính tiền, và số lượng món của hai bàn được chuyển toàn bộ vào bàn mới.
Hình 8. Ghép bàn
Thuật toán:
Xây dựng hàm kết nối đến cơ sở dữ liệu connect().
Xây dựng giao diện dựa trên thư viện awt, điểm chú ý ở lớp này là xây dựng các nút choice() chMaBan1,chBanGhep1, chMaBan2,chBanGhep2, chMaBan3,chBanGhep3 được truy vấn từ bảng Ban.
try
	{
	connect();
	rs = stmt.executeQuery("SELECT * FROM Ban");
	rs.next();
	while(!rs.isAfterLast())
	{
	chMaBan1.addItem(rs.getString(1));
	chBanGhep1.addItem(rs.getString(2));
	rs.next();
	}
	}
	catch(Exception e){}
	try
	{
	connect();
	rs = stmt.executeQuery("SELECT * FROM Ban");
	rs.next();
	while(!rs.isAfterLast())
	{
	chMaBan2.addItem(rs.getString(1));
	chBanGhep2.addItem(rs.getString(2));
	rs.next();
	}
	}
	catch(Exception e){}
	try
	{
	connect();
	rs = stmt.executeQuery("SELECT * FROM Ban");
	rs.next();
	while(!rs.isAfterLast())
	{
	chMaBan3.addItem(rs.getString(1));
	chBanGhep3.addItem(rs.getString(2));
	rs.next();
	}
	}
Xây dựng hàm Luu() để lưu lại kết quả sau khi thực hiện công việc ghép bàn. 
Trong hàm này ta sử dụng biến k để lưu lại số bản ghi của ResultSet rs truy vấn từ bảng Goi_mon trước khi có sự thay đổi.
Biến n dùng để khởi tạo Magoi khi hai bàn trước khi ghép có DoUongID giống nhau. Mục đích là để tạo ra một bản ghi mới với mã gọi là n, DoUongID chính là DoUongID giống nhau đó, với số lượng chính là tổng của hai đồ uống ở hai bàn trên.
Tìm kiếm tất cả trong bảng Goi_mon những bản ghi mà có BanID giống với BanID của người dùng nhập vào trước khi ghép.
So sánh DoUongID o hai bàn đó. Nếu trùng thì tạo một bản ghi mới với mã gọi là n,BanID là BanID sau khi ghep. Số lượng là tổng số lượng của hai bản ghi trên. 
Những bản ghi có DoUongID khác nhau thì chuyển BanID của chúng thành BanID sau khi ghép.
Xóa đi tất cả các bản ghi của có chứa BanID trước khi ghép dựa vào biến k.
public void Luu()
	{
	try
	{
	connect();
	String Ban1 = chMaBan1.getItem(chBanGhep1.getSelectedIndex());
	String Ban2 = chMaBan2.getItem(chBanGhep2.getSelectedIndex());
	String Ban3 = chMaBan3.getItem(chBanGhep3.getSelectedIndex());
	rs = stmt.executeQuery("SELECT * FROM Goi_mon");
	System.out.println(Ban1);
	rs.next();
	String strBan = rs.getString(2);
	String strDoUong;
	Long l;
	//bien k dung de luu lai so ban ghi cau rs truoc khi co su thay doi
	//bien n dung de khoi tao ma goi cho ban ghi moi khi trong rs co hai 
	//ban ghi co DoUongID giong nhau, voi so luong la tong so luong cua 
	//hai ban ghi tren.
	int i=1,j,k=0,n=100,size=0;
	int rowNum[] = new int[20];
	while((!rs.isAfterLast())&&(((strBan.equals(Ban1)))||(strBan.equals(Ban2))))
	{
	k++;
	rs.next();
	}
	while((i<=k)&&(((strBan.equals(Ban1)))||(strBan.equals(Ban2))))
	{
	rs.absolute(i++);
	strBan=rs.getString(2);
	strDoUong=rs.getString(3);
	l = rs.getLong(4);
	rs.moveToInsertRow();
	rs.updateString(2, Ban3);
	rs.updateRow();
	for(j=i;j<=k;j++)
	{
	rs.absolute(j);
	if(rs.getString(3).equals(strDoUong))
	{
	rowNum[size++]=i-1;
	rs.moveToInsertRow();
	rs.updateLong(1, n++);
	rs.updateString(2,Ban3);
	rs.updateString(3, rs.getString(3));
	rs.updateLong(4,(l+rs.getLong(4)));
	rs.updateRow();
	}
	}
	}
	//xoa ban ghi cua hai ban ghi truoc khi ghep
	for(i=0;i<rowNum.length;i++)
	{
	rs.absolute(rowNum[i]);
	rs.deleteRow();
	}
	}
	catch(SQLException se){}
	}
4.8. Lớp thứ 8: TinhTien
Đây là lớp quan trọng nhất của chương trình quản lý quán café bởi nó sẽ tạo ra một đối tượng dùng để cho biết tổng số lượng tiền mà những khách hàng của một bàn bất kì cần phải trả, các đồ uống với số lượng mà họ đã gọi.
Hình 9. Tính tiền
Thuật toán: 
Kết nối đến cơ sở dữ liệu bằng hàm connect() như trên.
Xây dựng giao diện dựa trên thư viện awt, điểm đáng chú ý ở đây là xây dựng nút Choice chMaBan với các item là các trường BanID lấy trong bảng Ban.
try
	{
	connect();
	rs = stmt.executeQuery("SELECT BanID FROM Ban");
	rs.next();
	while(!rs.isAfterLast())
	{
	chNhap.addItem(rs.getString(1));
	rs.next();
	}
	}
	catch(Exception e){}
Xây dựng hàm tong() với các chức năng chính như sau:
In ra tổng số tiền(băng cách tạo một label và dùng phương thức setText() tổng số tiền đã tính toán vào đó) với BanID mà người dùng nhập vào.
In ra tên bàn, số lượng, đơn giá các món mà khách hàng của bàn đó đã gọi( bằng cách tạo ra một textArea và dùng phương thức setText(),append() để ghi chuỗi các trường đó vào).
Tạo một ResultSet rs là tập các bản ghi được truy vấn từ cơ sở dữ liệu :rs = stmt.executeQuery("SELECT Goi_mon.BanID, Thuc_don.DonGia,Goi_mon.SoLuong, Thuc_don.DonGia*Goi_mon.SoLuong,Thuc_don.TenDoUong AS Tong FROM Thuc_don INNER JOIN (Ban INNER JOIN Goi_mon ON Ban.BanID = Goi_mon.BanID) ON Thuc_don.DoUongID = Goi_mon.DoUongID");
So sánh chuỗi chMaBan với rs.getString(1) nếu đúng thì tính tổng và in ra hóa đơn như sau:
public void tong()
	{
	String s = chNhap.getItem(chNhap.getSelectedIndex());
	try
	{
	connect();
	rs = stmt.executeQuery("SELECT Goi_mon.BanID, Thuc_don.DonGia, Goi_mon.SoLuong, Thuc_don.DonGia*Goi_mon.SoLuong,Thuc_don.TenDoUong AS Tong FROM Thuc_don INNER JOIN (Ban INNER JOIN Goi_mon ON Ban.BanID = Goi_mon.BanID) ON Thuc_don.DoUongID = Goi_mon.DoUongID");
	rs.next();
	taChinh.setText("Ten Do Uong\t\tDon Gia\t\tSo Luong\n\n");
	while(!rs.isAfterLast())
	{
	if(rs.getString(1).equals(s))
	{
	sum += (rs.getLong(4));
	taChinh.append(" "+rs.getString(5)+"\t\t");
	taChinh.append(" "+rs.getString(2)+"\t\t\t");
	taChinh.append(" "+rs.getString(3));
	taChinh.append("\n");
	}
	rs.next();
	}
	}
	catch(SQLException e)
	{
	System.err.println("Error:" +e.getMessage());
	}
	lbKqua.setText(Long.toString(sum));
	sum=0;
	//xoa tat ca cac ban ghi do trong Goi_mon
	}
Xây dựng hàm xoa() dùng để xóa đi tất cả các bản ghi có BanID của người dùng nhập vào trùng với BanID trong ResultSet rs được truy vấn từ bảng Goi_mon.
public void xoa()
	{
	String s = chNhap.getItem(chNhap.getSelectedIndex());
	try
	{
	rs = stmt.executeQuery("SELECT BanID FROM Goi_mon");
	n=1;
	rs.absolute(n);
	while(!rs.isAfterLast())
	{
	if(rs.getString(1).equals(s))
	{
	rs.deleteRow();
	n--;
	}
	rs.absolute(++n);
	}
	}
	catch(SQLException se)
	{
	System.err.println("Error: "+se.getMessage());
	}
}
4.9 Lớp thứ 9 : TroGiup
Lớp dùng để khởi tạo đối tượng cho biết thông tin về tên chương trình, người thiết kế.
Hình 10. About
4.10. Lớp thứ 10: TroGiup
Lớp dùng để khởi tạo đối tượng cho biết các thông tin về chức năng của chương trình.
Hình 11. Trợ giúp

File đính kèm:

  • docde_tai_xay_dung_chuong_trinh_quan_ly_quan_cafe_bang_ngon_ngu.doc
Tài liệu liên quan