BÀI TẬP LỚN PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG VỚI UML ( NHÓM 10)

TRƯỜNG ĐẠI HỌC THÀNH ĐÔ
KHOA CÔNG NGHỆ THÔNG TIN
BÀI TẬP LỚN
PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG VỚI UML (NHÓM 10)

Họ và tên:            Nguyễn Tiến Phong        (Nhóm trưởng)            
                             Nguyễn Ngọc Mạnh      
                             Nguyễn Bá Hoàng
                             Nguyễn Quốc Hưng
                             Lưu Văn Bình (1302623)
Nhóm: 12            Lớp: ĐH TIN 13.1                 Khóa: 5
Đề tài: Phần mềm quản lý bán hàng tại công ty máy tính Mai Hoàng
Giáo viên bộ môn: Trần Nguyên Hoàng
Link download project QLBH ( ngôn ngữ C# chạy trên Visual Studio kết nối dữ liệu SQL): tại đây
Link download file StarUML kèm bản Word: tại đây

Mục lục
Chương I: Khảo sát hệ thống
1.      Giới thiệu về công ty Mai Hoàng
2.      Nhiệm vụ cơ bản
3.      Cơ cấu tổ chức
4.      Quy trình xử lí
Chương II: Phân tích thiết kế
       I.            Phân tích thiết kế
1.      Biểu đồ use case
2.      Xây dựng biểu đồ lớp cơ bản
3.      Xây dựng biểu đồ tuần tự
4.      Biểu đồ lớp chi tiết
5.      Biểu đồ  ca sử dụng
6.      Biểu đồ triển khai
7.      Biểu  đồ thành phần
    II.            Thiết kế dữ liệu
1.      Hàng
2.      Đăng nhập
3.      Hàng xuất
4.      Hàng nhập
5.      Phiếu xuất phiếu nhập
6.      Nhà cung cấp
7.      Khách hàng
Chương III: Sản phẩm
1.Giao diện
2.Code







Lời nói đầu
Ngày nay, ngành Công nghệ thông tin phát triển rất nhanh chóng và ứng dụng
ngày càng rộng rãi trong cuộc sống và  trong các công tác quản lý của các công ty  lớn,
bệnh viện trường học, trụ sở ủy ban… đặc biệt là trong công tác quản lý bán hàng. Nó
có tác dụng thiết thực đối với đời sống con người, giúp cho người quản lý có cái nhìn
tổng thể mà chi tiết thông tin được lưu trữ đầy đủ, cập nhật hàng ngày, nâng cao hiệu
quả làm việc, tiết kiệm sức làm việc.
Hiện nay linh kiện máy tính trên thị trường và các thiết bị điện tử là rất nhiều,
cùng với rất nhiều chủng loại và nguồn gốc xuất xứ. với niềm đam mê tìm hiếu những
vấn đề liên quan đến chuyên ngành học tập Công nghệ thông tin của mình, chúng em
đã quyết định chọn đề tài quản lý bán hàng: linh kiện máy tính. Với kiến thức thực tế
và qua quá trình tìm hiểu thực trạng của hệ thống bán hàng chúng em đã thu được một số kết quả.



Chương I: Khảo sát hệ thống

1.      Giới thiệu về công ty Mai Hoàng
Công ty TNHH Tin học Mai Hoàng là công ty chuyên cung cấp các loại linh kiện máy tính với số lượng vừa và nhỏ . Thành lập ngày 17/7/1999 theo giấy phép thành lập số 4496 GP/TLDN của Uỷ ban nhân dân thành phố Hà Nội. Website chính thức của Công ty TNHH Tin học Mai Hoàng:http://www.maihoang.com.vn/.
Vốn điều lệ:  6 000 000 000 (6 ti đồng Việt Nam)
Đội ngũ nhân viên: Ðội ngũ chuyên viên của Công ty gồm hơn 150 nguời, trong đó hơn 80% là các kỹ sư đã tốt nghiệp đại học chuyên ngành Ðiện tử - Tin học, Kinh tế, Kế toán... Trong số đó hơn 12 chuyên viên kỹ thuật của Công ty đã tham dự các khoá tu nghiệp với công nghệ tiên tiến của các nhà sản xuất hàng đầu trên thế giới, đặc biệt là các công nghệ ứng dụng trong việc phát triển hệ thống máy tính thông minh.
Địa chỉ: 41 Thái Hà - Ðống Ða - Hà Nội
Hotline :04.3628.5868
Hiện tại công ty có 4 cơ sơ trên địa bàn Hà Nội
Cơ sở 1:
Ðịa chỉ : Số 241 Phố Vọng - Hai Bà Trung - Hà Nội
Ðiện thoại : (04) 3.628 5868 Fax : (04) 3.628 5867
Cơ sở 2:
Ðịa chỉ : Số 41 Thái Hà - Ðống Ða - Hà Nội
Ðiện thoại : (04) 3.5377109 Fax : (04) 3.5377108
Cơ sở 3:
Ðịa chỉ : Số 05 Hồ Tùng Mậu - Cầu Giấy - Hà Nội
Ðiện thoại : (04) 3.9369989 Fax : (04) 3.9369986
Cơ sở 4:
Ðịa chỉ : Số 104 Lê Thanh Nghị - Hai Bà Trung - Hà Nội
Ðiện thoại : (04) 3.7664647 Fax : (04) 3.7664648
2.      Nhiệm vụ cơ bản
§  Lấy hàng từ nhà cung cấp bán cho khách hàng
§  Nhận tiền thanh toán từ khách hàng
§  Thanh toán tiền hàng cho nhà cung cấp

3.      Cơ cấu tổ chức





4.      Quy trình xử lí
Khi có yêu cầu nhập thiết bị: nhân viên tiến hành ghi phiếu yêu cầu gồm các
thông tin chi tiết về thiết bị và gửi đến cho nhà cung cấp.
Nhà cung cấp sẽ gửi đơn chào hàng chi tiết các thiết bị bao gồm các thông tin
như: tên, loại thiết bị, số lượng, nguồn gốc….Qua đơn chào hàng của nhà cung cấp thì
cửa hàng sẽ đưa ra đơn đặt hàng và gửi đến cho nhà cung cấp, để đáp ứng nhu cầu
nhập thiết bị của cửa hàng nhà cung cấp sẽ chuyển thiết bị cho cửa hàng theo hợp đồng
mua,bán hàng hóa và biên lai bàn giao thiết bị (kiêm hóa đơn thanh toán tiền thiết bị).
Trước khi nhập hàng vào kho thì cửa hàng sẽ kiểm tra xem đã đủ thiết bị chưa
theo biên bản bàn giao thiết bị mà nhà cung cấp gửi đến, đồng thời cửa hàng sẽ ghi các
thông tin cần thiết vào sổ chi và sổ kho. Nếu thiết bị nào không đạt yêu cầu thì cửa
hàng sẽ trả lại nhà cung cấp, và yêu cầu nhà cung cấp cấp lại những thiết bị như hợp
đồng đã thỏa thuận.
Khi khách có nhu cầu mua thiết bị, khách hàng xem thông tin hàng hóa, tìm kiếm
hàng cần mua. Nếu khách hàng chọn được thiết bị cần mua thì cửa hàng  sẽ kiểm tra
trong kho, nếu trong kho còn hàng thì nhân viết sẽ viết phiếu bán hàng. Sau đó cửa
hàng sẽ tiến hành bàn giao thiết bị cho khách và gửi đến khách hàng hóa đơn thanh
toán, phiếu bảo hành và các giấy tờ liên quan, có kèm theo các khuyến mại(nếu có).
Khi khách đã thanh toán tiền thiết bị thì cửa hàng sẽ lập biên lai thu tiền cho khách
đồng thời sẽ ghi các thông tin cần thiết vào sổ thu và sổ kho.
Để tiện cho việc quản lý hệ thống sẽ lưu trữ và quản lý thông tin về nhà cung cấp
và thông tin khách hàng.Có thể sửa hoặc xóa khi cần thiết.
Sau một khoảng thời gian nhất định  nhân viên các bộ phận sẽ tổng hợp thông tin
mua,bán, và các thông tin khác.












Chương II: Phân tích thiết kế
       I.            Phân tích thiết kế
1.      Biểu đồ use case (Use case diagram)
Một biểu đồ Use case chỉ ra một số lượng các tác nhân ngoại cảnh và mối liên
kết của chúng đối với Use case mà hệ thống cung cấp. Một Use case là một lời miêu tả của một chức năng mà hệ thống cung cấp. Lời miêu tả Use case thường là một văn bản tài liệu, nhưng kèm theo đó cũng có thể là một biểu đồ hoạt động. Các Use case được miêu tả duy nhất theo hướng nhìn từ ngoài vào của các tác nhân (hành vi của hệ thống theo như sự mong đợi của người sử dụng), không miêu tả chức năng được cung cấp sẽ hoạt động nội bộ bên trong hệ thống ra sao. Các Use case định nghĩa các yêu cầu về mặt chức năng đối với hệ thống.
a)      Xác định các tác nhân và use case
Một biểu đồ Use case chỉ ra một số lượng các tác nhân ngoại cảnh và mối liên kết của chúng đối với Use case mà hệ thống cung cấp. Một Use case là một lời miêu tả của một chức năng mà hệ thống cung cấp. Lời miêu tả Use case thường là một văn bản tài liệu, nhưng kèm theo đó cũng có thể là một biểu đồ hoạt động. Các Use case được miêu tả duy nhất theo hướng nhìn từ ngoài vào của các tác nhân (hành vi của hệ thống
theo như sự mong đợi của người sử dụng), không miêu tả chức năng được cung cấp sẽ
hoạt động nội bộ bên trong hệ thống ra sao. Các Use case định nghĩa các yêu cầu về mặt chức năng đối với hệ thống.
b)      Biểu đồ use case tổng quát
Khái quát chức năng chính của hệ thống. Các chức năng này có tính tổng quát dễ dàng nhìn thấy được trên quan điểm của các tác nhân. Dựa vào yêu cầu của bài toán ta có use case tổngquát như sau:


c)      Phân rã biểu đồ use case
Từ use case tổng quát chúng ta chúng ta biểu diễn lại thành dạng phân cấp gọi là phân rã biểu đồ use case thành các use case con trong đó sử dụng quan hệ <<include>> để chỉ ra rằng một use case được sử dụng bởi một use case khác.
d)      Use case tìm hàng
Tác nhân: Khách hàng
Mô tả: Khách hàng có thể tìm hàng theo tên hàng hoặc theo mã hàng. Nhập thông tin về mã hàng hoặc tên hàng, hệ thống sẽ tìm kiếm theo yêu cầu và gửi kết quả lại cho khách hàng biết.


e)      Use case quản lý khách hàng
Tác nhân: Nhân viên
Điều kiện: Phải đăng nhập vào hệ thống.
Mô tả: Nhân viên sau khi đăng nhập được. Tìm khách hàng theo mã hoặc tên rồi sau đó có thể tùy chọn các chức năng tương ứng như nhập thông tin khách hàng, xóa thông tin khách hàng, sửa thông tin khách hàng..



f)       Use case quản lý nhà cung cấp
Tác nhân: nhân viên
Điều kiện: Phải đăng nhập vào hệ thống.
Mô tả: Nhân viên sau khi đăng nhập được. Tìm nhà cung cấp theo tên hoặc địa chỉ rồi sau đó có thể tùy chọn các chức năng tương ứng như nhập thông tin nhà cung cấp, xóa thông tin nhà cung cấp, sửa thông tin nhà cung cấp

            
g)      Use case quản lý bán hàng
Tác nhân: Nhân viên
Điểu kiện: Phải đăng nhập được vào hệ thống.
Mô tả: Dựa vào yêu cầu của khách hàng, nhân viên sẽ lập hóa đơn bán hàng, kiểm tra hàng trong kho xem có còn hayđáp ứng được không (tìm hàng), nếu đáp ứng được thì sẽ giao hàng cho khách hàng và cập nhật thông tin hàng bán vào hệ thống.
Nếu hàng trong kho không đáp ứng được thì thông báo cho khách hàng.



h)      Use case quản lý nhập hàng
Tác nhân: Nhân viên
Điểu kiện: Phải đăng nhập được vào hệ thống.
Mô tả: Dựa vào yêu cầu của khách hàng, nhân viên sẽ lập hóa đơn bán hàng, kiểm tra hàng trong kho xem có còn hayđáp ứng được không (tìm hàng), nếu đáp ứng được thì sẽ giao hàng cho khách hàng và cập nhật thông tin hàng bán vào hệ thống.
Nếu hàng trong kho không đáp ứng được thì thông báo cho khách hàng.


i)        Use case báo cáo thống kê
Tác nhân: Nhân viên
Điều kiện: Đăng nhập được vào hệ thống
Mô tả: Cuổi tháng nhân viên sẽ thống kê hàng bán, hàng nhập, thống kê doanh thu và báo cáo cho quản lý.

j)        Use case quản li tài khoản
Tác nhân: Admin
Điều kiện: Đăng nhập được vào hệ thống
Mô tả: Khi có nhân viên mới vào làm việc trong hệ thống hoặc có nhân viên ghỉ việc trong hệ thống


k)      Use case chi tiết
Dựa vào các use case đãđược phân rã, ta tổng hợp lại tất cả các use case.


2.      Xây dựng biểu đồ lớp căn bản
Xác định các lớp từ use case
Xét từ bài toán quản lý bán hàng và use case chi tiết đã xây dựng ở trên chúng ta có thể liệt kê các lớp cơ bản như khách hàng, hàng xuất, hàng nhập, phiếu xuất, phiếu nhập, hàng, nhà cung cấp.
Xác định các thuộc tính và một số phương thức cơ bản
Từ các lớp xác định ở bước trên ta có thể thấy một số thuộc tính và phương thức cơ bản như trong lớp khách hàng thì có thuộc tính mã khách hàng, tên khách hàng, địa chỉ, điện thoại. Lớp hàng xuất có số phiếu xuất, tên hàng, số lượng xuất,đơn giá.... Cụ thể như hình sau:


3.      Xây dựng biều đồ tuần tự
Mục đích: biểu diễn tương tác giữa những người dùng và những đối tượng
bên trong hệ thống. Biểu đồ này cho biết các thông điệp được truyền tuần tự
như thế nào theo thời gian. Thứ tự các sự kiện trong biểu đồ tuần tự hoàn toàn
tương tự như trong scenario mô tả use case tương ứng.
Biểu diễn: Biểu đồ tuần tự được biểu diễn bởi các đối tượng và message
truyền đi giữa các đối tượng đó.
Trong hệ thống quản lý bán hàng, chúng ta lựa chọn biểu đồ tương tác dạng tuần
tự để biểu diễn các tương tác giữa các đối tượng. Để xác định rõ các thành phần cần bổ sung trong biểu đồ lớp, trong mỗi biểu đồ tuần tự của hệ thống quản lý bán hàng sẽ thực hiện:
- Xác định rõ kiểu của đối tượng tham gia trong tương tác (ví dụ giao diện, điều khiển hay thực thể).
- Mỗi biểu đồ tuần tự có thể có ít nhất một lớp giao diện (Form) tương ứng
với chức năng (use case) mà biểu đồ đó mô tả
- Mỗi biểu đồ tuần tự có thể liên quan đến một hoặc nhiều đối tượng thực thể.
Các  đối tượng thực thể chính là các  đối tượng của các lớp  đã được xây dựng
trong biểu đồ thiết kế chi tiết. Dưới đây là một số biểu đồ tuần tự cho các chức năng của hệ thống quản lý bán hàng:
·         Biểu đồ tuần tự cho chức năng đăng nhập


·         Biểu đồ tuần tự cho chức năng tìm hàng


·         Biểu đồ tuần tự cho chức năng thêm hàng



·         Biểu đồ tuần tự cho chức năng cho chức năng quản lý bán hàng



·         Biểu đồ tuần tự cho chức năng cho chức năng quản lý khách hàng


·         Biểu đồ tuần tự cho chức năng cho chức năng thông kế bán hàng



4.      Biểu đồ lớp chi tiết
Xây dựng biểu đồ lớp thiết kế chi tiết
Dựa vào biểu đồ lớp cơ bản đã xây dựng ở trên và các biểu đồ tuần tự, biểu đồ lớp chi tiết bổ sung nhiều thuộc tính và phương thức hơn so với biểu đồ lớp cơ bản.



Biểu đồ lớp chi tiết cho chức năng tra cứu  hàng



Biểu đồ lớp chi tiết cho chức năng quản lý khách hàng


Biểu đồ lớp chi tiết cho chức năng quản lý nhà cung cấp

Biểu đồ lớp chi tiết cho chức năng quản lý hàng



Biểu đồ lớp chi tiết cho chức năng quản lý bán hàng




5.      Biểu đồ ca sử dụng
·         Biểu đồ ca sử dụng đăng nhập






·         Biểu đồ ca sử dụng lập hóa đơn



·         Biểu đồ ca sử dụng nhập hàng







·         Biểu đồ ca sử dụng thống kê


6.      Biểu đồ thành phần












7.      Biểu đồ triển khai





    II.            Thiết kế cơ sở dữ liệu
1)      Hàng

STT
Tên thuộc tính
Kiểu dữ liệu
Not null/null
Khóa chính
Khóa ngoại
1
MaHang
nChar
Not null
P

2
TenHang
Nvarchar
Not null


3
LoaiHang
Nvarchar
null


4
DonViTinh
Nvarchar
null


2)      Đăng nhập

STT
Tên thuộc tính
Kiểu dữ liệu
Not null/null
Khóa chính
Khóa ngoại
1
TenDN
Nchar
Not null
P

2
Matkhau
Nchar
Not null


3
Quen
Nchar
null


4
Trạng thái
Nvarchar
null


5
Hoten
Nvarchar
null


6
Loi
Int
null


3)      Phiếu xuất

STT
Tên thuộc tính
Kiểu dữ liệu
Not null/null
Khóa chính
Khóa ngoại
1
MaPX
Nchar
Not null
P

2
MaKH
Nchar
null

P
3
MaHang
Nchar
null


4
NgayBan
Datetime
null


5
SoLuongBan
Int
Null


6
GiaBan
Int
Null


4)      Phiếu nhập

STT
Tên thuộc tính
Kiểu dữ liệu
Not null/null
Khóa chính
Khóa ngoại
1
SoPN
Nchar
Not null
P

2
MaNCC
Nchar
null

P
3
MaHang
Nchar
null


4
Ngaynhap
Datetime
null


5
SoLuongNhap
Int
Null


6
GiaNhap
Int
null


5)      Nhà cung cấp

STT
Tên thuộc tính
Kiểu dữ liệu
Not null/null
Khóa chính
Khóa ngoại
1
MaNCC
Nchar
Not null
P

2
TenNCC
Nvarchar
Not null


3
DiachiNCC
Nvarchar
null


4
DienthoaiNCC
Nchar
null


6)      Khách hàng

STT
Tên thuộc tính
Kiểu dữ liệu
Not null/null
Khóa chính
Khóa ngoại
1
MaKH
Nchar
Not null
P

2
TenKH
Nvarchar
Not null


3
DiachiKH
Nvarchar
null


4
DienthoaiKH
Nchar
null



Chương III: Sản phẩm
1.      Giao diện

Dựa vào yêu cầu bài toán và phân tích thiết kế ở trên, ta xây dựng chương
trình quản lý bán hàng sử dụng ngôn ngữ Microsoft Visual Studio phiên bản
2013 và dùng Microsoft SQL Server 2008 để lưu trữ dữ liệu.
Chương trình được xây dựng trên mô hình ba lớp sau:
 Lớp BussinessLogic: thực hiện các chức năng chính của hệ
thống như thêm, xóa, sửa, cập nhật...
 Lớp DataAccess: thực hiện chức năng chính là tạo kết nối
với cơ sở dữ liệu từ Microsoft SQL Server 2008.
 Lớp Quanlybanhang: chứa tất cả các form của chương
trình, gọi đến lớp DataAccess và BussinessLogic. Thực hiện các chức
năng, hiển thị giao diện và  cập nhật vào cơ sở dữ liệu.
·         Form đăng nhập



·         Form main

·         Form tài khoản

·         Form hàng hóa


·         Form khách hàng


·         Form nhà cung cấp



·         Form phiếu nhập


·         Form phiếu xuất


·         Form báo cáo nhập hàng


·         Form báo cáo xuất hàng

2.      Code
·         Lớp BUS hàng hóa
Các bus khác tương tự
 public class BUSHangHoa
   {
       public static DataTable laydulieuhanghoa()
        {
            //Gọi hàm xử lý bảng
            return DALHangHoa.laydulieuhanghoa();
       }
        public static bool themhanghoa(HangHoaETT hhe)
        {
           return DALHangHoa.themhanghoa(hhe);
        }
       public static bool suahanghoa(HangHoaETT hhe)
        {
            return DALHangHoa.suahanghoa(hhe);
        }
       public static bool xoahanghoa(HangHoaETT hhe)
        {
           return DALHangHoa.xoahanghoa(hhe);
        }
        public static DataTable timkiemhh(string timkiem)
        {
            return DALHangHoa.timkiemhh(timkiem);
        }
        public static DataTable timheomahang(string timkiem)
        {
            return DALHangHoa.timtheomahang(timkiem);
        }
    }
·         DAL hàng hóa
 Các DAL khác tương tự
     public class DALHangHoa
    {
        static SqlConnection con;
         //Lấy dữ liệu từ bảng hàng hóa
        public static int quyen;
        public static DataTable laydulieuhanghoa()
        {
            string truyvan = "Select * From HangHoa";
            con = DBConnection.KeNoi();
            DataTable dt = DBConnection.LayDuLieuBang(truyvan, con);
            DBConnection.DongKetNoi(con);
            return dt;
        }
        public static bool themhanghoa(HangHoaETT hhe)
        {
            try
            {
                string truyvan = "Insert into HangHoa values('"+hhe.MaHang1+"',N'"+hhe.TenHang1+"',N'"+hhe.LoaiHang1+"',N'"+hhe.DonViTinh1+"','"+hhe.HangCon1+"')";
                    con = DBConnection.KeNoi();
                DBConnection.thucthitruyvan(truyvan,con);
                DBConnection.DongKetNoi(con);
                return true;
            }
            catch(Exception){
                return false;
            }
        }
         public static bool suahanghoa(HangHoaETT hhe){
              try
            {
                string truyvan = string.Format("Update HangHoa set TenHang=N'{0}',LoaiHang=N'{1}',DonViTinh=N'{2}' where MaHang='{3}'",hhe.TenHang1,hhe.LoaiHang1,hhe.DonViTinh1,hhe.MaHang1);
                    con = DBConnection.KeNoi();
                DBConnection.thucthitruyvan(truyvan,con);
                DBConnection.DongKetNoi(con);
                return true;
            }
            catch(Exception){
                return false;
          }
         }
        public static bool xoahanghoa(HangHoaETT hhe){
                      try
            {
                string truyvan = string.Format("Delete From HangHoa where MaHang='"+hhe.MaHang1+"'");
                    con = DBConnection.KeNoi();
                DBConnection.thucthitruyvan(truyvan,con);
                DBConnection.DongKetNoi(con);
                return true;
            }
            catch(Exception){
               return false;
            }
         }
         public static DataTable timkiemhh(string timkiem){
             string truyvan = string.Format("Select * From HangHoa where TenHang like N'%"+timkiem+"%'");
             con=DBConnection.KeNoi();
            DataTable dt =  DBConnection.LayDuLieuBang(truyvan,con);
             DBConnection.DongKetNoi(con);
             return dt;
         }
         public static DataTable timtheomahang(string timkiem)
         {
             string truyvan = string.Format("Select * From HangHoa where MaHang like '%" + timkiem + "%'");
            con = DBConnection.KeNoi();
             DataTable dt = DBConnection.LayDuLieuBang(truyvan, con);
             DBConnection.DongKetNoi(con);
             return dt;
        }
    }
·         ETT hàng hóa
Các ETT khác tương tự
public class HangHoaETT
    {
        private string MaHang;

        public string MaHang1
        {
            get { return MaHang; }
            set { MaHang = value; }
        }
        private string TenHang;

        public string TenHang1
        {
            get { return TenHang; }
            set { TenHang = value; }
        }
        private string LoaiHang;

        public string LoaiHang1
        {
            get { return LoaiHang; }
            set { LoaiHang = value; }
        }
        private string DonViTinh;

        public string DonViTinh1
        {
            get { return DonViTinh; }
            set { DonViTinh = value; }
        }
        private int Hangcon;
        public int HangCon1
        {
            get { return Hangcon; }
            set { Hangcon = value; }
        }
    }
·         Code form đăng nhập
 public partial class DangNhap : Form
    {
        public static string quyen, ten;
        SqlConnection conn;
        public DangNhap()
       
            InitializeCompont();
            conn = new SqlConnection(@"Data Source=LONGLU-PC\SQLEXPRESS;InitialCatalog=BTL_QLBH;Integrated Security=True");
        }
        private void DangNhap_Load(object sender, EventArgs e)
        {

        }
        private void btthoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btdangnhap_Click(object sender, EventArgs e)
        {

            //kiem tra dang nhap
            if (tbtaikhoan.Text == "" && tbmatkhau.Text == "")
            {
                MessageBox.Show(" Chưa nhập thông tin ","Thông Báo");
            }
            else if (tbtaikhoan.Text == "" && tbmatkhau.Text != "")
            {
                MessageBox.Show(" Chưa nhập tên đăng nhập ","Thông Báo");
            }
            else if (tbtaikhoan.Text != "" && tbmatkhau.Text == "")
            {
                MessageBox.Show(" Chưa nhập mật khẩu ","Thông Báo");
            }
            else
            {

                string sqlTenDangNhap = "Select TenDN from DangNhap where TenDN = '" + tbtaikhoan.Text + "'";
                SqlDataAdapter ad = new SqlDataAdapter(sqlTenDangNhap, conn);
                DataTable dt = new DataTable();
                dt.Clear();
                ad.Fill(dt);
                if (dt.Rows.Count != 0)
                {
                    //kiem tra xem tai khoan co khoa khong
                    int loi = Convert.ToInt16(this.exeCuteQuery(tbtaikhoan.Text));
                    if (loi >= 5)
                    {

                        if (loi == 5)
                        {
                            MessageBox.Show("Tài khoản bị khóa","Thông Báo");
                            //update trang thai = khoa
                            string sqlkhoa = "update DangNhap set TrangThai= 'Khóa' where TenDN='" + tbtaikhoan.Text + "'";
                            //string sqlkhoa = "update taikhoan set trangthai=" +1+ "where tendangnhap ='" + tbtaikhoan.Text + "'";
                            if (conn.State == ConnectionState.Closed)
                            {
                                conn.Open();
                            }
                            SqlCommand cmd = new SqlCommand(sqlkhoa, conn);

                            cmd.ExecuteNonQuery();
                        }
                        else
                        {
                            MessageBox.Show("Tài khoản bị khóa","Thông Báo");
                        }
                    }
                    else
                    {
                        string sqlMatKhau = "Select MatKhau from DangNhap where MatKhau = '" + tbmatkhau.Text + "'";
                        SqlDataAdapter ad1 = new SqlDataAdapter(sqlMatKhau, conn);
                        DataTable dt1 = new DataTable();
                        dt1.Clear();
                        ad1.Fill(dt1);
                        if (dt1.Rows.Count != 0)
                        {
                            this.Hide();
                            MessageBox.Show(" Đăng nhập thành công! ","Thông Báo");
                            string sql = "update DangNhap set loi=" + 0 + " where TenDN ='" +tbtaikhoan.Text + "'";
                            this.loi(sql);

                           //set quyen
                           string sqlquyen = "Select Quyen from DangNhap where TenDN = '" +tbtaikhoan.Text + "'";
                            SqlDataAdapter adquyen = new SqlDataAdapter(sqlquyen, conn);
                            DataTable dtquyen = new DataTable();
                            dtquyen.Clear();
                            adquyen.Fill(dtquyen);
                            quyen = dtquyen.Rows[0][0].ToString().Trim();

                            // lay ten
                            string sqlten = "Select HoTen from DangNhap where TenDN = '" + tbtaikhoan.Text + "'";
                            SqlDataAdapter adten = new SqlDataAdapter(sqlten, conn);
                            DataTable dtten = new DataTable();
                            dtten.Clear();
                            adten.Fill(dtten);
                            ten = dtten.Rows[0][0].ToString().Trim();

                            Mainc main = new Mainc();
                            main.Show();
                        }
                        else
                        {
                            MessageBox.Show(" Sai mật khẩu ","Thông Báo");
                            this.tbmatkhau.Text = "";
                            string sql = "update DangNhap set loi=" + (loi + 1) + " where TenDN ='" +tbtaikhoan.Text + "'";
                            this.loi(sql);
                        }
                    }
              }
                else
                {
                    MessageBox.Show(" Sai tên đăng nhập ","Thông Báo");
                }
            }
        }
        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            Mainc main = new Mainc();
            main.Show();
        }
        private string exeCuteQuery(string taikhoan)
        {

            string sqlMatKhau = "Select loi from DangNhap where TenDN = '" + taikhoan + "'";
            SqlDataAdapter ad2 = new SqlDataAdapter(sqlMatKhau, conn);
            DataTable dt2 = new DataTable();
            dt2.Clear();
            ad2.Fill(dt2);
            return dt2.Rows[0][0].ToString();

        }

        private void loi(string sql)
        {
            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();
            }
            SqlCommand cmd = new SqlCommand(sql, conn);
            cmd.ExecuteNonQuery();
        }
    }

}
·         Code form  hàng hóa
Các form khác tương tự
 public partial class FormHangHoa : Form
    {
       
        public FormHangHoa()
        {
            InitializeComponent();
        }

        private void FormHangHoa_Load(object sender, EventArgs e)
        {
            loadhanghoa();
        }
        private void loadhanghoa()
        {
            this.tbmahang.Enabled = false;
            DataTable dt = BUSHangHoa.laydulieuhanghoa();
            dgvhanghoa.DataSource = dt;
        }
        private void Matutang()
        {

            DataTable dt = BUSHangHoa.laydulieuhanghoa();
            dgvhanghoa.DataSource = dt;
            string s = "";
            if (dt.Rows.Count <= 0)
                s = "MAH001";
            else
            {
                int k;
                s = "MAH";
                k = Convert.ToInt32(dt.Rows[dt.Rows.Count - 1][0].ToString().Substring(3, 3));
                k = k + 1;
                if (k < 10) s = s + "00";
                else if (k < 100)
                    s = s + "0";
                //else if (k < 1000)
                //    s = s + "00";
                //else if (k < 10000)
                //    s = s + "0";
                s = s + k.ToString();
            }
            tbmahang.Text = s;
        }

        private void btthem_Click(object sender, EventArgs e)
        {
            this.tbmahang.Enabled = false;
            if (tbtenhang.Text == "")
            {
                MessageBox.Show("Bạn Hãy Nhập Đầy Đủ Thông Tin", "Thông Báo");
                return;
            }
                Matutang();
                HangHoaETT hhe =new HangHoaETT();
                hhe.MaHang1 = tbmahang.Text;
                hhe.TenHang1=tbtenhang.Text;
                hhe.LoaiHang1=tbloaihang.Text;
                hhe.DonViTinh1=tbdvt.Text;
                if(BUSHangHoa.themhanghoa(hhe)==true){
                    loadhanghoa();
                    MessageBox.Show("Thêm Thành Công","Thông Báo");
                    return;
                }
                MessageBox.Show("Thêm Thất Bại","Thông Báo");
        }

        private void thsua_Click(object sender, EventArgs e)
        {
            this.tbmahang.Enabled = false;
            if (tbtenhang.Text == "" || tbloaihang.Text == "" || tbdvt.Text == "")
            {
                MessageBox.Show("Bạn Hãy Nhập Đầy Đủ Thông Tin", "Thông Báo");
                return;
            }
            //Matutang();
            HangHoaETT hhe = new HangHoaETT();
            hhe.MaHang1 = tbmahang.Text;
            hhe.TenHang1 = tbtenhang.Text;
            hhe.LoaiHang1 = tbloaihang.Text;
            hhe.DonViTinh1 = tbdvt.Text;
            if (BUSHangHoa.suahanghoa(hhe) == true)
            {
               
                loadhanghoa();
                MessageBox.Show("Cập Nhật Thành Công", "Thông Báo");
                return;
            }
            MessageBox.Show("Cập Nhật Thất Bại", "Thông Báo");
        }

        private void btxoa_Click(object sender, EventArgs e)
        {
            this.tbmahang.Enabled = false;
            HangHoaETT hhe = new HangHoaETT();
            hhe.MaHang1 = tbmahang.Text;
            if(BUSHangHoa.xoahanghoa(hhe)==true){
                loadhanghoa();
                MessageBox.Show("Xóa Thành Công!","Thông Báo");
                return;
            }
            MessageBox.Show("Xóa Thất Bại!","Thông Báo");
        }

        private void huy_Click(object sender, EventArgs e)
        {
            this.tbmahang.ResetText();
            this.tbtenhang.ResetText();
            this.tbloaihang.ResetText();
            this.tbdvt.ResetText();
            this.tbmahang.Enabled = false;
            loadhanghoa();
            this.tbtimkiem.ResetText();
        }

        private void bttimkiem_Click(object sender, EventArgs e)
        {
            //rbmh.Click = true;
            if (rbth.Checked == true)
            {
                rbmh.Checked = false;
                this.tbmahang.Enabled = false;
                if (tbtimkiem.Text == "")
                {
                    MessageBox.Show("Ban Chưa nhập từ khóa", "Thông Báo");
                    return;
                }
                string timkiem = tbtimkiem.Text;
                DataTable dt = BUSHangHoa.timkiemhh(timkiem);
                if (dt.Rows.Count == 0)
                {
                    MessageBox.Show("Không Tìm Thấy Kết Quả", "Thông Báo");
                    return;
                }
                MessageBox.Show(string.Format("Đã Tìm Thấy {0} Kết Quả", dt.Rows.Count), "Thông Báo");
                dgvhanghoa.DataSource = dt;
            }
            else
            {
                this.tbmahang.Enabled = false;
                if (tbtimkiem.Text == "")
                {
                    MessageBox.Show("Ban Chưa nhập từ khóa", "Thông Báo");
                    return;
                }
                string timkiem = tbtimkiem.Text;
                DataTable dt = BUSHangHoa.timheomahang(timkiem);
                if (dt.Rows.Count == 0)
                {
                    MessageBox.Show("Không Tìm Thấy Kết Quả", "Thông Báo");
                    return;
                }
                MessageBox.Show(string.Format("Đã Tìm Thấy {0} Kết Quả", dt.Rows.Count),"Thông Báo");
                dgvhanghoa.DataSource = dt;
            }
        }

        private void btthoat_Click(object sender, EventArgs e)
        {
            Mainc pt = new Mainc();
            this.Close();
            pt.Show();
        }

        private void dgvhanghoa_Click(object sender, EventArgs e)
        {
            int r = dgvhanghoa.CurrentCell.RowIndex;
            this.tbmahang.Text = dgvhanghoa.Rows[r].Cells[0].Value.ToString();
            this.tbtenhang.Text = dgvhanghoa.Rows[r].Cells[1].Value.ToString();
            this.tbloaihang.Text = dgvhanghoa.Rows[r].Cells[2].Value.ToString();
            this.tbdvt.Text = dgvhanghoa.Rows[r].Cells[3].Value.ToString();
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

      
           

        }
Newest
Previous
Next Post »

1 nhận xét:

Click here for nhận xét
Unknown
admin
lúc 10:05 8 tháng 4, 2021 ×

May in là cái gì ạ

Congrats bro Unknown you got PERTAMAX...! hehehehe...
Reply
avatar