Xây dựng Ứng dụng Quản lý hàng hoá chạy trên Console BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN ĐỒ ÁN 1 XÂY DỰNG ỨNG DỤNG QUẢN LÝ HÀNG HOÁ NGÀNH CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH K.
Trang 1ĐỒ ÁN 1 XÂY DỰNG ỨNG DỤNG QUẢN LÝ HÀNG HOÁ
NGÀNH: CÔNG NGHỆ THÔNG TIN
CHUYÊN NGÀNH: KỸ THUẬT PHẦN MỀM
SINH VIÊN: NGUYỄN ĐÌNH KHOA
MÃ LỚP: 101197 HƯỚNG DẪN: CHU THỊ MINH HUỆ
HƯNG YÊN – 2023
Trang 2Nhận xét của giảng viên hướng dẫn:
GIẢNG VIÊN HƯỚNG DẪN
Chu Thị Minh Huệ
Trang 3LỜI CAM ĐOAN
Em xin cam đoan đồ án “Xây dựng ứng dụng quản bán hàng” Là kết quả thực hiện của bản thân em dưới sự hướng dẫn của cô Chu Thị Minh Huệ
Những phần sử dụng tài liệu tham khảo trong đồ án đã được nêu rõ trongphần tài liệu tham khảo Các kết quả trình bày trong đồ án và chương trình xâydựng được hoàn toàn là kết quả do bản thân em thực hiện
Nếu vi phạm lời cam đoan này, em xin chịu hoàn toàn trách nhiệm trướckhoa và nhà trường
Hưng Yên, ngày … tháng … năm…
Sinh viên
Nguyễn Đình Khoa
Trang 4LỜI CẢM ƠN
Để có thể hoàn thành đồ án này, lời đầu tiên em xin phép gửi lời cảm ơn tới
bộ môn Công nghệ phần mềm, Khoa Công nghệ thông tin – Trường Đại học Sưphạm Kỹ thuật Hưng yên đã tạo điều kiện thuận lợi cho em thực hiện đồ án môn học này
Đặc biệt em xin chân thành cảm ơn Cô: Chu Thị Minh Huệ đã rất tận tình
hướng dẫn, chỉ bảo em trong suốt thời gian thực hiện đồ án vừa qua
Em cũng xin chân thành cảm ơn tất cả các Thầy, các Cô trong Trường đã tậntình giảng dạy, trang bị cho em những kiến thức cần thiết, quý báu để giúp em thựchiện được đồ án này
Mặc dù em đã có cố gắng, nhưng với trình độ còn hạn chế, trong quá trìnhthực hiện đề tài không tránh khỏi những thiếu sót Em hi vọng sẽ nhận được những
ý kiến nhận xét, góp ý của các Thầy giáo, Cô giáo về những kết quả triển khai trong
đồ án
Em xin trân trọng cảm ơn!
Trang 5MỤC LỤC
DANH SÁCH HÌNH VẼ 7
DANH SÁCH BẢNG BIỂU 8
DANH SÁCH TỪ VIẾT TẮT 9
CHƯƠNG 1:MỞ ĐẦU 10
1.1Lý do chọn đề tài 10
1.2 Mục tiêu của đề tài 10
1.2.1 Mục tiêu tổng quát 10
1.2.2 Mục tiêu cụ thể 10
1.3 Giới hạn và phạm vi của đề tài 11
1.3.1 Đối tượng nghiên cứu 11
1.3.2 Phạm vi nghiên cứu 11
1.4.Nội dung thực hiện 11
1.5 Phương pháp tiếp cận 11
CHƯƠNG 2:CƠ SỞ LÝ THUYẾT 12
2.1 Quy trình xây dựng phần mềm 12
2.2 Một số cấu trúc dữ liệu 12
2.3 Nguyên lý lập trình hướng đối tượng 12
2.4 Xử lý dữ liệu với tệp văn bản 12
CHƯƠNG 3:PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 13
3.1 Mô tả các chức năng 13
3.2 Thiết kế cấu trúc dữ liệu 13
3.3 Thiết kế giao diện 13
CHƯƠNG 4:XÂY DỰNG ỨNG DỤNG 14
Trang 64.1 Xây dựng cơ sở dữ liệu 14
4.2 Cài đặt các chức năng cho ứng dụng 14
4.3 Kiểm thử và triển khai ứng dụng 14
4.3.1 Kiểm thử 14
4.3.2 Đóng gói ứng dụng 14
4.3.3 Triển khai ứng dụng 14
KẾT LUẬN 16
TÀI LIỆU THAM KHẢO 17
Trang 7DANH SÁCH HÌNH VẼ
Hình 2-1: Giao diện quản lý khoản chi 12Hình 2-2: Giao diện quản lý khoản thu 13Hình 2-3: Giao diện quản lý ngân sách 15
Trang 8DANH SÁCH BẢNG BIỂU
Bảng 2-1: lớp khoản thu: txtkhoanthu 15Bảng 2-2: lớp khoản chi: txtkhoanchi 16
Trang 9DANH SÁCH TỪ VIẾT TẮT
CMS Content Management System Hệ quản trị nội dung
OOP Object-oriented programming Lập trình hướng đối tượngCTHD Chi tiết hoá đơn
Trang 10CHƯƠNG 1:MỞ ĐẦU
1.1 Lý do chọn đề tàiNgày nay song song với quá trình phát triển công nghệ khoa học kỹ thuật thìngành khoa học tính toán đã đóng vai trò quan trọng, nó đã đạt được những thànhtựu khoa học kỹ thuật rực rỡ với những bước tiến nhảy vọt Việc áp dụng các côngnghệ khoa học kỹ thuật vào lĩnh vực đời sống của con người ngày càng tăng vàkhông ngừng can thiệp vào hầy hết các công việc trong đời sống Công nghệ thôngtin là một trong những ngành khoa học đó Đi đôi với sự phát triển của công nghệchế tạo các thiết bị máy tính thì việc sản phẩm phần mềm ứng dụng ra đời có tínhchất quyết định đối với việc áp dụng ngành khoa học này
Trên thế giới cũng như ở Việt Nam, công nghệ thông tin đã trở thành mộtngành công nghiệp mũi nhọn, nó là một ngành khoa học kỹ thuật không thể thiếutrong việc áp dụng vào các hoạt động xã hội như: Quản lý, kinh tế, thông tin…
Ở nước ta hiện nay, việc áp dụng vi tính hoá trong việc quản lý tại các cơquan, doanh nghiệp, bệnh viện, cửa hàng, … đang rất phổ biến và trở nên cấp thiết.Nhưng một vấn đề đặt ra trong việc quản lý là làm thế nào để chuẩn hoá cách xử lý
dữ liệu ở các cơ quan, bệnh viện, phòng khám, cửa hàng… Qua việc khảo sát thực
tế thấy rằng có nhiều cơ quan, doanh nghiệp, phòng khám, cửa hàng… Họ đang rấtcần một phương pháp nào đó để quản lý công việc của mình một cách hiệu quả hơn
và việc áp dụng công nghệ thông tin vào trong quản lý là một trong những cách cóthể đáp ứng được những nhu cầu đó
Qua khảo sát tại một số cửa hàng, mỗi ngày các cửa hàng phải quản lý rấtnhiều mặt hàng Ngoài ra còn phải quản lý một lượng hoá đơn, số liệu
Chính vì vậy, việc tin học hoá tại các cửa hàng hiện nay là một yêu cầu hết sứcthiết thực nhằm đơn giản hoá công tác quản lý, tạo sự nhanh gọn chính xác trong
công việc Chính vì những lý do đó mà em quyết định thực hiện đề tài: Quản lý hàng hoá.
Trang 111.2 Mục tiêu của đề tài
Xây dựng phần mềm quản lý phòng khám giúp công tác quản lý của cửa hàngtrở nên đơn giản, chính xác, hiệu quả hơn
1.3
Giới hạn và phạm vi của đề tài
1.3.1 Đối tượng nghiên cứu
Đối tượng nghiên cứu: Phần mềm quản lý hàng hoá.
Trang 121.4 Nội dung thực hiện
Câu hỏi đặt ra trong phần này là: “Mô hình ba lớp và ứng dụng của nó tronglập trình quản lý”
Để trả lời câu hỏi trên, em sẽ trình bày một số lợi ích có được khi tìm hiểu và
sử dụng mô hình này:
- Khi ứng dụng đòi hỏi có sự tách biệt 3 phần: giao diện, xử lý nghiệp vụ,giao tiếp với hệ quản trị CSDL để người viết có thể dễ dàng quản lý ứngdụng của mình khi có bug xảy ra với một số thành phần xử lý nghiệp vụkhông mong muốn Ngoài ra với mô hình này nó còn tạo ra một không gianlàm việc rất tốt để người thiết kế giao diện lẫn người lập trình có thể làmviệc chung với nhau một cách dễ dàng
- Khả năng tái tạo cao: Khi sử dụng bất chợt yêu cầu thay đổi hệ quản trịCSDL hoặc chuyển ứng dụng từ window application sang web application,việc xây dựng lại ứng dụng lần đầu rất tốn nhiều thời gian và chi phí Vìvậy với mô hình này ra đời sẽ giải quyết vấn đề này Vậy thực tế, mô hình
ba lớp gồm những gì?
Đó là Presentation, Business Logic và Data Access Các lớp này sẽ giaotiếp với nhau thông qua các dịch vụ (services) mà mỗi lớp cung cấp tạo nênứng dụng, lớp này cũng không cần thiết biết bên trong lớp kia làm gì màchỉ cần biết lớp kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi
Trang 13Hình 1.1 Sơ đồ cho mô hình 3 lớp
- Data Access Layer: làm việc với Database
- Data Business Logic Layer: tại đây tiếp nhận yêu cầu từ tầng Presentationgởi xuống và giao tiếp với tầng Data Access Layer load dữ liệu để xử lý
- Presentation: đóng vai trò như 1 Controller điều khiển yêu cầu từ ngườidùng, tại đây Presentation sẽ xử lý các control trên form nhưDataGridView, Textbox, Combobox, …
- Ngoài ra còn 1 lớp hỗ trợ thêm là Business Object Transfer Layer: Lớp nàynếu ta sử dụng DataBinding thì không dùng cũng được, chủ yếu sài cho đốitượng SqlCommand, Report, … Lớp này sẽ tạo ra các lớp object để hỗ trợcho Data Business Logic Layer xử lý
1.5 Phương pháp tiếp cận
Tìm hiểu thực tế tại các phòng khám để nắm được các vấn đề chính sau:
- Quy trình nhập xuất hàng hoá
- Các thông tin của hàng hoá
- Tìm hiểu hệ thống đang sử dụng, phân tích điểm mạnh, điểm yếu của hệthống
Trang 14CHƯƠNG 2:CƠ SỞ LÝ THUYẾT
2.1 Quy trình xây dựng phần mềm- Khảo sát, phân tích hiện trạng của hệ thống
- Đặc tả yêu cầu
- Phân tích thiết kế hệ thống: thiết kế đối tượng, thiết kế CSDL, thiết kế giaodiện
- Lập trình (Lập trình viên được thực hiện trên ngôn ngữ C#)
- Kiểm thử (Là công việc kiểm tra tính chính xác của phần mềm)
là các khái niệm quan trọng liên quan tới Mảng
- Phần tử: Mỗi mục được lưu giữ trong một mảng được gọi là một phần tử.
- Chỉ mục (Index): Mỗi vị trí của một phần tử trong một mảng có một chỉ
mục số được sử dụng để nhận diện phần tử
Mảng gồm các bản ghi có kiểu giống nhau, có kích thước cố định, mỗi phần
tử được xác định bởi chỉ số
Mảng là cấu trúc dữ liệu được cấp phát liên tục cơ bản
Ưu điểm của mảng :
- Truy cập phần tử với thời gian hằng số O(1).
- Sử dụng bộ nhớ hiệu quả
Trang 15- Tính cục bộ về bộ nhớ.
Nhược điểm của mảng:
Không thể thay đổi kích thước của mảng khi chương trình dang thực hiện
Ngăn xếp (Stack):
Stack là một loại container adaptor, được thiết kế để hoạt động theo kiểu LIFO (Last - in first - out) (vào sau ra trước), tức là một kiểu danh sách
mà việc bổ sung và loại bỏ một phần tử được thực hiển ở cuối danh sách Vị
trí cuối cùng của stack gọi là đỉnh (top) của ngăn xếp.
Stack giống như việc giáo viên kiểm tra vở bài tập của học sinh vậy, ai nộp
sau cùng thì vở bài tập của người đó sẽ được giáo viên kiểm tra đầu tiên,đương nhiên người nộp vợ đầu tiên sẽ được kiểm tra cuối cùng.
Hàng đợi (Queue):
Queue(hàng đợi) là một loại container, được thiết kế để hoạt động theo kiểu FIFO (First- in first – out) (vào trước ra trước), tức là một kiểu danh
Trang 16sách mà việc bổ sung được thực hiển ở cuối danh sách và loại bỏ ở đầu danhsách.
Trong queue, có hai vị trí quan trọng là vị trí đầu danh sách (front), nơi phần
tử được lấy ra, và vị trí cuối danh sách (back), nơi phần tử cuối cùng được
thêm vào
Danh sách liên kết (Linked list):
Danh sách liên kết đơn(Single linked list) là ví dụ tốt nhất và đơn giản nhất
về cấu trúc dữ liệu động sử dụng con trỏ để cài đặt Do đó, kiến thức con trỏ
là rất quan trọng để hiểu cách danh sách liên kết hoạt động, vì vậy nếu bạnchưa có kiến thức về con trỏ thì bạn nên học về con trỏ trước Bạn cũng cầnhiểu một chút về cấp phát bộ nhớ động Để đơn giản và dễ hiểu, phần nộidung cài đặt danh sách liên kết của bài này sẽ chỉ trình bày về danh sách liênkết đơn
Danh sách liên kết đơn là một tập hợp các Node được phân bố động, được
sắp xếp theo cách sao cho mỗi Node chứa một giá trị (Data) và một con trỏ
(Next). Con trỏ sẽ trỏ đến phần tử kế tiếp của danh sách liên kết đó Nếu con
trỏ mà trỏ tới NULL, nghĩa là đó là phần tử cuối cùng của linked list.
2.3 Nguyên lý lập trình hướng đối tượng
Các nguyên lý lập trình hướng đối tượng:
Trang 17 Tính đóng gói (Encapsulation) và che giấu thông tin (Information hiding)
Tức là trạng thái của đối tượng được bảo vệ không cho các truy cập từ code bênngoài như thay đổi trạng thái hay nhìn trực tiếp Việc cho phép môi trường bênngoài tác động lên các dữ liệu nội tại của một đối tượng theo cách nào là hoàn toàntuỳ thuộc vào người viết mã Đây là tính chất đảm bảo sự toàn vẹn, tính đóng góiđược thể hiện thông qua phạm vi truy cập ( access modifier)
Tính kế thừa (Inheritance)
Tính kế thừa là khả năng cho phép ta xây dựng một lớp mới dựa trên các định nghĩacủa một lớp đã có Lớp đã có gọi là lớp Cha, lớp mới phát sinh gọi là lớp Con vàđương nhiên kế thừa tất cả các thành phần của lớp Cha, có thể chia sẻ hay mở rộngcác đặc tính sẵn có mà không phải tiến hành định nghĩa lại
Tính đa hình (Polymorphism)
Khi một tác vụ được thực hiện theo nhiều cách khác nhau được gọi là tính đa hình.Đối với tính chất này, nó được thể hiện rõ nhất qua việc gọi phương thức của đốitượng Các phương thức hoàn toàn có thể giống nhau, nhưng việc xử lý luồng có thểkhác nhau Nói cách khác: Tính đa hình cung cấp khả năng cho phép người lập trìnhgọi trước một phương thức của đối tượng, tuy chưa xác định đối tượng có phươngthức muốn gọi hay không Đến khi thực hiện (run-time), chương trình mới xác địnhđược đối tượng và gọi phương thức tương ứng của đối tượng đó Kết nối trễ giúpchương trình được uyển chuyển hơn, chỉ yêu cầu đối tượng cung cấp đúng phươngthức cần thiết là đủ
Tính trừu tượng (Abstraction):
Tính trừu tượng là một tiến trình ẩn các chi tiết trình triển khai và chỉ hiển thị tínhnăng tới người dùng Tính trừu tượng cho phép bạn loại bỏ tính chất phức tạp của
Trang 18đối tượng bằng cách chỉ đưa ra các thuộc tính và phương thức cần thiết của đốitượng trong lập trình.
Tính trừu tượng giúp bạn tập trung vào những cốt lõi cần thiết của đối tượng thay vìquan tâm đến cách nó thực hiện
2.4 Xử lý dữ liệu với tệp văn bản
Sử dụng thư viện System.IO với 2 lớp: StreamReader và StreamWriter
2.4.1 Lớp Stream Reader
STT Phương thức
1 public override void Close()
Nó đóng đối tượng StreamReader và Underlying Stream, và giải phóng bất kỳ nguồn hệthống liên kết với Reader đó
2 public override int Peek()
Trả về ký tự có sẵn tiếp theo nhưng không hủy nó
3 public override int Read()
Đọc ký tự tiếp theo từ Input Stream và tăng vị trí ký tự thêm 1
2.4.2 Lớp Stream Writer
STT Phương thức
1 public override void Close()
Đóng đối tượng StreamWriter hiện tại và Underlying Stream
Trang 192 public override void Flush()
Xóa tất cả buffer cho Writer hiện tại và làm cho bất kỳ dữ liệu được đệm nào để được ghi tới Underlying Stream
3 public virtual void Write(bool value)
Ghi biểu diễn text của một giá trị Boolean tới Text string hoặc stream
(được kế thừa từ TextWriter)
4 public override void Write(char value)
Ghi một ký tự tới Stream
5 public virtual void Write(decimal value)
Ghi biểu diễn text của một giá trị thập phân tới Text string hoặc stream
6 public virtual void Write(double value)
Ghi biểu diễn text của một giá trị số thực 8 byte tới Text string hoặc stream
7 public virtual void Write(int value)
Ghi biểu diễn text của một giá trị signed integer 4 byte tới Text string hoặc stream
8 public override void Write(string value)
Ghi một string tới Stream
9 public virtual void WriteLine()
Ghi một line terminator tới Text string hoặc stream
Trang 20CHƯƠNG 3:PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Thống kê báo báo hàng hoá, doanh thu
6 Tìm kiếm Tìm kiếm các thông tin về hàng hoá, nhân viên, hoá đơn…
Bảng 3.1: Mô tả các chức năng của đối tượng
3.2 Thiết kế cấu trúc dữ liệu
Trang 215 SoLuong Int 100 Số lượng
Trang 223.3 Thiết kế giao diện
Giao diện chương trình
Giao diện đăng nhập
Trang 23Giao diện chính
Giao diện quản lý hàng hoá
Trang 24Giao diện quản lý nhà cung cấp
Giao diện quản lý hoá đơn
Trang 25Giao diện quản lý nhân viên
Giao diện thống kê báo cáo
Trang 26CHƯƠNG 4:XÂY DỰNG ỨNG DỤNG
4.1 Xây dựng cơ sở dữ liệuTrang 27Hàng Hoá
Quản lý hàng hoáNhập BN
Nếu mã HH nhập về có mã đã tồn tại, chương trình sẽ thông báo điều này và yêu cầu nhập mã HH mới cho tới khi không còn trùng Các thành phần dữ liệu của
HH cần phải nhập đúng kiểu dữ liệu đã được mặc định, nếu nhập sai chương trình
sẽ tự động cho người dùng nhập lại
Trang 28Start
Hiển thị thông tin BN
Input: Nhập Mã BN
Kiểm tra sự tồn tại của mã BN
Bạn có muốn nhập tiếp?
Đã tồn tại
mã BN
StopNhập thông tin BN
Lưu đồ thuật toán nhập BN
Trang 29Sửa BN
Sửa các thông tin của BN, bộ phận quản lý cần nhập vào mã của BN để lấy ra thông tin của BN cần sửa, chương trình sẽ kiểm tra sự tồn tại của mã sau đó bộ phậnquản lý sẽ cập nhật thông tin mới ghi đè lên những thông tin của BN cũ Nếu mã
BN không có trong danh sách thì chương trình sẽ báo “ Không tồn tại BN có mã bạn nhập…”
Trang 30Bạn có muốn sửa tiếp?
Lưu đồ thuật toán sửa BN
Trang 31Lưu đồ thuật toán xoá BN
Trang 32Tìm kiếm BN
Tìm kiếm Bn mà người quản lý yêu cầu thì người dùng cần nhập vào mã hoặc tên của BN đó, nếu tồn tại mã hoặc tên BN vừa nhập thì chương trình sẽ hiện thông tin của BN có mã vừa nhập, nếu không tồn tại thì chương trình sẽ báo: “Không tồn tại BN có mã bạn nhập…”
Trang 33Lưu đồ thuật toán tìm kiếm BN