Lý do chọn đề tàiKhi nghiên cứu đề tài này, mục tiêu đặt ra của tôi trước tiên là củng cố lại vềkiến thức đã được học trong trường để có thể áp dụng vào thực tế, tiếp theo em hyvọng đề t
Trang 1LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi và được sựhướng dẫn khoa học của Tiến sĩ Lê Thanh Huệ Các số liệu và kết quả nghiên cứutrong luận văn này là hoàn toàn trung thực và chưa từng được sử dụng hoặc công bốtrong bất kỳ công trình nào khác Mọi sự giúp đỡ cho việc thực hiện luận văn này đãđược cám ơn và các thông tin trích dẫn trong luận văn đều được ghi rõ nguồn gốc.Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm về nộidung luận văn của mình
Hà Nội, ngày … tháng … năm 2016
VALY VACHOUAMA
Trang 2MỤC LỤC LỜI CAM ĐOAN
DANH MỤC CÁC TỪ VIẾT TẮT
DANH MỤC HÌNH ẢNH, BẢNG BIỂU
PHẦN MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN 3
1.1 Lý do chọn đề tài 3
1.2.Khảo sát hiện trạng 3
1.2.1.Giới thiệu về công ty “Công ty Cổ phần Kỹ thuật Năng lượng và Môi trường EEC” 3
1.2.2.Đánh giá thực trạng về việc quản lý kho của công ty 6
1.2.3.Đề xuất phương án giải quyết 6
1.2.4.Mô tả yêu cầu bài toán 7
1.2.5 Xây dựng mô hình bài toán 11
CHƯƠNG 2: MỘT SỐ KIẾN THỨC CƠ BẢN THỰC HIỆN ĐỀ TÀI 14
2.1.Hệ quản trị cơ sở dữ liệu 14
2.1.1.Giới thiệu về SQL Server 2008 15
2.1.2.Các đặc tính của SQL Server 17
2.1.3.Các công cụ trong SQL Server 18
2.1.4.Các thành phần của SQL Server 19
2.1.5.Hàm trong SQL Server 21
2.1.6.Các kiểu dữ liệu trong SQL Server 25
2.2 Lựa chọn ngôn ngữ lập trình 26
2.2.1 Nền tảng NET 26
2.2.2 Lập trình hướng đối tượng 27
2.2.3.Ngôn ngữ lập trình C# 29
CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 36
3.1.Hệ thống thông tin 36
3.2.Tổng quan về hệ thống thông tin quản lý kho 36
3.2.1.Quản lý khách hàng 37
3.2.2.Quản lý nhà cung cấp 37
3.2.3.Quản lý hàng hóa 38
3.2.4.Quản lý kho hàng 38
Trang 33.2.5.Quản lý phiếu xuất hàng 38
3.2.6.Quản lý phiếu nhập 39
3.2.7.Quản lý nhân viên 39
3.3.Mô hình phân rã chức năng 40
3.3.1.Chức năng quản lý hệ thống 40
3.3.2.Chức năng quản lý danh mục 41
3.3.3.Chức năng quản lý nhập- xuất- tồn kho 42
3.3.4.Chức năng thống kê- báo cáo 44
3.3.5.Chức năng tìm kiếm 45
3.4.Phân tích và thiết kế cơ sở dữ liệu 46
3.4.1.Xác định các loại dữ liệu cần quản lý 46
3.4.2.Xây dựng mô hình luồng dữ liệu 46
3.4.3.Xây dựng cơ sở dữ liệu 52
CHƯƠNG 4: XÂY DỰNG PHẦN MỀM CHƯƠNG TRÌNH 60
4.1.Mô tả các modul - Giao diện chính của hệ thống 60
4.1.1.Modul thể hiện mô hình 3 lớp được áp dụng trong chương trình 60
4.1.2.Modul chức năng đăng nhập 61
4.1.3.Giao diện phần mềm 61
4.1.4.Giao diện danh mục hàng hóa 62
4.1.5.Giao diện danh mục nhà cung cấp 64
4.1.6.Giao diện danh mục nhân viên 64
4.1.7.Giao diện bảng giá 64
4.1.8.Giao diện loại hàng hóa 65
4.1.9.Giao diện kho hàng 66
4.2.Các kết quả của phần mềm 66
4.2.1.Nghiệp vụ nhập kho 66
4.2.2.Phiếu nhập kho hàng hóa 67
4.2.3.Nghiệp vụ xuất kho 68
4.2.4.Phiếu xuất kho hàng hóa 68
4.2.5.Thống kê danh sách khách hàng 69
4.2.6.Thống kê danh sách hàng hóa 69
4.2.7.Báo cáo tồn kho 70
KẾT LUẬN 71
TÀI LIỆU THAM KHẢO 72
Trang 4DANH MỤC CÁC TỪ VIẾT TẮT
T/L : Trả lời
ĐGBQCK : Đơn giá bình quan cuối kỳ
TGTTĐK : Tổng giá trị tồn đầu kỳ
TGTNTK : Tổng giá trị nhập trong kỳ
SLTĐK : Số lượng tồn đầu kỳ
SLNTK : Số lượng nhập trong kỳ
Trang 5DANH MỤC HÌNH ẢNH, BẢNG BIỂU
Bảng 2.2: Các kiểu dữ liệu trong SQL Server 25
Bảng 2.4: Hàm trong C# 35
Hình 1.1: Sơ đồ tổ chức công ty 5
Hình 1.2: Mẫu phiếu nhập kho hàng hóa 9
Hình 1.3: Mẫu phiếu xuất kho 10
Hình 2.1: Sơ đồ hệ thống cơ sở dữ liệu của Microsoft 17
Hình 2.3: Sơ đồ thể hiện biên dịch trong C# 27
Hình 3.1:Mô hình phân rã chức năng hệ thống quản lý kho 40
Hình 3.2: Chức năng quản lý hệ thống 40
Hình 3.3: Chức năng quản lý danh mục 41
Hình 3.4: Chức năng quản lý nhập kho 42
Hình 3.5: Chức năng quản lý xuất kho 43
Hình 3.6: Chức năng quản lý tồn kho 44
Hình 3.7: Chức năng thống kê báo cáo 44
Hình 3.8: Chức năng tìm kiếm 45
Hình 3.9: Mô hình luồng dữ liệu mức khung cảnh hệ thống quản lý kho 47
Hình 3.10: Mô hình luồng dữ liệu mức đỉnh của hệ thống quản lý kho 49
Hình 3.11: Mô hình luồng dữ liệu mức dưới đỉnh chức năng quản lý hệ thống 50
Hình 3.12: Mô hình luồng dữ liệu mức dưới đỉnh chức năng quản lý danh mục 50
Hình 3.13: Mô hình luồng dữ liệu mức dưới đỉnh chức năng quản lý nhập-xuất-tồn 51
Hình 3.14:Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng thống kê- báo cáo 51
Hình 3.15: Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng tìm kiếm 52
Hình 3.16: Mô hình quan hệ dữ liệu 52
Trang 6PHẦN MỞ ĐẦU
Vào những thập niên cuối của thế kỉ 20, công nghệ thông tin phát triển mạnh
mẽ Nó tác động vào mọi mặt của đời sống khoa học kỹ thuật, kinh tế và cả xã hộichúng ta Nhờ có sự phát triển của công nghệ thông tin mà các hoạt động vể sảnxuất trở nên phong phú, thuận tiện và dễ dàng hơn
Ở nước ta, trong những năm trở lại đây thì công nghệ thông tin đã không còn
gì là xa lạ, nó đã phổ biến và len lỏi vào khắp các gia đình, doanh nghiệp hay công
ty Công nghệ thông tin ngày càng được ứng dụng rộng rãi trong phần lớn các côngviệc của đời sống xã hội, trong đó có lĩnh vực quản lý
Quản lý là một hoạt động vô cùng quan trọng, bất kỳ cấp nào, đơn vị nàocũng cần phải có hoạt động quản lý Đối tượng của quản lý cũng vô cùng rộng lớn,phong phú Nó bao gồm rất nhiều khía cạnh như quản lý con người, quản lý sảnxuất, quản lý xã hội, quản lý kinh tế tài chính, quản lý hàng hóa, quản lý cửahàng…
Cũng giống như các doanh nghiệp khác, doanh nghiệp sản xuất kinh doanhcũng có nhiều lĩnh vực quản lý như: quản lý nhân sự, quản lý tiền lương, quản lýquỹ, quản lý kho, quản lý báo cáo…
Trong một doanh nghiệp sản xuất kinh doanh, bên cạnh vấn đề quản lýxương sống của doanh nghiệp đó là quản lý tài chính, thì vấn đề quản lý kho là mộtvấn đề quan trọng, thiết thực Quản lý tốt hệ thống kho sẽ giúp cho nhà quản lý lậpđược các kế hoạch kinh doanh, kế hoạch sản xuất và phát triển của doanh nghiệp
Do đó, để việc quản lý kho của doanh nghiệp trở nên dễ dàng hơn thì vấn đề cầnthiết là phải ứng dụng công nghệ thông tin vào việc quản lý kho Chính vì lý do đócho nên tôi đã chọn đề tài “Xây dựng phần mềm quản lý kho hàng hóa” đề mô bằng
số liệu tực tế của Công ty Cổ phần Kỹ thuật Năng lượng và Môi trường EEC
Trong đề tài này, tôi đã xây dựng hệ thống quản lý kho cho phép theo dõi
Trang 7việc nhập, xuất hàng hóa vật tư và theo dõi hàng hóa tồn kho, lên các báo cáo thống
kê định kỳ cho các bộ phận có liên quan trong doanh nghiệp
Bộ cục của luận văn
- Chương 1 Tổng quan
- Chương 2 Một số kiến thức cơ bản thực hiện đề tài
- Chương 3 Phân tích và thiết kế hệ thống
- Chương 4 Xây dựng phần mềm chương trình
Trang 8CHƯƠNG 1 TỔNG QUAN1.1 Lý do chọn đề tài
Khi nghiên cứu đề tài này, mục tiêu đặt ra của tôi trước tiên là củng cố lại vềkiến thức đã được học trong trường để có thể áp dụng vào thực tế, tiếp theo em hyvọng đề tài của tôi sẽ góp phần vào việc tổ chức lại việc quản lý kho hàng hóa củacác doanh nghiệp làm cho việc quản lý hàng hóa của các doanh nghiệp trở nên dễdàng và hiệu quả hơn từ đó có thể nâng cao chất lượng hoạt động trong công tácquản lý kho hàng hóa tại doanh nghiệp đó Việc quản lý sẽ trở nên dễ dàng hơn, thờigian sẽ được thu ngắn lại và sẽ giúp giảm sức lao động và tiết kiệm được chi phínhân công giành cho việc quản lý kho hàng Từ đó tạo tiền đề cho công ty có thể dễdàng hoạch định được chiến lược kinh doanh trong tương lai với các kế hoạch phùhợp
Mục tiêu trước mắt của tôi là xây dựng phần mềm quản lý kho có thể ápdụng trực tiếp cho Công ty Cổ phần Kỹ thuật Năng lượng và Môi trường EEC theocác yêu cầu đặc biệt về mặt nghiệp vụ của công ty đặt ra
và đầu tư Hà Nội, với tên giao dịch: Công ty cổ phần kỹ thuật năng lượng và môitrường EEC
- Trụ sở chính: Tầng 27- Tòa nhà 101 Láng Hạ- Đống Đa- Hà Nội nay chuyển
Trang 9về Tầng 7- Tòa nhà Artex- 172 phố Ngọc Khánh- Quận Ba Đình- Hà Nội
- Số điện thoại giao dịch: +84.43 562 5152
- Fax: +84 4 3562 5153
- Email: info@eec.com.vn
Lĩnh vực hoạt động của công ty:
Cơ cấu mặt hàng kinh doanh của công ty khá đa dạng tập trung chủ yếu vàocác mặt hàng sau:
Thiết bị điện công nghiệp bao gồm máy phát điện, máy nén khí, máy biếnthế…được nhập từ các hãng nổi tiếng thế giới như: MITSUBISHI (Nhật); IVECO(Anh); JOHN DEERE, CUMMINS (Mỹ); DOOSAN (Hàn Quốc); IVECO (Italia);VOLVO (Thụy Điển); WEICHAI (Trung Quốc) chiếm 55% theo giá trị tổng sảnphẩm của công ty
Các vật liệu xây dựng như sắt thép, xi măng, máy móc trong xây dựng,gạch ốp lát các loại….chiếm 15% theo giá trị tổng sản phẩm của công ty
Hóa chất bao gồm: Chất tẩy động (đóng trong thùng 20 lít); chất tẩy rửathiết bị điện (lưu giữ trong thùng 20 lít); chất tẩy thiết bị điện “Quick Dry” (lưu giữtrong thùng 20 lít); chất tẩy sơn cũ AT3200ST (đóng trong can 20-25 lít)….chiếm25% theo giá trị tổng sản phẩm của công ty
Các loại sản phẩm khác chiếm 5% theo giá trị tổng sản phẩm của công ty
Hiện nay, EEC đang là đại diện chính thức của các hãng:
1.Fluid Components International LLC (FCI) - Mỹ , hãng chuyên cung cấp
tất cả các máy đồng hồ đo lưu lượng khí/ biogas (mass flow meter, level/ flowswitch) cho các nhà máy dầu khí, hóa chất, xi măng, thép, điện, các công ty khícông nghiệp, chế biến thực phẩm,
2 FLSmidth Krebs- Australia, chuyên cung cấp các loại máy bơm bùn, bơm
cát, bơm huyền phù, dùng trong nghành khai mỏ, nhiệt điện, nạo vét sông
3 Tanaka Electric - Nhật Bản, chuyên cung cấp hệ thống kiểm soát nồng độ
bụi cho các nhà máy xi măng, nhà máy điện, nhà máy thép,
Trang 101.2.1.2.Chức năng và nhiệm vụ của công ty
Chức năng của công ty
Vận hành bộ máy tổ chức và hoạt động sản xuất kinh doanh của công ty theođúng mục tiêu đặt ra Vì chức năng chính của công ty là nhập khẩu và bán hàng hóacho nên việc thực hiện xuất nhập theo đúng quy trình là vấn đề luôn được đặt lênhàng đầu Điều này ảnh hưởng rất lớn đến chất lượng sản phẩm và uy tín của công
ty trên thị trường, đặc biệt là trong điều kiện cạnh tranh gay gắt như ngày nay
Củng cố mối quan hệ tốt đẹp với các nhà cung ứng hiện tại, bên cạnh đócông ty phải tìm thêm các nhà cung ứng mới để đảm bảo cho nguồn hàng được đápứng đầy đủ và giảm bớt được chi phí mua hàng
Nhiệm vụ của công ty
Để phù hợp với chức năng của mình trong từng thời kỳ khác nhau thì nhiệm
vụ đặt ra của công ty khác nhau Trong tình hình hiện nay, nhiệm vụ cơ bản củacông ty là:
- Xây dựng và tổ chức chiến lược kinh doanh
- Tăng cường quản trị chất lượng sản phẩm
- Quản lý, khai thác và sử dụng các nguồn vốn có hiệu quả
Chấp hành và thực hiện đầy đủ nghiêm túc các chính sách của ngành, luậtpháp của Nhà nước về hoạt động kinh doanh và nghĩa vụ đối với Nhà nước
1.2.1.3.Sơ đồ tổ chức trong công ty
Trang 11Hình 1.1: Sơ đồ tổ chức công ty
Vai trò và chức năng của các bộ phận trong công ty:
- Ban giám đốc: Điều hành và hoạch định mọi hoạt động chiến lược kinhdoanh của công ty
- Bộ phận kế toán: Kết toán sổ sách
- Bộ phận kinh doanh: Tìm hiểu thị trường, tìm kiếm các khách hàng tiềmnăng, giới thiệu sản phẩm, tìm kiếm và làm việc với các nhà cung cấp
- Bộ phận nhân sự: Quản lý nhân sự có trong công ty
- Bộ phận kho: Lưu trữ và bảo quản hàng hóa thực hiện nhập xuất hàng hóatheo yêu cầu của công ty
- Bộ phận kỹ thuật: Tìm hiểu về các công nghệ mới, thiết kế và tư vấn sử dụngcho khách hàng, kiểm tra chất lượng hàng hóa và tiến hành bảo trì khi có yêucầu
1.2.2.Đánh giá thực trạng về việc quản lý kho của công ty
Hiện nay, việc quản lý kho hàng hóa của công ty đang áp dụng chưa được tinhọc hóa hoàn toàn, chủ yếu thực hiện việc quản lý thông qua Excel Công tác theodõi thực hiện qua nhiều khâu, sử dụng nhiều nhân lực trong việc quản lý, thời gianchờ để thực hiện việc nhập xuất kho còn kéo dài
Dùng excel khiến cho công việc phải lập nhiều bảng biểu khác nhau, nhiềuđối tượng quản lý chưa được tối ưu hóa mất thời gian trong việc nhập và xử lýthông tin Khi cần truy xuất đến một hàng hóa nào đó hay một báo cáo gì đó cầnphải tìm kiếm từ nhiều file và bảng biểu khiến cho thời gian bị kéo dài
Hiện nay, công ty có 3 kho chính: Một kho ở Hải Dương và một kho ở HảiPhòng (chứa các hàng hóa nhập về và có thể thực hiện gia công hàng hóa để phùhợp với yêu cầu của khách hàng), một kho ở Hà Nội lưu trữ hàng hóa thiết bị vật tưcủa công ty
1.2.3.Đề xuất phương án giải quyết
Trang 12Qua quá trình khảo sát thực tế cũng như phân tích kỹ yêu cầu thiết yếu, emxin đưa ra mô hình hệ thống quản lý kho hàng hóa của công ty sử dụng phần mềmtin học hóa có thể tối đa trong công việc Phần mềm quản lý kho được xây dựngphải đảm bảo một số yêu cầu chức năng cơ bản như sau:
Yêu cầu về chức năng:
Phải đảm bảo xử lý được các nghiệp vụ liên quan đến công việc quản lý khohàng hóa Xây dựng được các chức năng quản lý cơ bản như nhập kho, xuất kho, cókhả năng thống kê tồn kho, đưa ra các báo cáo cần thiết với yêu cầu của ban giámđốc và các bộ phận liên quan
Yêu cầu về dữ liệu:
Cần thiết nhất là hệ thống phải đảm bảo quản lý được đầy đủ thông tin vềkhách hàng, hàng hóa, kho, các hóa đơn chứng từ, cũng như khả năng tính toán,chọn lọc thống kê và in ấn thông tin
Phải đảm bảo độ chính xác, an toàn và tin cậy cao Dữ liệu có thể lưu trữtrong một thời gian đủ dài theo yêu cầu của ban giám đốc, đảm bảo tính toàn vẹn vàtức thời khi được yêu cầu truy xuất
Yêu cầu về thiết kế:
Giao diện đơn giản, gần gũi, tiện dụng phù hợp được với đa số nhu cầu củangười dùng phổ thông Thao tác thực hiện nhanh chóng, tiện ích
1.2.4.Mô tả yêu cầu bài toán
1.2.4.1.Quy trình quản lý nhập kho
Bộ phận kinh doanh căn cứ vào nhu cầu mua hàng của khách hàng, số lượnghàng hóa tồn tối thiểu, số lượng hàng hóa tồn tối đa trong kho và danh sách các mặthàng hiện có của công ty để lập đơn đặt hàng Trong đơn đặt hàng có đầy đủ thôngtin về công ty, danh sách về các nhà cung cấp, số lượng hàng hóa cần nhập về
Bộ phận kinh doanh sẽ lập đơn đặt hàng và đưa lên ban giám đốc để được ký
Trang 13duyệt Sau đó thì bộ phận kinh doanh sẽ lập phiếu nhập hàng và tiến hành liên hệvới nhà cung cấp để mua hàng hóa sau đó hàng sẽ được chuyển về kho của công ty
và bộ phận kho sẽ tiến hành nhập kho hàng hóa về
Mỗi lần nhập hàng vào kho cần phải tiến hành lập một phiếu nhập kho theoquy định của công ty Phiếu nhập kho gồm các thông tin: Thông tin đầy đủ về nhàcung cấp, danh sách các mặt hàng, số lượng, ngày nhập, đơn giá…
Bộ phận kinh doanh sẽ chuyển phiếu nhập hàng và phiếu thanh toán tới bộphận kế toán để yêu cầu thanh toán tiền hàng tới nhà cung cấp cho công ty Sau khinhập hàng về cần phải tính lại một số thông tin liên quan đến hàng hóa đó có trongkho của công ty
Cách tính đơn giá nhập kho hàng hóa:
Đơn giá nhập = Giá mua ghi trên hóa đơn + Chi phí vận chuyển, bốc dỡ - các khoảngiảm trừ
Cách tính tổng giá trị hành nhập:
Tổng giá trị = ∑(Số lượng nhập x Đơn giá nhập)
Mỗi lần nhập hàng về đều phải tiến hành cập nhật lại danh mục hàng hóa như
là thêm mặt hàng(nếu đó là mặt hàng mới lần đầu tiên về kho), cập nhật lại sốlượng, tính lại đơn giá (công ty sử dụng phương pháp tính giá bình quan gia quyềncuối kỳ)
ĐGBQCK= TGTTĐK +TGTNTK SLTĐK+SLNTK Trong đó:
- ĐGBQCK: Đơn giá bình quan cuối kỳ
- TGTTĐK: Tổng giá trị tồn đầu kỳ
- TGTNTK: Tổng giá trị nhập trong kỳ
- SLTĐK: Số lượng tồn đầu kỳ
- SLNTK: Số lượng nhập trong kỳ
Trang 14Hình 1.2: Mẫu phiếu nhập kho hàng hóa
1.2.4.2.Quy trình quản lý xuất kho
Khi một khách hàng tiến hành mua hàng thì sẽ liên hệ với công ty, sau đó bộphận bán hàng sẽ tiến hành lập một đơn đặt hàng theo mẫu có sẵn bao gồm một sốthông tin cơ bản sau: Phần đầu là những thông tin đầy đủ về khách hàng, phần thứhai là danh sách mặt hàng đặt mua, số lượng, đơn giá từng loại và ngày nhận hàng.Sau khi lập phiếu đặt hàng thì sẽ tiến hành giao dịch và chuyển phiếu xuống cho bộphận kho tiến hành xuất hàng cho khách
Trang 15Khi mua hàng, khách hàng có thể trả tiền trước hay hẹn trả sau khi nhận hàngmột số ngày quy định trong hợp đồng Nếu khách hàng trả luôn tiền thì sẽ đượccông ty triết khấu thêm trong hóa đơn còn nếu không thì sẽ phải thanh toán theođúng hóa đơn mua hàng
Hàng ngày, bộ phận kinh doanh xem xét các đơn đặt hàng đồng thời so sánhvới lượng hàng tồn kho để báo cho khách hàng nhận hàng, giấy báo nợ cho kháchhàng và đặt hàng nhà cung cấp khi lượng hàng tồn vượt dưới mức tồn tối thiểu
Mỗi lần xuất hàng đều phải làm một phiếu xuất bao gồm: Thông tin đầy đủ
về khách hàng, danh sách mặt hàng xuất, số lượng, ngày xuất, đơn giá xuất
Cách tính tổng giá trị hàng xuất:
Tổng giá trị = ∑(Số lượng xuất x Đơn giá xuất).
Hình 1.3: Mẫu phiếu xuất kho
Trang 161.2.4.3.Quy trình quản lý tồn kho
Định kỳ hàng tháng, hàng quý, hàng năm phải báo cáo nhập, xuất hàng hóatheo những mẫu đã được ban giám đốc quy định Hoặc tại bất kỳ thời điểm nào, khiđược yêu cầu của ban giám đốc hay người có thẩm quyền thì bộ phận kho phải báocáo được tình hình hàng hóa của từng loại, từng kho
Cách tính số lượng hàng tồn kho :
Số lượng hàng tồn = Tồn kho đầu kỳ + Số lượng hàng nhập – Số lượng hàng xuất.
Tính giá tồn kho :
Giá tồn kho = Đơn giá bình quân trong kỳ x Số lượng hàng tồn kho.
1.2.5 Xây dựng mô hình bài toán
1.2.5.1.Phân tích
Qua quá trình một thời gian khảo sát thực tế tại công ty, tôi rút ra một số đốitượng chính trong hệ thống quản lý kho hàng hóa bao gồm: Khách hàng, nhà cungcấp, hàng hóa, kho hàng
Quản lý khách hàng: Mọi khách hàng của công ty đều được công ty quản lýnhững thông tin cơ bản sau:
- Số tài khoản ngân hàng
Quản lý nhà cung cấp: Mọi nhà cung cấp hợp đồng với công ty đều đượccông ty quản lý theo những thông tin cơ bản như sau:
- Tên nhà cung cấp
- Địa chỉ
- Điện thoại liên hệ
Trang 17- Số fax
- Số tài khoản ngân hàng
Quản lý hàng hóa: Mỗi mặt hàng được quản lý các thông tin cơ bản sau:
- Số lượng tồn tối thiểu
- Số lượng tồn tối đa
Quản lý kho hàng hóa: Hàng hóa được cất giữ tại các kho của công ty,mỗi kho được quản lý theo các thông tin cơ bản sau:
1.2.5.2.Dữ liệu đầu vào, dữ liệu đầu ra và các chức năng xử lý của hệ thống
Dữ liệu đầu vào:
- Các thông tin về khách hàng như: Tên khách hàng, địa chỉ, email, số điệnthoại, fax…
- Các thông tin liên quan đến hàng hóa như: Mã hàng, tên hàng, loại hàng,xuất xứ, nhà cung cấp…
- Các thông tin liên quan đến nhà cung cấp như: Tên nhà cung cấp, địa chỉ,email, số điện thoại, fax, tài khoản ngân hàng…
- Các thông tin liên quan đến kho hàng như: Mã kho, tên kho, địa chỉ, điệnthoại, thủ kho…
Trang 18- Ngoài ra còn có các thông tin quản lý liên quan đến nhân viên, thông tinphân quyền, thông tin về chức vụ, số dư đầu kỳ…
Dữ liệu đầu ra:
- Danh sách chi tiết về khách hàng
- Danh sách chi tiết về hàng hóa
- Danh sách chi tiết về các kho hàng
- Danh sách chi tiết về nhân viên
- Danh sách các phiếu nhập, phiếu xuất và chi tiết liên quan
- Danh sách các nhà cung cấp
- Thống kê số lượng hàng nhập, số lượng hàng xuất theo định kỳ và số lượnghàng tồn trong kho
Chức năng quản lý trung tâm của hệ thống:
- Xử lý, lưu trữ thông tin liên quan đến hàng hóa, phiếu nhập hàng, phiếu xuấthàng và các tính toán có liên quan
- Lưu trữ và bảo mật dữ liệu quản lý hóa đơn chứng từ liên quan đến việc nhậphàng, xuất hàng, thông tin hàng hóa, thông tin về khách hàng, thông tin vềkho hàng và thông tin liên quan đến nhà cung cấp
- Lập phiếu nhập hàng, xuất hàng và lập các báo cáo về tình hình hoạt độngnhập – xuất của công ty theo định kỳ và kiểm soát hoạt động tồn kho
Trang 19CHƯƠNG 2 MỘT SỐ KIẾN THỨC CƠ BẢN THỰC HIỆN ĐỀ TÀI
2.1.Hệ quản trị cơ sở dữ liệu
Hệ quản trị cơ sở dữ liệu (Database Management System - DBMS), là
phần mềm hay hệ thống được thiết kế để quản trị một cơ sở dữ liệu Cụ thể,các chương trình thuộc loại này hỗ trợ khả năng lưu trữ, sửa chữa, xóa vàtìm kiếm thông tin trong một cơ sở dữ liệu (CSDL) Có rất nhiều loại hệ quảntrị CSDL khác nhau: từ phần mềm nhỏ chạy trên máy tính cá nhân cho đếnnhững hệ quản trị phức tạp chạy trên một hoặc nhiều siêu máy tính
Tuy nhiên, đa số hệ quản trị CSDL trên thị trường đều có một đặcđiểm chung là sử dụng ngôn ngữ truy vấn theo cấu trúc mà tiếng Anh gọi là
Structured Query Language (SQL) Các hệ quản trị CSDL phổ biến đƣợc
nhiều người biết đến là MySQL, Oracle, PostgreSQL, SQL Server, DB2,Infomix….Phần lớn các hệ quản trị CSDL kể trên hoạt động tốt trênnhiều hệ điều hành khác nhau như Linux, Unix và MacOS ngoại trừ SQLServer của Microsoft chỉ chạy trên hệ điều hành Windows
Ưu điểm của hệ quản trị cơ sở dữ liệu:
- Quản lý được dữ liệu dư thừa
- Đảm bảo tính nhất quán cho dữ liệu
- Tạo khả năng chia sẻ dữ liệu nhiều hơn
- Đảm bảo tính toàn vẹn cho dữ liệu
Nhược điểm:
- Hệ quản trị cơ sở dữ liệu tốt thì khá phức tạp
- Hệ quản trị cơ sở dữ liệu tốt thường rất lớn và chiếm nhiều dung lượng bộnhớ
- Giá cả không thống nhất tùy theo môi trường và chức năng yêu cầu củakhách hàng hay người sử dụng
Trang 20- Hệ quản trị cơ sở dữ liệu được viết tổng quát cho nhiều người dùng thìthường chậm.
2.1.1.Giới thiệu về SQL Server 2008
Một hệ quản trị cơ sở dữ liệu là một hệ thống các chương trình hỗ trợ các tác
vụ quản lý, khai thác dữ liệu theo mô hình cơ sở dữ liệu quan hệ SQL Server 2009
là một hệ thống quản lý cơ sở dữ liệu được nâng cấp từ các phiên bản trước đó củaMicrosoft SQL Server 2008 có đầy đủ các yêu cầu và chức năng giúp nó có thểlàm tốt được các yêu cầu về mặt cơ sở dữ liệu và lập trình của người dùng và ngườiquản trị
SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ hay còn được gọi
là Relation Database Management (RDMS) do Microsoft phát triển Cơ sở dữ liệuquan hệ là cơ sử dữ liệu mà dữ liệu bên trong nó được tổ chức thành các bảng Cácbảng lại được tổ chức thành các nhóm dữ liệu theo cùng một chủ đề và có chứa cáccột và các hàng thông tin Sau đó các bảng này lại liên hệ với nhau bởi DatabaseEngine khi có yêu cầu RDBMS là một trong những mô hình cơ sở dữ liệu thôngdụng nhất thế giới hiện nay
Trong một thế giới mà công nghệ công tin ngày càng phát triển và chiếm vaitrò chủ đạo trong nhiều hoạt động sản xuất, kinh doanh cũng như nhu cầu quản lýcủa con người….thì dữ liệu và các hệ thống thông tin quản lý dữ liệu cần phải luônluôn được đảm bảo và ở trạng thái sẵn sàng SQL Server 2008 cho phép các nhàphát triển giảm được sự phức tạp của cơ sở hạ tầng trong khi đó vẫn đảm bảo cungcấp một nền tảng dữ liệu cho các doanh nghiệp có khả năng bảo mật, khả năng mởrộng và quản lý tốt hơn, cũng như thời gian chết của ứng dụng được hạn chế ở mứctối đa
Những điểm mới của SQL Server 2008:
Nền tảng cho các nhiệm vụ then chốt: SQL Server 2008 cho phép các tổ
chức có thể chạy hầu hết các ứng dụng phức tạp của họ trên một nền tảng an toàn,tin cậy và có khả năng mở rộng Bên cạnh đó còn giảm được sự phức tạp trong việc
Trang 21quản lý cơ sở hạ tầng dữ liệu SQL Server 2008 cung cấp một nền tảng tin cậy và antoàn bằng cách bảo đảm những thông tin có giá trị trong các ứng dụng đang tồn tại
và nâng cao khả năng sẵn có của dữ liệu SQL Server 2008 giới thiệu một cơ chếquản lý cách tân dựa trên chính sách, cơ chế này cho phép các chính sách có thểđược định nghĩa quản trị tự động cho các thực thể máy chủ trên một hoặc nhiều máychủ Thêm vào đó, SQL Server 2008 cho phép thi hành truy vấn dự báo với một nềntảng tối ưu
Sự phát triển động: 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 EntityFramework cho phép các chuyên gia phát triển phần mềm có thể nâng cao năng suấtlà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ệpthay 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ấntích hợp LINQ mới trong NET Framework đã cách mạng hóa cách các chuyên giaphá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 chophé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ớimáy chủ trung tâm Đây là một điều rất quan trọng và tiện lợi mà Microsoft đã đưavào và nâng cấp ở phiên bản mới này so với các phiên bản của SQL những nămtrước đây
Dữ liệu quan hệ mở rộng: SQL Server 2008 cho phép các chuyên gia phát
triển khai thác triệt để và quản lý bất kỳ kiểu dự liệu nào từ các kiểu dữ liệu truyềnthống đến dữ liệu không gian địa lý mới
Thông tin trong toàn bộ doanh nghiệp: SQL Server 2008 cung cấp một cơ sở
hạ tầng có thể mở rộng, cho phép quản lý các báo cáo, phân tích với bất kỳ kíchthước và sự phức tạp nào, bên cạnh đó nó cho phép người dùng dễ dàng hơn trongviệc truy cập thông tin thông qua sự tích hợp sâu hơn với Microsoft Office Điềunày cho phép CNTT đưa được thông tin của doanh nghiệp rộng khắp trong tổ chức.SQL Server 2008 tạo những bước đi tuyệt vời trong việc lưu trữ dữ liệu, cho phép
Trang 22người dùng hợp nhất các trung tâm dữ liệu vào một nơi lưu trữ dữ liệu tập trung củatoàn doanh nghiệp.
Hình 2.1: Sơ đồ hệ thống cơ sở dữ liệu của Microsoft
2.1.2.Các đặc tính của SQL Server
- SQL Server có một số đặc tính cơ bản sau:
- Cho phép quản trị một hệ cơ sở dữ liệu lớn (có thể là vài Tega byte), cótốc độ xử lý dữ liệu nhanh đáp ứng yêu cầu về thời gian
- Cho phép nhiều người cùng khai thác tại một thời điểm đối với một cơ sở
dữ liệu và toàn bộ hệ quản trị cơ sở dữ liệu (có thể lên đến vài chục ngànuser)
- Có hệ thống phân quyền bảo mật tương thích với hệ thống bảo mật củacông nghệ Network Technology (NT), tích hợp với hệ thống bảo mật củaWindow NT hoặc sử dụng hệ thống bảo vệ độc lập của SQL Server
- Hỗ trợ trong việc triển khai cơ sở dữ liệu phân tán và phát triển ứng dụngtrên Internet
Trang 23- Cho phép lập trình kết nối với nhiều ngôn ngữ lập trình khác dùng xâydựng các ứng dụng đặc thù (Visual Basic, C, C++, ASP.NET, XML….).
- Sử dụng câu lệnh truy vấn dữ liệu Transaction-SQL (Accsess là SQL,Oracle là PL/SQL…)
2.1.3.Các công cụ trong SQL Server
SQL Setup: Sử dụng cấu hình Server, bạn có thể sử dụng chương trình cài
đặt để thay đổi các tùy chọn hỗ trợ mạng Thêm vào các ngôn ngữ xây dựng lại cơ
sở dữ liệu chính, thay đổi thiết lập ký tự và trật tự sắp xếp, thiết lập các tùy chọn antoàn và gỡ bỏ SQL Server
SQL Server Manager: Sử dụng câu lệnh Start, Pause, Continue, Stop SQL
Server và SQL Excute
ISQL/w: Cho phép bạn nhập lệnh Transact- SQL và thủ tục lưu trữ hệ thống
trong giao diện truy vấn đồ họa ISQL/w cũng cung cấp khả năng cho phân tíchthiết kế đồ họa
SQL Security Manager: Cho phép quản lý user account với SQL Server mà
sử dụng an toàn, thống nhất với Window NT
SQL Enterprise Manager : Cung cấp dễ dàng, quản lý xí nghiệp rộng từ
Server hoặc Workstation Nó cho phép bạn thực hiện nhiệm vụ quản trị hệ thống sửdụng giao diện đồ họa Bạn có thể đặt cấu hình Server, quản trị cơ sở dữ liệu và đốitượng cơ sở dữ liệu, lập thời biểu cho biến cố (event), định cấu hình và quản lý sựtái tạo, có thể làm được hơn thế nữa
SQL Transact Manager: Cung cấp một cách dễ dàng đồ họa theo cách truyền
các đối tượng và dữ liệu từ Server tới nơi khác
SQL Performance Monitor: Tích hợp với Window NT thực hiện điều khiển
với SQL Server…
Microsoft ODBC SQL Server driver: Là một file trợ giúp trực tuyến cung
cấp thông tin về Microsoft ODBC SQL Server driver
Trang 24SQL Server Book Online: Cung cấp trực tuyến tới Microsoft SQL Server,
thiết lập tư liệu bao gòm sức mạnh và khả năng tìm kiếm dễ dàng đối với người sửdụng Có khả năng tìm kiếm đầy đủ văn bản, cho phép tìm nhanh các từ hay đoạnvăn, bạn có thể tìm kiếm toàn bộ văn bản hoặc theo từng chủ đề
SQL Client Configuration Utinity: Thiết lập mặc định Net- Library & Server
nối tới thông tin trên Client Nó cũng có thể hiển thị BD- Library và kiểm tra chonhiều bản sao của DB- Library & Net- Library trong đường dẫn của bạn
SQL Distribute Manager Object: Là một file trợ giúp trực tuyến hiển thị
SQL Distribute Manager Object
2.1.4.Các thành phần của SQL Server
2.1.4.1.Bảng (Table)
Bảng (Table): là đối tượng chính của cơ sở dữ liệu lưu trữ dữ liệu cần quản
lý Mỗi bảng có một hay nhiều Field (trường) Mỗi Field tương ứng với một loại dữliệu cần lưu trữ
Bảng còn có các thành phần liên quan đến nó như sau:
- Constraint (Ràng buộc): là các chỉ định ràng buộc dữ liệu trong bảng hoặc
các bảng khác nhau theo một quy tắc nào đó
- Triggers (Bẫy lỗi): chứa các mã lệnh kiểm tra DL, có tính năng tự động thực
hiện khi có hành động nào đó xảy ra đối với DL trong Table như Insert,Update, Delete
- Indexs (Chỉ mục): Hỗ trợ việc sắp xếp và tìm kiếm nhanh các thông tin trên
Table
Các thao tác làm việc với cơ sở dữ liệu trên bảng:
- Thêm thông tin vào bảng
- Cập nhật lại thông tin đã có
- Xóa một hay nhiều hay toàn bộ thông tin của bảng
- Xem thông tin trên các bảng
Trang 25- Thêm mới một bảng dữ liệu
2.1.4.2.View
View thường gọi là bảng ảo hay khung nhìn nó hoạt động rất giống bảng Nócũng chứa dữ liệu theo dòng và cột và cho phép bạn nhận giá trị của một cột xácđịnh trong một dòng xác định Tuy nhiên, view không cho phép bạn lưu giữ giá trị
Nó chỉ chứa thông tin hướng dẫn cho server CSDL biết cách nhận dữ liệu đó Khibạn mở view, server thực thi những hướng dẫn này và tạo ra các bảng ảo từ view.Bảng ảo này chỉ tồn tại khi bạn làm việc với nó; nó không bao giờ được lưu giữ trênđĩa cứng
2.1.4.3.Stored Proceduce
Stored Procedure hay còn được gọi là thủ tục lưu sẵn Các phát biểu SQL cơbản cũng là những thủ tục lưu sẵn SQL là một ngôn ngữ lập trình, nó không chỉbao gồm các phát biểu hướng dữ liệu (như SELECT) mà còn bao gồm các phát biểuđiều khiển như IF….THEN, vòng lặp, khai báo thủ tục, trả về dữ liệu,…Như vậybạn hoàn toàn có thể viết các thủ tục bằng SQL và lưu chúng vào server CSDL
Các Stored Procedure có thể chấp nhận giá trị đầu vào hoặc đơn giản chỉ gọitên thủ tục nếu nó không yêu cầu giá trị đầu vào Nó có thể trả về một hoặc nhiềugiá trị trong tham số đầu ra hoặc không trả về thông tin gì cả Stored Procedurethậm chí có thể trả về toàn bộ nội dung bảng ảo (giống view) Thực tế bạn có thểtạo một Stored Procedure thực thi bất kỳ phát biểu SQL nào giống như khi dùng vớiview
SQL Server phân tích cú pháp Stored Procedure khi nó được lưu và lưu nó ởdạng tối ưu Stored Procedure có thể cung cấp cách thực thi phát biểu SQL nhanhhơn phát biểu SQL được gửi từ Client
Tạo Stored Procedure bằng câu lệnh:
CREATE PROCEDURE getName
@Contact ID int
Trang 26Nếu xây dựng Table bằng giao diện đồ họa, phải tạo lại Diagram.
- Mở rộng ngăn tên CSDL cần tạo Diagram
- Click trên ngăn Diagram => New Database Diagram
- Chọn các Table cần tạo liên kết
- Drag Mouse tạo liên kết giữa các Table
2.1.5.Hàm trong SQL Server
2.1.5.1.Giới thiệu về T- SQL
T- SQL không thật sự được phát triển để trở thành ngôn ngữ lập trình đầy
đủ Theo thời gian, chuẩn ANSI SQL được mở rộng kết hợp ngày càng nhiềuphần tử ngôn ngữ thủ tục nhưng nó vẫn thiếu sức mạnh và độ linh hoạt của mộtngôn ngữ lập trình thật sự
SQL được thiết kế dành riêng cho mục đích nhận và tương tác dữ liệu SQL của Microsoft được thiết kế đặc trưng để sử dụng trong SQL Server Khingười lập trình sử dụng T-SQL như ngôn ngữ lập trình, họ cố gắng không phá
T-vỡ thực tiễn của ngôn ngữ mà phải đảm bảo xử lý và thực thi mã hiệu quả Bởi
vì T-SQL vẫn tốt nhất khi nhận và tương tác dữ liệu
Trang 27T-SQL và .NET Framework: Sự tích hợp SQL Server và .NETFramework là một bước nhảy vọt rất lớn trong lập trình CSDL Tính năng mớinày cho phép những nhà phát triển sử dụng các ngôn ngữ lập trình viết các thủtục lưu sẵn (Stored Procedure), các hàm truy xuất và tương tác dữ liệu với mãhướng đối tượng chứ không phải các phát biểu SQL.
2.1.5.2.Hàm trong SQL Server
Trong SQL server có 2 loại hàm: Một loại là được xây dựng sẵn trong SQLServer (built-in) và một loại do người dùng tự định nghĩa (user-defined)
Các hàm xây dựng sẵn được chia làm 3 nhóm:
Rowset Functions : Loại này thường trả về một object và được đối xử nhưmột table Ví Dụ : Thực hiện các lệnh UPDATE, INSERT, DELETE
Ví dụ: Thêm thông tin một khách hàng mới vào bảng Customer:
INSERT INTO CUSTOMERS (customername, birthday, gender, address)
VALUES('Nguyen Van A', '4/2/1976', 'True', '14 Thong Nhat')
AVG(<column>): Trả về giá trị trung bình của một nhóm
COUNT( ): Trả về số lượng các mục trong một nhóm
MAX(<column>): Trả về giá trị lớn nhất của biểu thức
MIN(<column>): Trả về giá trị nhỏ nhất của biểu thức
SUM(<column>): Trả về tổng giá trị trong một nhóm
Scalar Functions : Loại này làm việc trên một giá trị đơn và trả về một giá trị
Trang 28đơn Trong loại này lại chia làm nhiều loại nhỏ như các hàm về toán học, vềthời gian, xử lý kiểu dữ liệu String Ví dụ:
MONTH('2013-09-25'): Trả về tháng 9
DAYOFMONTH(date): Trả về số ngày trong tháng
Ascii(str): Trả về giá trị ASCII của ký tự đầu tiên trong chuỗi str
Char(int): Chuyển đổi một giá trị Ascii sang ký tự
Các hàm User-Defined (được tạo ra bởi câu lệnh CREATE FUNCTION vàphần thân nằm cặp lệnh BEGIN END) cũng được chia làm các nhóm nhưsau:
+ Scalar Functions : Trả về một giá trị đơn bằng câu lệnh RETURNS
Ví dụ: Câu lệnh dưới đây định nghĩa hàm kiểm tra xem số nhập vào là âm haydương của một giá trị kiểu Double:
Create function f_thu(@so Double)
Returns nvarchar(10)
As
Begin
Declare @st nvarchar(10)
Select @st=Case Datepart(dw,@so)
When 1 Then N 'Dương'
When 2 Then N 'Âm'
Else N 'Số không'
End
Return (@st)
End
Trang 29+ Table Functions : Loại này trả về một table
Ví dụ: Lấy ra các khách hàng tùy thuộc vào giá trị mã khách hàng truyền vào chotham số:
Create function f_SelectCustomer
(@customerid int)
Returns table
As
Return (select * from customers where customerid > @customerid)
Một số câu lệnh cơ bản trong SQL Server:
Câu lệnh SELECT: trả về một tập kết quả các bản ghi từ một hoặc nhiềubảng Nó được sử dụng để lấy dữ liệu từ một hoặc nhiều bảng trongCSDL
Câu lệnh INSERT: Dùng để thêm dữ liệu vào một bảng trong cơ sở dữliệu quan hệ
Câu lệnh UPDATE: Dùng thay đổi hay cập nhật dữ liệu của một haynhiều hàng trong bảng dữ liệu Tùy theo điều kiện mà một số hàng haytất cả các hàng trong bảng sẽ bị thay đổi
Câu lệnh DELETE: Xóa một hoặc nhiều hàng trong bảng dữ liệu Nếuthực hiện câu lệnh Delete với một điều kiện nào đó thì một số hàng thỏamãn điều kiện sẽ bị xóa đi, ngược lại thì tất cả các hàng sẽ bị xóa đi
Trang 302.1.6.Các kiểu dữ liệu trong SQL Server
Bảng 2.2: Các kiểu dữ liệu trong SQL Server
Char(n) Kiểu chuỗi với độ dài cố định
Nchar(n) Kiếu chuỗi với độ dài cố định hỗ trợ UNICODE
Varchar(n) Kiểu chuỗi với độ dài chính xác
Nvarchar(n) Kiểu chuỗi với độ dài chính xác hỗ trợ UNICODE
Int Số nguyên có giá trị từ -231 đến 231 – 1
Tinyint Số nguyên có giá trị từ 0 đến 255
Smallint Số nguyên có giá trị từ -215 đến 215 – 1
Bigint Số nguyên có giá trị từ -263 đến 263-1
Numeric Kiểu số với độ chính xác cố định
Decimal Tương tự kiểu Numeric
Float Số thực có giá trị từ -1.79E+308 đến 1.79E+308
Real Số thực có giá trị từ -3.40E + 38 đến 3.40E + 38
Money Kiểu tiền tệ
Bit Kiểu bit (có giá trị 0 hoặc 1)
Datetime Kiểu ngày giờ (chính xác đến phần trăm của giây)
Smalldatetime Kiểu ngày giờ (chính xác đến phút)
Binary Dữ liệu nhị phân với độ dài cố định (tối đa 8000 bytes)
Varbinary Dữ liệu nhập vào nhị phân với độ dài chính xác (tối đa 8000
bytes)Image Dữ liệu nhị phân với độ dài chính xác (tối đa 2,147,483,647
bytes)Text Dữ liệu nhập vào kiếu chuỗi với độ dài lớn (tối đa 2,147,483,647
ký tự)Ntext Dữ liệu kiếu chuỗi với độ dài lớn và hỗ trợ UNICODE (tối đa
1,073,741,823 ký tự)
Trang 31Ngoài ra, SQL còn hỗ trợ một số kiểu dữ liệu khác như : Cursor,SQL_Variant, Table, Timestamp và Uniqueidentifier…
2.2 Lựa chọn ngôn ngữ lập trình
2.2.1 Nền tảng NET
NET Flatform
NET Flatform là nền tảng phát triển:
- Cung cấp giao diện lập trình (API) cho các dịch vụ (services) và các hàm
API truyền thống của hệ điều hành Windows
- Cung cấp một nền tảng phát triển chung cho nhiều ngôn ngữ lập trình khác
nhau của Microsoft: C#, Visual J#, Visual Basic…
- NET Flatform bao gồm các sản phẩm:
- Tập hợp các ngôn ngữ (C#, VB…), một tập hợp các công cụ phát triển baogồm Visual Studio NET, thư viện để phát triển các ứng dụng web (web andweb services), các ứng dụng Windows cũng như môi trường thực thi chung(Common Language Runtime (CLR))
- Nền tảng NET 2.0 không chỉ hỗ trợ các ứng dụng trên máy tính cá nhân,máy chủ mà còn hỗ trợ các thiết bị nhúng (Cell phones, game boxes…)
Kiến trúc NET (.NET Framework)
Microsoft NET hỗ trợ nhiều ngôn ngữ khác nhau nhờ hệ thống - CommonType System (CTS)
Quy định những yêu cầu tối thiểu để một ngôn ngữ lập trình có thể tích hợpvào NET – Common Language Specification (CLS)
Kiến trúc NET là tầng ngay trên hệ điều hành, bao gồm:
- 5 ngôn ngữ lập trình chính thức: C#, VB, C++,Visual J# vàJscript.NET
Trang 32- CLR (Common Language Runtime).
Các thư viện lập trình
Biên dịch trong NET
- NET không biên dịch trực tiếp các chương trình thành file thực thi
- NET biên dịch các chương trình thành các assembly, chứa các mã chươngtrình trung gian của Microsoft (Microsoft Intermediate Language - MSIL)
- CLR sẽ dịch một lần nữa, sử dụng chương trình biên dịch Just In Time (JIT)chuyển các mã MSIL sang mã máy và thực thi
Hình 2.3: Sơ đồ thể hiện biên dịch trong C#
2.2.2 Lập trình hướng đối tượng
Lập trình hướng đối tượng (OOP- Object Oriented Programming), hay còn
gọi là lập trình định hướng đối tượng, là kĩ thuật lập trình hỗ trợ công nghệ đốitượng OOP được xem là giúp tăng năng suất, đơn giản hóa độ phức tạp khi bảo trìcũng như mở rộng phần mềm bằng cách cho phép lập trình viên tập trung vào cácđối tượng phần mềm ở bậc cao hơn Ngoài ra, nhiều người còn cho rằng OOP dễtiếp thu hơn cho những người mới học về lập trình hơn là các phương pháp trước
Trang 33Một cách giản lược, đây là khái niệm và là một nỗ lực nhằm giảm nhẹ cácthao tác viết mã cho người lập trình, cho phép họ tạo ra các ứng dụng mà các yếu tốbên ngoài có thể tương tác với các chương trình đó giống như là tương tác với cácđối tượng vật lý
Những đối tượng trong một ngôn ngữ OOP là các kết hợp giữa mã và dữ liệu
mà chúng được nhìn nhận như là một đơn vị duy nhất Mỗi đối tượng có một tênriêng biệt và tất cả các tham chiếu đến đối tượng đó được tiến hành qua tên của nó.Như vậy, mỗi đối tượng có khả năng nhận vào các thông báo, xử lý dữ liệu (bêntrong của nó), và gửi ra hay trả lời đến các đối tượng khác hay đến môi trường
Các tính chất cơ bản của lập trình hướng đối tượng:
- Tính trừu tượng (abstraction): Đây là khả năng của chương trình bỏ qua
hay không chú ý đến một số khía cạnh của thông tin mà nó đang trực tiếp làmviệc lên, nghĩa là nó có khả năng tập trung vào những cốt lõi cần thiết Mỗi đốitượng phục vụ như là một "động tử" có thể hoàn tất các công việc một cách nội
bộ, báo cáo, thay đổi trạng thái của nó và liên lạc với các đối tượng khác màkhông cần cho biết làm cách nào đối tượng tiến hành được các thao tác Tínhchất này thường được gọi là sự trừu tượng của dữ liệu Tính trừu tượng còn thểhiện qua việc một đối tượng ban đầu có thể có một số đặc điểm chung chonhiều đối tượng khác như là sự mở rộng của nó nhưng bản thân đối tượng banđầu này có thể không có các biện pháp thi hành Tính trừu tượng này thườngđược xác định trong khái niệm gọi là lớp trừu tượng hay lớp cơ sở trừu tượng
- Tính đóng gói (encapsulation) và che giấu thông tin (information hiding):
Tính chất này không cho phép người sử dụng các đối tượng thay đổi trạng thái nộitại của một đối tượng Chỉ có các phương thức nội tại của đối tượng cho phép thayđổi trạng thái của nó Việc cho phép môi trường bên ngoài tác động lên các dữ liệunội tại của một đối tượng theo cách nào là hoàn toàn tùy thuộc vào người viết mã.Đây là tính chất đảm bảo sự toàn vẹn của đối tượng
Trang 34- Tính đa hình (polymorphism): Thể hiện thông qua việc gửi các thông điệp (message) Việc gửi các thông điệp này có thể so sánh như việc gọi các hàm
bên trong của một đối tượng Các phương thức dùng trả lời cho một thông điệp sẽtùy theo đối tượng mà thông điệp đó được gửi tới sẽ có phản ứng khác nhau Ngườilập trình có thể định nghĩa một đặc tính (chẳng hạn thông qua tên của các phươngthức) cho một loạt các đối tượng gần nhau nhưng khi thi hành thì dùng cùng mộttên gọi mà sự thi hành của mỗi đối tượng sẽ tự động xảy ra tương ứng theo đặc tínhcủa từng đối tượng mà không bị nhầm lẫn
- Tính kế thừa (inheritance): Đặc tính này cho phép một đối tượng có thể có
sẵn các đặc tính mà đối tượng khác đã có thông qua kế thừa Điều này cho phép cácđối tượng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành địnhnghĩa lại Tuy nhiên, không phải ngôn ngữ định hướng đối tượng nào cũng có tínhchất này
2.2.3.Ngôn ngữ lập trình C#
C# là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft,
là phần khởi đầu cho kế hoạch NET của họ Tên của ngôn ngữ bao gồm ký tựthăng theo Microsoft nhưng theo ECMA là C#, chỉ bao gồm dấu số thường.Microsoft phát triển C# dựa trên C++ và Java C# được miêu tả là ngôn ngữ cóđược sự cân bằng giữa C++, Visual Basic, Delphi và Java
Ngôn ngữ C# là một ngôn ngữ được dẫn xuất từ C và C++, nhưng nó đượctạo từ nền tảng phát triển hơn Microsoft bắt đầu với công việc trong C và C++ vàthêm vào những đặc tính mới để làm cho ngôn ngữ này dễ sử dụng hơn Nhiềutrong số những đặc tính này khá giống với những đặc tính có trong ngôn ngữ Java.Không dừng lại ở đó, Microsoft đưa ra một số mục đích khi xây dựng ngôn ngữnày Những mục đích này được được tóm tắt như sau:
C# là ngôn ngữ đơn giản: Vì C# loại bỏ một vài sự phức tạp và rối rắm củanhững ngôn ngữ như Java và c++, bao gồm việc loại bỏ những macro, nhữngtemplate, đa kế thừa, và lớp cơ sở ảo (virtual base class) Chúng là những nguyên
Trang 35nhân gây ra sự nhầm lẫn hay dẫn đến những vấn đề cho các người phát triển C++.Nếu chúng ta là người học ngôn ngữ này đầu tiên thì chắc chắn là ta sẽ không trảiqua những thời gian để học nó! Nhưng khi đó ta sẽ không biết được hiệu quả củangôn ngữ C# khi loại bỏ những vấn đề trên.
C# là ngôn ngữ hiện đại: Điều gì làm cho một ngôn ngữ hiện đại Nhữngđặc tính như là xử lý ngoại lệ, chi gom bộ nhớ tự động, những kiểu dữ liệu mởrộng, và bảo mật mã nguồn là những đặc tính được mong đợi trong một ngônngữ hiện đại C# chứa tất cả những đặc tính trên Nếu là người mới học lậptrình có thể chúng ta sẽ cảm thấy những đặc tính trên phức tạp và khó hiểu.Tuy nhiên, cũng đừng lo lắng chúng ta sẽ dần dần được tìm hiểu những đặctính qua các phần tiếp theo của loạt bài viết này
C# là ngôn ngữ hướng đối tượng: Những đặc điểm chính của ngôn ngữhướng đối tượng (Object-oriented language) là sự đóng gói (encapsulation), sự
kế thừa (inheritance), và đa hình (polymorphism) C# hỗ trợ tất cả những đặctính trên
C# là ngôn ngữ mạnh mẽ và mềm dẻo: Với ngôn ngữ C# chúng ta chỉ bịgiới hạn ở chính bởi bản thân hay là trí tưởng tượng của chúng ta Ngôn ngữnày không đặt những ràng buộc lên những việc có thể làm C# được sử dụngcho nhiều các dự án khác nhau như là tạo ra ứng dụng xử lý văn bản, ứng dụng
đồ họa, bản tính, hay thậm chí những trình biên dịch cho các ngôn ngữ khác
C# là ngôn ngữ có ít từ khóa: Vì C# là ngôn ngữ sử dụng giới hạn những từkhóa Phần lớn các từ khóa được sử dụng để mô tả thông tin Chúng ta có thể nghĩrằng một ngôn ngữ có nhiều từ khóa thì sẽ mạnh hơn Điều này không phải sự thật,
ít nhất là trong trường hợp ngôn ngữ C#, chúng ta có thể tìm thấy rằng ngôn ngữnày có thể được sử dụng để làm bất cứ nhiệm vụ nào Danh sách các từ khóa củaC#: abstract, default, foreach, object, sizeof, unsafe, as, delegate, goto, operator,stackalloc, ushort, base, do, if, out, static, using, bool,double, implicit, override,string, virtual, break, else, in, params, struct, volatile, byte, enum, int, private,
Trang 36switch, void, case, event, interface, protected, this, while, catch, explicit, internal,public, throw, char, extern, is, readonly, true, hecked, false, lock, ref, try, class,finally, long, return, typeof, const, fixed, namespace, sbyte, uint, continue, float,new, sealed, ulong, decimal, for, null, short, unchecked
C# là ngôn ngữ hướng module: Vì mã nguồn C# có thể được viết trongnhững phần được gọi là những lớp, những lớp này chứa các phương thức thành viêncủa nó Những lớp và những phương thức có thể được sử dụng lại trong ứng dụnghay các chương trình khác Bằng cách truyền các mẫu thông tin đến những lớp hayphương thức chúng ta có thể tạo ra những mã nguồn dùng lại có hiệu quả
C# sẽ trở nên phổ biến: C# là một trong những ngôn ngữ lập trình mới nhất.Vào thời điểm mới ra đời, nó không được biết như là một ngôn ngữ phổ biến.Nhưng ngôn ngữ này có một số lý do để trở thành một ngôn ngữ phổ biến Mộttrong những lý do chính là Microsoft và sự cam kết của NET
Đặc điểm của hàm khởi tạo:
Trùng với tên của lớp
Không trả về kiểu dữ liệu
Có đối số hoặc không có đối số
Nếu không viết phương thức khởi tạo, trình biên dịch cung cấp một phươngthức khởi tạo mặc định để khởi tạo đối tượng
Khởi tạo các trường (field) của lớp bằng 0 hoặc false hoặc null tùy theo kiểu
Trang 37dữ liệu của field.
Static constructor chỉ được gọi một lần duy nhất
Static constructor không chứa bất kỳ tham số nào
Không sử dụng con trỏ this trong static constructor.
Đây là phương thức đặc biệt được tự động gọi để giải phóng vùng nhớcủa đối tượng khi đối tượng không được sử dụng
Mỗi một lớp chỉ có duy nhất một phương thức hủy
Phương thức hủy không thể kế thừa và không thể gọi một cách tườngminh
Trùng với tên của lớp và thêm ký tự “ ~ ” đằng trước tên phương thứchủy
Trang 382.2.3.2.Kiểu dữ liệu trong C#
Kiểu dữ liệu (data type) là một tập hợp gồm các nhóm loại dữ liệu có cùngđặc tính, cách lưu trữ của dữ liệu và cách thao tác xử lý trên trường dữ liệu đó;nhằm mục đích phân loại các loại dữ liệu.Trong C#, một biến (variable) khi khởitạo lên đã được chỉ định một kiểu dữ liệu xác định cho nó Kiểu dữ liệu trong C#được chia thành các nhóm như kiểu dữ liệu số, kiểu dữ liệu chuỗi, kiểu dữ liệu ngàytháng …
Các kiểu dữ liệu trong C#
C# chia thành hai tập hợp kiểu dữ liệu chính:
Kiểu xây dựng sẵn mà ngôn ngữ cung cấp cho người lập trình
Kiểu được
người dùng định nghĩa do người lập trình tạo ra
C# phân tập hợp kiểu dữ liệu này thành hai loại:
- Kiểu dữ liệu giá trị (value): Một biến (variable) khi được khai báo với kiểu
dữ liệu tham trị thì vùng nhớ của nó sẽ chứa giá trị của dữ liệu Danh sáchkiểu dữ liệu tham trị: bool, byte, char, decimal, double, enum, float, int, long,sbyte, short, struct, uint, ulong, ushort
- Kiểu dữ liệu tham chiếu (reference): Khác với kiểu dữ liệu tham trị, kiểu dữliệu tham chiếu chỉ lưu trữ địa chỉ tham chiếu tới vùng nhớ chứa giá trị thậtsự
Bạn có thể chuyển đổi từ kiểu dữ liệu này sang kiểu dữ liệu khác qua việcboxing và unboxing
Các kiểu dữ liệu xây dựng sẵn:
Object: kiểu dữ liệu cơ bản của tất cả các kiểu khác
String: Được sử dụng để lưu trữ những giá trị kiểu chữ cho biến
Trang 39 Int: Sử dụng để lưu trữ giá trị kiểu số nguyên.
Byte: sử dụng để lưu trữ giá byte
Float: Sử dụng để lưu trữ giá trị số thực
Bool: Cho phép một biến lưu trữ giá trị đúng hoặc sai
Char: Cho phép một biến lưu trữ một ký tự
Decimal: Kiểu dữ liệu tiền tệ
Tất cả các kiểu dữ liệu xây dựng sẵn là kiểu dữ liệu giá trị ngoại trừ các đốitượng và chuỗi Và tất cả các kiểu do người dùng định nghĩa ngoại trừ kiểu structđều là kiểu dữ liệu tham chiếu trong bài học này chúng ta sẽ tìm hiểu các kiểu xâydựng sẵn
Biến và Hằng
Biến
Một biến là một vùng lưu trữ với một kiểu dữ liệu Để tạo một biến chúng taphải khai báo kiểu của biến và gán cho biến một tên duy nhất Biến có thể đượckhởi tạo giá trị ngay khi được khai báo, hay nó cũng có thể được gán một giá trịmới vào bất cứ lúc nào trong chương trình
Các biến trong C# được khai báo theo công thức như sau:
AccessModifier DataType VariableName;
Trong đó:
AccessModifier: xác định ưu tiên truy xuất tới biến
Datatype: định nghĩa kiểu lưu trữ dữ liệu của biến
VariableName: là tên biến