1. Trang chủ
  2. » Luận Văn - Báo Cáo

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 sạch

44 16 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây dựng phần mềm quản lý thu phí cấp nước sạch
Tác giả Lưu Công Bằng, Nghiêm Đình Hiệp, Hoàng Xuân Thắng, Bùi Như Anh
Trường học Trường Đại Học Mở Hà Nội
Chuyên ngành Lập trình hướng sự kiện
Thể loại Báo cáo
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 44
Dung lượng 2,94 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

TRƯỜNG ĐẠI HỌC MỞ HÀ NỘITRUNG 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 sạch Sinh viên thực hiện: lớp CDT315 L

Trang 1

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 sạch

Sinh viên thực hiện: lớp CDT315

Lưu Công Bằng Nghiêm Đình Hiệp Hoàng Xuân Thắng Bùi Như Anh

Hà Nội, năm 2022

Trang 2

LỜI MỞ ĐẦU

Ngày nay công nghệ phần mềm đã trở nên phổ biến và có ảnh hưởng sâu rộng tới thói quen, sinh hoạt, giải trí và làm việc của nhiều người Cùng với sự phát triển nhanh chóng của công nghệ thì việc số hoá các nghiệp vụ liên quan đến mua và bán hàng hóa, phục vụ giải quyết công việc cho mọi người ngày càng đa dạng và phát triển hơn Các ứng dụng ngày càng trở nên phổ biến Trước nhu cầu đó, cùng

với yêu cầu môn học, nhóm chúng em quyết định chọn đề tài Xây dựng phần mềm quản lý thu phí cấp nước sạch.

Với đề tài và môn học này, nhóm xin chân thành cảm ơn sự giúp đỡ tận tình của các thầy cô Song, do còn nhiều hạn chế đề tài nhóm xây dựng không tránh khỏi những thiếu sót Rất mong được thầy cô và các bạn đóng góp ý kiến để chương trình ngày càng hoàn thiện và được đưa vào sử dụng.

Trân trọng cảm ơn!

Hà Nội, 15/11/2022

Nhóm thực hiện.

2

Trang 3

Mục Lục

Chương 1: Giới thiệu chung 5

1 Giới thiệu bài toán 5

a Mô tả 5

b Giải pháp 5

2 Yêu cầu: 5

a CSDL 5

b Phần mềm 6

3 Phân công nhiệm vụ 6

Tuần 1: 6

Tuần 2: 6

Tuần 3: 6

Chương 2: Xác định yêu cầu 7

1 Khảo sát yêu cầu 7

Chương 3: Phân tích & Thiết kế 8

1 Đối tượng của phần mềm 8

Admin 8

User 8

2 Đặc điểm 8

3 Các module 8

a Module nhân viên 8

b Module khách hàng 8

c Module hợp đồng 8

d Module Hoá đơn 9

e Module Báo cáo 9

4 Thiết kế hệ thống 9

a Thông tin đầu vào: 9

b Thông tin đầu ra: 9

5 Tác nhân 9

6 Thiết kế Database 10

Chương 4 Một số chức năng chính 11

1 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 chí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 nhất 37

2 Giao diện 40

a Màn hình đăng nhập 40

b Màn hình chính 40

c Quản lý nhân viên 41 Page4

3

Trang 4

d Quản lý khách hàng 41

e Quản lý hợp đồng 42

f Quản lý Hoá đơn 42

g Báo cáo 43

Chỉ số tiêu thụ 43

Khách hàng sử dụng nhiều nhất 43 Page4

4

Trang 5

Chương 1: Giới thiệu chung

1 Giới thiệu bài toán

a Mô tả

Công ty cấp nước X quản lý hồ sơ đăng ký và sử dụng nước của các khách hàng trong địa bàn thành phố Hàng tháng, nhân viên của công

ty sẽ đến từng hộ khách hàng để ghi chỉ số nước khách hàng sử dụng, sau đó lưu trữ vào cơ sở dữ liệu, xuất hóa đơn thu tiền hàng tháng tới các hộ gia đình sử dụng dịch vụ của công ty

- 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 của khách

hàng.

- Tìm kiếm, xuất báo cáo thông tin theo các yêu cầu cụ thể

nào đó (Tìm kiếm thông tin khách hàng, hóa đơn thu tiền theo từng tháng, theo khoảng thời gian nào đó,…)

2 Yêu cầu:

Xây dựng phần mềm nhằm giải quyết bài toán trên.

a CSDL

- Thiết kế trên SQL Server.

- Trong CSDL có các bảng trên với các trường, các bảng phục vụ

cho yêu cầu của chương trình (sinh viên có thể thêm bảng/trường nếu cần thiết).

- Các trường trong các bảng khi thiết kế phải thiết lập đầy đủ các

thuộc tính.

- Các bảng phải có quan hệ với nhau.

- Thiết kế các truy vấn cập nhật (thêm, sửa, xóa) thành các

Stored Procedure lưu trữ trong csdl.

Page4

5

Trang 6

- Dữ liệu của chương trình phải được kiểm tra chặt chẽ để tránh

lỗi.

- Các báo cáo viết trên Crystal Report và được gọi qua chương

trình.

3 Phân công nhiệm vụ

Phần mềm được thực hiện trong vòng 3 tuần với 3 thành viên của nhóm

Trang 7

Chương 2: Xác định yêu cầu

1 Khảo sát yêu cầu

Công ty cấp nước X là một công ty mới thành lập chuyên cung cấp nước cho các hộ gia đình với chất lượng cao và giá thành hợp lý Hiện tại công

ty là đơn vị cung cấp nước sạch trên địa bàn Hà Nội và các tỉnh lân cận

Cơ cấu công ty gồm: Ban quản lí, Bộ phận kế toán, bộ phận maketing, bộ phận quan hệ khách hàng, bộ phận kỹ thuật.

Khách hàng của công ty có 2 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, cơ sở sản xuất lượng nước sử dụng lớn)

Nhu cầu mở rộng thị trường và nâng cao chất lượng dịch vụ, tăng doanh thu là vấn đề đáng quan tâm của công ty Vì vậy ban quản lí của công ty

có mong muốn xây dựng 1 phần mềm để số hoá các quy trình hiện có của công ty cũng như hỗ trợ nhân viên của công ty làm việc hiệu quả nhất.Page4

7

Trang 8

Chương 3: Phân tích & Thiết kế

1 Đối tượng của phần mềm

Phần mềm được xây dựng phục vụ hai đối tượng chính là Admin (quản trị viên) và User (Nhân viên) với các chức năng sau:

Admin

Đăng nhập Phần mềm Xem, cập nhật, xoá thông tin trong hệ thống.

Quản lí nhân viên Xem báo cáo

Xây dựng một 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 và quản lý thông tin liên quan, người quản trị quản lý các thông tin chung, xem báo cáo, quản lý người dùng Phần mềm được 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 có thể 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.

3 Các module

a Module nhân viên

Hiển thị thông tin và phân loại nhân viên, hỗ trợ tìm kiếm, thêm, sửa xoá các thông tin của nhân viên.

Trang 9

d Module Hoá đơn

Hiển thị thông tin hoá đơn, chỉ số tiêu thụ nước, hỗ trợ tìm kiếm, thêm, sửa xoá các thông tin của hoá đơn.

e Module Báo cáo

Xuất báo cáo theo các điều kiện cụ thể như chỉ số tiêu thụ của từng khách hàng trong 1 khoảng thời gian, tổng lượng nước tiêu thụ của khách hàng trong 1 khoảng thời gian.

4 Thiết kế hệ thống

Các thông tin đầu ra đầu vào của 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 hoá đơn

b Thông tin đầu ra:

Trang 10

6 Thiết kế Database

1

Trang 11

Chương 4 Một số chức năng chính

1 Mã nguồn

a Cấu trúc thư mục

b Màn hình đăng nhậpusing NuocSach.App_Start;

using NuocSach.Controller;

Trang 12

if (!string.IsNullOrEmpty txtUserName Text( )

&& !string.IsNullOrEmpty txtPassword Text( ))

lblMessage Text Message = ;

lblMessage Visible = true ;

}

} }

c Màn hình chínhusing NuocSach.App_Start;

Trang 13

label1 Visible = false ;

label2 Visible = false ;

}

private void UsersToolStripMenuItem_Click( object

sender, System.EventArgs e)

mainPanel.Controls Add User Instance ( );

User.Instance.Dock DockStyle= Fill;

User.Instance BringToFront ();

mainPanel.Controls Add Contracts Instance ( );

Contracts.Instance.Dock DockStyle= Fill;

Contracts.Instance BringToFront ();

}

else

Contracts.Instance BringToFront ();

}

private void InvoicesToolStripMenuItem_Click( object

sender, System.EventArgs e)

mainPanel.Controls Add Invoice Instance ( );

Invoice.Instance.Dock DockStyle= Fill;

Invoice.Instance BringToFront ();

Trang 14

CustomersToolStripMenuItem_Click( object sender,

mainPanel.Controls Add Customer Instance ( );

Customer.Instance.Dock DockStyle= Fill;

Customer.Instance BringToFront ();

}

else

Customer.Instance BringToFront ();

}

private void ChiSoToolStripMenuItem_Click( object

sender, System.EventArgs e)

mainPanel.Controls Add ChiSo Instance ( );

ChiSo.Instance.Dock DockStyle= Fill;

ChiSo.Instance BringToFront ();

}

else

ChiSo.Instance BringToFront ();

}

private void KHToolStripMenuItem_Click( object

sender, System.EventArgs e)

{

HideControl();

if (!mainPanel Controls Contains KH Instance ( ))

{

mainPanel.Controls Add KH Instance ( );

KH.Instance.Dock DockStyle= Fill;

private void ExitToolStripMenuItem_Click( object

sender, System.EventArgs e)

{

if (AccountAdapter Dispose ( new

Entity User ()).Result)

this Close();

Application.Exit();

}

private void SignoutToolStripMenuItem_Click( object

sender, System.EventArgs e)

Page4

1

Trang 15

if (AccountAdapter Dispose ( new

Entity User ()).Result)

{

this Hide();

var signin = new Signin();

signin Closed += (s, args ) => this Close();

signin.Show();

}

}

} }

d Quản lý nhân viênusing NuocSach.App_Start;

using NuocSach.Controller;

using NuocSach.Utilities Helper ;

using NuocSach.Utilities Security ;

using System;

using System.Windows Forms ;

namespace NuocSach.UI UC {

public partialclass User UserControl:

{

private Account account =

AccountAdapter Claim ().Result;

private static User _instance;

private UsersController user;

user = new UsersController();

cbType.Items Insert (0, "User");

cbType.Items Insert (1, "Admin");

cbIsActive.Items Insert (0, "UnActive"); cbIsActive.Items Insert (1, "Active");

Trang 16

if (select) {

else btnCancel.Visible = false;

{ DataGrid.DataSource = user.Find(txtCode.Text, txtUserName.Text, txtName.Text, txtPhone.Text).Result; }

Page4

1

Trang 17

System.EventArgs e) {

Id = 0;

setControl(false);

btnSubmit.Text = "Save";

txtCode.Text = StringHelper.RandomString(8); }

private void btnSubmit_Click(object sender, System.EventArgs e)

{

if (Id != 0) {

var u = user.Find(Id).Result;

if (u != null) {

u.UserName = txtUserName.Text;

if (!

string.IsNullOrEmpty(txtPassword.Text)) u.Password = txtPassword.Text.SHA1Hash();

u.Phone = txtPhone.Text;

u.Name = txtName.Text;

u.Type = Convert.ToBoolean(cbType.SelectedIndex);

u.IsActive = Convert.ToBoolean(cbIsActive.SelectedIndex);

if (user.Update(u).Result) {

MessageBox.Show("Đã cập nhật bản ghi!");

DataGrid.DataSource = user.Find().Result;

} else MessageBox.Show("Cập nhật thất bại!");

} } else {

if (user.Find(null, txtUserName.Text, null,null).Result.Count == 0)

{

if (user.Create(new Entity.User() {

Code = txtCode.Text, Name = txtName.Text, Phone = txtPhone.Text, UserName = txtUserName.Text, Password =

txtPassword.Text.SHA1Hash(), Type = Convert.ToBoolean(cbType.SelectedIndex),Page4

1

Trang 18

Convert.ToBoolean(cbIsActive.SelectedIndex) }).Result)

{ MessageBox.Show("Đã thêm bản ghi!");

DataGrid.DataSource = user.Find().Result;

} else MessageBox.Show("Thêm thất bại!"); }

else { MessageBox.Show("User đã tồn tại!",

"Thất bại");

} } } private void btnCancel_Click(object sender, System.EventArgs e)

{

Id = 0;

setControl();

} private void btnDelete_Click(object sender, System.EventArgs e)

{

if (user.Delete(user.Find(Id).Result).Result) {

clearForm();

DataGrid.DataSource = user.Find().Result; MessageBox.Show("Đã xoá bản ghi!");

Id = 0;

} else MessageBox.Show("Xoá thất bại!");

} private void DataGrid_CellClick(object sender, DataGridViewCellEventArgs e)

{

if (e.RowIndex >= 0) {

Id = Convert.ToInt32(this.DataGrid.Rows[e.RowIndex].Cells["Id"].Value);

Convert.ToInt16(UserData.Type);

Page4

1

Trang 19

} btnSubmit.Text = "Update";

} }}

e Quản lý khách hàngusing NuocSach.App_Start;

using NuocSach.Controller;

using NuocSach.Entity;

using NuocSach.Utilities Helper ;

using System;

using System.Linq;

using System.Windows Forms ;

namespace NuocSach.UI UC {

public partialclass Customer UserControl:

{

private Account account =

AccountAdapter Claim ().Result;

private CustomerController customer;

private int Id;

private static Customer _instance;

publicstatic Customer Instance {

customer = new CustomerController();

cbIsActive.Items Insert (0, "UnActive"); cbIsActive.Items Insert (1, "Active");

txtCode Enabled = true ;

txtName Enabled = true ;

txtPhone Enabled = true ;

txtStreet Enabled = true ;

cbIsActive Enabled = false ;

Page4

1

Trang 20

btnCreate Visible = true ;

btnSubmit Visible = false ;

btnDelete Visible = false ;

btnCancel Visible = true ;

btnCancel Text = "Clear";

}

else

{

txtCode Enabled = false ;

txtName Enabled = true ;

txtPhone Enabled = true ;

txtStreet Enabled = true ;

cbIsActive 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";

txtCode Text = null ;

txtName Text = null ;

txtPhone Text = null ;

txtStreet Text = null ;

cbIsActive SelectedIndex = 1;

cbWard DataSource = null ;

cbWard.Items Clear ();

cbDistrict DataSource = null ;

cbDistrict.Items Clear ();

using (var db = new DataContext())

{

cbProvince DataSource =

db provinces Select (x => new { x.code, x.name }).ToList();

cbProvince DisplayMember = "name"; cbProvince ValueMember = "code";

customer Find txtCode Text ( ,

cbWard SelectedValue ToString (), txtName.Text,

txtStreet Text , txtPhone.Text).Result;

}

Page4

2

Trang 21

EventArgs e)

{

Id = 0;

setControl( false );

btnSubmit Text = "Save";

txtCode Text StringHelper = RandomString(8);

c Phone txtPhone = Text;

c Name txtName = Text;

c Street txtStreet = Text;

c WardCode =

cbWard SelectedValue ToString ();

c IsActive =

Convert ToBoolean cbIsActive SelectedIndex ( );

if (customer Update c ( ).Result)

Code txtCode= Text,

Name txtName= Text,

Phone txtPhone= Text,

Street txtStreet= Text,

Trang 22

customer Find ().Result;

MessageBox.Show("Đã xoá bản ghi!");

var UserData customer= Find Id( ).Result;

txtCode Text UserData = Code;

txtName Text UserData = Name;

txtPhone Text UserData = Phone;

txtStreet Text UserData = Street;

using (var db = new DataContext())

{

cbWard DataSource db = wards Select (x

=> new x code x name { , }).ToList();

cbWard DisplayMember = "name"; cbWard ValueMember = "code";

Trang 23

var ward db= wards Find ward_code ( );

cbWard DataSource db = wards Where (x =>

x district_code Equals district_code ( )).Select(x => new

{ x code x name , }).ToList();

cbWard DisplayMember = "name"; cbWard ValueMember = "code";

if province_code ( != null && Id > 0)

{

cbDistrict DataSource =

db districts Where (x =>

x province_code Equals province_code ToString ( ())).Select(x

=> new x code x name { , }).ToList();

Page4

2

Ngày đăng: 20/09/2023, 15:38

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w