20
MỤC LỤC
LỜI NÓI ĐẦU 2
PHẦN 1: GIỚI THIỆU VỀ ĐỀ TÀI, NHỮNG ỨNG DỤNG TRONG THỰC TẾ CỦA ĐỀ TÀI,
HƯỚNG PHÁT TRIỂN, 3
0.1 KHẢO SÁT HIỆN TRẠNG THỰC TẾ 3
0.2 Ý nghĩa ứng dụng 3
0.3 Chức năng phần mềm ứng dụng 3
0.4 QUẢN LÝ BÁN HÀNG 4
0.5 THIẾT KẾ CƠ SỞ DỮ LIỆU 4
PHẦN 2: XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG 5
2.1 CÁC FORM CHÍNH CỦA CHƯƠNG TRÌNH 6
2.1.1 FORM ĐĂNG NHẬP 6
6
2.1.2 FORM ĐỔI MẬT KHẨU 6
2.1.3 FORM MAIN 7
2.1.4 FORM MẶT HÀNG 7
2.1.5. FORM HÓA ĐƠN TÍNH TIỀN 8
8
2.1.6 FORM DANH MỤC HÓA ĐƠN 8
2.1.7 FORM DANH MỤC MẶT HÀNG 8
2.1.8 FORM DANH MỤC CHI TIẾT HÓA ĐƠN 9
2.1.9 FORM THỐNG KẾ HÓA ĐƠN THEO NGÀY 9
2.1.10 FORM THỐNG KÊ MẶT HÀNG BÁN CHẠY THEO NGÀY 10
2.2.1 APP CONFIG 10
2.2.1 CODE ĐĂNG NHẬP 10
2.2.3 CODE THỐNG KÊ MẶT HÀNG BÁN CHẠY THEO NGÀY 16
PHẦN 3: TỔNG KẾT 18
3.1. Ưu điểm: 18
3.2. Khuyết điểm: 18
3.3.Hướng phát triển: 18
được tốt hơn, chính xác hơn và nhanh chóng hơn thì chủ cửa hàng muốn từng bước tin học hoá
các khâu quản lí. Đặc biệt là trong công tác kế toán và quản lí hàng hoá. Bởi vì với công tác thủ
công mà cửa hàng đang thực hiện đã bộc lộ nhiều hạn chế như sau:
+ Tra cứu thông tin về hàng hoá, các đại lý cung cấp hàng và khách hàng mất nhiều thời
gian và nhiều khi không chính xác.
+ Lưu trữ thông tin về nhập xuất hàng hoá, về thu chi cần nhiều loại giấy tờ nên cồng
kềnh và không đạt hiệu quả.
+ Cập nhật các thông tin hằng ngày tốn nhiều thời gian và khó khăn trong việc thực hiện
báo cáo thống kê, nhất là khi có sự việc đột xuất.
Trước tình hình đó vấn đề đặt ra là xây dựng một hệ thống thông tin đáp ứng được các
yêu cầu cơ bản sau:
+ Giảm khối lượng ghi chép nhằm lưu trữ thông tin.
+ Cập nhật dữ liệu nhanh chóng, chính xác và kịp thời.
+ Thống kê được số lượng hàng hoá nhập xuất, thu chi và tình hình doanh thu của cửa
hàng.
+ Tự động in các hoá đơn, in ra thống kê
+ Có khả năng lưu trữ thông tin lâu dài, đảm bảo truy vấn nhanh khi cần thiết.
0.2 Ý NGHĨA ỨNG DỤNG
+ Theo dõi quá trình kinh doanh, hoạt động của quán một cách tổng quan, chi tiết…
+ Nắm bắt mọi hoạt động của quán thông qua những báo cáo thống kế trung thực cuối
ngày, tuần, tháng. Giảm thiểu thời gian, chi phí tiền bạc vì không phải thuê quá nhiều nhân công
cho việc quản lý.
+ Lợi nhuận rất cao khi sư chuyên nghiệp được đặt lên hàng đầu.
0.3 CHỨC NĂNG PHẦN MỀM ỨNG DỤNG
+Phiên bản phần mềm quản lý quán cafe có những tính năng đặc thù chuyên biệt quản lý
quán cafe một cách tốt nhất, hiệu quả và tiện lợi.
+ Đây là một giải pháp kinh doanh hiệu quả, giúp cho bạn tiết kiệm được tối đa chi phí,
nhân lực cũng như đưa ra cho bạn một định hướng kinh doanh thông minh.
+ Giao diện và tính năng của phần mềm được thiết kế dựa trên quy trình khảo sát chặt chẽ
MAHD Varchar(10) Mã hóa đơn
NGAY Datetime Ngày lập hóa đơn
TONGTG Float Tổng trị giá
MATHANG
MAMH Varchar(10) Mã mặt hàng
TENMH Nvarchar(50) Tên mặt hàng
GHICHU Nvarchar(50) Ghi chú
DVT Nvarchar(50) Đơn vị tính
SOLUONG Int Số lượng
DONGIA Float Đơn giá
CTHD
MAHD Varchar(10) Mã hóa đơn
MAMH Varchar(10) Mã mặt hàng
TENMH Nvarchar(50) Tên mặt hang
SOLUONGBAN Int Số lượng bán
DONGIA Float Đơn giá
PHUTHU Float Phụ thu thêm
THANHTIEN Float Thành tiền
PHẦN 2: XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG
20
2.1 CÁC FORM CHÍNH CỦA CHƯƠNG TRÌNH
2.1.1 FORM ĐĂNG NHẬP
2.1.2 FORM ĐỔI MẬT KHẨU
20
2.1.3 FORM MAIN
2.1.4 FORM MẶT HÀNG
20
2.1.5. FORM HÓA ĐƠN TÍNH TIỀN
{
try
{
sqlCon = new SqlConnection(sqlConnectString);
sqlCon.Open();
SqlDataAdapter da = new SqlDataAdapter("Select * from ACCOUNT where username ='" +
txttennguoidung.Text + "'", sqlCon);
DataSet ds = new DataSet();
da.Fill(ds);
if (txtmatkhau.Text == ds.Tables[0].Rows[0]["PASSWORD"].ToString())
{
MessageBox.Show("Bạn đã đăng nhập thành công!");
Frm_Main main = new Frm_Main();
main.Show();
this.Hide();
}
else
{
MessageBox.Show("Bạn nhập sai password", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
this.txtmatkhau.Focus();
this.txtmatkhau.SelectAll();
}
}
catch
{
MessageBox.Show("Bạn nhập sai username", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
this.txttennguoidung.Focus();
this.txttennguoidung.SelectAll();
2.2.2 MỘT SỐ CODE TRONG HÓA ĐƠN TÍNH TIỀN
public partial class Frm_Hoadontinhtien : Form
{
public Frm_Hoadontinhtien()
{
20
InitializeComponent();
}
// Khai báo biến kiểm tra việc Thêm hay Sửa dữ liệu
bool Them;
private void btnthem_Click(object sender, EventArgs e)
{
this.txtmamh.Enabled = true;
this.txttenmh.Enabled = true;
this.txtsoluong.Enabled = true;
this.txtghichu.Enabled = true;
this.txtdonvitinh.Enabled = true;
this.txtdongia.Enabled = true;
// Kich hoạt biến Them
Them = true;
// Thứ tự dòng hiện hành
int r = dgvdanhsachmathang.CurrentCell.RowIndex;
// Chuyển thông tin lên groupbox
this.txtmamh.Text = dgvdanhsachmathang.Rows[r].Cells[0].Value.ToString();
this.txttenmh.Text = dgvdanhsachmathang.Rows[r].Cells[1].Value.ToString();
this.txtghichu.Text = dgvdanhsachmathang.Rows[r].Cells[2].Value.ToString();
this.txtdonvitinh.Text = dgvdanhsachmathang.Rows[r].Cells[3].Value.ToString();
this.txtsoluong.Text = dgvdanhsachmathang.Rows[r].Cells[4].Value.ToString();
this.txtdongia.Text = dgvdanhsachmathang.Rows[r].Cells[5].Value.ToString();
this.txtsoluong.SelectAll();
this.lblsl.Text = ("số lượng còn lại:" +
dgvdanhsachmathang.Rows[r].Cells[4].Value.ToString());
this.txtmahd.Enabled = false;
this.dateTimePicker1.Enabled = false;
this.txtmamh.Enabled = false;
this.txttenmh.Enabled = false;
this.txtdongia.Enabled = false;
this.txtdonvitinh.Enabled = false;
this.txtghichu.Enabled = false;
this.txtphuthu.Enabled = false;
this.txtthanhtien.Enabled = false;
this.txttongtien.Enabled = false;
this.btnthanhtoan.Enabled = true;
//cho thao tác trên các nút lưu/thoát
this.btnLuu.Enabled = true;
this.btnthoat.Enabled = true;
//không cho thao tác trên các nút xóa/sửa/thêm
this.btnxoa.Enabled = false;
this.btnsua.Enabled = false;
20
this.btnthem.Enabled = false;
}
private void btnxoa_Click(object sender, EventArgs e)
{
try
{
if (MessageBox.Show("Bạn có muốn xóa hay không?", "Thông báo", MessageBoxButtons.YesNo,
MessageBoxIcon.Question) == DialogResult.Yes)
this.txttongtien.Enabled = false;
this.btnthanhtoan.Enabled = true;
}
private void btnLuu_Click(object sender, EventArgs e)
{
//Mở kết nối
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
int thanhtien;
int sl = Convert.ToInt32(txtsoluong.Text);
int dongia = Convert.ToInt32(txtdongia.Text);
if (rdbbanngay.Checked == false && rdbbandem.Checked == false)
MessageBox.Show("chưa chọn phụ thu!");
else
{
thanhtien = sl*dongia;
this.txtthanhtien.Text = Convert.ToString(thanhtien);
if (this.rdbbanngay.Checked == true)
txtphuthu.Text = Convert.ToString(thanhtien * 0.05);
if (this.rdbbandem.Checked == true)
txtphuthu.Text = Convert.ToString(thanhtien * 0.1);
// Thêm dữ liệu
if (Them)
{
try
{
string strthem = "Insert Into hoadonmau Values(" + "'" +
this.txtmahd.Text.ToString() + "','" + this.txtmamh.Text.ToString() + "',N'" +
SqlCommand cmdmh = new SqlCommand(strupdate, conn);
cmdmh.ExecuteNonQuery();
LoadMathang();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
lblsl.ResetText();
this.btnthanhtoan.Enabled = true;
}
}
if (!Them)
{
try
{
// Thứ tự dòng hiện hành
int hd = dgvhoadontinhtien.CurrentCell.RowIndex;
int mh = dgvdanhsachmathang.CurrentCell.RowIndex;
// Mamathang hiện hành
string strmamh = dgvdanhsachmathang.Rows[mh].Cells[0].Value.ToString();
int a;
int b;
if (Convert.ToInt32(dgvhoadontinhtien.Rows[hd].Cells[3].Value.ToString()) -
Convert.ToInt32(txtsoluong.Text) > 0)
{
a = Convert.ToInt32(dgvhoadontinhtien.Rows[hd].Cells[3].Value.ToString()) -
Convert.ToInt32(txtsoluong.Text);
this.txttenmh.Text.ToString() + "',soluong='" + this.txtsoluong.Text + "',dongia='" +
this.txtdongia.Text + "',phuthu='" + this.txtphuthu.Text + "',thanhtien='" + this.txtthanhtien.Text + "'
Where mamh='" + strmamathang + "'";
// Cập nhật
SqlCommand cmd = new SqlCommand(strupdate, conn);
cmd.ExecuteNonQuery();
// Load lại dữ liệu trên DataGridView
LoadHoadonmau();
// Thông báo
MessageBox.Show("Đã sửa xong!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
}
this.txtmahd.Enabled = false;
this.dateTimePicker1.Enabled = false;
this.txtphuthu.Enabled = false;
this.txtthanhtien.Enabled = false;
this.txttongtien.Enabled = false;
//mở lại thao tác trên các nút
this.btnLuu.Enabled = false;
this.btnthoat.Enabled = true;
this.btnsua.Enabled = true;
this.btnxoa.Enabled = true;
txttongtien.Text = tam.ToString();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
this.txtphuthu.Enabled = false;
this.txtthanhtien.Enabled = false;
this.txttongtien.Enabled = false;
this.txtmahd.Enabled = false;
this.dateTimePicker1.Enabled = false;
this.txtmamh.Enabled = false;
this.txttenmh.Enabled = false;
this.txtsoluong.Enabled = false;
this.txtghichu.Enabled = false;
this.txtdonvitinh.Enabled = false;
this.txtdongia.Enabled = false;
this.txtphuthu.ResetText();
this.txtthanhtien.ResetText();
this.txtdongia.ResetText();
this.txtsoluong.ResetText();
this.txttenmh.ResetText();
this.txtmamh.ResetText();
this.txtghichu.ResetText();
this.txtdonvitinh.ResetText();
//cập nhật vào sql
//mở kết nối
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
try
}
20
string connectionString;
SqlConnection conn = new SqlConnection();
DataSet ds;
SqlDataAdapter da;
private void LoadData()
{
connectionString = "Data Source=.\\sqlexpress;Initial Catalog=QL_CAFE_VANPHONG;Integrated
Security=True";
ds = new DataSet();
string query = "select c.mahd,mamh,tenmh,soluongban,ngay from (HOADON H JOIN CTHD C ON
H.MAHD=C.MAHD) where day(NGAY)='" + Convert.ToDateTime(dateTimePicker1.Text).Day + "' and month(NGAY)='" +
Convert.ToDateTime(dateTimePicker1.Text).Month + "' and year(NGAY)='" +
Convert.ToDateTime(dateTimePicker1.Text).Year + "' ";
try
{
SqlConnection conn = new SqlConnection(connectionString);
da = new SqlDataAdapter(query, conn);
da.Fill(ds);
dgvthongtincachd.DataSource = ds.Tables[0].DefaultView;
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
}
private void LoadData2()
{
connectionString = "Data Source=.\\sqlexpress;Initial Catalog=QL_CAFE_VANPHONG;Integrated
}
}
}
20
PHẦN 3: TỔNG KẾT
3.1. ƯU ĐIỂM:
Quản lý được yêu cầu gọi món của khách hàng
Thanh toán hóa đơn nhanh chóng
Quản lý được việc xuất nhập kho
Báo cáo doanh thu theo ngày, tháng
3.2. KHUYẾT ĐIỂM:
− Hệ cơ sở dữ liệu chưa triệt để
− Chưa thực hiện được lập phiếu xuất nhập kho
− Chưa phân quyền người dùng
3.3.HƯỚNG PHÁT TRIỂN:
Tiếp tục nghiên cứu và trau dồi kiến thức, đặc biệt là cơ sở dữ liệu và kỹ thuật lập trinh đề
giải quyết các khuyết điểm trên (Xây dựng lại hệ cơ sở dữ liệu chặt chẽ hơn, code chính
sác hơn)