Tài liệu Luận văn Áp dụng mô hình MVC của Công ty cổ phần công nghệ thanh toán Việt Nam (Vinapay): 1
Luận văn
Áp dụng mô hình MVC của Công ty
cổ phần công nghệ thanh toán Việt
Nam (Vinapay)
2
Lời mở đầu
Bước sang thế kỉ 21, sự bùng nổ về công nghệ thông tin, thế giới số đã
giúp ích cho con người trong rất nhiều lĩnh vực kinh tế, xã hội, quốc
phòng,an ninh…Công việc của con người ngày càng phức tạp nhằm đáp ứng
nhu cầu cuộc sống ngày càng cao của xã hội, chính vì vậy bài toán đặt ra là
phải làm sao quản lý nhân sự một cách chặt chẽ và hợp lý trong tất cả các
ngành nghề như: y tế, giao thông, quốc phòng …chứ không chỉ riêng trong
kinh doanh sản xuất. Xuất phát từ nhu cầu thiết thực của nhiều công ty hiện
nay, trong đợt thực tập vừa qua, em đã nghiên cứu và xây dựng một phần
mềm về quản lý nhân sự ở công ty Vinapay.
3
Chương I.GIỚI THIỆU VỀ CÔNG TY THỰC TẬP VÀ MỤC
ĐÍCH XÂY DỰNG PHẦN MỀM.
I. Giới thiệu công ty
1.Giới thiệu công ty:
-Công ty cổ phần công nghệ thanh toán Việt Nam (Vinapay)- được
chính thức thành lập vào tháng 2-2007 bởi nhà đầ...
57 trang |
Chia sẻ: haohao | Lượt xem: 1031 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Luận văn Áp dụng mô hình MVC của Công ty cổ phần công nghệ thanh toán Việt Nam (Vinapay), để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
1
Luận văn
Áp dụng mô hình MVC của Công ty
cổ phần công nghệ thanh toán Việt
Nam (Vinapay)
2
Lời mở đầu
Bước sang thế kỉ 21, sự bùng nổ về công nghệ thông tin, thế giới số đã
giúp ích cho con người trong rất nhiều lĩnh vực kinh tế, xã hội, quốc
phòng,an ninh…Công việc của con người ngày càng phức tạp nhằm đáp ứng
nhu cầu cuộc sống ngày càng cao của xã hội, chính vì vậy bài toán đặt ra là
phải làm sao quản lý nhân sự một cách chặt chẽ và hợp lý trong tất cả các
ngành nghề như: y tế, giao thông, quốc phòng …chứ không chỉ riêng trong
kinh doanh sản xuất. Xuất phát từ nhu cầu thiết thực của nhiều công ty hiện
nay, trong đợt thực tập vừa qua, em đã nghiên cứu và xây dựng một phần
mềm về quản lý nhân sự ở công ty Vinapay.
3
Chương I.GIỚI THIỆU VỀ CÔNG TY THỰC TẬP VÀ MỤC
ĐÍCH XÂY DỰNG PHẦN MỀM.
I. Giới thiệu công ty
1.Giới thiệu công ty:
-Công ty cổ phần công nghệ thanh toán Việt Nam (Vinapay)- được
chính thức thành lập vào tháng 2-2007 bởi nhà đầu tư nước ngoài hàng đầu
thế giới là tập đoàn công nghệ Net 1, quỹ đầu tư IDG Venture và tập đoàn
MK Việt Nam. Mục tiêu của Vinapay là góp phần xây dựng ở Việt Nam một
hạ tầng thanh toán an toàn cho thương mại di động.
-Tầm nhìn của Vinapay là mang sức mạnh và tiện ích của thương
mại điện tử đến với tất cả khách hàng tại Việt Nam. Công ty luôn nỗ lực
mang đến cho khách hàng thêm nhiều tiện ích trong việc mua sắm bằng việc
tạo điều kiện thuận lợi khi mua hàng trực tuyến, thanh toán các nhu cầu hàng
ngày bằng điện thoại di động, và cơ hội để kiếm thêm thu nhập.
-Sứ mệnh của Vinapay là trở thành công ty hàng đầu trong lĩnh vực
giao dịch thương mại điện tử và di động bằng việc kết hợp một nền tảng
công nghệ tiên tiến được công nhận trên thế giới với mạng lưới phân phối
rộng lớn trên toàn quốc.Vinapay sẽ trở thành nhà cung cấp dịch vụ tiền điện
tử và giải pháp thanh toán nhằm mang đến cho khách hàng và nhà bán lẻ sự
tiện lợi và an toàn trong các giao dịch chỉ với chiếc điện thoại di động hoặc
máy tính nối mạng Internet.
-Cam kết của Vinapay
Cung cấp dịch vụ nhanh chóng, an toàn và tiện lợi cho tất cả mọi
người, ở mọi nơi và trong bất kì thời gian nào.Cho dù bạn đang ở đâu, dịch
vụ của công ty luôn sẵn sàng với phương châm “Vinapay-Sức mạnh niềm
tin”.
4
-Chiến lược
Ngày 25-12-2007 Vinapay đã chính thức đưa ra thị trường dịch vụ
MrTopUp (www.mrtopup.com.vn). Bằng việc sử dụng đội ngũ bán hàng là
cầu nối với các nhà phân phối cho phép công ty xây dựng hệ thống phân
phối với mục tiêu đạt 24.000 điểm vào cuối năm 2008. Thông qua hệ thống
phân phối này, Vinapay sẽ triển khai bán Vcash, một hình thức tiền điện tử
cho phép người dùng có thế mua mã thẻ trả trước điện thoại di động, mã
games online, thanh toán trực tuyến, chuyển và nhận tiền, đồng thời có thể
quản lý tài khoản và các giao dịch thông qua ứng dụng MrTopUp trên điện
thoại di động hoặc trên Internet.
-Lợi nhuận của Vinapay được thu tử 3 khoản chính, bán mã thẻ trả
trước, phí giao dịch khi thanh toán hoặc chuyển Vcash và tiền lãi. Thời gian
đầu, nạp tiền điện thoại di động trả trước sẽ cung cấp phần lớn lợi nhuận cho
doanh nghiệp, nhưng đến cuối năm đầu tiên đưa MrTopUp ra thị trường, lợi
nhuận sẽ đến từ phí giao dịch. Đến năm thứ 2 trở đi, lượng khách hàng sử
dụng Vcash sẽ tạo ra một lượng vốn lớn và cho phép công ty thu lãi từ số
vốn này.
-Lợi thế so sánh của Vinapay bao gồm nền tảng công nghệ được cấp
phép từ Net 1và lượng vốn lớn từ các nhà đầu tư nước ngoài để triển khai kế
hoạch tiếp thị và quảng cáo. Công ty sử dụng một nền tảng công nghệ đạt
tiêu chuẩn hiện đại và tính bảo mật cao đã triển khai thành công ở Nam Phi,
Phillippin và Columbia a trong những năm qua. Khi đến Việt Nam, đội ngũ
kĩ sư hàng đầu của công ty đã điều chỉnh và sáng tạo cho phù hợp với số
lượng người dùng điện thoại di động ngày một cao tại Việt Nam. Điều quan
trọng nhất trong công ty là vấn đề bảo mật. Như khẩu hiệu “Vinapay -Sức
mạnh niềm tin” , và nhìn xa và rộng hơn, cái công ty kinh doanh là niềm tin
và sự tín nhiệm.
5
2. Đội ngũ quản lý:
-Ông Nguyễn Trọng Khang là sáng lập viên và là Chủ tịch Hội đồng
quản trị của Vinapay. Bắt đầu sự nghiệp với vị trí là Giám đốc phát triển
kinh doanh tại văn phòng đại diện Renong (Malaysia) tại Hà Nội (1992-
1997), ông Khang tích lũy được kinh nghiệm phát triển dự án, quản lý dự án
và kinh doanh thương mại. Năm 1999, ông bắt đầu khởi nghiệp kinh doanh
với công ty MK Technology Group và phát triển nó trở thành một trong
những công ty hàng đầu về lĩnh vực công nghệ và dịch vụ thẻ. Ông Khang
có bằng cao học tại Henley Management College (Anh quốc), và bằng MBA
tại đại học Boise State (Mỹ). Ông được vinh danh với nhiêu giải thưởng
trong kinh doanh và nhiều đóng góp trong lĩnh vực công nghiệp trẻ và Công
nghệ thông tin Việt Nam.
-Ông Hoàng Kim Chương là Phó tổng Giám đốc Quan hệ đối tác.
Ông bắt đầu sự nghiệp với vị trí là kĩ sư dầu khí tại Petechim vào năm 1986
ở Vũng Tàu. Ông gia nhập công ty Café Trung Nguyên từ năm 2003-2005,
với vị trí Giám đốc Tiếp thị và Bán hàng cho bộ phận Kinh doanh quốc tế.
Ông có bằng MBA tại đại học Boise State (Mỹ) và bằng Thạc sỹ khoa học
tại Đại học dầu khí Quốc gia Mátxcơva, Liên bang Nga. Ông sử dụng thành
thạo tiếng Việt, Anh, Nga.
-Ông Đỗ Việt Hà khởi đầu sự nghiệp với vị trí là chuyên gia thiết kế
đồ họa video với công ty công nghệ Miranda Technology tại Quebec,
Canada,năm 1998 nơi ông nhận bằng thạc sĩ về kĩ sư điện tử máy tính. Ông
trở về Việt Nam năm 2004 và trở thành Giám đốc cho nhiều dự án của tổ
chức Lux Development, một chương trình được chính phủ Lucxemburg tài
trợ vốn.
6
Ông Hà gia nhập Vinapay năm 2007 với vị trí là Phó tổng Giám đốc Vận
hành hệ thống.
-Bà Nguyễn Hương Giang với vai trò là Giám đốc Bán hàng và tiếp
thị, bà Giang phụ trách chiến lược tiếp thị cho Vinapay cũng như phát triển
đội ngũ kinh doanh cho công ty. Bà có bằng cử nhân tại học viện Quan hệ
quốc tế tại Việt Nam.
3.Lĩnh vực hoạt động chính:
-Sản xuất và phát triển các loại thẻ dữ liệu công nghệ cao (bao gồm
thẻ thông minh có gắn chip, thẻ cào có mệnh giá trả trước, thẻ quản lý tài
khoản, thẻ SIM phục vụ dịch vụ thương mại điện tử…).
-Nghiên cứu, phát triển và thực hiện các dịch vụ công nghệ cao có liên
quan đến thanh toán thương mại điện tử (e-commerce) , thương mại di động
(m-commerce), thẻ trả trước, thẻ thông minh.
-Sản xuất và phát triển phần mềm công nghệ cao.
-Vận hành cổng điện tử, chuyển mạch để thực hiện kết nối các hệ
thống thanh toán thẻ ngân hàng, thẻ thanh toán, thẻ trả trước của các đơn vị
phát hành thẻ, cho phép người sử dụng điện thoại di động nạp tiền, trả trước
thông qua điện thoại di động hoặc Internet.
-Lắp đặt, bảo trì, cho thuê các hệ thống thiết bị phát hành thẻ, các loại
máy chấp nhận thanh toán như ATM, máy đọc và chấp nhận thanh toán đầu
cuối (POS).
II.Mục đích xây dựng chương trình:
1.Mục đích xây dựng chương trình:
-Việc tin học hoá Tổ chức quản lý nhân sự mang lại nhiều lợi ích hơn
so với quản lý thủ công. Quản lý thông tin về cán bộ, công nhân viên là một
7
bài toán quan trọng và có nhiều ứng dụng trong việc quản lý nguồn nhân lực,
chính sách cán bộ …nhằm đưa ra các quyết định trong lĩnh vực xây dựng
đội ngũ lao động đủ khả năng và trình độ đáp ứng các nhu cầu trong giai
đoạn mới. Với những ưu điểm vượt trội:
1.Bộ máy quản lý nhân sự gọn nhẹ, chỉ cần số ít nhân viên với hệ thống máy
vi tính .
2.Tổ chức quản lý, lưu trữ trên hệ thống máy vi tính làm tăng tính an toàn,
bảo mật cao hơn.
3.Phù hợp với các ứng dụng triển khai trên diện rộng.
4.Chi phí ban đầu ít nhất vì chỉ phải triển khai trên máy chủ.
5.Dễ dàng phát triển ứng dụng, tất cả các ứng dụng chỉ phải triển khai trên
máy chủ, do vậy dễ bảo trì, phát triển hệ thống.
6.Không phụ thuộc vào phạm vi ứng dụng. Việc mở rộng ít tốn kém nhất.
7.Đào tạo sử dụng chương trình ít tốn kém nhất.
8.Dễ dàng tích hợp với các ứng dụng khác trên môt Website.
2.Tổng quan về chương trình:
*Các chức năng chính:
-Cập nhập hồ sơ nhân viên : Khi tuyển mới nhân viên thì cập nhập sơ
yếu lí lịch và lí lịch công chức viên chức.
-Cập nhập các biến động trong quá trình công tác: Khi một cán bộ
được tăng lương, lên chức, thay đổi công việc, đi nước ngoài, đi học, chuyển
đơn vị công tác trong phạm vi tổ chức của cơ quan thì thông tin của các sự
kiện này được lưu trong hồ sơ.
-Quản lý các vấn đề lien quan đến nhân viên:
+Quá trình lương.
+Quá trình công tác.
+Quá trình học tập.
8
+Quá trình khen thưởng, kỉ luật.
+Quan hệ gia đình.
+Ngoại ngữ.
-Phân tích và báo cáo tình hình nhân sự: Đưa ra các thống kê để phân
tích các hiện tượng cần điều chỉnh. Ví dụ: Có nhiều cán bộ cao tuổi dẫn đến
cần chuẩn bị lực lượng kế tục. Số lượng nhân viên tăng giảm theo từng
tháng nhiều hay ít để điều chỉnh, phân công công việc một cách hợp lý.
-Tìm kiếm, tra cứu thông tin về nhân sự theo một tiêu chí nào đó để
phục vụ cho một số trường hợp, VD như liệt kê các cán bộ theo một chuyên
ngành nào đó có trình độ như thế nào, nhân viên Sale có trình độ bằng cấp
như thế nào, nhân viên marketting biết những ngoại ngữ gì, một ngày môi
giới được bao nhiêu khách hàng…
-Quản trị hệ thống: Chương trình được xây dựng trên cơ sở các đối
tượng sử dụng được phân quyền truy cập vào từng phần hết sức chặt chẽ.
Người quản trị hệ thống có quyền cao nhất, có quyền cấp (thu) quyền sử
dụng chương trình cho những người khác.
9
Chương II. TỔNG QUAN VỀ MÔ HÌNH MODEL-VIEW-
CONTROLLER (MVC).
I.Giới thiệu mô hình MVC:
1.Thiết kế MVC:
-MVC là viết tắt của Model-View-Controller. Phương pháp thiết kế
MVC là phương pháp chia nhỏ một ứng dụng thành nhiều lớp hoặc chia nhỏ
phần giao diện người dùng (User Interface) của một ứng dụng thành 3 phần
chính là Model, View và Controller.
-Model (tạm dịch là phần “Mô hình”) là một đối tượng hoặc tập hợp
các đối tượng biểu diển cho phần dữ liệu của chương trình, ví dụ: các dữ liệu
được lưu trong cơ sở dữ liệu hay từ các hệ thống ứng dụng khác (như
mail…).
-View (tạm dịch là phần “Hiển thị”): Là phần giao diện với người
dùng, bao gồm việc hiện dữ liệu ra màn hình, cung cấp các menu, nút bấm,
hộp đối thoại, chọn lựu…, để người dùng có thể thêm, xóa, sửa, tìm kiếm và
làm các thao tác khác đối với dữ liệu trong hệ thống.
-Controller (tạm dịch là phần “Điều khiển”): Là phần điều khiển toàn
bộ logic về hoạt động của giao diện, tương tác với thao tác của người dùng
(từ chuột, bàn phím và các thiết bị ngoại vi khác) và cập nhật, thao tác trên
dữ liệu theo đầu vào nhận được và điều khiển việc chọn phần “Hiển thị”
thích hợp để truyền dữ liệu tới người dùng.
-Với phương pháp thiết kế này, các chức năng hiển thị, chức năng
logic điều khiển và chức năng truy cập dữ liệu của chương trình được chia
thành các phần riêng biệt. Java là một ngôn ngữ lập trình hướng đối tượng
10
thuần túy nên việc áp dụng MVC vào các phần mếm viết bằng Java rất dễ
dàng và thuận tiện. Có hai hình mẫu chính của phương pháp thiết kế MVC
trong Java là MVC model 1 và MVC model 2.Trong MVC model 1, các
trang JSP đóng vai trò “Hiển thị” (View) và “Điều khiển” (Controller). Có
thể có nhiều trang JSP khác nhau đóng các vai trò khác nhau.
-Thao tác của người dùng trên trình duyệt web được gửi tới một trang
JSP. Trang JSP này sẽ khởi tạo một hoặc nhiều Java Bean (nếu cần thiết),
truyền các lệnh cần thi hành tới Java Bean (không phải Enterprise Java
Bean).
-Sau khi Java Bean thực hiện xong việc truy xuất hoặc cập nhập dữ
liệu, trang JSP ban đầu có thể hiển thị dữ liệu lấy từ Bean (JSP ban đầu đóng
luôn vai trò View), hoặc chọn một trang JSP khác để hiện dữ liệu từ Bean
(JSP ban đầu đóng luôn vai trò Controller). Trong một thiết kế tốt, để đảm
bảo việc tách rời phần trình bày và logic của chương trình, trang JSP nhận
yêu cầu chỉ đóng vai trò “Điều khiển” (Contronller).
-MVC model 1 có một nhược điểm là phần logic điều khiển được viết
trong trang JSP, như vậy phần chương trình Java phức tạp dùng để điều
khiển sẽ bị lẫn vào trong mã HTML dùng để trình bày. Độ phức tạp của
chương trình càng cao, thì trang JSP càng khó phát triển và bảo trì. Hơn nữa,
trong các dự án phức tạp, phần hiển thị do người thiết kế web giỏi về HTML
và đồ họa thực hiện, còn phần điều khiển được người chuyên về lập trình
thực hiện. Dùng JSP làm phần điều khiển sẽ khó phân ranh giới trách nhiệm
giữa nhóm thiết kế đồ họa và nhóm lập trình. Để khắc phục nhược điểm này,
MVC model 2 ra đời. Trong MVC model 2, một hoặc nhiều servlet (thường
là một) đóng vai trò điều khiển, các Java Bean đóng vai trò mô hình và các
trang JSP đóng vai trò hiển thị.
11
-Trong model 2, các logic phức tạp của chương trình được viết hoàn
toàn trong các servlet (chương trình Java). Phần hiển thị chỉ gồm các trang
JSP với một vài mã đơn giản để lấy dữ liệu có sẵn, không có logic phức tạp,
vì thế hoàn toàn có thể giao cho người thiết kế web. Các yêu cầu của người
dùng được gửi từ trình duyệt web tới servlet. Servlet sẽ khởi tạo Java Bean
(nếu cần thiết), ra lệnh thu nhập, cập nhập thông tin. Khi Java Bean hoàn
thành công việc, servlet sẽ chọn trang JSP thích hợp để hiện thông tin trong
Java Bean cho người dùng. Đây là cách sử dụng MVC rất hiệu quả trong
Java. Tất nhiên, sử dụng MVC model 2 một cách hoàn toàn cứng nhắc, phần
“Điều khiển” chỉ dùng servlet, phần “Hiển thị” chỉ dùng JSP sẽ dãn đến một
vài trường hợp kém hiệu quả, nhất là khi các yêu cầu từ trình duyệt web chỉ
đòi hỏi việc hiển thị thông tin. Trong trường hợp này, gửi thẳng yêu cầu hiển
thị từ trình duyệt web tới trang JSP sẽ hiệu quả hơn. Trong cách áp dụng
MVC này, các yêu cầu có liên quan đến logic chương trình hoặc truy cập dữ
liệu sẽ gửi tới servlet controller, còn các yêu cầu chỉ liên quan tới hiển thị sẽ
được gửi tới JSP controller.
12
CHƯƠNG III.PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
I. Giới thiệu :
-Phân tích và thiết kế hệ thống nhằm hiểu rõ chu kỳ phát triển hệ
thống, nghiên cứu sơ bộ, mô hình hóa yêu cầu, dữ liệu và quá trình, mô hình
hóa đối tượng, thiết kế nhập xuất và giao diện người sử dụng, thiết kế dữ
liệu, kiến trúc ứng dụng, thực hiện, cài đặt, vận hành và hỗ trợ hệ thống.
II. Phân tích hệ thống theo Chức năng
1.Quản lý người dùng
-Là chức năng quản lý người dùng hay đăng nhập vào hệ thống, với
mỗi user này đều có username và password riêng. Quản lý người dùng(user)
gồm 2 chức năng chính:
a. Hiển thị danh sách người dùng
b. Thêm, Sửa, Xoá người dùng.
13
2.Quản lý thư mục
- Là chức năng quản lý thư mục của hệ thống, mỗi thư mục là một
chức năng riêng, có một đường liên kết tới chức năng của thư mục đó. Quản
lý thư mục gồm 2 chức năng chính:
a. Hiển thị danh sách thư mục.
b. Thêm, Sửa, Xoá thư mục.
3.Quản lý Phân quyền
-Là chức năng phân quyền người dùng, chức năng này phụ thuộc vào
2 đối tượng “Người dùng” và “Thư mục”. Mỗi người dùng sẽ sử dụng một
số các thư mục, các thư mục khác không có quyền sử dụng sẽ không được
hiên ra trên giao diện người dùng. Phân quyền gồm 2 chức năng chính:
a. Hiện thị danh sách Phân Quyền.
b. Thêm sửa xoá Phần Quyền với Người Dùng.
4.Quản lý Nhân viên
-Là chức năng chính trong hệ thống, quản lý nhân sự trong doanh
nghiệp vinapay. Gồm 2 chức năng chính:
a. Hiển thị danh sách nhân viên.
b. Thêm, sửa, xoá nhân viên.
III. Phân tích hệ thống theo sơ đồ luồng dữ liệu
1.Sơ đồ luồng dữ liệu mức ngữ cảnh
14
2.Sơ đồ luồng dữ liệu mức đỉnh :
15
3.Sơ đồ luồng dữ liệu mức dưới đỉnh:
a. Chức năng quản lý người dùng:
Hiển thị danh
sách Người
Dùng
Thêm, Sửa, Xoá
Người Dùng
Người dùng
Yêu cầu
Người dùng
User, Password
ID,User,Pass
ID Nguoi dung
Báo cáo
User, Password
Phân
Quyền
b. Chức năng quản lý thư mục
Hiển thị danh
sách Thư mục
Thêm, Sửa, Xoá
Thư mục
Người dùng
Yêu cầu
ID,Tên,liênkết
ID,Tên, liênkết
ID Thư mục
Báo cáo
ID,Tên,Liên kết
Phân
Quyền
Thư mục
16
c. Chức năng phân quyền:
d. Chức năng quản lý Nhân viên:
17
4.Sơ đồ luồng dữ liệu tổng quát:
-Quản lý tài khoản của nhân viên trong công ty.
18
-Quản lý nhân viên trong công ty:
VI.Các bảng cơ sở dữ liệu dùng trong chương trình:
a.Bảng Tài khoản :
19
b.Bảng Thư mục_Tài khoản :
c.Bảng Nhân viên :
20
d.Bảng Thư mục:
21
CHƯƠNG IV.CẤU TRÚC CHƯƠNG TRÌNH ĐƯỢC ÁP DỤNG MÔ
HÌNH MVC
Chương trình được cấu trúc gồm 3 phần,đúng với cấu trúc của mô hình
MVC,gồm các phần như sau:
I.View(Interface_Hiển thị):
1.Truy cập vào web:
*Login:
-phần này người quản lý hệ thống dùng để đăng nhập vào chương trình:
*Giao diện:
22
*code:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Interface_AccessWebsite_login : System.Web.UI.Page
{
private AccountDB objAccountDB = new AccountDB();
protected void Page_Load(object sender, EventArgs e)
{
}
public string GetApplicationPath()
{
string applicationPath = "";
if (this.Page.Request.Url != null)
applicationPath =
this.Page.Request.Url.AbsoluteUri.Substring(
0, this.Request.Url.AbsoluteUri.ToLower().IndexOf(
this.Request.ApplicationPath.ToLower(),
this.Request.Url.AbsoluteUri.ToLower().IndexOf(
this.Page.Request.Url.Authority.ToLower()) +
this.Page.Request.Url.Authority.Length) +
this.Request.ApplicationPath.Length);
return applicationPath;
}
protected void btnLogin_Click(object sender, EventArgs e)
{
string strUsername = this.txtUsername.Text;
string strPassword = this.txtPassword.Text;
AccountDetails objAccountDetails = new
AccountDetails(strUsername, strPassword);
int intCount = objAccountDB.CheckAccount(objAccountDetails);
Session["sesUsername"] = strUsername;
Session["sesPassword"] = strPassword;
if (intCount == -1)
{
Response.Write(objAccountDB.ErrorDetail);
23
Response.Write("");
return;
}
if (intCount != 0)
{
Response.Redirect(GetApplicationPath() +
"/Interface/home.aspx?page=interface/wellcome.aspx");
}
Response.Write("don't access right!");
}
}
a.Danh sách tài khoản:
*Giao diện:
24
Code:
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Interface_AccessWebsite_AccountList :
System.Web.UI.Page
{
private AccountDB objAccountDB = new AccountDB();
private AccountDetails[] arrAccountDetails;
protected void Page_Load(object sender, EventArgs e)
{
arrAccountDetails = objAccountDB.GetAllAccounts();
this.grdAccounts.DataSource = arrAccountDetails;
grdAccounts.DataBind();
}
protected string GetApplicationPath()
{
string applicationPath = "";
if (this.Page.Request.Url != null)
applicationPath =
this.Page.Request.Url.AbsoluteUri.Substring(
0, this.Request.Url.AbsoluteUri.ToLower().IndexOf(
this.Request.ApplicationPath.ToLower(),
this.Request.Url.AbsoluteUri.ToLower().IndexOf(
this.Page.Request.Url.Authority.ToLower()) +
this.Page.Request.Url.Authority.Length) +
this.Request.ApplicationPath.Length);
return applicationPath;
}
protected void grdAccounts_SelectedIndexChanged(object sender,
EventArgs e)
{
25
}
}
b.Thay đổi Mật mã:
*Giao diện:
*Code:
public partial class Interface_AccessWebsite_ChangPassword :
System.Web.UI.Page
{
private AccountDB objAccountDB = new AccountDB();
private AccountDetails objAccountDetails = new AccountDetails();
protected void Page_Load(object sender, EventArgs e)
{
}
public string GetApplicationPath()
{
string applicationPath = "";
if (this.Page.Request.Url != null)
applicationPath =
this.Page.Request.Url.AbsoluteUri.Substring(
0, this.Request.Url.AbsoluteUri.ToLower().IndexOf(
26
this.Request.ApplicationPath.ToLower(),
this.Request.Url.AbsoluteUri.ToLower().IndexOf(
this.Page.Request.Url.Authority.ToLower()) +
this.Page.Request.Url.Authority.Length) +
this.Request.ApplicationPath.Length);
return applicationPath;
}
protected void btnChange_Click(object sender, EventArgs e)
{
// Check suitable between Password and ConfirmPassword
if (this.txtConfirmPassword.Text != this.txtPassword.Text)
{
this.lblMessage.Text = "Password anh confirm is suitable!";
return;
}
// Change Password
objAccountDetails.Username = (string)Session["sesUsername"];
objAccountDetails.Password = this.txtPassword.Text;
int intError = objAccountDB.ChangePassword(objAccountDetails);
// check blank pass
//if (objAccountDB.ChangePassword(objAccountDetails) == 1 )
//{
// check error
if (intError == 0)
{
this.lblMessage.Text = "Don't use blank password";
return;
}
else
{
this.lblMessage.Text = "Password chage successfully!";
return;
}
}
}
c.Tạo người dùng mới:
*Giao diện:
27
*Code:
public partial class Interface_AccessWebsite_CreateUser :
System.Web.UI.Page
{
private AccountDB accdb = new AccountDB();
private AccountDetails accdetail = new AccountDetails();
private Common objCommon = new Common();
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Accept_Click(object sender, EventArgs e)
{
string _username = this.txtUsername.Text;
string _password = this.txtPassword.Text;
if (objCommon.CheckEmpty(this.txtUsername.Text) == 1)
{
Response.Write("Don't use blank Username !");
return;
}
if (objCommon.CheckEmpty(this.txtPassword.Text) == 1)
{
28
Response.Write ("Don't use blank password !");
return;
}
if (this.txtPassword.Text != this.txtConf.Text)
{
Response.Write("Password anh confirm is suitable!");
return;
}
string _administrator;
if (CheckBox1.Checked)
_administrator = "1";
else
_administrator = "0";
AccountDetails accdetail = new AccountDetails(_username,
_password, _administrator);
int _count = accdb.CheckAccount(_username);
if (_count == 0)
{
Response.Write("Account is not
readly!");
int _flag = accdb.InsertAccount(accdetail);
if (_flag == 1)
{
Response.Write("Insert Account is success!");
}
else
{
Response.Write("Insert Account is not success!");
}
}
else
{
Response.Write("Account is readly!");
}
}
}
d.Xóa tài khoản:
*Giao diện:
29
*Code:
public partial class Interface_AccessWebsite_DeleteAcount :
System.Web.UI.Page
{
private AccountDB objAccountDB = new AccountDB();
protected void Page_Load(object sender, EventArgs e)
{
DialogResult reply;
reply = MessageBox.Show("Are you sure ?", "Yes or No Demo",
MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (reply == DialogResult.Yes)
{
int intError =
objAccountDB.DeleteAccount(Request.QueryString["username"]);
if (intError == 1)
{
Response.Redirect("~/interface/accesswebsite/AccountList.aspx");
return;
}
Response.Write(objAccountDB.ErrorDetail);
return;
}
else
Response.Redirect("~/interface/accesswebsite/AccountList.aspx");
}
e.Chỉnh sửa tài khoản:
30
public partial class Interface_AccessWebsite_EditAccount :
System.Web.UI.Page
{
private AccountDB objAccountDB = new AccountDB();
private AccountDetails objAccountDetails = new AccountDetails();
private Common objCommon = new Common();
protected void Page_Load(object sender, EventArgs e)
{
objAccountDetails =
objAccountDB.GetAccount(Request.QueryString["Username"]);
this.txtUsername.Text = objAccountDetails.Username;
if (IsPostBack)
{
if (objAccountDetails.Administrator == "1")
{
chkAdministrator.Checked = true;
}
else
{
chkAdministrator.Checked = false;
}
}
}
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
}
protected void btOK_Click(object sender, EventArgs e)
{
string _username = this.txtUsername.Text;
string _password = this.txtPassword.Text;
if (objCommon.CheckEmpty(this.txtPassword.Text) == 1)
{
Response.Write("Dont use Blank Username !!");
}
if (this.txtPassword.Text != this.txtConfirmPassword.Text)
{
Response.Write("Password anh confirm is suitable");
}
string _administrator;
if (chkAdministrator.Checked)
{
_administrator = "1";
}
else
{
_administrator = "0";
}
AccountDetails accdetail = new AccountDetails(_username,
_password, _administrator);
int _count = objAccountDB.UpdateAccount(accdetail);
if (_count == 0)
{
31
Response.Write("Username do not match !");
}
else
{
int _flag = objAccountDB.UpdateAccount(accdetail);
if (_flag == 1)
{
Response.Write("Update success");
return;
}
else
{
Response.Write("Update Account is not success!");
}
}
}
protected void chkAdministrator_CheckedChanged(object sender,
EventArgs e)
{
}
}
32
2.Nhân viên:
a.Xóa nhân viên:
*Giao diện:
*Code:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Interface_Employees_DeleteEmp : System.Web.UI.Page
{
private EmployeeDB objEmployeeDB = new EmployeeDB();
protected void Page_Load(object sender, EventArgs e)
{
int intError =
objEmployeeDB.DeleteEmployee(Request.QueryString["EmployeeID"]);
if (intError == 1)
{
Response.Redirect("~/interface/employees/emplist.aspx");
return;
}
Response.Write(objEmployeeDB.ErrorDetail);
}
}
33
b.Cập nhật thông tin nhân viên:
*Giao diện:
public partial class Interface_Employees_EditEmployee :
System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
EmployeeDB objEmployeeDB = new EmployeeDB();
EmployeeDetails objEmployeeDetails = new EmployeeDetails();
SetRangOfList(lstDayOfDateOfBirth, 1, 31);
SetRangOfList(lstDayOfEndDate, 1, 31);
SetRangOfList(lstDayOfIssuedDate, 1, 31);
SetRangOfList(lstDayOfProbEnd, 1, 31);
SetRangOfList(lstDayOfStartDate, 1, 31);
34
SetRangOfList(lstMonthOfDateOfBirth, 1, 12);
SetRangOfList(lstMonthOfEndDate, 1, 12);
SetRangOfList(lstMonthOfIssuedDate, 1, 12);
SetRangOfList(lstMonthOfStartDate, 1, 12);
SetRangOfList(lstMonthOfProbEnd, 1, 12);
SetRangOfList(lstYearOfDateOfBirth, 1970, 2007);
SetRangOfList(lstYearOfEndDate, 2000, 2020);
SetRangOfList(lstYearOfProbEnd, 2000, 2020);
SetRangOfList(lstYearOfStartDate, 2000, 2020);
SetRangOfList(lstYearOfIssuedDate, 2000, 2020);
objEmployeeDetails =
objEmployeeDB.GetEmployee(Request.QueryString["employeeID"]);
if(!IsPostBack) {
if (objEmployeeDB.Error == 0)
{
this.txtEmployeeID.Text = objEmployeeDetails.EmployeeID;
this.txtFirstName.Text = objEmployeeDetails.FirstName;
this.txtLastName.Text = objEmployeeDetails.LastName;
this.lstDayOfDateOfBirth.Text =
objEmployeeDetails.DateOfBirth.Day.ToString();
this.lstMonthOfDateOfBirth.Text =
objEmployeeDetails.DateOfBirth.Month.ToString();
this.lstYearOfDateOfBirth.Text =
objEmployeeDetails.DateOfBirth.Year.ToString();
this.txtPernamentAddress.Text =
objEmployeeDetails.PernamentAddress;
this.txtIDCardNumber.Text =
objEmployeeDetails.IDCardNumber;
this.lstDayOfIssuedDate.Text =
objEmployeeDetails.IssuedDate.Day.ToString();
this.lstMonthOfIssuedDate.Text =
objEmployeeDetails.IssuedDate.Month.ToString();
this.lstYearOfIssuedDate.Text =
objEmployeeDetails.IssuedDate.Year.ToString();
this.txtIssuedPlace.Text = objEmployeeDetails.IssuedPlace;
this.txtTitle.Text = objEmployeeDetails.Title;
this.txtDepartment.Text = objEmployeeDetails.Department;
this.lstDayOfStartDate.Text =
objEmployeeDetails.StartDate.Day.ToString();
this.lstMonthOfStartDate.Text =
objEmployeeDetails.StartDate.Month.ToString();
this.lstYearOfStartDate.Text =
objEmployeeDetails.StartDate.Year.ToString();
this.lstDayOfProbEnd.Text =
objEmployeeDetails.ProbEnd.Day.ToString();
this.lstMonthOfProbEnd.Text =
objEmployeeDetails.ProbEnd.Month.ToString();
this.lstYearOfProbEnd.Text =
objEmployeeDetails.ProbEnd.Year.ToString();
this.lstDayOfEndDate.Text =
objEmployeeDetails.EndDate.Day.ToString();
35
this.lstMonthOfEndDate.Text =
objEmployeeDetails.EndDate.Month.ToString();
this.lstYearOfEndDate.Text =
objEmployeeDetails.EndDate.Year.ToString();
this.txtContractStatus.Text =
objEmployeeDetails.ContractStatus;
this.txtGrossSalaryStatus.Text =
objEmployeeDetails.GrossSalaryStatus.ToString();
}else
{
Response.Write(objEmployeeDB.ErrorDetail);
}
}
}
protected void bntUpdate_Click(object sender, EventArgs e)
{
Common objCommon = new Common();
EmployeeDetails objEmployeeDetail = new EmployeeDetails();
EmployeeDB objEmployeeDB = new EmployeeDB();
objEmployeeDetail.EmployeeID = this.txtEmployeeID.Text;
objEmployeeDetail.FirstName = this.txtFirstName.Text;
objEmployeeDetail.LastName = this.txtLastName.Text;
objEmployeeDetail.DateOfBirth = objCommon.ConvertIntToDate(
this.lstDayOfDateOfBirth.Text,
this.lstMonthOfDateOfBirth.Text,
this.lstYearOfDateOfBirth.Text);
objEmployeeDetail.PernamentAddress =
this.txtPernamentAddress.Text;
objEmployeeDetail.IDCardNumber = this.txtIDCardNumber.Text;
objEmployeeDetail.IssuedDate = objCommon.ConvertIntToDate(
this.lstDayOfIssuedDate.Text,
this.lstMonthOfIssuedDate.Text,
this.lstYearOfIssuedDate.Text);
objEmployeeDetail.IssuedPlace = this.txtIssuedPlace.Text;
objEmployeeDetail.Title = this.txtTitle.Text;
objEmployeeDetail.Department = this.txtDepartment.Text;
objEmployeeDetail.StartDate = objCommon.ConvertIntToDate(
this.lstDayOfStartDate.Text,
this.lstMonthOfStartDate.Text,
this.lstYearOfStartDate.Text);
objEmployeeDetail.ProbEnd = objCommon.ConvertIntToDate(
this.lstDayOfProbEnd.Text,
this.lstMonthOfProbEnd.Text,
this.lstYearOfProbEnd.Text);
objEmployeeDetail.EndDate = objCommon.ConvertIntToDate(
this.lstDayOfEndDate.Text,
this.lstMonthOfEndDate.Text,
this.lstYearOfEndDate.Text);
36
objEmployeeDetail.ContractStatus = this.txtContractStatus.Text;
objEmployeeDetail.GrossSalaryStatus =
objCommon.ConvertStrToNum(this.txtGrossSalaryStatus.Text);
objEmployeeDB.UpdateEmployee(objEmployeeDetail);
if (objEmployeeDB.Error == 1)
{
Response.Write(objEmployeeDB.ErrorDetail);
}
else
{
Response.Redirect("EmpList.aspx");
}
}
private void SetRangOfList(DropDownList parDropDownList, int
parRangStart, int parRangEnd)
{
for (int i = parRangStart; i <= parRangEnd; i++)
{
parDropDownList.Items.Add(Convert.ToString(i));
}
}
protected void bntCancel_Click(object sender, EventArgs e)
{
Response.Redirect("EmpList.aspx");
}
}
c.Thêm mới nhân viên:
public partial class Interface_Employeers_EmpAddNew :
System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
SetRangOfList(lstDayOfDateOfBirth, 1, 31);
SetRangOfList(lstDayOfEndDate, 1, 31);
SetRangOfList(lstDayOfIssuedDate, 1, 31);
SetRangOfList(lstDayOfProbEnd, 1, 31);
SetRangOfList(lstDayOfStartDate, 1, 31);
SetRangOfList(lstMonthOfDateOfBirth, 1, 12);
SetRangOfList(lstMonthOfEndDate, 1, 12);
SetRangOfList(lstMonthOfIssuedDate, 1, 12);
SetRangOfList(lstMonthOfStartDate, 1, 12);
SetRangOfList(lstMonthOfProbEnd, 1, 12);
SetRangOfList(lstYearOfDateOfBirth, 1970, 2007);
SetRangOfList(lstYearOfEndDate, 2000, 2020);
37
SetRangOfList(lstYearOfProbEnd, 2000, 2020);
SetRangOfList(lstYearOfStartDate, 2000, 2020);
SetRangOfList(lstYearOfIssuedDate, 2000, 2020);
}
private void SetRangOfList(DropDownList parDropDownList, int
parRangStart, int parRangEnd)
{
for (int i = parRangStart; i <= parRangEnd; i++)
{
parDropDownList.Items.Add(Convert.ToString(i));
}
}
protected void bntAddNew_Click(object sender, EventArgs e)
{
Common objCommon = new Common();
EmployeeDetails objEmployeeDetail = new EmployeeDetails();
EmployeeDB objEmployeeDB = new EmployeeDB();
objEmployeeDetail.EmployeeID = this.txtEmployeeID.Text;
objEmployeeDetail.FirstName = this.txtFirstname.Text;
objEmployeeDetail.LastName = this.txtLastname.Text;
objEmployeeDetail.DateOfBirth = objCommon.ConvertIntToDate(
this.lstDayOfDateOfBirth.Text,
this.lstMonthOfDateOfBirth.Text,
this.lstYearOfDateOfBirth.Text);
objEmployeeDetail.PernamentAddress =
this.txtPernamentAddress.Text;
objEmployeeDetail.IDCardNumber = this.txtIDCardNumber.Text;
objEmployeeDetail.IssuedDate = objCommon.ConvertIntToDate(
this.lstDayOfIssuedDate.Text,
this.lstMonthOfIssuedDate.Text,
this.lstYearOfIssuedDate.Text);
objEmployeeDetail.IssuedPlace = this.txtIssuedPlace.Text;
objEmployeeDetail.Title = this.txtTitle.Text;
objEmployeeDetail.Department = this.txtDepartment.Text;
objEmployeeDetail.StartDate = objCommon.ConvertIntToDate(
this.lstDayOfStartDate.Text,
this.lstMonthOfStartDate.Text,
this.lstYearOfStartDate.Text);
objEmployeeDetail.ProbEnd = objCommon.ConvertIntToDate(
this.lstDayOfProbEnd.Text,
this.lstMonthOfProbEnd.Text,
this.lstYearOfProbEnd.Text);
objEmployeeDetail.EndDate = objCommon.ConvertIntToDate(
this.lstDayOfEndDate.Text,
this.lstMonthOfEndDate.Text,
this.lstYearOfEndDate.Text);
objEmployeeDetail.ContractStatus = this.txtContractStatus.Text;
38
objEmployeeDetail.GrossSalaryStatus =
objCommon.ConvertStrToNum(this.txtGrossSalaryStatus.Text);//
.ToInt32(this.txtContractStatus.Text);
// objEmployeeDetail.PernamentAddress =
this.txtPernamentAddress.Text;
int intError = objEmployeeDB.InsertEmployee(objEmployeeDetail);
if (intError == -1)
{
Response.Write(objEmployeeDB.ErrorDetail);
return;
}
else
{
Response.Write("successly!");
Response.Redirect("EmpList.aspx");
}
// Response.Redirect("EmpAddview.aspx");
}
protected void bntCancel_Click(object sender, EventArgs e)
{
Response.Redirect("EmpList.aspx");
}
}
39
*Giao diện:
d.EmpAddView:
e.Chi tiết thông tin nhân viên:
f.Danh sách nhân viên:
*Giao diện:
3.Thư mục:
a.Xóa tài khoản_thư mục:
public partial class Interface_AccessWebsite_DeleteAccMenu :
System.Web.UI.Page
40
{
private MenuDB objMenuDB = new MenuDB();
protected void Page_Load(object sender, EventArgs e)
{
int intError =
objMenuDB.DeleteMenuAccount(Request.QueryString["Username"],
Request.QueryString["IDMenu"]);
if (intError == 1)
{
Response.Redirect("~/interface/accesswebsite/EditAccMenu.aspx");
return;
}
Response.Write("Error");
return;
}
}
b.Sửa chữa Thư mục:
public partial class Interface_AccessWebsite_DeleteAccMenu :
System.Web.UI.Page
{
private MenuDB objMenuDB = new MenuDB();
protected void Page_Load(object sender, EventArgs e)
{
int intError =
objMenuDB.DeleteMenuAccount(Request.QueryString["Username"],
Request.QueryString["IDMenu"]);
if (intError == 1)
{
Response.Redirect("~/interface/accesswebsite/EditAccMenu.aspx");
return;
}
Response.Write("Error");
return;
}
}
II.Model(Mô hình)
Gồm AccountDetails (Chi tiết tài khoản), MenuDetails (Chi tiết danh bạ) và
EmployeeDetails (Chi tiết nhân viên):
*Code:
using System;
using System.Data;
using System.Configuration;
using System.Web;
41
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
///
/// Summary description for AccountDetails
///
public class AccountDetails
{
/**
* Function : AccountDetails
* Author : longch
* Date : 2007 - 12 - 22
* Input :
* Output :
* Description :
**/
public AccountDetails()
{
//
// TODO: Add constructor logic here
//
}
/**
* Function : AccountDetails
* Author : longch
* Date : 2007 - 12 - 22
* Input : string, string
* Output :
* Description :
**/
public AccountDetails(string username, string password)
{
//
// TODO: Add constructor logic here
//
this.username = username;
this.password = password;
}
public AccountDetails(string parUsername, string parPassword,string
parAdministrator)
{
//
// TODO: Add constructor logic here
//
this.username = parUsername;
this.password = parPassword;
this.administrator = parAdministrator;
}
42
private string username;
public string Username
{
get { return username; }
set { username = value; }
}
private string password;
public string Password
{
get { return password; }
set { password = value;}
}
private string administrator;
public string Administrator
{
get { return administrator; }
set { administrator = value; }
}
}
MenuDetails
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
///
/// Summary description for MenuDetails
///
public class MenuDetails
{
public MenuDetails(string parIDmenu,string parNameMenu)
{
this.idMenu = parIDmenu;
this.nameMenu = parNameMenu;
}
public MenuDetails()
{
//
// TODO: Add constructor logic here
//
}
private string idMenu;
public string IdMenu
{
get { return idMenu; }
set { idMenu = value; }
43
}
private string username;
public string Username
{
get { return username; }
set { username = value; }
}
private string nameMenu;
public string NameMenu
{
get { return nameMenu;}
set { nameMenu = value;}
}
private string link;
public string Link
{
get { return link; }
set { link = value; }
}
private string idParent;
public string IdParent
{
get { return idParent; }
set { idParent = value; }
}
}
EmployeeDetails
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
///
/// Summary description for EmployeeDetails
///
///
public class EmployeeDetails
{
public EmployeeDetails()
{
//
// TODO: Add constructor logic here
//
}
44
private string employeeID;
public string EmployeeID
{
get { return employeeID; }
set { employeeID = value; }
}
private string firstName;
public string FirstName
{
get { return firstName; }
set { firstName = value; }
}
private string lastName;
public string LastName
{
get { return lastName; }
set { lastName = value; }
}
private DateTime dateOfBirth;// //datetime Checked
private string pernamentAddress ;
private string iDCardNumber;
private DateTime issuedDate;// datetime Checked
private string issuedPlace;// nchar(30) Checked
private string title; // nchar(30) Checked
private string department; // nchar(30) Checked
private DateTime startDate;// datetime Checked
private DateTime probEnd; //datetime Checked
private DateTime endDate; //datetime Checked
private string contractStatus;// nchar(50) Checked
private int grossSalaryStatus;// numeric(18, 0) Checked
public DateTime DateOfBirth
{
get { return dateOfBirth; }
set { dateOfBirth = value; }
}
public string PernamentAddress
{
get { return pernamentAddress; }
set { pernamentAddress = value; }
}
public string IDCardNumber
{
get { return iDCardNumber; }
set { iDCardNumber = value; }
}
public DateTime IssuedDate
{
get { return issuedDate; }
set { issuedDate = value; }
45
}// datetime Checked
public string IssuedPlace
{
get { return issuedPlace; }
set { issuedPlace = value; }
}// nchar(30) Checked
public string Title
{
get { return title; }
set { title = value; }
}// nchar(30) Checked
public string Department
{
get { return department; }
set { department = value; }
}// nchar(30) Checked
public DateTime StartDate
{
get { return startDate; }
set { startDate = value; }
}// datetime Checked
public DateTime ProbEnd
{
get { return probEnd; }
set { probEnd = value; }
}//datetime Checked
public DateTime EndDate
{
get { return endDate; }
set { endDate = value; }
}
//datetime Checked
public string ContractStatus
{
get { return contractStatus; }
set { contractStatus = value; }
}// nchar(50) Checked
public int GrossSalaryStatus
{
get { return grossSalaryStatus; }
set { grossSalaryStatus = value; }
}// numeric(18, 0) Checked
// private string pernamentAddress;
// public string PernamentAddress
//{
// set { PernamentAddress = value; }
// }
public EmployeeDetails(string employeeID, string firstName,
string lastName)
{
this.employeeID = employeeID;
this.firstName = firstName;
this.lastName = lastName;
46
//this.pernamentAddress = pernamentAddress;
}
}
III.Controller(Điều khiển):
Gồm AccountDB (Tài khoản), MenuDB (Thư mục), EmployeeDB (Nhân
viên).
*Code phần AccountDB (Tài khoản):
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/**
* Task: add lib
* Author: longch - cao hoang long
**/
using System.Data.SqlClient;
using System.Collections;
///
/// Summary description for AccountDB
///
public class AccountDB
{
private Common objCommon = new Common();
/**
* Function : AccountDB
* Author : longch
* Date : 2007 - 12 - 22
* Input :
* Output :
* Description :
**/
public AccountDB()
{
//
// TODO: Add constructor logic here
//
connectionString =
ConfigurationSettings.AppSettings["databaseConnectionString"];
}
/**
* Function : AccountDB
* Author : longch
* Date : 2007 - 12 - 22
* Input :
* Output :
* Description :
47
**/
private string connectionString;
public string ConnectionString
{
get { return connectionString; }
set { connectionString = value; }
}
/**
* Function : AccountDB
* Author : longch
* Date : 2007 - 12 - 22
* Input :
* Output :
* Description :
**/
private int error;
/**
* Function : AccountDB
* Author : longch
* Date : 2007 - 12 - 22
* Input :
* Output :
* Description :
**/
public int Error
{
get { return error; }
set { error = value; }
}
private string errorDetail;
public string ErrorDetail
{
get { return errorDetail; }
set { errorDetail = value; }
}
public int CheckAccount(AccountDetails acc)
{
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("CountAccount", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@UserName",
SqlDbType.NVarChar, 10));
cmd.Parameters["@Username"].Value = acc.Username;
cmd.Parameters.Add(new SqlParameter("@Password",
SqlDbType.NVarChar, 10));
cmd.Parameters["@Password"].Value = acc.Password;
Error = 0;
try
{
con.Open();
return (int)cmd.ExecuteScalar();
}
catch (SqlException objError)
{
// Replace the error with something less specific.
// You could also log the error now.
48
// throw new ApplicationException("Data error.");
Error = 1;
ErrorDetail = objError.ToString();
return -1;
}
finally
{
con.Close();
}
}
public int CheckAdminAccount(AccountDetails parAccountDetails)
{
SqlConnection objConnection = new
SqlConnection(connectionString);
SqlCommand objCommand = new SqlCommand("CheckAdminAccount",
objConnection);
objCommand.CommandType = CommandType.StoredProcedure;
objCommand.Parameters.Add(new SqlParameter("@UserName",
SqlDbType.NVarChar, 10));
objCommand.Parameters["@Username"].Value =
parAccountDetails.Username;
objCommand.Parameters.Add(new SqlParameter("@Password",
SqlDbType.NVarChar, 10));
objCommand.Parameters["@Password"].Value =
parAccountDetails.Password;
Error = 0;
try
{
objConnection.Open();
return (int)objCommand.ExecuteScalar();
}
catch (SqlException objError)
{
// Replace the error with something less specific.
// You could also log the error now.
// throw new ApplicationException("Data error.");
Error = 1;
ErrorDetail = objError.ToString();
return -1;
}
finally
{
objConnection.Close();
}
}
public int CheckAccount(string _username)
{
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("CountAccount2", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@UserName",
SqlDbType.NVarChar, 10));
cmd.Parameters["@Username"].Value = _username;
Error = 0;
try
49
{
con.Open();
return (int)cmd.ExecuteScalar();
}
catch (SqlException objError)
{
// Replace the error with something less specific.
// You could also log the error now.
// throw new ApplicationException("Data error.");
Error = 1;
ErrorDetail = objError.ToString();
return 0;
}
finally
{
con.Close();
}
}
public int InsertAccount(AccountDetails parAccountDetails)
{
SqlConnection objConnection = new
SqlConnection(connectionString);
SqlCommand objcommand = new SqlCommand("InsertAccount",
objConnection);
objcommand.CommandType = CommandType.StoredProcedure;
objcommand.Parameters.Add(new SqlParameter("@UserName",
SqlDbType.NVarChar, 10));
objcommand.Parameters["@UserName"].Value =
parAccountDetails.Username;
objcommand.Parameters.Add(new SqlParameter("@Password",
SqlDbType.NVarChar, 10));
objcommand.Parameters["@Password"].Value =
parAccountDetails.Password;
objcommand.Parameters.Add(new SqlParameter("@Administrator",
SqlDbType.NVarChar, 10));
objcommand.Parameters["@Administrator"].Value =
Convert.ToInt32(parAccountDetails.Administrator);
Error = 0;
try
{
objConnection.Open();
objcommand.ExecuteNonQuery();
return 1;
}
catch (SqlException objError)
{
// Replace the error with something less specific.
// You could also log the error now.
// throw new ApplicationException("Data error.");
Error = 1;
ErrorDetail = objError.ToString();
return 0;
}
finally
{
objConnection.Close();
50
}
}
/**
* Function : AccountDB
* Author : longch
* Update : DucPN
* Date : 2007 - 12 - 22
* Input : (AccountDetails acc)(int)
* Output :int
* Description : return =0 dont change
return =1 change pass
**/
public int ChangePassword(AccountDetails parAccountDetails)
{
SqlConnection objConnection = new
SqlConnection(connectionString);
SqlCommand objCommand = new SqlCommand("ChangePassword",
objConnection);
objCommand.CommandType = CommandType.StoredProcedure;
objCommand.Parameters.Add(new SqlParameter("@UserName",
SqlDbType.NVarChar, 10));
objCommand.Parameters["@Username"].Value =
parAccountDetails.Username;
objCommand.Parameters.Add(new SqlParameter("@Password",
SqlDbType.NVarChar, 10));
objCommand.Parameters["@Password"].Value =
parAccountDetails.Password;
Error = 0;
//check blank pass
if (objCommon.CheckEmpty(parAccountDetails.Password) != 1)
try
{
objConnection.Open();
objCommand.ExecuteNonQuery();
return 1;
}
catch (SqlException objError)
{
// Replace the error with something less specific.
// You could also log the error now.
// throw new ApplicationException("Data error.");
Error = 1;
ErrorDetail = objError.ToString();
return 0;
}
finally
{
objConnection.Close();
}
else
return 0;
}
51
public AccountDetails[] GetAllAccounts()
{
SqlConnection objConnection = new
SqlConnection(connectionString);
SqlCommand objCommand = new SqlCommand("GetAllAccounts",
objConnection);
objCommand.CommandType = CommandType.StoredProcedure;
// Create a collection for all the employee records.
ArrayList arrAccounts = new ArrayList();
Error = 0;
try
{
objConnection.Open();
SqlDataReader objReader = objCommand.ExecuteReader();
while (objReader.Read())
{
AccountDetails objAccountDetails = new
AccountDetails();
//(int)reader["EmployeeID"],
(string)reader["FirstName"],
//(string)reader["LastName"],
(string)reader["TitleOfCourtesy"]);
objAccountDetails.Username =
objReader["Username"].ToString();
objAccountDetails.Password =
objReader["Password"].ToString();
objAccountDetails.Administrator =
objReader["Administrator"].ToString() ;
arrAccounts.Add(objAccountDetails);
}
objReader.Close();
return
((AccountDetails[])arrAccounts.ToArray(typeof(AccountDetails)));
}
catch (SqlException objError)
{
//throw new ApplicationException("Data error.");
Error = 1;
ErrorDetail = objError.ToString();
return null;
}
finally
{
objConnection.Close();
}
}
public AccountDetails[] GetAllUser()
{
SqlConnection objConnection = new
SqlConnection(connectionString);
SqlCommand objCommand = new SqlCommand("GetUser",
objConnection);
objCommand.CommandType = CommandType.StoredProcedure;
// Create a collection for all the employee records.
ArrayList arrAccounts = new ArrayList();
Error = 0;
52
try
{
objConnection.Open();
SqlDataReader objReader = objCommand.ExecuteReader();
while (objReader.Read())
{
AccountDetails objAccountDetails = new
AccountDetails();
//(int)reader["EmployeeID"],
(string)reader["FirstName"],
//(string)reader["LastName"],
(string)reader["TitleOfCourtesy"]);
objAccountDetails.Username =
objReader["Username"].ToString();
objAccountDetails.Password =
objReader["Password"].ToString();
objAccountDetails.Administrator =
objReader["Administrator"].ToString();
arrAccounts.Add(objAccountDetails);
}
objReader.Close();
return
((AccountDetails[])arrAccounts.ToArray(typeof(AccountDetails)));
}
catch (SqlException objError)
{
//throw new ApplicationException("Data error.");
Error = 1;
ErrorDetail = objError.ToString();
return null;
}
finally
{
objConnection.Close();
}
}
public AccountDetails[] GetAccounts(string parUsername)
{
SqlConnection objConnection = new
SqlConnection(connectionString);
SqlCommand objCommand = new SqlCommand("GetAccounts",
objConnection);
objCommand.CommandType = CommandType.StoredProcedure;
objCommand.Parameters.Add(new SqlParameter("@Username",
SqlDbType.NVarChar, 10));
objCommand.Parameters["@Username"].Value = parUsername;
// Create a collection for all the employee records.
ArrayList arrAccounts = new ArrayList();
Error = 0;
try
{
objConnection.Open();
SqlDataReader objReader = objCommand.ExecuteReader();
while (objReader.Read())
53
{
AccountDetails objAccountDetails = new
AccountDetails();
//(int)reader["EmployeeID"],
(string)reader["FirstName"],
//(string)reader["LastName"],
(string)reader["TitleOfCourtesy"]);
objAccountDetails.Username =
objReader["Username"].ToString();
objAccountDetails.Password =
objReader["Password"].ToString();
objAccountDetails.Administrator =
objReader["Administrator"].ToString();
arrAccounts.Add(objAccountDetails);
}
objReader.Close();
return
((AccountDetails[])arrAccounts.ToArray(typeof(AccountDetails)));
}
catch (SqlException objError)
{
//throw new ApplicationException("Data error.");
Error = 1;
ErrorDetail = objError.ToString();
return null;
}
finally
{
objConnection.Close();
}
}
public AccountDetails GetAccount(string parUsername)
{
SqlConnection objConnection = new
SqlConnection(connectionString);
SqlCommand objCommand = new SqlCommand("GetAccounts",
objConnection);
AccountDetails objAccountDetails = new AccountDetails();
ArrayList arrAccounts = new ArrayList();
objCommand.CommandType = CommandType.StoredProcedure;
objCommand.Parameters.Add(new SqlParameter("@Username",
SqlDbType.NVarChar, 10));
objCommand.Parameters["@Username"].Value = parUsername;
// Create a collection for all the employee records.
Error = 0;
try
{
objConnection.Open();
SqlDataReader objReader = objCommand.ExecuteReader();
while (objReader.Read())
{
54
//(int)reader["EmployeeID"],
(string)reader["FirstName"],
//(string)reader["LastName"],
(string)reader["TitleOfCourtesy"]);
objAccountDetails.Username =
objReader["Username"].ToString();
objAccountDetails.Password =
objReader["Password"].ToString();
objAccountDetails.Administrator =
objReader["Administrator"].ToString();
arrAccounts.Add(objAccountDetails);
}
objReader.Close();
}
catch (SqlException objError)
{
//throw new ApplicationException("Data error.");
Error = 1;
ErrorDetail = objError.ToString();
return null;
}
finally
{
objConnection.Close();
}
return objAccountDetails;
}
public int DeleteAccount(string parUsername)
{
SqlConnection objConnection = new
SqlConnection(connectionString);
SqlCommand objCommand = new SqlCommand("DeleteAccount",
objConnection);
SqlCommand objDeleteMenu = new
SqlCommand("DeleteMenu_acc",objConnection);
objCommand.CommandType = CommandType.StoredProcedure;
objCommand.Parameters.Add(new SqlParameter("@Username",
SqlDbType.NVarChar, 10));
objCommand.Parameters["@Username"].Value = parUsername;
objDeleteMenu.CommandType = CommandType.StoredProcedure;
objDeleteMenu.Parameters.Add(new SqlParameter("@_Username",
SqlDbType.NVarChar, 20));
objDeleteMenu.Parameters["@_Username"].Value = parUsername;
Error = 0;
try
{
objConnection.Open();
objCommand.ExecuteNonQuery();
objDeleteMenu.ExecuteNonQuery();
}
catch (SqlException objError)
{
// Replace the error with something less specific.
// You could also log the error now.
// throw new ApplicationException("Data error.");
Error = 1;
55
ErrorDetail = objError.ToString();
return 0;
}
finally
{
objConnection.Close();
}
return 1;
}
public int UpdateAccount(AccountDetails parAccountDetails)
{
SqlConnection objConnection = new
SqlConnection(connectionString);
SqlCommand objCommand = new SqlCommand("UpdateAccount",
objConnection);
objCommand.CommandType = CommandType.StoredProcedure;
objCommand.Parameters.Add(new SqlParameter("@Username",
SqlDbType.NVarChar, 10));
objCommand.Parameters.Add(new SqlParameter("@Password",
SqlDbType.NVarChar, 10));
objCommand.Parameters.Add(new SqlParameter("@Administrator",
SqlDbType.Int, 8));
objCommand.Parameters["@Username"].Value =
parAccountDetails.Username;
objCommand.Parameters["@Password"].Value =
parAccountDetails.Password;
int intValue;
if (objCommon.CheckString(parAccountDetails.Administrator) ==
0)
{
intValue = Int32.Parse(parAccountDetails.Administrator);
}
else
{
intValue = 0;
}
objCommand.Parameters["@Administrator"].Value = intValue;
Error = 0;
try
{
objConnection.Open();
objCommand.ExecuteNonQuery();
}
catch (SqlException objError)
{
// Replace the error with something less specific.
// You could also log the error now.
// throw new ApplicationException("Data error.");
Error = 1;
ErrorDetail = objError.ToString();
return 0;
}
finally
{
objConnection.Close();
56
}
return 1;
}
}
57
MỤC LỤC
Lời mở đầu .................................................................... 1
Chương I.GIỚI THIỆU VỀ CÔNG TY THỰC TẬP
VÀ MỤC ĐÍCH XÂY DỰNG PHẦN MỀM. ............ 3
I. Giới thiệu công ty ................................................................................................... 3
1.Giới thiệu công ty: .............................................................................................. 3
2. Đội ngũ quản lý: ................................................................................................. 5
3.Lĩnh vực hoạt động chính: .................................................................................. 6
II.Mục đích xây dựng chương trình: ........................................................................ 6
1.Mục đích xây dựng chương trình:...................................................................... 6
2.Tổng quan về chương trình: ............................................................................... 7
Chương II. TỔNG QUAN VỀ MÔ HÌNH MODEL-
VIEW-CONTROLLER (MVC). ................................ 9
I.Giới thiệu mô hình MVC: ....................................................................................... 9
1.Thiết kế MVC: .................................................................................................... 9
CHƯƠNG III.PHÂN TÍCH VÀ THIẾT KẾ HỆ
THỐNG ...................................................................... 12
I. Giới thiệu : ............................................................................................................ 12
II. Phân tích hệ thống theo Chức năng ................................................................... 12
1.Quản lý người dùng .......................................................................................... 12
2.Quản lý thư mục ............................................................................................... 13
3.Quản lý Phân quyền ......................................................................................... 13
4.Quản lý Nhân viên ............................................................................................ 13
III. Phân tích hệ thống theo sơ đồ luồng dữ liệu .................................................... 13
1.Sơ đồ luồng dữ liệu mức ngữ cảnh ................................................................... 13
2.Sơ đồ luồng dữ liệu mức đỉnh : ........................................................................ 14
3.Sơ đồ luồng dữ liệu mức dưới đỉnh: ................................................................. 15
4.Sơ đồ luồng dữ liệu tổng quát: .......................................................................... 17
VI.Các bảng cơ sở dữ liệu dùng trong chương trình: ............................................ 18
CHƯƠNG IV.CẤU TRÚC CHƯƠNG TRÌNH
ĐƯỢC ÁP DỤNG MÔ HÌNH MVC ........................ 21
I.View(Interface_Hiển thị): ...................................................................................... 21
1.Truy cập vào web: ............................................................................................ 21
2.Nhân viên: ......................................................................................................... 32
3.Thư mục: ........................................................................................................... 39
III.Controller(Điều khiển): ...................................................................................... 46
Các file đính kèm theo tài liệu này:
- Luận văn- Áp dụng mô hình MVC của Công ty cổ phần công nghệ thanh toán Việt Nam (Vinapay).pdf