Tải bản đầy đủ (.doc) (46 trang)

Xây dựng ứng dụng quản lý bán hàng (tại khoa CNTT) trên môi trường C#

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (618.83 KB, 46 trang )

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT VINH
KHOA CÔNG NGHỆ THÔNG TIN
Bộ Môn Mạng & Hệ Thống Thông Tin
----------------***--------------

ĐỒ ÁN MÔN HỌC
PHÁT TRIỂN ỨNG DỤNG WINDOWS
Tên đề tài: Xây dựng ứng dụng quản lý bán hàng (tại khoa CNTT)
trên môi trường C#
Giáo viên hướng dẫn

: ThsS. Phạm Thị Thanh Bình

Nhóm sinh viên thực hiện

: Nguyễn Thị Hoa
Hồ Trọng Đạt
: CĐCNTT-K39

Lớp

Nghệ An, ngày 12 tháng 12 năm 2015
1


MỤC LỤC
LỜI NÓI ĐẦU........................................................................................................................3
CHƯƠNG I.............................................................................................................................4
PHIẾU GIAO ĐỒ ÁN MÔN HỌC........................................................................................4
CHƯƠNG 2............................................................................................................................6
PHÂN TÍCH HỆ THỐNG......................................................................................................6


PHÂN TÍCH CÁC YẾU TỐ CỦA BÀI TOÁN......................................................................6
I. Các thành phần chính của chương trình quản lý bán hàng..................................................6
CHƯƠNG 3............................................................................................................................8
CÀI ĐẶT................................................................................................................................8
I. Công cụ thực hiện................................................................................................................8
a. SQL Server 2008.................................................................................................................8
b. Ngôn ngữ lập trình: C#.......................................................................................................8
II. Giao diện chính..................................................................................................................9
III. Các giao diện...................................................................................................................12
KẾT LUẬN...........................................................................................................................46

2


LỜI NÓI ĐẦU
Trong những năm gần đây, cùng với sự phát triển của xã hội và nền kinh tế thị
trường thì công việc quản lý ngày càng khó khăn và phức tạp. Công việc quản lý ngày
càng đóng góp một vai trò quan trọng trong các cơ quan, công ty, xí nghiệp .Việc áp
dụng các thành tựu của khoa học kỹ thuật nói chung và thành tựu của công nghệ thông
tin nói riêng vào công tác quản lý đã không ngừng phát triển. Công tác quản lý ngày
càng được nhiều các cơ quan và đơn vị quan tâm. Nhưng quản lý thế nào và quản lý
làm sao cho đạt được hiệu quả cao nhất như: nhanh, bảo mật, thân thiện? Tất cả những
yếu tố trên chúng ta đều có thể nhờ đến những thành tựu của ngành công nghệ thông
tin, đó là những phần mềm trợ giúp quản lý thay cho những tệp hồ sơ dày cộm, thay
cho những ngăn tủ đựng hồ sơ chiếm nhiều diện tích và có thể ta phải mất rất nhiều
thời gian để lục lọi, tìm kiếm những thông tin hay những dữ liệu quan trọng. Tất cả
những điều bất tiện ở trên đều có
thể được tích hợp trong phần mềm – một sản phẩm của ngành tin học.
Tuy nhiên hiện nay, việc vận dụng ngay các phần mềm chuyên dụng còn là một
vấn đề gặp không ít khó khăn. Các hệ thống tin học hoá chưa đáp ứng được yêu cầu

của các nhà quản lý. Để đáp ứng được yêu cầu cấp thiết đó thì đòi hỏi phải có một đội
ngũ cán bộ chuyên môn có đủ trình độ để phân tích hệ thống quản lý một cách đầy đủ
chi tiết mà không bị thiếu sót hay thừa thông tin. Từ đó thiết kế hệ thống thành những
chương trình thuận tiện trong quá trình làm việc như : tìm kiếm, nhập liệu, thống kê ...
Quy mô của thư bán hàng gắn liền với sự phát triển của loài người, cùng với sự
phát triển xã hội và phân ngành sản xuất. Hàng hoá ngày càng đa dạng về nội dung và
lớn về số lượng. Ngày nay, nhiều hang hoá đã có số lượng hàng vạn , hàng trăm số ,
phức tạp về mặt quản lý và tra tìm sản phẩm. Điều phức tạp hơn là xử lý thông tin
trong việc quản lý mặt hàng để người sử dụng tìm được hàng cần thiết phục vụ cho các
vấn đề cần nghiên cứu. Chính vì vậy việc tin học hoá hệ thống thư viện để cho hệ
thống hoạt động có hiệu quả hơn là một nhu cầu cần thiết hiện nay.
Với đề tài Quản lý bán hàng chúng ta sẽ thấy được tầm quan trọng của việc
ứng dụng công nghệ thông tin trong việc quản lý, nghiên cứu và tìm kiếm thông tin
thư viện.
Đây là lần đầu tiên em thiết kế một hệ thống thực tế, với sự hiểu biết và kinh
nghiệm chưa nhiều nên chắc chắn không tránh khỏi những sai sót và điểm chưa hợp
lý. Chúng em mong cô bổ sung góp ý để hệ thống được hoàn chỉnh hơn
Em xin chân thành cảm ơn cô ThS. Phạm Thị Thanh Bình đã tận tình giúp đỡ
để chúng em hoàn thiện đề tài này .!

3


CHƯƠNG I
PHIẾU GIAO ĐỒ ÁN MÔN HỌC
MÔN HỌC: LẬP TRÌNH ỨNG DỤNG WINDOWS
Họ và tên sinh viên : Nguyễn Thị Hoa
Lớp: CDTTCK39: CĐ Công nghệ Thông tin K39.
Ngày giao đề: 17/11/2015


Ngày hoàn thành: 13/12/2015

1. Tên đề tài: Xây dựng ứng dụng quản lý thông tin bán hàng trên môi trường C#
2. Cho lược đồ quan hệ cơ sở dữ liệu Quản Lý Bán Hàng

2.1. Tạo CSDL MS SQL SERVER với tên cơ sở dữ liệu là QL_BanHang - Tạo các
bảng theo cấu trúc trên.
- Tạo lược đồ quan hệ Database Diagram.
- Cập nhật thông tin cho các bảng để kiểm thử chương trình (các bảng bên 1 (bên chìa
khóa): 4 bản ghi, các bảng còn lại cập nhật đủ thông tin để kiểm thử).
2.2. Thiết kế hệ thống chương trình để:
- Cập nhật thông tin vào bảng: tblKhach (khách), tbHang(hàng), tbDausach(Đầu sách),
tbSach(Sách).
- Xây dựng chức năng quản trị người dùng đăng nhập hệ thống
4


- Các chức năng khác nếu có.
3. Báo cáo và chương trình:
- Báo cáo thuyết minh trình bày theo mẫu (KẾ HOẠCH VÀ MỘT SỐ QUY ĐỊNH VỀ
THỰC HIỆN ĐỒ ÁN MÔN HỌC PHÁT TRIỂN ỨNG DỤNG WINDOWS)
- Chương trình: ghi vào đĩa CD để nạp.

TỔ TRƯỞNG BỘ MÔN

GIÁO VIÊN HƯỚNG DẪN

NHÓM SINH VIÊN
THỰC HIỆN


ThS. Nguyễn Quốc Khánh

ThS. Phạm Thị Thanh Bình

Nguyễn Thị Hoa
Hồ Trọng Đạt

5


CHƯƠNG 2
PHÂN TÍCH HỆ THỐNG
PHÂN TÍCH CÁC YẾU TỐ CỦA BÀI TOÁN

Ma Hang
Ten Hang
DVT
So Luong
So HD
Ma Khach
NgHD
DienGiai
SoHD
Ma Hang
So Luong
Don Gia
Ma Khach
Ten Khach
Dia Chi
Dien Thoai


tblHang
Char (10)
Nvarchar (20)
Char (10)
Int
tblHoaDonBan
Char (10)
Char (10)
Datetime
Nvarchar ( 30 )
tblChiTietHoaDon
Char (10)
Char ( 10 )
Int
Int (float)
tblKhach
Char (10)
Nvarchar (20)
Nvarchar (30)
Char (15)

I. Các thành phần chính của chương trình quản lý bán hàng
-Quản Lý Bán Hàng bao gồm các Hệ thống, danh mục, thống kê, tìm kiếm các
mục này ta dùng lệnh tool StripMenuItem .
 Phần Hệ thống bao gồm chức năng thoát và giới thiệu :chức năng thoát ta muốn
chữ có màu ta dùng forecoler(red) các mục còn lại tương tự
Code của thoát ta vào code của form chính để làm : private void
Form1_FormClosing(object sender, FormClosingEventArgs e)
{

Application.Exit();
 Phần giới thiệu tương tự như trên nhưng ta dùng lệnh AboutBox1 tương tự chèn
ảnh vào ta dùng lệnh image .
Code của phần giới thiệu add từ ngoài vào : private void
gioiThieuToolStripMenuItem_Click(object sender, EventArgs e)
{
AboutBox1 frm = new AboutBox1();
6


frm.Show();
this.Hide();
-Phần Danh mục bao gồm : form khách hàng , form Hoá Đơn Bán ,form Hàng
bán, và form Chi tiết hoá đơn .
Để có được các danh mục và các form như trên Menu ta phải tạo các form đó
trước và viết code cho các bảng form hệ thống và kết nối cơ sở dữ liệu của nó vào
thành form hoàn chỉnh không bị lỗi rồi tạo mục form chính rồi add item các form
Khách hàng , Hoá đơn bán, hàng bán. Và form chi tiết hoá đơn vào mục form chính
.tương tự phần tìm kiếm cũng vậy .
Còn phần thống kê ta phải làm như sau : tạo report thống kê các loại Hàng hoá .
Dùng CrytalReport1 để chỉnh sửa phần thống kê .

7


CHƯƠNG 3
CÀI ĐẶT
I. Công cụ thực hiện
a. SQL Server 2008
SQL Server 2008 cùng với .NET Framework đã giảm được sự phức tạp trong

việc phát triển các ứng dụng mới. ADO.NET Entity Framework cho phép các chuyên
gia phát triển phần mềm có thể nâng cao năng suất bằng làm việc với các thực thể dữ
liệu logic đáp ứng được các yêu cầu của doanh nghiệp thay vì lập trình trực tiếp với
các bảng và cột. Các mở rộng của ngôn ngữ truy vấn tích hợp (LINQ) mới trong .NET
Framework đã cách mạng hóa cách các chuyên gia phát triển truy vấn dữ liệu bằng
việc mở rộng Visual C#® và Visual Basic® .NET để hỗ trợ cú pháp truy vấn giống
SQL vốn đã có. Hỗ trợ cho các hệ thống kết nối cho phép chuyên gia phát triển xây
dựng các ứng dụng cho phép người dùng mang dữ liệu cùng với ứng dụng này vào các
thiết bị và sau đó đồng bộ dữ liệu của chúng với máy chủ trung tâm.
b. Ngôn ngữ lập trình: C#
Ngôn ngữ C# khá đơn giản, chỉ khoảng hơn 80 từ khóa và hơn mười mấy kiểu dữ
liệu
được dựng sẵn. Tuy nhiên, ngôn ngữ C# có ý nghĩa to lớn khi nó thực thi những khái
niệm lập trình hiện đại. C# bao gồm tất cả những hỗ trợ cho cấu trúc, thành phần
component, lập trình hướng đối tượng. Những tính chất đó hiện diện trong một ngôn
ngữ lập trình hiện đại. Hơn nữa ngôn ngữ C# được xây dựng trên nền tảng hai ngôn
ngữ mạnh nhất là C++ và Java.
Tóm lại, C# có các đặc trưng sau đây:
- C# là ngôn ngữ đơn giản.
- C# là ngôn ngữ hiện đại.
- C# là ngôn ngữ hướng đối tượng.
- C# là ngôn ngữ mạnh mẽ và mềm dẻo.
- C# là ngôn ngữ hướng module.
- C# sẽ trở nên phổ biến.

8


II. Giao diện chính


 Giao diện chính là giao diện của hệ thống gồm tất cả các form sau khi chạy
và đăng nhập cơ sở dữ liệu của mỗi chương trình quản lý mỗi form mỗi
chương trình trong đó. Giao diện chính bao gồm hệ thống, danh mục ,
thống kê và tìm kiếm . mỗi form có mỗi chức năng riêng của nó.
 Code form chính
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace QL_BanHang
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// Thoát
private void thoatToolStripMenuItem_Click(object sender, EventArgs e)
{
9


DialogResult thoat = MessageBox.Show("Bạn có chắc chắn muốn thoát
không?", "THÔNG BÁO", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (thoat == DialogResult.Yes)
{
//this.Close();
Application.Exit();
}

}
// Tìm kiếm khách hàng
private void khachhangToolStripMenuItem1_Click(object sender, EventArgs e)
{
frmTK_KhachHang frmTT = new frmTK_KhachHang();
frmTT.Show();
this.Hide();
}
// Danh muc Khách hàng
private void khachHangToolStripMenuItem_Click(object sender, EventArgs e)
{
KhachHang frmTT = new KhachHang();
frmTT.Show();
this.Hide();
}
// Danh muc Hàng
private void hangBanToolStripMenuItem_Click(object sender, EventArgs e)
{
frmHang frmH = new frmHang();
frmH.Show();
this.Hide();
}
// Danh muc Hoá đơn bán
private void hoaDonBanToolStripMenuItem_Click(object sender, EventArgs e)
{
frmHoaDonBan frm = new frmHoaDonBan();
frm.Show();
this.Hide();
}
// Danh muc Chi tiet hoa don

private void chiTietHoaDonToolStripMenuItem_Click(object sender, EventArgs
e)
{
frmChiTietHoaDon frm = new frmChiTietHoaDon();
frm.Show();
this.Hide();
10


}
// Even thoat
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Application.Exit();
}
// Thong ke theo thang
private void theoThangToolStripMenuItem_Click(object sender, EventArgs e)
{
frmReport_ThongKe frm = new frmReport_ThongKe();
frm.Show();
this.Hide();
}
// Hệ thống / Giới thiệu
private void gioiThieuToolStripMenuItem_Click(object sender, EventArgs e)
{
AboutBox1 frm = new AboutBox1();
frm.Show();
this.Hide();
}
private void timKiemToolStripMenuItem_Click(object sender, EventArgs )


11


III. Các giao diện

 CODE KHÁCH HÀNG :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace QL_BanHang
{
public partial class KhachHang : Form
{
public KhachHang()
{
InitializeComponent();
}
12


private SqlConnection con;
private DataTable dt = new DataTable("KhachHang");
private SqlDataAdapter da = new SqlDataAdapter();

private int them, sua, icount = 0;
private SqlCommand Command;
private DataSet ds;
//Hàm kết nối
private void connect()
{
string cn = @"Data Source=Admin-PC1127jkh\SQLEXPRESS;Initial
Catalog=QL_BanHang;Integrated Security=True";
try
{
con = new SqlConnection(cn);
con.Open();//Mở kết nối
}
catch (Exception)
{
MessageBox.Show("Không kết nối được tới dữ liệu!...", "THÔNG BÁO",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
// Hàm đóng kết nối
private void disconnect()
{
con.Close();
}
//Load DataGridView
private void Load_DataGridView1()
{
//Cách 1
//SqlCommand command = new SqlCommand(); //Khai báo 1 command
//command.Connection = con; //Kết nối cho command

//command.CommandType = CommandType.Text; //Kiểu Command
//command.CommandText = @"Select * from tblKhach";
//da.SelectCommand = command; //Gán Command cho da
//da.Fill(dt); //Nạp DL cho Table
//dgvKhachHang.DataSource = dt; //Gán DL lên DataGRV
//Cách 2
String sql = "Select [MaKhach] ,[TenKhach] ,[DiaChi] ,[DienThoai] from
tblKhach ";
da = new SqlDataAdapter(sql, con);
ds = new DataSet();
ds.Clear();
13


da.Fill(ds);
dt = ds.Tables[0];
dgvKhachHang.DataSource = dt;
dgvKhachHang.Columns[0].HeaderText = "Mã Khách Hàng";
dgvKhachHang.Columns[0].Width = 100;
dgvKhachHang.Columns[1].HeaderText = "Tên Khách Hàng";
dgvKhachHang.Columns[1].Width = 190;
dgvKhachHang.Columns[2].HeaderText = "Địa Chỉ";
dgvKhachHang.Columns[2].Width = 250;
dgvKhachHang.Columns[3].HeaderText = "Điện Thoại";
dgvKhachHang.Columns[3].Width = 100;
if (dgvKhachHang.Rows.Count - 1 <= 0)
dgvKhachHang.Visible = false;
return;
}
//SetControl

private void SetControl(bool edit)
{
tbDiaChi.ReadOnly = !edit;
tbDienThoai.ReadOnly = !edit;
tbTenKH.ReadOnly = !edit;
btnThem.Enabled = !edit;
btnSua.Enabled = !edit;
btnLuu.Enabled = edit;
btnXoa.Enabled = !edit;
dgvKhachHang.Enabled = !edit;
}
// Binding
private void Binding()
{
tbMaKH.DataBindings.Clear();
tbMaKH.DataBindings.Add("Text", dgvKhachHang.DataSource, "MaKhach");
tbTenKH.DataBindings.Clear();
tbTenKH.DataBindings.Add("Text", dgvKhachHang.DataSource,
"TenKhach");
tbDiaChi.DataBindings.Clear();
tbDiaChi.DataBindings.Add("Text", dgvKhachHang.DataSource, "DiaChi");
tbDienThoai.DataBindings.Clear();
tbDienThoai.DataBindings.Add("Text", dgvKhachHang.DataSource,
"DienThoai");
}
// Sinh mã tự động
string SinhMa()
14



{
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT [MaKhach] FROM [dbo].[tblKhach] order
by [CreatDate] desc";
cmd.ExecuteNonQuery();
da.SelectCommand = cmd;
da.Fill(dt);
if (dt.Rows.Count > 0)
{
string ma = String.Format(dt.Rows[0][0].ToString());
string s = ma.Substring(2, ma.Length - 2);
s = s.Trim();
int stt = int.Parse(s);
string kq = "KH";
stt += 1;
string tam = stt.ToString();
// Lắp các số 0 còn thiếu
if (s.Length != tam.Length)
{
for (int i = 0; i < (s.Length - tam.Length); i++)
kq += "0";
}
kq += stt.ToString();
return kq;
}
else
{
return "KH00000001";

}
}
// Load Form
private void KhachHang_Load(object sender, EventArgs e)
{
tbMaKH.ReadOnly = true;
connect();
SetControl(false);
Load_DataGridView1();
Binding();
}
// Thoat
private void btnThoat_Click(object sender, EventArgs e)
{
if (icount == 1)
{
15


disconnect();
connect();
Load_DataGridView1();
Binding();
SetControl(false);
icount = 0;
return;
}
DialogResult thoat = MessageBox.Show("Bạn có chắc chắn muốn thoát
không?","THÔNG BÁO",MessageBoxButtons.YesNo,MessageBoxIcon.Warning);
if (thoat == DialogResult.Yes)

{
this.Close();
}
}
// Thêm
private void btnThem_Click(object sender, EventArgs e)
{
them = 1; sua = 0; icount = 1;
tbTenKH.Text = "";
tbDienThoai.Text = "";
tbDiaChi.Text = "";
tbMaKH.Text = SinhMa();
tbTenKH.Select();
SetControl(true);
}
// Sửa
private void btnSua_Click(object sender, EventArgs e)
{
them = 0; sua = 1; icount = 1;
SetControl(true);
tbTenKH.Select();
}
// Xoá
private void btnXoa_Click(object sender, EventArgs e)
{
if (dgvKhachHang.Rows.Count - 1 == 0)
return;
if (MessageBox.Show("Bạn có muốn xóa Khách hàng: '" + tbTenKH.Text + "'
có Mã là: '" + tbMaKH.Text.Trim() + "' không?", "THÔNG BÁO",
MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)

{
string sql = "Delete from tblKhach where MaKhach='" + tbMaKH.Text +
"'";
Command = new SqlCommand(sql, con);
16


//Truy vấn
try
{
Command.ExecuteNonQuery();
}
catch
{
MessageBox.Show("Khách bạn xoá đang tồn tại hoá đơn bán. \nVui lòng
xoá hoá đơn bán trước. ","THÔNG
BÁO",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
Load_DataGridView1();
Binding();
}
}
// Lưu
private void btnLuu_Click(object sender, EventArgs e)
{
if (tbTenKH.Text.Trim().Length == 0)
{
MessageBox.Show("Vui lòng nhập tên khách hàng.", "THÔNG BÁO",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
tbTenKH.Select();

return;
}
if (tbDiaChi.Text.Trim().Length == 0)
{
MessageBox.Show("Vui lòng nhập địa chỉ khách hàng.", "THÔNG BÁO",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
tbDiaChi.Select();
return;
}
if (tbDienThoai.Text.Trim().Length == 0)
{
MessageBox.Show("Vui lòng nhập điện thoại khách hàng.", "THÔNG
BÁO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
tbDienThoai.Select();
return;
}
//Thực hiên thêm và sửa
String Sql = "";
string a = DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss");
if (them == 1 && sua == 0)
{

17


Sql = "Insert Into tblKhach Values('" + tbMaKH.Text.Trim() + "',N'" +
tbTenKH.Text.Trim() + "',N'" + tbDiaChi.Text.Trim() + "',N'" +
tbDienThoai.Text.Trim() + "','"+a.ToString()+"')";
}
if (them == 0 && sua == 1)

{
Sql = "Update tblKhach Set TenKhach=N'" + tbTenKH.Text.Trim() +
"',DiaChi=N'" + tbDiaChi.Text.Trim() + "',DienThoai=N'" + tbDienThoai.Text.Trim()
+ "' Where MaKhach='" + tbMaKH.Text.Trim() + "'";
}
try
{
DialogResult h = MessageBox.Show("Bạn có muốn cập nhật dữ liệu của
mình không?", "THÔNG BÁO", MessageBoxButtons.YesNo,
MessageBoxIcon.Information);
if (h == DialogResult.No)
{
return;
}
//Khởi tạo đối tượng Command
Command = new SqlCommand(Sql, con);
//Truy vấn
Command.ExecuteNonQuery();
Load_DataGridView1();
Binding();
SetControl(false);
icount = 0;
}
catch (Exception ex)
{
MessageBox.Show("Lỗi cập nhật dữ liệu\n\n" + ex.Message, "ERRO",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
//Chỉ cho nhập số

private void txtSoLuong_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
{
e.Handled = true;
}
}
// Bắt sự kiện form Khach hàng đóng hiện lên trang chủ
private void KhachHang_FormClosing(object sender, FormClosingEventArgs e)
{
18


Form1 frm = new Form1();
frm.Show();
}
}
}
 Quản Lý Hàng (sản phẩm)

 CODE Quản lý Hàng
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace QL_BanHang
{
public partial class frmHang : Form
{
public frmHang()
{
InitializeComponent();
19


}
private SqlConnection con;
private DataTable dt = new DataTable("Hang");
private SqlDataAdapter da = new SqlDataAdapter();
private int them, sua, icount = 0;
private SqlCommand Command;
private DataSet ds;
//Hàm kết nối
private void connect()
{
string cn = @"Data Source=Admin-PC1127jkh\SQLEXPRESS;Initial
Catalog=QL_BanHang;Integrated Security=True";
try
{
con = new SqlConnection(cn);
con.Open();//Mở kết nối
}
catch (Exception)
{
MessageBox.Show("Không kết nối được tới dữ liệu!...", "THÔNG BÁO",

MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
// Hàm đóng kết nối
private void disconnect()
{
con.Close();
}
//Load DataGridView
private void Load_DataGridView1()
{
//Cách 2
String sql = "Select * from tblHang ";
da = new SqlDataAdapter(sql, con);
ds = new DataSet();
ds.Clear();
da.Fill(ds);
dt = ds.Tables[0];
dgvHang.DataSource = dt;
dgvHang.Columns[0].HeaderText = "Mã Hàng";
dgvHang.Columns[0].Width = 100;
dgvHang.Columns[1].HeaderText = "Tên Hàng";
dgvHang.Columns[1].Width = 190;
20


dgvHang.Columns[2].HeaderText = "Đơn Vi Tính";
dgvHang.Columns[2].Width = 250;
dgvHang.Columns[3].HeaderText = "Số Lượng";
dgvHang.Columns[3].Width = 100;

if (dgvHang.Rows.Count - 1 <= 0)
dgvHang.Visible = false;
return;
}
//SetControl
private void SetControl(bool edit)
{
tbDVT.ReadOnly = !edit;
tbSoLuong.ReadOnly = !edit;
tbTenHang.ReadOnly = !edit;
btnThem.Enabled = !edit;
btnSua.Enabled = !edit;
btnLuu.Enabled = edit;
btnXoa.Enabled = !edit;
dgvHang.Enabled = !edit;
}
// Binding
private void Binding()
{
tbMaHang.DataBindings.Clear();
tbMaHang.DataBindings.Add("Text", dgvHang.DataSource, "MaHang");
tbTenHang.DataBindings.Clear();
tbTenHang.DataBindings.Add("Text", dgvHang.DataSource, "TenHang");
tbDVT.DataBindings.Clear();
tbDVT.DataBindings.Add("Text", dgvHang.DataSource, "DVT");
tbSoLuong.DataBindings.Clear();
tbSoLuong.DataBindings.Add("Text", dgvHang.DataSource, "SoLuong");
}
// Sinh mã tự động
string SinhMa()

{
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "Select MaHang from tblHang order by MaHang desc";
cmd.ExecuteNonQuery();
da.SelectCommand = cmd;
da.Fill(dt);
if (dt.Rows.Count > 0)
{
21


string ma = String.Format(dt.Rows[0][0].ToString());
string s = ma.Substring(2, ma.Length - 2);
s = s.Trim();
int stt = int.Parse(s);
string kq = "HB";
stt += 1;
string tam = stt.ToString();
// Lắp các số 0 còn thiếu
if (s.Length != tam.Length)
{
for (int i = 0; i < (s.Length - tam.Length); i++)
kq += "0";
}
kq += stt.ToString();
return kq;
}
else

{
return "HB00000001";
}
}
// Load
private void frmHang_Load(object sender, EventArgs e)
{
tbMaHang.ReadOnly = true;
connect();
SetControl(false);
Load_DataGridView1();
Binding();
}
// Thoat
private void btnThoat_Click(object sender, EventArgs e)
{
if (icount == 1)
{
disconnect();
connect();
Load_DataGridView1();
Binding();
SetControl(false);
icount = 0;
return;
}
DialogResult thoat = MessageBox.Show("Bạn có chắc chắn muốn thoát
không?", "THÔNG BÁO", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (thoat == DialogResult.Yes)
22



{
this.Close();
}
}
// Thêm
private void btnThem_Click(object sender, EventArgs e)
{
them = 1; sua = 0; icount = 1;
tbSoLuong.Text = "";
tbTenHang.Text = "";
tbDVT.Text = "";
tbMaHang.Text = SinhMa();
tbTenHang.Select();
SetControl(true);
}
// Sửa
private void btnSua_Click(object sender, EventArgs e)
{
them = 0; sua = 1; icount = 1;
SetControl(true);
tbTenHang.Select();
}
// Lưu
private void btnLuu_Click(object sender, EventArgs e)
{
if (tbTenHang.Text.Trim().Length == 0)
{
MessageBox.Show("Vui lòng nhập tên hàng.", "THÔNG BÁO",

MessageBoxButtons.OK, MessageBoxIcon.Warning);
tbTenHang.Select();
return;
}
if (tbDVT.Text.Trim().Length == 0)
{
MessageBox.Show("Vui lòng nhập đơn vị tính của mặt hàng.", "THÔNG
BÁO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
tbDVT.Select();
return;
}
if (tbSoLuong.Text.Trim().Length == 0)
{
MessageBox.Show("Vui lòng nhập số lượng mặt hàng.", "THÔNG BÁO",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
tbSoLuong.Select();
return;
23


}
//Thực hiên thêm và sửa
String Sql = "";
if (them == 1 && sua == 0)
{
Sql = "Insert Into tblHang Values('" + tbMaHang.Text.Trim() + "',N'" +
tbTenHang.Text.Trim() + "',N'" + tbDVT.Text.Trim() + "',N'" + tbSoLuong.Text.Trim()
+ "')";
}
if (them == 0 && sua == 1)

{
Sql = "Update tblHang Set TenHang=N'" + tbTenHang.Text.Trim() +
"',DVT=N'" + tbDVT.Text.Trim() + "',SoLuong=N'" + tbSoLuong.Text.Trim() + "'
Where MaHang='" + tbMaHang.Text.Trim() + "'";
}
try
{
DialogResult h = MessageBox.Show("Bạn có muốn cập nhật dữ liệu của
mình không?", "THÔNG BÁO", MessageBoxButtons.YesNo,
MessageBoxIcon.Information);
if (h == DialogResult.No)
{
return;
}
//Khởi tạo đối tượng Command
Command = new SqlCommand(Sql, con);
//Truy vấn
Command.ExecuteNonQuery();
Load_DataGridView1();
Binding();
SetControl(false);
icount = 0;
}
catch (Exception ex)
{
MessageBox.Show("Lỗi cập nhật dữ liệu\n\n" + ex.Message, "ERRO",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
// Xoá

private void btnXoa_Click(object sender, EventArgs e)
{
if (dgvHang.Rows.Count - 1 == 0)
return;
24


if (MessageBox.Show("Bạn có muốn xóa mặt hàng: '" + tbTenHang.Text + "'
có Mã là: '" + tbMaHang.Text.Trim() + "' không?", "THÔNG BÁO",
MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{
string sql = "Delete from tblHang where MaHang='" + tbMaHang.Text + "'";
Command = new SqlCommand(sql, con);
//Truy vấn
try
{
Command.ExecuteNonQuery();
}
catch
{
MessageBox.Show("Mặt hàng bạn xoá đang tồn tại chi tiết hoá đơn.\nVui
lòng xoá chi tiết hoá đơn trước.", "THÔNG BÁO", MessageBoxButtons.OK,
MessageBoxIcon.Warning);
}
Load_DataGridView1();
Binding();
}
}
// Chỉ cho nhập số
private void tbSoLuong_KeyPress(object sender, KeyPressEventArgs e)

{
if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
{
e.Handled = true;
}
}
private void frmHang_FormClosing(object sender, FormClosingEventArgs e)
{
Form1 frm = new Form1();
frm.Show();
}
}
 Quản Lý Hoá Đơn Bán

25


×