1. Trang chủ
  2. » Công Nghệ Thông Tin

BÁO CÁO BÀI TẬP LỚN LẬP TRÌNH MẠNG

54 845 6

Đ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

Định dạng
Số trang 54
Dung lượng 5,67 MB

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

Nội dung

Nội dung thực hành chủ yếu thực hiện việc lập trình Socket trên họ giao thức TCP/IP và giao thức UDP trên các ứng dụng viết bằng ngôn ngữ Java, kết hợp các kĩ thuật lập trình đa luồng, l

Trang 1

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN

Trang 2

rất rộng mở cho sinh viên và việc nắm bắt những kĩ thuật cơ bản của nó cực kì

cần thiết và quan trọng Sau một loạt các môn học lí thuyết nền tảng như Mạng

máy tính, Lập trình Java, Lập trình mạng, thì học phần Lập trình mạng này

chính là hội tụ hiện thực các kiến thức học trên sách vở Nội dung thực hành chủ

yếu thực hiện việc lập trình Socket trên họ giao thức TCP/IP và giao thức UDP

trên các ứng dụng viết bằng ngôn ngữ Java, kết hợp các kĩ thuật lập trình đa

luồng, lập trình web JSP để thực hiện các hạng mục của học phần Thông qua

các bài các bài giảng trên lớp, sinh viên dần thông thạo với công việc lập trình

và một phần nào đó làm quen kĩ thuật xây dựng một hệ thống làm việc sao cho

hiệu quả.

Dù đã kiểm tra nhiều lần nhưng trong báo cáo này có thể sẽ xuất hiện một số

lỗi và sai sót, do đó em rất mong đợi sự góp ý từ các thầy cô Em xin chân thành

cảm ơn.

Trang 3

Ý KIẾN ĐÁNH GIÁ CỦA GIẢNG VIÊN

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Trang 4

MỤC LỤC

LỜI MỞ ĐẦU 1

Ý KIẾN ĐÁNH GIÁ CỦA GIẢNG VIÊN 2

BÀI TẬP 1: XÂY DỰNG CHỨC NĂNG ĐĂNG NHẬP VÀ ĐĂNG KÝ TÀI KHOẢN BẰNG JSP, SERVLET THEO MÔ HÌNH MVC 4

BÀI TẬP 2: XÂY DỰNG HỆ THỐNG QUẢN LÝ TRUNG TÂM Y TẾ DỰ PHÒNG 22

1 Tổng quan đề tài 22

1.1 Bối cảnh đề tài 22

1.2 Mục tiêu và mục đích đề tài 22

1.3 Phương pháp triển khai 22

1.4 Môi trường áp dụng 22

2 Phân tích và thiết kế hệ thống 22

2.1 Phát biểu bài toán 22

2.2 Phân tích hệ thống 24

2.3 Thiết kế hệ thống 24

3 Cài đặt và triển khai 26

3.1 Cài đặt 26

3.2 Triển khái 47

4 Kết luận 51

4.1 Kết quả đạt được 51

4.2 Hạn chế 52

4.3 Hướng phát triển 52

Trang 5

Bài tập 1: Xây dựng chức năng đăng nhập và đăng ký tài

khoản bằng JSP, Servlet theo mô hình MVC

Yêu cầu đề bài:

Xây dựng một ứng dụng bằng JSP, SERVLET theo mô hình MVC cung cấp

chức năng như sau:

- Người dùng muốn truy cập vào hệ thống phải thực hiện login để kiểm tra

username và password có hợp lệ hay không

- Hệ thống thông qua DB kiểm tra tính xác thực của dữ liệu:

 Nếu username và password không chính xác hay không tồn tại ứng

dụng thông báo cho người dùng thông tin “Invalid username and

password” và cho người dùng trở về trang Login thông qua một Link

có tên là Try Again và cung cấp một Link Register cho phép người

dùng đăng ký một account mới

 Nếu user tồn tại thì chương trình bày form Search Đặc biệt, trên đầu

trang phải sử dụng session để lưu trữ user và tất cả các trang phải có

câu “Welcome, tênUser”

- Form Search cho phép người dùng tìm kiếm một user bất kỳ khi biết một

phần tên của họ

 Kết quả Search sẽ trình bày trên lưới dữ liệu

 Nếu tìm không thấy sẽ in ra câu “No Result is matched!”

- Kết quả trên lưới dữ liệu cho phép người dùng xóa một hàng bất kỳ bằng

cách click vào link hay update thông tin về lastname hay roles bằng click

nút update trên hàng được lựa chọn

- Khi các thao tác update, delete được thực hiện thành công thì lưới dữ liệu

sẽ được cập nhật lại và trình bày kết quả cho người dùng

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

Trang 6

public class BaseDAO {

private Connection connect;

public Connection getConnectMySql() {

String userName = "root";String password = "";

try {

dbName + "?useUnicode=true&characterEncoding=UTF-8";

Trang 7

connect = DriverManager.getConnection(connURL, userName,

public class UserDAO extends BaseDAO {

private ResultSet results;

private Connection conn;

private PreparedStatement pst;

public boolean addUser(User userInfor) {

boolean status = false;

VALUES(?,?,?)";

try {

pst = conn.prepareStatement(sql);

pst.setString(1, userInfor.getUsername());

pst.setString(2, userInfor.getPassword());

pst.setString(3, userInfor.getFullname());

status = (temp == 1) ? true : false;

public boolean isExistUser(String userName, String password) {

boolean status = false;

Trang 8

public User getUser(String userName) {

public ArrayList <User> getUserByName(String name) {

listUser.add(obj);

}

Trang 9

public boolean deleteUser(String userName) {

boolean status = false;

try {

pst = conn.prepareStatement(sql);

pst.setString(1, userName);

status = (temp == 1) ? true : false;

public boolean editUser(User user) {

boolean status = false;

try {

WHERE username = ?";

pst = conn.prepareStatement(sql);

pst.setString(1, user.getPassword());

pst.setString(2, user.getFullname());

pst.setString(3, user.getUsername());

status = (temp == 1) ? true : false;

public static void main(String[] args) {

Trang 10

System.out.println(u.editUser(new User("thailoi","222222","ThaiVan Lon")));

public class HomeController extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse

response) throws ServletException, IOException {

// TODO Auto-generated method stub

if(session.getAttribute("fullname") != null){

if(logout != null){

Trang 11

ArrayList<User> listUser =

userDAO.getUserByName(name);

request.setAttribute("listUser", listUser);

}}

request.getRequestDispatcher("/view/home.jsp");

}else{

response.sendRedirect(request.getContextPath() +

"/login.html");

}}

/**

* @see HttpServlet#doPost(HttpServletRequest request,

HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse

response) throws ServletException, IOException {

// TODO Auto-generated method stub}

String destination = null;

if(session.getAttribute("fullname") != null){

Trang 12

public class LoginController extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse

response) throws ServletException, IOException {

request.getRequestDispatcher("/view/login.jsp");

protected void doPost(HttpServletRequest request, HttpServletResponse

response) throws ServletException, IOException {

// TODO Auto-generated method stub

if (userDAO.isExistUser(userName, password)) {

session.setAttribute("fullname",

userInfor.getFullname());

destination = request.getContextPath() + "/home.html";

response.sendRedirect(destination);

} else {

request.getRequestDispatcher("/view/failed_login.jsp");

}}

}

RegisterController.java

Trang 13

public class RegisterController extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse

response) throws ServletException, IOException {

// TODO Auto-generated method stub

request.getRequestDispatcher("/view/register.jsp");

protected void doPost(HttpServletRequest request, HttpServletResponse

response) throws ServletException, IOException {

// TODO Auto-generated method stub

if(!password.equals("") && !fullname.equals("") && !

username.equals("")){

check = user.getUser(username);

if(check == null){

session.setAttribute("success", true);

Trang 14

user.addUser(new User(username,password,fullname));

response.sendRedirect(request.getContextPath() + "/

register.html");

}else{

session.setAttribute("success", false);

response.sendRedirect(request.getContextPath() + "/

register.html");

}}else{

session.setAttribute("success", false);

response.sendRedirect(request.getContextPath() +

"/register.html");

}}

public class EditUserController extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse

response) throws ServletException, IOException {

// TODO Auto-generated method stub

request.getRequestDispatcher("/view/error_page.jsp");

}

Trang 15

* @see HttpServlet#doPost(HttpServletRequest request,

HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse

response) throws ServletException, IOException {

// TODO Auto-generated method stub

boolean status = false;

if(!edit.equals("")){

status = userDAO.editUser(new User(username,

password, fullname));

if(status == true){

name="+fullname+"&search=Search";

response.sendRedirect(request.getContextPath() + destination);

}else{

response.sendRedirect(request.getContextPath() + destination);

}}else{

response.sendRedirect(request.getContextPath() +

destination);

}

if(!delete.equals("")){

status = userDAO.deleteUser(username);

if(status == true){

response.sendRedirect(request.getContextPath() + destination);

}}else{

response.sendRedirect(request.getContextPath() +

destination);

}}

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Demo Login</title>

Trang 16

<link href= <%=request.getContextPath()%>/templates/css/style.css"

rel="stylesheet">

</head>

<body class="login-bg">

<div class="login-page">

<div class="form">

<form class="login-form"

action= <%=request.getContextPath()%>/login.html"

%=request.getContextPath()%>/register.html">Create an account</a

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Demo Login</title>

<link href= <%=request.getContextPath()%>/templates/css/style.css"

rel="stylesheet">

</head>

<body class="login-bg">

<div class="login-page">

<div class="form">

<form class="register-form" action= <

%=request.getContextPath()%>/register.html" method="post"

<button type="submit"

name="create">Register</button>

< class="message">

%=request.getContextPath()%>/login.html">Log In</a

Trang 17

<%@ page import="model.bean.User"%>

<%@page import="java.util.ArrayList"%>

<%@ page language="java" contentType="text/html; charset=UTF-8"

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Demo Login</title>

<link href= <%=request.getContextPath()%>/templates/css/style.css"

<div class="welcome-user">

<h3> Welcome <%=session.getAttribute("fullname")%></h3>

< href= <%=request.getContextPath()%>/home.html?

logout=logout">Logout</a

</div>

<div class="container">

<div class="body-form">

<form class="form-inline" action= <

%=request.getContextPath()%>/home.html" method="get" accept-charset=

<input type="submit" class="btn btn-success"

name="search" value="Search">

Trang 18

<thead <tr class="bg-success text-white">

<th class="col-md-2">STT</th>

<th class= 4">Username</th>

"col-md-<th class="col-md-4">Full Name</th>

<th class="col-md-2">Method</th>

< style="cursor: pointer"

data-toggle="modal" data-target="#edit-<%=i%>" Edit</a

< style="cursor: pointer"

data-toggle="modal" data-target="#delete-<%=i%>" Delete</a

</td>

</tr>

<%

}}

<div id="edit-<%=i %>" class="modal fade" role="dialog">

<div class="modal-dialog">

<div class="modal-content">

<div class="modal-header">

<button type="button" class="close" dismiss="modal">&times;</button>

User</h4>

</div>

<div class="modal-body">

Trang 19

<form class="form-horizontal" action= <

%=request.getContextPath()%>/user/edit.html" method="post"

accept-charset="utf-8">

<div class="form-group">

col-sm-2" for="username">User Name:</label>

<div class="col-sm-10">

<input type="text"

name="username" class="form-control" id="username" value= <

%=u.getUsername()%>" readonly>

</div>

</div>

<div class="form-group">

col-sm-2" for="pwd">Password:</label>

<div class="col-sm-10">

<input type="password"

class="form-control" name="password" id="pwd" placeholder="Enter password">

</div>

</div>

<div class="form-group">

col-sm-2" for="fullname">User Name:</label>

<div class="col-sm-10">

<input type="text"

name="fullname" class="form-control" id="fullname" value= <

%=u.getFullname()%>"

</div>

</div>

<div class="form-group">

col-sm-10">

<input type="submit"

class="btn btn-primary" name="edit" value="Update">

<button type="button"

class="btn btn-default" data-dismiss="modal">Close</button>

<div id="delete-<%=i %>" class="modal fade" role="dialog">

<div class="modal-dialog">

<div class="modal-content">

<div class="modal-header">

<button type="button" class="close" dismiss="modal">&times;</button>

<h4 class="modal-title">Delete User</h4>

</div>

<div class="modal-body">

%=request.getContextPath()%>/user/edit.html" method="post"

Trang 20

<div class="col-sm-offset-2 col-sm-10">

<input type="submit"

class="btn btn-danger" name="delete" value="Delete">

<button type="button"

class="btn btn-default" data-dismiss="modal">Close</button>

Chức năng Đăng kí login

Nếu login bị lỗi

Trang 21

Chức năng đăng kí

Đăng nhập thành công chức năng tìm kiếm

Tìm kiếm thành công

Tìm kiếm thất bại

Trang 22

Chức năng UPDate

Chức năng DELETE

Trang 23

Tăng cường tiếp cận và tuân thủ lịch tiêm cũng như đảm bảo thông tin kịp thời đến

khách hàng Đề tài này được thực hiện nhằm xây dựng ứng dụng quản lý tiêm

chủng có tính tương tác cao giữa cơ sở cung cấp dịch vụ và khách hàng trên nền

tảng website

1.2 Mục tiêu và mục đích đề tài

- Tìm hiểu và thực hiện xây dựng một ứng dụng JSP, SERVLET theo mô hình

MVC cơ bản, cụ thể ở đây là chức năng đăng nhập và đăng kí tài khoản.

- Hiểu được cách thức làm việc và hoạt động của JSP, SERVLET

- Hiểu ý nghĩa của từng tầng và cách xây dựng một project theo mô hình MVC

1.3 Phương pháp triển khai

- Tìm hiểu lý thuyết và phương pháp lập trình thông qua các tài liệu, video hướng

dẫn lập trình JSP, SERVLET, MVC trên internet

1.4 Môi trường áp dụng

- Sử dụng công cụ lập trình Eclipse Neon

Trang 24

- Sử dụng Server MySQL và Apache Tomcat 8.5 để chạy Server.

2 Phân tích và thiết kế hệ thống

2.1 Phát biểu bài toán

Cho một hệ thống quản lý trung tâm y tế dự phòng được mô tả như sau:

- Có chức năng admin của hệ thống, có yêu cầu đăng nhập để quản lý

- Không có chức năng cho phần end-user

- Mỗi khách hàng đến trung tâm sẽ được tạo một tài khoản để theo dõi lịch sử

tiêm phòng

- Mỗi khách hàng có thể tiêm phòng 1 hoặc nhiều bệnh

- Đối với mỗi bệnh, khách hàng chỉ được chọn 1 loại của 1 hãng văcxin

- Cùng một bệnh nhưng mỗi loại văcxin có thể có số mũi cần tiêm phòng khác

nhau

- Thời gian chờ giữa các mũi tiêm cũng khác nhau giữa các loại văcxin

Ví dụ: Văcxin A sau khi tiêm mũi 1 thì đến 1 tháng sau mới tiêm mũi 2, Văcxin B

thì sau 2 tháng mới tiêm mũi 2

- Mỗi loại văcxin có giá thành khác nhau

- Không được phép tiêm các loại văcxin khác nhau cùng một lúc cho cùng một

bệnh

Ví dụ: Khi tiêm phòng bệnh sởi, nếu mũi thứ nhất đã tiêm loại văcxin của Bỉ

thì ở những mũi tiêm tiếp theo cũng phải dùng loại văcxin này, không được

tiêm loại văcxin của Mỹ, Ý…

- Đối với loại văcxin cần tiêm nhiều mũi, sau khi tiêm mũi thứ nhất, phải lập lịch

hẹn khách hàng để tiêm các mũi tiếp theo

- Có một số loại văcxin có thể tiêm phòng cho nhiều bệnh cùng lúc

Lược đồ cơ sở dữ liệu quan hệ của hệ thống được mô tả như sau:

Trang 25

 STTMui: Là số thứ tự của mũi, vd: mũi thứ nhất có STTMui = 1, mũi thứ hai

có giá trị là 2

 NgayHenTiepTheo: Là ngày được hẹn để tiêm mũi tiếp theo (nếu có)

 SoMui: là số lượng mũi cần phải tiêm đối với từng loại văcxin

 GiaVacxin: là giá tiền của 1 mũi văcxin

 Bảng PHONGBENH dùng để xác định loại văcxin nào có thể phòng được

bệnh nào

Thiết kế web bằng ngôn ngữ lập trình JSP, SERVLET theo MVC:

Yêu cầu về chức năng:

- Tạo mới một loại văcxin

- Sửa một loại văcxin

- Liệt kê toàn bộ lịch sử tiêm phòng của một khách hàng bao gồm các thông tin:

Mã Khách Hàng, Tên Khách Hàng, Tên Bệnh, Mã Văcxin, Tên Văcxin, Tổng

số mũi cần phải tiêm

- Thống kê tổng số tiền đã trả cho trung tâm của từng khách hàng, sắp xếp theo

chiều tăng dần của tổng số tiền đã trả

- Cho phép tìm kiếm theo tên vacxin của các hãng sản xuất

Yêu cầu về kỹ thuật:

- Tạo đầy đủ CSDL và kết nối được đến CSDL bằng code Java

- Sử dụng JSP và Servlet theo đúng mô hình MVC

2.2 Phân tích hệ thống

Trang 26

Theo yêu cầu của bài toàn chúng ta chi cần xây dựng các chức năng sau:

 Có chức năng admin của hệ thống, có yêu cầu đăng nhập để quản lý

 Không có chức năng cho phần end-user

 Mỗi khách hàng đến trung tâm sẽ được tạo một tài khoản để theo dõi lịch

sử tiêm phòng

- Quản lý Vác xin:

 Tạo mới một loại văcxin

 Sửa một loại văcxin

 Cho phép tìm kiếm theo tên vacxin của các hãng sản xuất

- Thống kê tổng số tiền đã trả cho trung tâm của từng khách hàng, sắp xếp theo

chiều tăng dần của tổng số tiền đã trả

- Liệt kê toàn bộ lịch sử tiêm phòng của một khách hàng bao gồm các thông tin:

Mã Khách Hàng, Tên Khách Hàng, Tên Bệnh, Mã Văcxin, Tên Văcxin, Tổng

số mũi cần phải tiêm

Vì vậy các usercase sau:

Quản lý thông tin vắc xin:

Trang 27

Quản lý xếp lịch tiêm chủng:

Quản lý kết quả tiêm chủng:

Ngày đăng: 26/08/2017, 20:50

TỪ KHÓA LIÊN QUAN

w