Hướng dẫn sử dụng phần mềm Quản Lý Bán Hàng

Viết phần mềm

MỤC LỤC

I. GIỚI THIỆU.

I.1. Giới thiệu phần mềm quản lý bán hàng.

II. MÔ TẢ YÊU CẦU HỆ THỐNG.

II.1. Chức năng Quản lý Hàng Hóa.
II.2. Chức năng Quản lý Khách Hàng.
II.3. Chức năng Quản lý Hóa Đơn Nhập.
II.4. Chức năng Quản lý Hóa Đơn Xuất.
II.5. Chức năng Báo Cáo – Thống Kê.
A.Báo cáo tồn kho chi tiết.
B.Báo cáo tồn kho theo sản phẩm.

III. THIẾT KẾ HỆ THỐNG HƯỚNG ĐỐI TƯỢNG.

III.1. Biểu đồ tuần tự.
  • 1. Chức năng Hàng Hóa.
  • 2. Chức năng Khách Hàng.
  • 3. Chức năng Hóa Đơn Nhập.
  • 4. Chức năng Hóa Đơn Xuất.
III.2.Biểu đồ lớp.

IV. THIẾT KẾ CƠ SỞ DỮ LIỆU.

IV.1.Thiết kế bảng cơ sở dữ liệu.
  • 1. Bảng: Customer (Khách hàng).
  • 2. Bảng: Goods (Hàng hóa).
  • 3. Bảng: Voucher (Hóa đơn).
  • 4. Bảng: Detailed (Chi tiết).
IV.2. Mô hình dữ liệu quan hệ.

V. THIẾT KẾ GIAO DIỆN.

V.1. Thiết kế giao diện cho module.
  • 1. Danh sách các chức năng của module.

VI. CÀI ĐẶT VÀ SỬ DỤNG PHẦN MỀM.

VI.1. Cài đặt.
VI.2. Đánh giá.
VI.3. Các hướng phát triển thêm cho phần mềm.

I. GIỚI THIỆU.

I.1. Giới thiệu phần mềm quản lý bán hàng.
Phần mềm quản lý bán hàng được thiết kế dành cho các cửa hàng, siêu thị, các doanh nghiệp bán lẻ. sẽ làm đơn giản hóa và giúp tăng cường hoạt động bán hàng của bạn.
Với giao diện thân thiện và dễ sử dụng, phần mềm giúp nâng cao chất lượng quản lý, hiệu quả kinh doanh.
Các tính năng của phần mềm quản lý bán hàng.
– Giao diện đơn giản ,thao tác bán hàng thuận tiện, nhanh chóng, giảm thiểu sai sót
– In ấn hóa đơn bán hàng , đẹp và chuyên nghiệp
– Quản lý giá của từng sản phẩm và các khoản chiết khấu, giảm giá…
– Theo dõi hàng tồn kho
– Quản lý hàng nhập mua, giá vốn.
– Theo dõi hàng bán ra, trả lại ,thêm, xóa, sửa.
Các mô hình được áp dụng  Phần mềm bán hàng chuyên nghiệp
– Được thiết kế phù hợp với các mô hình kinh doanh sau:
– Mỹ phẩm, thời trang, hàng lưu niệm, hàng văn phòng phẩm
Siêu thị, siêu thị tạp hóa 
– Linh kiện, phụ tùng máy móc.
– Các cửa hàng bán lẻ, shop thời trang , quần áo
-Phần mềm quản lý bán hàng gồm các phiên bản như sau:
 
+ Phần mềm quản lý bán hàng đơn giản dùng cho 1  hoặc chuỗi cửa hàng dữ liệu offline hoặc online.

II. MÔ TẢ YÊU CẦU HỆ THỐNG.

II.1. Chức năng Quản lý Hàng Hóa.
Mô tả: Chức năng này cho phép người quản lý sản phẩm bao gồm thêm (Add new), lưu (Save), xóa (Delete), cập nhập (Exit) thông tin sản phẩm.
Trình tự thực hiện:
1.Từ giao diện người dùng chọn quản lý sản phẩm (Goods).
2.Hệ thống hiển thị giao diện quản lý sản phẩm (Goods).
a.Thêm sản phẩm : Người dùng muốn thêm sản phẩm mới.
a.1: Người dùng chọn  nút Add new (thêm mới).
a.2: Hệ thống yêu cầu nhập thông tin sản phẩm cần thêm.
a.3: Người dùng nhập thông tin sản phẩm cần thêm.
a.4: Người dùng chọn nút Save (Lưu).
a.5: Hệ thống kiểm tra thông tin sản phẩm.
a.6: Thêm thành công, kết thúc use case thêm sản phẩm.

Video hướng dẫn thêm sản phẩm mới
Kết quả: Một sản phẩm được thêm vào hệ thống.
b.Xóa sản phẩm: Người dùng muốn xóa sản phẩm.
c.1: Người dùng chọn sản phẩm cần xóa.
c.2: Người dùng chọn nút Delete (xóa).
c.3: Hệ thống yêu cầu xác nhận có muốn xóa không.
c.4: Người dùng xác nhận muốn xóa.
c.5: Hệ thống kiểm tra ràng buộc.
c.6: Sản phẩm đã được xóa khỏi hệ thống, use case xóa sản phẩm kết thúc.

Video hướng dẫn xóa sản phẩm
Kết quả: Một sản phẩm bị xóa khỏi hệ thống.
c.Cập nhập sản phẩm: Người dùng muốn cập nhập sản phẩm.
c.1: Người dùng chọn nút cập nhập (Update).
c.2: Người dùng chọn sản phẩm cần cập nhập.
c.3: Người dùng nhập lại thông tin sản phẩm.
c.4: Người dùng chọn nút Save (Lưu).
c.5: Hệ thống kiển tra thông tin sản phẩm.
c.6: Cập nhập thành công, use case cập nhập sản phẩm kết thúc.

Video hướng dẫn cập nhập lại sản phẩm
Kết quả: Một sản phẩm đã được cập nhập trong  hệ thống.
II.2. Chức năng Quản lý Khách Hàng.
Mô tả: Chức năng này cho phép người quản lý khách hàng bao gồm thêm (Add new), lưu (Save), xóa (Delete), cập nhập (Exit) thông tin khách hàng.
Trình tự thực hiện:
1.Từ giao diện người dùng chọn quản lý khách hàng (Customer).
2.Hệ thống hiển thị giao diện quản lý khách hàng (Customer).
a.Thêm khách hàng : Người dùng muốn thêm khách hàng mới.
a.1: Người dùng chọn  nút Add new (thêm mới).
a.2: Hệ thống yêu cầu nhập thông tin khách hàng cần thêm.
a.3: Người dùng nhập thông tin khách hàng cần thêm.
a.4: Người dùng chọn nút Save (Lưu).
a.5: Hệ thống kiểm tra thông tin khách hàng.
a.6: Thêm thành công, kết thúc use case thêm khách hàng.

Video hướng dẫn thêm mới khách hàng
Kết quả: Một khách hàng  được thêm vào hệ thống.
b.Xóa khách hàng: Người dùng muốn xóa khách hàng.
c.1: Người dùng chọn khách hàng cần xóa.
c.2: Người dùng chọn nút Delete (xóa).
c.3: Hệ thống yêu cầu xác nhận có muốn xóa không.
c.4: Người dùng xác nhận muốn xóa.
c.5: Hệ thống kiểm tra ràng buộc.
c.6: Sản phẩm đã được xóa khỏi hệ thống, use case xóa khách hàng kết thúc.

Video hướng dẫn xóa khách hàng
Kết quả: Một khách hàng bị xóa khỏi hệ thống.
c.Cập nhập khách hàng: Người dùng muốn cập nhập khách hàng.
c.1: Người dùng chọn nút cập nhập (Update).
c.2: Người dùng chọn khách hàng cần cập nhập.
c.3: Người dùng nhập lại thông tin khách hàng.
c.4: Người dùng chọn nút Save (lưu).
c.5: Hệ thống kiểm tra thông tin khách hàng.
c.6: Cập nhập thành công, use case cập nhập khách hàng kết thúc.

Video hướng dẫn cập nhập thông tin khách hàng
Kết quả: Một khách hàng được cập nhập trong  hệ thống.
II.3. Chức năng Quản lý Hóa Đơn Nhập.
Mô tả: Chức năng này cho phép người quản lý hóa đơn nhập bao gồm thêm (Add new), lưu (Save), thêm sản phẩm (Add Goods),xóa (Delete), cập nhập (Exit), xóa sản phẩm (Delete Goods) thông tin hóa đơn nhập.
Trình tự thực hiện:
1.Từ giao diện người dùng chọn quản lý hóa đơn nhập (Import Ballot).
2.Hệ thống hiển thị giao diện quản lý hóa đơn nhập (Import Ballot).
a.Thêm hóa đơn nhập : Người dùng muốn thêm hóa đơn nhập mới.
a.1: Người dùng chọn  nút Add new (thêm mới).
a.2: Hệ thống yêu cầu nhập thông tin hóa đơn nhập cần thêm.
a.3: Người dùng nhập thông tin hóa đơn nhập cần thêm.
a.4: Người dùng chọn nút Lưu (Save).
a.5: Hệ thống kiểm tra thông tin hóa đơn nhập.
a.6: Thêm thành công, kết thúc use case thêm hóa đơn nhập.

Video hướng dẫn thêm mới hóa đơn nhập
Kết quả: Một hóa đơn nhập được thêm vào hệ thống.
b.Thêm sản phẩm : Người dùng muốn thêm sản phẩm mới.
b.1: Người dùng chọn  nút Add Goods (thêm mới).
b.2: Hệ thống yêu cầu nhập thông tin sản phẩm cần thêm.
b.3: Người dùng nhập thông tin sản phẩm cần thêm.
b.4: Người dùng chọn nút Save (Lưu).
b.5: Hệ thống kiểm tra thông tin sản phẩm.
b.6: Thêm thành công, kết thúc use case thêm sản phẩm.

Video hướng dẫn thêm sản phẩm trong hóa đơn
Kết quả: Một sản phẩm được thêm vào hệ thống.
c.Xóa sản phẩm: Người dùng muốn xóa sản phẩm.
c.1: Người dùng chọn sản phẩm cần xóa.
c.2: Người dùng chọn nút Delete Goods (xóa).
c.3: Hệ thống yêu cầu xác nhận có muốn xóa không.
c.4: Người dùng xác nhận muốn xóa.
c.5: Hệ thống kiểm tra ràng buộc.
c.6: Sản phẩm đã được xóa khỏi hệ thống, use case xóa sản phẩm kết thúc.

Video hướng dẫn xóa sản phẩm trong hóa đơn
Kết quả: Một sản phẩm bị xóa khỏi hệ thống.
d.Xóa hóa đơn nhập: Người dùng muốn xóa hóa đơn nhập.
d.1: Người dùng chọn hóa đơn nhập cần xóa.
d.2: Người dùng chọn nút xóa (Delete).
d.3: Hệ thống yêu cầu xác nhận có muốn xóa không.
d.4: Người dùng xác nhận muốn xóa.
d.5: Hệ thống kiểm tra ràng buộc.
d.6: Sản phẩm đã được xóa khỏi hệ thống, use case xóa hóa đơn nhập kết thúc.

Video hướng dẫn xóa hóa đơn nhập
Kết quả: Một hóa đơn nhập bị xóa khỏi hệ thống.
e.Cập nhập hóa đơn nhập: Người dùng muốn cập nhập hóa đơn nhập.
e.1: Người dùng chọn nút cập nhập (Exit).
e.2: Người dùng chọn hóa đơn nhập cần cập nhập.
e.3: Người dùng nhập lại thông tin hóa đơn nhập.
e.4: Người dùng chọn nút lưu (Save).
e.5: Hệ thống kiển tra thông tin hóa đơn nhập.
e.6: Cập nhập thành công, use case cập nhập hóa đơn nhập kết thúc.

Video hướng dẫn cập nhập thông tin hóa đơn nhập
Kết quả: Một hóa đơn nhập  được cập nhập trong  hệ thống.
II.4. Chức năng Quản lý Hóa Đơn Xuất.
Mô tả: Chức năng này cho phép người quản lý hóa đơn xuất bao gồm thêm (Add new), lưu (Save), thêm sản phẩm (Add Goods),xóa (Delete), cập nhập (Exit), xóa sản phẩm (Delete Goods) thông tin hóa đơn xuất.
Trình tự thực hiện:
1.Từ giao diện người dùng chọn quản lý hóa đơn xuất (Export Coupon).
2.Hệ thống hiển thị giao diện quản lý hóa đơn xuất (Export Coupon).
a.Thêm hóa đơn xuất: Người dùng muốn thêm hóa đơn xuất mới.
a.1: Người dùng chọn  nút Add new (thêm mới).
a.2: Hệ thống yêu cầu nhập thông tin hóa đơn xuất cần thêm.
a.3: Người dùng nhập thông tin hóa đơn xuất cần thêm.
a.4: Người dùng chọn nút Lưu (Save).
a.5: Hệ thống kiểm tra thông tin hóa đơn xuất.
a.6: Thêm thành công, kết thúc use case thêm hóa đơn xuất.

Video hướng dẫn thêm mới hóa đơn xuất
Kết quả: Một hóa đơn xuất được thêm vào hệ thống.
b.Thêm sản phẩm : Người dùng muốn thêm sản phẩm mới.
b.1: Người dùng chọn  nút Add Goods (thêm mới).
b.2: Hệ thống yêu cầu nhập thông tin sản phẩm cần thêm.
b.3: Người dùng nhập thông tin sản phẩm cần thêm.
b.4: Người dùng chọn nút Save (Lưu).
b.5: Hệ thống kiểm tra thông tin sản phẩm.
b.6: Thêm thành công, kết thúc use case thêm sản phẩm.

Video hướng dẫn thêm sản phẩm hóa đơn xuất
Kết quả: Một sản phẩm được thêm vào hệ thống.
c.Xóa sản phẩm: Người dùng muốn xóa sản phẩm.
c.1: Người dùng chọn sản phẩm cần xóa.
c.2: Người dùng chọn nút Delete Goods (xóa).
c.3: Hệ thống yêu cầu xác nhận có muốn xóa không.
c.4: Người dùng xác nhận muốn xóa.
c.5: Hệ thống kiểm tra ràng buộc.
c.6: Sản phẩm đã được xóa khỏi hệ thống, use case xóa sản phẩm kết thúc.

Video hướng dẫn xóa sản phẩm hóa đơn xuất
Kết quả: Một sản phẩm bị xóa khỏi hệ thống.
d.Xóa hóa đơn xuất: Người dùng muốn xóa hóa đơn xuất.
d.1: Người dùng chọn hóa đơn xuất cần xóa.
d.2: Người dùng chọn nút xóa (Delete).
d.3: Hệ thống yêu cầu xác nhận có muốn xóa không.
d.4: Người dùng xác nhận muốn xóa.
d.5: Hệ thống kiểm tra ràng buộc.
d.6: Sản phẩm đã được xóa khỏi hệ thống, use case xóa hóa đơn xuất kết thúc.

Video hướng dẫn xóa hóa đơn xuất
Kết quả: Một hóa đơn xuất bị xóa khỏi hệ thống.
e.Cập nhập hóa đơn xuất: Người dùng muốn cập nhập hóa đơn xuất.
e.1: Người dùng chọn nút cập nhập (Exit).
e.2: Người dùng chọn hóa đơn xuất cần cập nhập.
e.3: Người dùng nhập lại thông tin hóa đơn xuất.
e.4: Người dùng chọn nút lưu (Save).
e.5: Hệ thống kiểm tra thông tin hóa đơn xuất.
e.6: Cập nhập thành công, use case cập nhập hóa đơn xuất kết thúc.

Video hướng dẫn cập nhập thông tin hóa đớn xuất
Kết quả: Một hóa đơn xuất được cập nhập trong  hệ thống.
II.5. Chức năng Báo Cáo – Thống Kê.
Mô tả: Chức năng này cho phép người quản lý báo cáo – thống kê tồn kho chi tiết bao gồm báo cáo report(Report), báo cáo excel(Excel).
Trình tự thực hiện:
1.Từ giao diện người dùng chọn quản lý Báo cáo tồn chi tiết (Inventory).
2.Hệ thống hiển thị giao diện quản lý Báo cáo tồn chi tiết (Inventory).
A.Báo cáo tồn kho chi tiết.
a.Báo cáo Report: Người dùng muốn báo cáo report.
a.1: Người dùng chọn ngày, tháng, năm (From date và Come now).
a.2: Hệ thống sẽ tự kiểm tra tất cả hàng hóa có trong khoản thời gian vừa chọn ở trên nếu có hàng hóa nào thì sẽ hiển thị hàng hóa có trong khoản thời gian vừa chọn sẽ hiển thị ra cho người dùng xem.
a.3: Người dùng sẽ chọn nút (Report).
a.4:Hệ thống sẽ chuyển những hàng hóa mà người dùng muốn báo cáo ra dạng report
  
Hình ảnh form báo cáo tồn kho chi tiết.

Hình ảnh báo cáo Report tồn kho chi tiết
b.Báo cáo Excel: Người dùng muốn báo cáo excel
b.1: Người dùng chọn ngày, tháng, năm (From date và Come now ).
b.2: Hệ thống sẽ tự kiểm tra tất cả hàng hóa có trong khoản thời gian vừa chọn ở trên nếu có hàng hóa nào thì sẽ hiển thị hàng hóa có trong khoản thời gian vừa chọn sẽ hiển thị ra cho người dùng xem.
b.3: Người dùng sẽ chọn nút (Excel).
b.4:Hệ thống sẽ chuyển những hàng hóa mà người dùng muốn báo cáo ra dạng excel

Hình ảnh form báo cáo tồn kho chi tiết.

Hình ảnh báo cáo tồn kho chi tiết file Excel
Video hướng dẫn báo cáo tồn kho chi tiết
B. Báo cáo tồn kho theo sản phẩm.
Mô tả: Chức năng này cho phép người quản lý báo cáo – thống kê tồn kho theo sản phẩm bao gồm báo cáo report(Report), báo cáo excel(Excel).
Trình tự thực hiện:
1.Từ giao diện người dùng chọn quản lý Báo cáo tồn chi tiết (Inventory Product).
2.Hệ thống hiển thị giao diện quản lý Báo cáo tồn chi tiết (Inventory Product).
a.Báo cáo Report: Người dùng muốn báo cáo report.
a.1: Người dùng chọn ngày, tháng, năm và sản phẩm (From date & Come now và Goods_Id).
a.2: Hệ thống sẽ tự kiểm tra hàng hóa vừa chọn có trong khoản thời gian ở trên nếu có hàng hóa đó tồn thì sẽ hiển thị ra cho người dùng xem.
a.3: Người dùng sẽ chọn nút (Report).
a.4:Hệ thống sẽ chuyển hàng hóa mà người dùng muốn báo cáo ra dạng report

Hình ảnh form báo cáo tồn kho theo sản phẩm.

Hình ảnh báo cáo tồn kho theo sản phẩm file Report.
b.Báo cáo Excel: Người dùng muốn báo cáo excel
b.1: Người dùng chọn ngày, tháng, năm và sản phẩm (From date & Come now  và Goods_Id).
b.2: Hệ thống sẽ tự kiểm tra hàng hóa vừa chọn có trong khoản thời gian ở trên nếu có hàng hóa đó tồn thì sẽ hiển thị ra cho người dùng xem.
b.3: Người dùng sẽ chọn nút (Excel).
b.4:Hệ thống sẽ chuyển hàng hóa mà người dùng muốn báo cáo ra dạng excel

Hình ảnh form báo cáo tồn kho theo sản phẩm.

Hình ảnh báo cáo tồn kho theo sản phẩm file Excel.
Video hướng dẫn báo cáo tồn kho theo sản phẩm

III. THIẾT KẾ HỆ THỐNG HƯỚNG ĐỐI TƯỢNG.

III.1. Biểu đồ tuần tự.
 1.1.Chức năng Khách Hàng

 

Hình ảnh form khách hàng
          1.1.1. Danh sách phương thức.
a.Thêm mới.

private void btNew_Click(object sender, EventArgs e)
{
SetButton_open();
Themmoi = true;
setcontrol();
txtedCus_id.Focus();
MessageBox.Show(“Invite you to add new customer!”);
}

b.Lưu.

private void btSave_Click(object sender, EventArgs e)
{
if (Themmoi == true)
{
if (txtedCus_id.Text == “” || txtedCus_Name.Text == “”)
{
MessageBox.Show(“No data. Please check back!”);
}
else
{
string connString = @”Data Source=QUANGKHAI;Initial Catalog=SALES_MANAGER;Integrated Security=true;”;
SqlConnection cn = new SqlConnection(connString);
cn.Open();
SqlTransaction sqlTran = cn.BeginTransaction();
SqlCommand command = cn.CreateCommand();
command.Transaction = sqlTran;

try
{
command.CommandText =
“insert into [Customer] values (‘” + txtedCus_id.Text + “‘,N'” + txtedCus_Name.Text + “‘)”;
command.ExecuteNonQuery();
sqlTran.Commit();
MessageBox.Show(“Both records were written to database.”);
txtedCus_id.Focus();
setcontrol();

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
try
{
sqlTran.Rollback();
}
catch (Exception exRollback)
{
MessageBox.Show(exRollback.Message);
}
}
}
}
else
{
string connString = @”Data Source=QUANGKHAI;Initial Catalog=SALES_MANAGER;Integrated Security=true;”;
SqlConnection cn = new SqlConnection(connString);
cn.Open();
SqlCommand command = cn.CreateCommand();
SqlTransaction transaction;
transaction = cn.BeginTransaction(“SampleTransaction”);
command.Connection = cn;
command.Transaction = transaction;
try
{
command.CommandText =
“UPDATE Customer SET Customer_Name = ‘” + txtedCus_Name.Text + “‘WHERE Customer_Id = ‘” + txtedCus_id.Text + “‘”;
command.ExecuteNonQuery();
transaction.Commit();
MessageBox.Show(“Both versions are updated in the database.”);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
try
{
transaction.Rollback();
}
catch (Exception ex2)
{
MessageBox.Show(ex2.Message);
}
}
}
txtedCus_id.Enabled = true;
frmCustomer_Load(sender, e);
gcCustomer.DataSource = cus_model.LoadCustomer();
}

c.Xóa.

public void delete()
{
string connString = @”Data Source=QUANGKHAI;Initial Catalog=SALES_MANAGER;Integrated Security=true;”;
SqlConnection cn = new SqlConnection(connString);
cn.Open();
SqlTransaction objTrans = cn.BeginTransaction();
try
{
SqlCommand cmd = cn.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.Transaction = objTrans;
cmd.CommandText =
“DELETE Customer WHERE Customer_Id ='” + txtedCus_id.Text+ “‘”;
cmd.ExecuteNonQuery();
objTrans.Commit();
MessageBox.Show(“Transaction Committed\n”);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
try
{
objTrans.Rollback();
}
catch (Exception exRollback)
{
MessageBox.Show(exRollback.Message);
}
}
gcCustomer.DataSource = cus_model.LoadCustomer();
}

d.Cập nhập.

private void btExit_Click(object sender, EventArgs e)
{
txtedCus_Name.Focus();
Themmoi = false;
SetButton_close();
txtedCus_id.Enabled = false;
}

    2.1.Chức năng Hàng Hóa

 

1.2.1.Danh sách phương thức.
a.Thêm mới.

private void btNew_Click(object sender, EventArgs e)
{
setcontrol();
Themmoi = true;
txtedGod_id.Focus();
SetButton_close();
MessageBox.Show(“Invite you to add new products!”);
}

b.Lưu.

 private void btSave_Click(object sender, EventArgs e)
{
if (Themmoi == true)
{
if (txtedGod_id.Text == “” || txtedGod_Name.Text == “”)
{
MessageBox.Show(“No data. Please check back!”);
}
else
{
string connString = @”Data Source=QUANGKHAI;Initial Catalog=SALES_MANAGER;Integrated Security=true;”;
SqlConnection cn = new SqlConnection(connString);
cn.Open();
SqlTransaction sqlTran = cn.BeginTransaction();
SqlCommand command = cn.CreateCommand();
command.Transaction = sqlTran;
try
{
command.CommandText =
“insert into [Goods] values (‘” + txtedGod_id.Text + “‘,N'” + txtedGod_Name.Text + “‘,N'”+txtedUnit.Text+”‘,'” + txtedNumber.Text+”‘)”;
command.ExecuteNonQuery();
sqlTran.Commit();
MessageBox.Show(“Both records were written to database.”);
txtedGod_id.Focus();
setcontrol();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
try
{
sqlTran.Rollback();
}
catch (Exception exRollback)
{
MessageBox.Show(exRollback.Message);
}
}
}
}
else
{
string connString = @”Data Source=QUANGKHAI;Initial Catalog=SALES_MANAGER;Integrated Security=true;”;
SqlConnection cn = new SqlConnection(connString);
cn.Open();
SqlCommand command = cn.CreateCommand();
SqlTransaction transaction;
transaction = cn.BeginTransaction(“SampleTransaction”);
command.Connection = cn;
command.Transaction = transaction;
try
{
command.CommandText =
“UPDATE Goods SET Goods_Name =N'” + txtedGod_Name.Text + “‘,Unit='”+txtedUnit.Text+”‘,Quantity_Goods='” + txtedNumber.Text+”‘WHERE Goods_Id = ‘” + txtedGod_id.Text + “‘”;
command.ExecuteNonQuery();
transaction.Commit();
MessageBox.Show(“Both versions are updated in the database.”);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
try
{
transaction.Rollback();
}
catch (Exception exRollback)
{
MessageBox.Show(exRollback.Message);
}
}
}
txtedGod_id.Enabled = true;
SetButton_open();
gcGoods.DataSource = god_model.LoadGoods();
}

c.Xóa.

public void delete()
{
string connString = @”Data Source=QUANGKHAI;Initial Catalog=SALES_MANAGER;Integrated Security=true;”;
SqlConnection cn = new SqlConnection(connString);
cn.Open();
SqlTransaction objTrans = cn.BeginTransaction();
try
{
SqlCommand cmd = cn.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.Transaction = objTrans;
string id = gvGoods.GetRowCellValue(gvGoods.FocusedRowHandle, gvGoods.Columns[0]).ToString();
cmd.CommandText =
“DELETE Goods WHERE Goods_Id ='” + id + “‘”;
cmd.ExecuteNonQuery();
objTrans.Commit();
MessageBox.Show(“The system deleted successfully”);

}
catch (Exception ex)
{
// Handle the exception if the transaction fails to commit.
MessageBox.Show(ex.Message);
try
{
// Attempt to roll back the transaction.
objTrans.Rollback();
}
catch (Exception exRollback)
{
// Throws an InvalidOperationException if the connection
// is closed or the transaction has already been rolled
// back on the server.
MessageBox.Show(exRollback.Message);
}
}
gcGoods.DataSource = god_model.LoadGoods();
}

d.Cập nhập.

private void btExit_Click(object sender, EventArgs e)
{
txtedGod_Name.Focus();
Themmoi = false;
SetButton_close();
txtedGod_id.Enabled = false;
}

1.3.Chức năng Hóa Đơn Nhập.

1.3.1.Danh sách phương thức.
a.Thêm mới

private void btNew_Click(object sender, EventArgs e)
{
setcontrol();
Themmoi = true;
string id = ID_Voucher();
cbedDocument_Number.Text=(id);
cbedDocument_Number.Enabled = false;
dateEnter.Focus();
MessageBox.Show(“Invite you to add a new import bill!”);

}

b.Lưu.

private void btSave_Click(object sender, EventArgs e)
{
if (Themmoi == true)
{
if (dateEnter.Text == “” || cbedDocument_Number.Text == “”)
{
MessageBox.Show(“No data. Please check back!”);
}
else
{
//string id = ID_Voucher();
string ma = ID_Detailed();//da co trong csdl ha
string connString = @”Data Source=QUANGKHAI;Initial Catalog=SALES_MANAGER;Integrated Security=true;”;
SqlConnection cn = new SqlConnection(connString);
cn.Open();
//kn.khoidong();
// Start a local transaction.
SqlTransaction sqlTran = cn.BeginTransaction();
// Enlist a command in the current transaction.
SqlCommand command = cn.CreateCommand();
command.Transaction = sqlTran;

try
{
string ngay = String.Format(“{0:MM/dd/yyyy}”, dateEnter.EditValue);
// Execute two separate commands.
command.CommandText =
“insert into [Voucher] values (‘” + cbedDocument_Number.Text + “‘,'” + lookUpEdit2.Text + “‘,'” + ngay + “‘,’PNK’)”;
command.ExecuteNonQuery();
float thanhtien = float.Parse(txtedNumber.Text) * float.Parse(txtedUnit_Price.Text);
txtedInto_Momey.Text = thanhtien.ToString();
command.CommandText =
“insert into [Detailed] values (‘” + ma + “‘,'” + cbedDocument_Number.Text + “‘,'” + lookUpEdit3.Text + “‘,'” + txtedNumber.Text + “‘,'” + txtedUnit_Price.Text + “‘,'” + txtedInto_Momey.Text + “‘)”;
command.ExecuteNonQuery();
// Commit the transaction.
sqlTran.Commit();
MessageBox.Show(“Both records were written to database.”);
//frmImport_Ballot_Load(sender,e);
}
catch (Exception ex)
{
// Handle the exception if the transaction fails to commit.
MessageBox.Show(ex.Message);
try
{
// Attempt to roll back the transaction.
sqlTran.Rollback();
}
catch (Exception exRollback)
{
// Throws an InvalidOperationException if the connection
// is closed or the transaction has already been rolled
// back on the server.
MessageBox.Show(exRollback.Message);
}
}
}
}
else
{

string connString = @”Data Source=QUANGKHAI;Initial Catalog=SALES_MANAGER;Integrated Security=true;”;
SqlConnection cn = new SqlConnection(connString);
cn.Open();
SqlCommand command = cn.CreateCommand();
SqlTransaction transaction;
// Start a local transaction.
transaction = cn.BeginTransaction();
// Must assign both transaction object and connection
// to Command object for a pending local transaction
command.Connection = cn;
command.Transaction = transaction;
try
{

string ngay = String.Format(“{0:MM/dd/yyyy}”, dateEnter.EditValue);
command.CommandText =
“UPDATE Voucher SET Customer_Id = ‘” + lookUpEdit2.Text + “‘ ,Date_Invoice='” + ngay + “‘ WHERE Id_Voucher= ‘” + cbedDocument_Number.Text + “‘”;
command.ExecuteNonQuery();
float thanhtien = float.Parse(txtedNumber.Text) * float.Parse(txtedUnit_Price.Text);
txtedInto_Momey.Text = thanhtien.ToString();
command.CommandText =
“Update Detailed SET Id_Voucher='” + cbedDocument_Number.Text + “‘,Goods_Id='”+lookUpEdit3.Text+”‘, Number='” + txtedNumber.Text + “‘,Unit_Price='” + txtedUnit_Price.Text + “‘,Into_Money='” + txtedInto_Momey.Text + “‘ WHERE Detailed_Id = ‘” + textBox1.Text + “‘”;
command.ExecuteNonQuery();
// Attempt to commit the transaction.
transaction.Commit();
MessageBox.Show(“Both versions are updated in the database.”);
}
catch (Exception ex)
{
// Handle the exception if the transaction fails to commit.
MessageBox.Show(ex.Message);
try
{
// Attempt to roll back the transaction.
transaction.Rollback();
}
catch (Exception exRollback)
{
// Throws an InvalidOperationException if the connection
// is closed or the transaction has already been rolled
// back on the server.
MessageBox.Show(exRollback.Message);
}
}
}
cbedDocument_Number.Enabled = true;
frmImport_Ballot_Load(sender, e);

gcImport.DataSource = imp_model.LoadImport();
}

c.Thêm sản phẩm.

private void btNew_Click(object sender, EventArgs e)
{

if (Themmoi == true)
{
if (txtedGod_id.Text == “” || txtedGod_Name.Text == “”)
{
MessageBox.Show(“No data. Please check back!”);
}
else
{
// string ma = ID_Detailed();//da co trong csdl ha
//con.Open();
string connString = @”Data Source=QUANGKHAI;Initial Catalog=SALES_MANAGER;Integrated Security=true;”;
SqlConnection cn = new SqlConnection(connString);
cn.Open();
// Start a local transaction.
SqlTransaction sqlTran = cn.BeginTransaction();
// Enlist a command in the current transaction.
SqlCommand command = cn.CreateCommand();
command.Transaction = sqlTran;

try
{
// Execute two separate commands.
command.CommandText =
“insert into [Goods] values (‘” + txtedGod_id.Text + “‘,N'” + txtedGod_Name.Text + “‘,'” + txtedUnit.Text + “‘,'” + txtedNumber.Text + “‘)”;
command.ExecuteNonQuery();
//float thanhtien = float.Parse(txtedNumber.Text) * float.Parse(txtedUnit_Price.Text);
//txtedInto_Momey.Text = thanhtien.ToString();
//command.CommandText =
// “insert into [Detailed] values (‘” + ma + “‘,'” + txtedDocument_Number.Text + “‘,'” + cbGoods.Text + “‘,’Kg’,'” + txtedNumber.Text + “‘,'” + txtedUnit_Price.Text + “‘,'” + txtedInto_Momey.Text + “‘)”;
//command.ExecuteNonQuery();
// Commit the transaction.
sqlTran.Commit();
MessageBox.Show(“Both records were written to database.”);
txtedGod_id.Focus();
setcontrol();
}
catch (Exception ex)
{
// Handle the exception if the transaction fails to commit.
MessageBox.Show(ex.Message);
try
{
// Attempt to roll back the transaction.
sqlTran.Rollback();
}
catch (Exception exRollback)
{
// Throws an InvalidOperationException if the connection
// is closed or the transaction has already been rolled
// back on the server.
MessageBox.Show(exRollback.Message);
}
}
}
}
}

d.Xóa sản phẩm.

public void delete()
{
string connString = @”Data Source=QUANGKHAI;Initial Catalog=SALES_MANAGER;Integrated Security=true;”;
SqlConnection cn = new SqlConnection(connString);
cn.Open();
SqlTransaction objTrans = cn.BeginTransaction();
try
{
SqlCommand cmd = cn.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.Transaction = objTrans;
cmd.CommandText =
“DELETE from Detailed WHERE Detailed_Id= ‘” + textBox1.Text + “‘”;
cmd.ExecuteNonQuery();
string id = gvGoods.GetRowCellValue(gvGoods.FocusedRowHandle, gvGoods.Columns[4]).ToString();
cmd.CommandText =
“DELETE Goods WHERE Goods_Id ='” + id + “‘”;
cmd.ExecuteNonQuery();

objTrans.Commit();
MessageBox.Show(“The system deleted successfully”);

}
catch (Exception ex)
{
// Handle the exception if the transaction fails to commit.
MessageBox.Show(ex.Message);
try
{
// Attempt to roll back the transaction.
objTrans.Rollback();
}
catch (Exception exRollback)
{
// Throws an InvalidOperationException if the connection
// is closed or the transaction has already been rolled
// back on the server.
MessageBox.Show(exRollback.Message);
}
}
gcGoods.DataSource = god_model.LoadGoods();

}

e.Xóa.

public void delete()
{
string connString = @”Data Source=QUANGKHAI;Initial Catalog=SALES_MANAGER;Integrated Security=true;”;
SqlConnection cn = new SqlConnection(connString);
cn.Open();
SqlTransaction objTrans = cn.BeginTransaction();
SqlCommand cmd = cn.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.Transaction = objTrans;
try
{

cmd.CommandText =
“DELETE from Detailed WHERE Detailed_Id= ‘” + textBox1.Text + “‘”;
cmd.ExecuteNonQuery();
cmd.CommandText=
“DELETE from Voucher where Id_Voucher='”+cbedDocument_Number.Text+”‘”;
cmd.ExecuteNonQuery();
objTrans.Commit();
MessageBox.Show(“Transaction Committed “);

}
catch (Exception ex)
{
// Handle the exception if the transaction fails to commit.
MessageBox.Show(ex.Message);
try
{
// Attempt to roll back the transaction.
objTrans.Rollback();
}
catch (Exception exRollback)
{
// Throws an InvalidOperationException if the connection
// is closed or the transaction has already been rolled
// back on the server.
MessageBox.Show(exRollback.Message);
}
}

f.Cập nhập.

private void btExit_Click(object sender, EventArgs e)
{
dateEnter.Focus();
Themmoi = false;
SetButton_close();
cbedDocument_Number.Enabled = false;
}

1.4.Chức năng Hóa Đơn Xuất.

1.4.1. Danh sách phương thức.
a.Thêm mới.

 private void btNew_Click(object sender, EventArgs e)
{
setcontrol();
Themmoi = true;
string id = ID_Voucher();
cbedDocument_Number.Text = (id);
cbedDocument_Number.Enabled = false;
dateEnter.Focus();
MessageBox.Show(“Invite you to add a new export bill!”);
}

b.Lưu.

private void btSave_Click(object sender, EventArgs e)
{

if (Themmoi == true)
{
if (dateEnter.Text == “” || cbedDocument_Number.Text == “”)
{
MessageBox.Show(“No data. Please check back!”);
}
else
{
//string id = ID_Voucher();
string ma = ID_Detailed();//da co trong csdl ha
string connString = @”Data Source=QUANGKHAI;Initial Catalog=SALES_MANAGER;Integrated Security=true;”;
SqlConnection cn = new SqlConnection(connString);
cn.Open();
// Start a local transaction.
SqlTransaction sqlTran =cn.BeginTransaction();
// Enlist a command in the current transaction.
SqlCommand command = cn.CreateCommand();
command.Transaction = sqlTran;
try
{
string ngay = String.Format(“{0:MM/dd/yyyy}”, dateEnter.EditValue);
// Execute two separate commands.
command.CommandText =
“insert into [Voucher] values (‘” + cbedDocument_Number.Text + “‘,'” + lookUpEdit1.Text + “‘,'” + ngay + “‘,’PXK’)”;
command.ExecuteNonQuery();
float thanhtien = float.Parse(txtedNumber.Text) * float.Parse(txtedUnit_Price.Text);
txtedInto_Momey.Text = thanhtien.ToString();
command.CommandText =
“insert into [Detailed] values (‘” + ma + “‘,'”+ cbedDocument_Number.Text+”‘,'” + lookUpEdit2.Text + “‘,'” + txtedNumber.Text + “‘,'” + txtedUnit_Price.Text + “‘,'” + txtedInto_Momey.Text + “‘)”;
command.ExecuteNonQuery();
// Commit the transaction.
sqlTran.Commit();
MessageBox.Show(“Both records were written to database.”);
//frmImport_Ballot_Load(sender,e);
}
catch (Exception ex)
{
// Handle the exception if the transaction fails to commit.
MessageBox.Show(ex.Message);
try
{
// Attempt to roll back the transaction.
sqlTran.Rollback();
}
catch (Exception exRollback)
{
// Throws an InvalidOperationException if the connection
// is closed or the transaction has already been rolled
// back on the server.
MessageBox.Show(exRollback.Message);
}
}
}
}
else
{

string connString = @”Data Source=QUANGKHAI;Initial Catalog=SALES_MANAGER;Integrated Security=true;”;
SqlConnection cn = new SqlConnection(connString);
cn.Open();
SqlCommand command = cn.CreateCommand();
SqlTransaction transaction;
// Start a local transaction.
transaction = cn.BeginTransaction(“SampleTransaction”);
// Must assign both transaction object and connection
// to Command object for a pending local transaction
command.Connection = cn;
command.Transaction = transaction;
try
{

string ngay = String.Format(“{0:MM/dd/yyyy}”, dateEnter.EditValue);
command.CommandText =
“UPDATE Voucher SET Customer_Id = ‘” + lookUpEdit1.Text + “‘,Date_Invoice='” + ngay + “‘ WHERE Id_Voucher= ‘” + cbedDocument_Number.Text + “‘”;
command.ExecuteNonQuery();
float thanhtien = float.Parse(txtedNumber.Text) * float.Parse(txtedUnit_Price.Text);
txtedInto_Momey.Text = thanhtien.ToString();
command.CommandText =
“Update Detailed SET Id_Voucher='” + cbedDocument_Number.Text + “‘,Goods_Id='”+lookUpEdit2.Text+”‘, Number='” + txtedNumber.Text + “‘,Unit_Price='” + txtedUnit_Price.Text + “‘,Into_Money='” + txtedInto_Momey.Text + “‘ WHERE Detailed_Id = ‘” + textBox1.Text + “‘”;
command.ExecuteNonQuery();
// Attempt to commit the transaction.
transaction.Commit();
Console.WriteLine(“Both versions are updated in the database.”);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);

// Attempt to roll back the transaction.
try
{
transaction.Rollback();
}
catch (Exception exRollback)
{
// This catch block will handle any errors that may have occurred
// on the server that would cause the rollback to fail, such as
// a closed connection.
MessageBox.Show(exRollback.Message);
}
}
}
cbedDocument_Number.Enabled = true;
frmExport_Coupon_Load(sender, e);
gcExport.DataSource = exp_model.LoadExport();

}

c.Thêm sản phẩm.

private void btNew_Click(object sender, EventArgs e)
{

if (Themmoi == true)
{
if (txtedGod_id.Text == “” || txtedGod_Name.Text == “”)
{
MessageBox.Show(“No data. Please check back!”);
}
else
{
// string ma = ID_Detailed();//da co trong csdl ha
//con.Open();
string connString = @”Data Source=QUANGKHAI;Initial Catalog=SALES_MANAGER;Integrated Security=true;”;
SqlConnection cn = new SqlConnection(connString);
cn.Open();
// Start a local transaction.
SqlTransaction sqlTran = cn.BeginTransaction();
// Enlist a command in the current transaction.
SqlCommand command = cn.CreateCommand();
command.Transaction = sqlTran;

try
{
// Execute two separate commands.
command.CommandText =
“insert into [Goods] values (‘” + txtedGod_id.Text + “‘,N'” + txtedGod_Name.Text + “‘,'” + txtedUnit.Text + “‘,'” + txtedNumber.Text + “‘)”;
command.ExecuteNonQuery();
//float thanhtien = float.Parse(txtedNumber.Text) * float.Parse(txtedUnit_Price.Text);
//txtedInto_Momey.Text = thanhtien.ToString();
//command.CommandText =
// “insert into [Detailed] values (‘” + ma + “‘,'” + txtedDocument_Number.Text + “‘,'” + cbGoods.Text + “‘,’Kg’,'” + txtedNumber.Text + “‘,'” + txtedUnit_Price.Text + “‘,'” + txtedInto_Momey.Text + “‘)”;
//command.ExecuteNonQuery();
// Commit the transaction.
sqlTran.Commit();
MessageBox.Show(“Both records were written to database.”);
txtedGod_id.Focus();
setcontrol();
}
catch (Exception ex)
{
// Handle the exception if the transaction fails to commit.
MessageBox.Show(ex.Message);
try
{
// Attempt to roll back the transaction.
sqlTran.Rollback();
}
catch (Exception exRollback)
{
// Throws an InvalidOperationException if the connection
// is closed or the transaction has already been rolled
// back on the server.
MessageBox.Show(exRollback.Message);
}
}
}
}
}

d.Xóa sản phẩm.

public void delete()
{
string connString = @”Data Source=QUANGKHAI;Initial Catalog=SALES_MANAGER;Integrated Security=true;”;
SqlConnection cn = new SqlConnection(connString);
cn.Open();
SqlTransaction objTrans = cn.BeginTransaction();
try
{
SqlCommand cmd = cn.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.Transaction = objTrans;
cmd.CommandText =
“DELETE from Detailed WHERE Detailed_Id= ‘” + textBox1.Text + “‘”;
cmd.ExecuteNonQuery();
string id = gvGoods.GetRowCellValue(gvGoods.FocusedRowHandle, gvGoods.Columns[4]).ToString();
cmd.CommandText =
“DELETE Goods WHERE Goods_Id ='” + id + “‘”;
cmd.ExecuteNonQuery();

objTrans.Commit();
MessageBox.Show(“The system deleted successfully”);

}
catch (Exception ex)
{
// Handle the exception if the transaction fails to commit.
MessageBox.Show(ex.Message);
try
{
// Attempt to roll back the transaction.
objTrans.Rollback();
}
catch (Exception exRollback)
{
// Throws an InvalidOperationException if the connection
// is closed or the transaction has already been rolled
// back on the server.
MessageBox.Show(exRollback.Message);
}
}
gcGoods.DataSource = god_model.LoadGoods();

}

e.Xóa.

 public void delete()
{
string connString = @”Data Source=QUANGKHAI;Initial Catalog=SALES_MANAGER;Integrated Security=true;”;
SqlConnection cn = new SqlConnection(connString);
cn.Open();
SqlTransaction objTrans = cn.BeginTransaction();
try
{
SqlCommand cmd = cn.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.Transaction = objTrans;
cmd.CommandText =
“DELETE Detailed WHERE Detailed_Id ='” + textBox1.Text/*gvPNK.CurrentRow.Cells[11].Value.ToString()*/ + “‘”;
cmd.ExecuteNonQuery();
cmd.CommandText =
“DELETE from Voucher where Id_Voucher='” + cbedDocument_Number.Text + “‘”;
cmd.ExecuteNonQuery();
objTrans.Commit();
MessageBox.Show(“Transaction Committed\n”);

}
catch (Exception ex)
{
// Handle the exception if the transaction fails to commit.
MessageBox.Show(ex.Message);
try
{
// Attempt to roll back the transaction.
objTrans.Rollback();
}
catch (Exception exRollback)
{
// Throws an InvalidOperationException if the connection
// is closed or the transaction has already been rolled
// back on the server.
MessageBox.Show(exRollback.Message);
}
}
}

f.Cập nhập.

private void btExit_Click(object sender, EventArgs e)
{
dateEnter.Focus();
Themmoi = false;
SetButton_close();
//cbGoods.Enabled = false;
//cbCustomer.Enabled = false;
cbedDocument_Number.Enabled = false;

}

III.2.Biểu đồ lớp.

IV. THIẾT KẾ CƠ SỞ DỮ LIỆU.

IV.1.Thiết kế bảng cơ sở dữ liệu.
  • 1. Bảng: Customer (Khách hàng).
  • 2. Bảng: Goods (Hàng hóa).
  • 3. Bảng: Voucher (Hóa đơn).
  • 4. Bảng: Detailed (Chi tiết).
IV.2. Mô hình dữ liệu quan hệ.

V. THIẾT KẾ GIAO DIỆN.

V.1. Thiết kế giao diện cho module.
  • 1. Danh sách các chức năng của module.

VI. CÀI ĐẶT VÀ SỬ DỤNG PHẦN MỀM.

VI.1. Cài đặt.
  •  Yêu cầu về hệ thống máy tính tối thiểu:
  1.   Hệ điều hành: Windows.
  2.   Hệ quản trị cơ sở dữ liệu SQL Server 2012, Microsoft Visua Studio 2015.
  3.   Máy tính cài MS Office bản thấp nhất là Office 2010.
VI.2. Đánh giá.
Xét về cơ bản, hệ thống đã thỏa mãn yêu cầu ban đầu đặt ra, cung cấp đủ các chức năng phù hợp cho quá trình bán hàng, cập nhật các thông tin, quản lý các thông tin như thông tin về Sản phẩm, Khách hàng, Hóa đơn nhập, Hóa đơn xuất trong công ty.
VI.3. Các hướng phát triển thêm cho phần mềm.
Hoàn thiện một số chức năng chưa làm được, sửa các lỗi xảy ra  trong quá trình sử dụng.