Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 44 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
44
Dung lượng
2,94 MB
Nội dung
TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI TRUNG TÂM ĐÀO TẠO ELEARNING BÁO CÁO BÀI TẬP LỚN MÔN: LẬP TRÌNH HƯỚNG SỰ KIỆN Xây dựng phần mềm quản lý thu phí cấp nước Sinh viên thực hiện: lớp CDT315 Lưu Cơng Bằng Nghiêm Đình Hiệp Hồng Xn Thắng Bùi Như Anh Hà Nội, năm 2022 Page4 LỜI MỞ ĐẦU Ngày công nghệ phần mềm trở nên phổ biến có ảnh hưởng sâu rộng tới thói quen, sinh hoạt, giải trí làm việc nhiều người Cùng với phát triển nhanh chóng cơng nghệ việc số hố nghiệp vụ liên quan đến mua bán hàng hóa, phục vụ giải công việc cho người ngày đa dạng phát triển Các ứng dụng ngày trở nên phổ biến Trước nhu cầu đó, với yêu cầu mơn học, nhóm chúng em định chọn đề tài Xây dựng phần mềm quản lý thu phí cấp nước Với đề tài mơn học này, nhóm xin chân thành cảm ơn giúp đỡ tận tình thầy Song, cịn nhiều hạn chế đề tài nhóm xây dựng khơng tránh khỏi thiếu sót Rất mong thầy bạn đóng góp ý kiến để chương trình ngày hồn thiện đưa vào sử dụng Trân trọng cảm ơn! Hà Nội, 15/11/2022 Nhóm thực Page4 Mục Lục Chương 1: Giới thiệu chung Giới thiệu toán .5 a Mô tả b Giải pháp Yêu cầu: .5 a CSDL .5 b Phần mềm Phân công nhiệm vụ Tuần 1: .6 Tuần 2: .6 Tuần 3: .6 Chương 2: Xác định yêu cầu Khảo sát yêu cầu Chương 3: Phân tích & Thiết kế Đối tượng phần mềm Admin User Đặc điểm Các module a Module nhân viên b Module khách hàng c Module hợp đồng .8 d Module Hoá đơn e Module Báo cáo .9 Thiết kế hệ thống a Thông tin đầu vào: b Thông tin đầu ra: Tác nhân Thiết kế Database 10 Chương Một số chức 11 Mã nguồn 11 a Cấu trúc thư mục 11 b Màn hình đăng nhập 11 c Màn hình 12 d Quản lý nhân viên 15 e Quản lý khách hàng .19 f Quản lý hợp đồng 24 g Quản lý Hoá đơn 30 h Báo cáo 35 Chỉ số tiêu thụ 35 Khách hàng sử dụng nhiều 37 Giao diện 40 a Màn hình đăng nhập 40 b Màn hình 40 c Quản lý nhân viên 41 Page4 d e f g Quản lý khách hàng .41 Quản lý hợp đồng 42 Quản lý Hoá đơn 42 Báo cáo 43 Chỉ số tiêu thụ 43 Khách hàng sử dụng nhiều 43 Chương 1: Giới thiệu chung Page4 Giới thiệu tốn a Mơ tả Công ty cấp nước X quản lý hồ sơ đăng ký sử dụng nước khách hàng địa bàn thành phố Hàng tháng, nhân viên công ty đến hộ khách hàng để ghi số nước khách hàng sử dụng, sau lưu trữ vào sở liệu, xuất hóa đơn thu tiền hàng tháng tới hộ gia đình sử dụng dịch vụ công ty b Giải pháp Lưu trữ liệu: - Thông tin nhân viên công ty - Thông tin khách hàng - Thông tin số đồng hồ nước hàng tháng, tiền nước phải trả khách hàng Xử lý thông tin: - Quản lý thông tin nhân viên - Quản lý thông tin khách hàng - Cập nhật số liệu tiêu thụ nước hàng tháng khách hàng - Tìm kiếm, xuất báo cáo thông tin theo yêu cầu cụ thể (Tìm kiếm thơng tin khách hàng, hóa đơn thu tiền theo tháng, theo khoảng thời gian đó,…) Yêu cầu: Xây dựng phần mềm nhằm giải toán a CSDL - Thiết kế SQL Server - Trong CSDL có bảng với trường, bảng phục vụ cho yêu cầu chương trình (sinh viên thêm bảng/trường cần thiết) - Các trường bảng thiết kế phải thiết lập đầy đủ thuộc tính - Các bảng phải có quan hệ với - Thiết kế truy vấn cập nhật (thêm, sửa, xóa) thành Stored Procedure lưu trữ csdl b Phần mềm Page4 - Viết VB.NET/C#.NET, giao tiếp chức thông qua hệ thống menu/toolbar - Hạn chế thao tác sử dụng chuột, hỗ trợ người dùng thao tác bàn phím để tăng tốc độ sử dụng chương trình Các chức cập nhật liệu (thêm, sửa, xóa) có sử dụng query/Stored Procedure thiết kế csdl - Dữ liệu chương trình phải kiểm tra chặt chẽ để tránh lỗi - Các báo cáo viết Crystal Report gọi qua chương trình Phân công nhiệm vụ Phần mềm thực vịng tuần với thành viên nhóm Tuần 1: - Khảo sát trạng hệ thống Xác định mục tiêu Phần mềm, đối tượng sử dụng Tuần 2: - Phân tích hệ thống Thiết kế giao diện, thu thập, xử lí hình ảnh Tuần 3: - viết module, nhập liệu test, tích hợp chạy thử Chương 2: Xác định yêu cầu Page4 Khảo sát yêu cầu Công ty cấp nước X công ty thành lập chuyên cung cấp nước cho hộ gia đình với chất lượng cao giá thành hợp lý Hiện công ty đơn vị cung cấp nước địa bàn Hà Nội tỉnh lân cận Cơ cấu công ty gồm: Ban quản lí, Bộ phận kế tốn, phận maketing, phận quan hệ khách hàng, phận kỹ thuật Khách hàng cơng ty có loại: khách hàng cá nhân (những hộ gia đình sử dụng lượng nước không nhiều), khách hàng doanh nghiệp (Hộ kinh doanh, sở sản xuất lượng nước sử dụng lớn) Nhu cầu mở rộng thị trường nâng cao chất lượng dịch vụ, tăng doanh thu vấn đề đáng quan tâm cơng ty Vì ban quản lí cơng ty có mong muốn xây dựng phần mềm để số hố quy trình có công ty hỗ trợ nhân viên công ty làm việc hiệu Chương 3: Phân tích & Thiết kế Page4 Đối tượng phần mềm Phần mềm xây dựng phục vụ hai đối tượng Admin (quản trị viên) User (Nhân viên) với chức sau: Admin Đăng nhập Phần mềm Xem, cập nhật, xố thơng tin hệ thống Quản lí nhân viên Xem báo cáo User Có quyền đăng nhập, đăng xuất, quản lý thông tin khách hàng, Hợp đồng, Nhập thơng tin hố đơn số tiêu thụ nước khách hàng tháng Đặc điểm Xây dựng hệ thống quản lý thu phí cấp nước đơn giản, thân thiện, dễ sử dụng, cho phép người dùng xem quản lý thông tin liên quan, người quản trị quản lý thông tin chung, xem báo cáo, quản lý người dùng Phần mềm thiết kế với Giao diện hài hoà, thân thiện, giúp người dùng dễ dàng sử dụng Nhân viên tra cứu thông tin khách hàng phục vụ công việc dễ dàng, nhanh chóng, thuận tiện Các module a Module nhân viên Hiển thị thông tin phân loại nhân viên, hỗ trợ tìm kiếm, thêm, sửa xố thơng tin nhân viên b Module khách hàng Hiển thị thơng tin khách hàng, hỗ trợ tìm kiếm, thêm, sửa xố thơng tin khách hàng c Module hợp đồng Hiển thị thơng tin hợp đồng, hỗ trợ tìm kiếm, thêm, sửa xố thơng tin hợp đồng d Module Hố đơn Hiển thị thơng tin hố đơn, số tiêu thụ nước, hỗ trợ tìm kiếm, thêm, sửa xố thơng tin hố đơn Page4 e Module Báo cáo Xuất báo cáo theo điều kiện cụ thể số tiêu thụ khách hàng khoảng thời gian, tổng lượng nước tiêu thụ khách hàng khoảng thời gian Thiết kế hệ thống Các thông tin đầu đầu vào hệ thống a Thông tin đầu vào: - Thông tin khách hàng Thông tin nhân viên Thông tin hợp đồng Thơng tin hố đơn b Thơng tin đầu ra: - Hoá đơn - Báo cáo Tác nhân - User - Admin - Khách hàng Page4 Thiết kế Database } } Page4 g Quản lý Hoá đơn using using using using using using using NuocSach.App_Start; NuocSach.Controller; NuocSach.Entity; NuocSach.Utilities.Helper; System; System.Linq; System.Windows.Forms; namespace NuocSach.UI.UC { public partial class Invoice : UserControl { private Account account = AccountAdapter.Claim().Result; private InvoiceController invoice; private int Id; private static Invoice _instance; public static Invoice Instance { get { if (_instance == null) _instance = new Invoice(); return _instance; } } public Invoice() { InitializeComponent(); invoice = new InvoiceController(); cbIsActive.Items.Insert(0, "UnActive"); cbIsActive.Items.Insert(1, "Active"); using (var db = new DataContext()) { cbContract.DataSource = db.Contracts.Select(x => new { x.Id, x.Code }).ToList(); cbContract.DisplayMember = "Code"; cbContract.ValueMember = "Id"; } setControl(); DataGrid.DataSource = invoice.Find().Result; } private void setControl(bool select = true) { if (select) { txtCode.Enabled = true; Page4 txtTWF.Enabled = true; btnSearch.Visible = true; btnCreate.Visible = true; btnSubmit.Visible = false; btnDelete.Visible = false; btnCancel.Visible = true; btnCancel.Text = "Clear"; FromDate.Enabled = true; ToDate.Enabled = true; cbIsActive.SelectedIndex = -1; } else { txtCode.Enabled = false; txtTWF.Enabled = true; btnSearch.Visible = false; btnCreate.Visible = false; btnSubmit.Visible = true; if (Id != 0) btnDelete.Visible = true; else btnCancel.Visible = false; btnCancel.Visible = true; btnCancel.Text = "Cancel"; FromDate.Enabled = false; ToDate.Enabled = false; cbIsActive.SelectedIndex = 1; } clearForm(); } private void clearForm() { txtCode.Text = null; txtAddress.Text = null; txtCost.Text = null; txtCustomer.Text = null; txtTotal.Text = null; cbContract.SelectedIndex = -1; txtTWF.Text = null; FromDate.Value = DateTime.Now.AddDays(-7); ToDate.Value = DateTime.Now; } private void btnSearch_Click(object sender, EventArgs e) { DataGrid.DataSource = invoice.Find(txtCode.Text, txtAddress.Text, txtCustomer.Text, FromDate.Text, ToDate.Text).Result; } private void btnCreate_Click(object sender, EventArgs e) { Id = 0; setControl(false); btnSubmit.Text = "Save"; txtCode.Text = StringHelper.RandomString(8); } Page4 private void btnSubmit_Click(object sender, EventArgs e) { if (Id != 0) { var i = invoice.Find(Id).Result; if (i != null) { i.UserId = account.Id; i.ContractId = Convert.ToInt32(cbContract.SelectedValue); i.TWF = Convert.ToInt32(txtTWF.Text); i.Cost = Convert.ToInt32(txtCost.Text); i.IsActive = Convert.ToBoolean(cbIsActive.SelectedIndex); if (invoice.Update(i).Result) { MessageBox.Show("Đã cập nhật ghi!"); DataGrid.DataSource = invoice.Find().Result; } else MessageBox.Show("Cập nhật thất bại!"); } } else { if (invoice.Create(new Entity.Invoice() { Code = txtCode.Text, UserId = account.Id, ContractId = Convert.ToInt32(cbContract.SelectedValue), TWF = Convert.ToInt32(txtTWF.Text), Cost = Convert.ToInt32(txtCost.Text) }).Result) { MessageBox.Show("Đã thêm ghi!"); DataGrid.DataSource = invoice.Find().Result; } else MessageBox.Show("Thêm thất bại!"); } } private void btnCancel_Click(object sender, EventArgs e) { setControl(); } Page4 private void btnDelete_Click(object sender, EventArgs e) { if (invoice.Delete(invoice.Find(Id).Result).Result) { clearForm(); DataGrid.DataSource = invoice.Find().Result; MessageBox.Show("Đã xoá ghi!"); } else MessageBox.Show("Xoá thất bại!"); } private void DataGrid_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex >= 0) { using (var db = new DataContext()) { Id = Convert.ToInt32(this.DataGrid.Rows[e.RowIndex].Cells["Id"] Value); setControl(false); var invoice = (from i in db.Invoices join c in db.Contracts on i.ContractId equals c.Id join u in db.Users on i.UserId equals u.Id join cus in db.Customers on c.CustomerId equals cus.Id join w in db.wards on c.WardCode equals w.code join d in db.districts on w.district_code equals d.code join p in db.provinces on d.province_code equals p.code where i.Id == Id select new { Id = i.Id, ContractId = i.ContractId, Code = i.Code, Staff = u.Name, Customer = cus.Name, TWF = i.TWF, Cost = i.Cost, Total = i.Total, Street = c.Street, Address = w.full_name + ", " + d.full_name + ", " + p.full_name, Created = i.Created, IsActive = i.IsActive Page4 }).FirstOrDefault(); txtCustomer.Text = invoice.Customer; txtAddress.Text = invoice.Address; txtCode.Text = invoice.Code; txtTWF.Text = invoice.TWF.ToString(); txtCost.Text = invoice.Cost.ToString(); txtTotal.Text = invoice.Total.ToString(); cbIsActive.SelectedIndex = Convert.ToInt16(invoice.IsActive); cbContract.SelectedValue = invoice.ContractId; } } btnSubmit.Text = "Update"; } private void cbContract_SelectedIndexChanged(object sender, EventArgs e) { if (((ComboBox)sender).DataSource != null) { try { using (var db = new DataContext()) { var cid = Convert.ToInt32(((ComboBox)sender).SelectedValue); if (cid > 0) { var contract = (from c in db.Contracts join u in db.Users on c.UserId equals u.Id join cus in db.Customers on c.CustomerId equals cus.Id join w in db.wards on c.WardCode equals w.code join d in db.districts on w.district_code equals d.code join p in db.provinces on d.province_code equals p.code where c.Id == cid select new { Id = c.Id, Code = c.Code, Staff = u.Name, Customer = cus.Name, Street = c.Street, Page4 Address = w.full_name + ", " + d.full_name + ", " + p.full_name, Created = c.Created }).FirstOrDefau lt(); txtCustomer.Text = contract.Customer; txtAddress.Text = contract.Address; } } } catch (Exception) { } } } } } h Báo cáo Ch sốố ỉ têu thụ using using using using using using using using CrystalDecisions.CrystalReports.Engine; NuocSach.Entity; NuocSach.Model; NuocSach.Utilities.Helper; System; System.Data.Entity; System.Linq; System.Windows.Forms; namespace NuocSach.UI.UC { public partial class ChiSo : UserControl { private static ChiSo _instance; public static ChiSo Instance { get { if (_instance == null) _instance = new ChiSo(); return _instance; } } public ChiSo() { InitializeComponent(); cbIsActive.Items.Insert(0, "UnActive"); cbIsActive.Items.Insert(1, "Active"); clearForm(); } private void clearForm() { txtCustomer.Text = null; cbIsActive.SelectedIndex = -1; FromDate.Value = DateTime.Now.AddDays(-7); ToDate.Value = DateTime.Now.AddDays(1); } private void btnView_Click(object sender, EventArgs Page4 e) { using (var db = new DataContext()) { var query = (from i in db.Invoices join u in db.Users on i.UserId equals u.Id join in db.Contracts on i.ContractId equals con.Id join cus in db.Customers on con.CustomerId equals cus.Id join w in db.wards on con.WardCode equals w.code join d in db.districts on w.district_code equals d.code join p in db.provinces on d.province_code equals p.code orderby i.Created descending select new MInvoice { Id = i.Id, Code = i.Code, ContractCode = con.Code, Staff = u.Name, Customer = cus.Name, Address = con.Street + ", " + w.full_name + ", " + d.full_name + ", " + p.full_name, TWF = i.TWF, Cost = i.Cost, Total = i.Total, Created = i.Created, IsActive = i.IsActive }); if (! string.IsNullOrEmpty(txtCustomer.Text)) query = query.Where(i => DbFunctions.Like(i.Customer, "%" + txtCustomer.Text + "%")); if (cbIsActive.SelectedIndex >= 0) query = query.Where(i => i.IsActive.Equals(cbIsActive.SelectedIndex)); Page4 if (!string.IsNullOrEmpty(FromDate.Text) && !string.IsNullOrEmpty(ToDate.Text)) { var from_date = Convert.ToDateTime(FromDate.Text); var to_date = Convert.ToDateTime(ToDate.Text); query = query.Where(i => i.Created >= from_date && i.Created = from_date && i.Created x.i.TWF), Total = g.Sum(x => Page4 x.i.Total), }); if (! string.IsNullOrEmpty(txtCustomer.Text)) query = query.Where(i => DbFunctions.Like(i.Customer, "%" + txtCustomer.Text + "%")); var data = query.OrderByDescending(i => i.TWF).Take(10).ToList(); ReportDocument rptDoc = new ReportDocument(); // Lấy đường dẫn tập tin crystal report (KH.rpt) rptDoc.Load(String.Format("{0}\\Reports\\ {1}", Application.StartupPath, "KhangHang.rpt")); //gán data vào report rptDoc.SetDataSource(data.ToDataTable()); crViewer.ReportSource = rptDoc; crViewer.Refresh(); } } private void btnClear_Click(object sender, EventArgs e) { clearForm(); } } } Giao diện Page4 a Màn hình đăng nhập b Màn hình c Quản lý nhân viên Page4 d Quản lý khách hàng e Quản lý hợp đồng Page4 f Quản lý Hoá đơn g Báo cáo Page4 Ch sốố ỉ têu thụ Khách hàng s d ng ụ nhiêều nhấốt Page4