Xác lập dự án Xây dựng một phần mềm quản lí tiêm vacxin cho sinh viên và cán bộ Thiết kế phần mềm với giao diện thân thiện, dễ sử dụng… Rèn luyện tư duy phát triển phần mềm, kĩ năn
Trang 1VIỆN ĐIỆN TỬ - VIỄN THÔNG
***** □&□ *****
BÁO CÁO BÀI TẬP LỚN:
Kỹ thuật phần mềm ứng dụng
ĐỀ TÀI: THIẾT KẾ HỆ THỐNG QUẢN LÝ TIÊM
VACCINE CHO SINH VIÊN
Nhóm sinh viên thực hiện
Lê Duy Hoàng Minh : 20193011
Trương Phi Long : 20192991
Nguyễn Đình Hòa : 20192860
Giảng viên hướng dẫn: PGS.TS Vũ Hải
Trang 2MỤC LỤC
DANH MỤC HÌNH VẼ 3
LỜI MỞ ĐẦU 4
CHƯƠNG I: KHẢO SÁT HIỆN TRẠNG VÀ XÁC LẬP DỰ ÁN 5
1.1 Khảo sát hiện trạng 5
1.1.1 Nghiệp vụ của hệ thống hiện tại 5
1.1.2 Nhược điểm của hệ thống hiện tại 5
1.2 Mục đích của dự án 6
1.3 Xác lập dự án 6
CHƯƠNG II: TÌM HIỂU YÊU CẦU 8
2.1 Các kỹ thuật được sử dụng 8
2.2 Các yêu cầu được thu thập 8
2.3 Phân loại yêu cầu 11
2.3.1 Yêu cầu chức năng 11
2.3.2 Yêu cầu phi chức năng 11
CHƯƠNG III: PHÂN TÍCH HỆ THỐNG 12
3.1 Sơ đồ chức năng 12
3.2.1 Sơ đồ mức ngữ cảnh 13
3.2.2 Sơ đồ mức đỉnh 14
3.3 Phân tích cơ sở dữ liệu 14
CHƯƠNG IV: THIẾT KẾ CƠ SỞ DỮ LIỆU 17
4.1 Chuyển mô hình thực thể liên kết sang mô hình quan hệ 17
4.2 Chuẩn hóa dữ liệu về 3NF 18
4.3 Sơ đồ thực thể liên kết sau chuẩn hóa 3NF 20
4.4 Thiết kế một số form đầu ra 21
Trang 3CHƯƠNG V: TRIỂN KHAI VÀ ĐÁNH GIÁ HỆ THỐNG 22
5.1 Xây dựng cơ sở dữ liệu trên MySQL 22
5.2 Thiết kế giao diện 23
CHƯƠNG VI: KẾT LUẬN 27
Trang 4DANH MỤC HÌNH VẼ
Hình 1 1 Sơ đồ nghiệp vụ của hệ thống cũ 6
Hình 3 1 Sơ đồ chức năng của hệ thống 11
Hình 3 2 Sơ đồ mức ngữ cảnh của hệ thống 12
Hình 3 3 Sơ đồ luồng dữ liệu mức đỉnh 13
Hình 3 4 Sơ đồ thực thể liên kết 15
Hình 4 1 Sơ đồ Hoa_Don ở dạng chuẩn 1NF 17
Hình 4 2 Sơ đồ Hoa_Don ở dạng chuẩn 3NF 18
Hình 4 3 Sơ đồ thực thể liên kết sau khi chuẩn hóa 19
Trang 5LỜI MỞ ĐẦU
Trong thời gian làm đồ án, để tìm được tài liệu tham khảo theo đúng đề bài và những kỹ năng cần thiết để giúp cho việc hoàn thành bài đồ án chúng em đã gặp khá nhiều khó khăn Nhưng nhờ có sự gợi ý, hướng dẫn của PGS.TS Vũ Hải giảng viên môn Kỹ thuật phần mề ứng dụng về những tài liệu cần thiết để tham khảo cũng như kiến thức hai thầy truyền đạt đã giúp em có những kiến thức, tài liệu, kỹ năng cần thiết
để làm đồ án Dù sự giúp đỡ đó có ít hay nhiều, có gián tiếp hay trực tiếp thì em vẫn
vô cùng biết ơn thầy
Chúng em làm đề tài về phân tích và thiết kế hệ thống quản lý, bài làm của chúng em còn nhiều hạn chế, thiếu sót Do vậy, chúng em mong được thầy/cô góp ý để
em hoàn thiện hơn
Chúng em xin chân thành cảm ơn
Trang 6CHƯƠNG I: KHẢO SÁT HIỆN TRẠNG VÀ XÁC LẬP DỰ ÁN
1.1 Khảo sát hiện trạng
1.1.1 Tình hình dịch Covid
Thời điểm hiện tại số ca nhiễm Covid ở Việt Nam là trên 836.000 ca và số ca mỗi ngày ghi nhận là trên 5000 ca Dịch bệnh ở Hà Nội đã cơ bản được kiểm soát tuy nhiên dịch còn phức tạp ở nhiều tỉnh thành như TP.HCM, Bình Dương, Hà Nam…
Kinh tế trong hoàn cảnh covid rất khó khăn Sinh viên đã học Online được hơn
1 kì học và chất lượng thì không thể kiểm soát Rất cần thiết được đi học bình thường trở lại
Hình 1.1 Một số trang web và phần mềm
Bộ y tế cùng các cơ quan chức năng có đưa ra nhiều giải pháp công nghệ giúp kiểm soát dịch bệnh và hỗ trợ người dân ổn định cuộc sống như: Bluezone, Sổ sức khỏe điện tử, Ncovid…
1.1.2 Nhược điểm của hệ thống hiện tại
+ Tiêm xong vacxin nhiều ngày nhưng dữ liệu chưa được cập nhật Phản hồi đến cổng thông tin Covid không được trả lời
+ Truy cập App nhiều bước, nhiều phần mềm quản lý chung nhưng còn nhiều hạn chế
về quản lý và truy suất
+ Đăng kí tiêm vacxin trên App không được phản hồi, không biết cách để xem được các địa điểm và thời gian tiêm chủng
+ Nhà trường quản lý tiêm chủng của sinh viên qua điền form email không hiệu quả
1.2 Mục đích của dự án
Trang 7Quyết định lựa chọn đề tài: Phần mềm quản lý tiêm vacxin cho sinh viên và cán bộ
1.3 Xác lập dự án
Xây dựng một phần mềm quản lí tiêm vacxin cho sinh viên và cán bộ
Thiết kế phần mềm với giao diện thân thiện, dễ sử dụng…
Rèn luyện tư duy phát triển phần mềm, kĩ năng làm việc nhóm, trao đổi thuyết trình
1.4 Lập kế hoạch
Các công cụ: Google Driver, Github, Messenger
Mô hình phát triển: Tăng dần
Các nền tảng xây dựng: Phần mềm visual studio 2019, quản lý dữ liệu bằng mySQL với phần mềm Xampp, lưu trữ file bằng các định dạng pdf(file để in)
và csv(excel)
Trang 8CHƯƠNG II: TÌM HIỂU YÊU CẦU 2.1 Phân loại yêu cầu
2.3.1 Yêu cầu chức năng
Phần mềm cần có các chức năng sau:
a Admin quản lý
Thêm thành viên
Cập nhật và xóa thành viên
Đăng kí kê khai thông tin cho thành viên
Tìm kiếm thông tin thành viên
Tạo báo cáo về kết quả tìm kiếm
b User thành viên
Chỉnh sửa thông tin cá nhân
Đăng kí khai báo y tế
Tìm kiếm địa điểm và thông tin tiêm vaccin
Đăng kí tiêm chủng
Xem thông tin tình hình dịch covid
2.3.2 Yêu cầu phi chức năng
Phần mềm cần có các yêu cầu phi chức năng sau:
Đảm bảo CSDL đủ để lưu trữ thông tin trong thời gian dài
Giao diện trực quan dễ sử dụng cho người mới tiếp xúc
Đảm bảo các phân quyền sử dụng cùng truy cập và sử dụng trên 1 CSDL
Hệ thống cần giao diện sử dụng đơn giản cho mọi người có thể dễ dàng
sử dụng
Hệ thống đảm bảo khả năng linh hoạt khi xuất dữ liệu ra các dạng file khác nhau để dễ dàng lưu trữ và thống kê báo cáo
Trang 9 Cập nhật nhanh chóng những thay đổi trong CSDL để đảm bảo đồng bộ giữa các phân quyền sử dụng
CHƯƠNG III: PHÂN TÍCH HỆ THỐNG 3.1 Sơ đồ chức năng
Hình 3.1.1 Biểu đồ chức năng của Admin
Quản lý thành viên:
Chức năng cho phép người dùng hệ thống sử dụng các tác vụ như thêm, cập nhật thông tin và khai báo sức khỏe cho thành viên
Kiểm tra:
Chức năng tìm kiếm thành viên dựa vào một phần thông tin
Chức năng tạo báo cáo hiển thị danh sách các thành viên đang quản lý
Trang 10Hình 3.1.2 Biểu đồ chức năng cho user
Quản lý thông tin bản thân:
Chức năng cho phép người dùng hệ thống sử dụng các tác vụ như thêm khách hàng, cập nhật thông tin, sửa chữa, và lấy QR bản thân để khai báo sức khỏe
Tìm kiếm thông tin:
Chức năng cho phép người dùng tìm kiếm thông tin về các địa điểm tiêm của mình hoặc tìm kiếm thông tin về các loại vaccin được tiêm và dịch bệnh covid nói chung
Đăng kí:
Chức năng cho phép người dung tạo và gửi các bản đăng kí tiêm chủng hoặc khai báo y tế lên máy chủ
Trang 113.2. Sơ đồ luồng dữ liệu của hệ thống
Hình 3.2.1 Phân tích hành vi
Trang 12Hình 3.2.3 Biểu đồ luồng dữ liệu cho Admin
3.3 Phân tích cơ sở dữ liệu
3.3.1 Nhận diện thực thể
a) Thực thể: User:
Mỗi thực thể tượng trưng cho một thành viên,
Các thuộc tính: ID, name, address, class, level, healthy, vaccin, bhyt
Mô tả: mỗi khách hàng sẽ lưu thông tin về tên, địa chỉ, lớp học, trình độ sinh viên, sức khỏe, thông tin vaccin, số BHYtT(hoặc tương đương)
b) Thực thể: login:
Mỗi thực thể tượng trưng cho một tài khoản đăng nhập
Các thuộc tính: id, username, password
Mô tả: mỗi thực thể sẽ có mã người dùng, tên đăng nhập và mật khẩu
Trang 13e) Thực thể: vaccin:
Mỗi thực thể tượng trưng cho một lần tiêm vaccin
Các thuộc tính: id, userid, type, date
Mô tả: id lần tiêm, id user, loại vaccin và ngày tiêm
d) Thực thể: vaccinOnTime:
Mỗi thực thể tượng trưng cho một địa điểm tiêm
Các thuộc tính: id, name, owner, fromDate, toDate
Mô tả: id địa điểm, tên địa điểm, người tổ chức và thời gian bắt đầu kết thức
e) Thực thể: vaccinType:
Mỗi thực thể tượng trưng cho một loại vaccin
Các thuộc tính: id, name
Mô tả: gồm có id vaccin và tên của loại vaccin
f) Thực thể: area:
Mỗi thực thể tượng trưng cho một loại vaccin tại 1 địa điểm tiêm
Các thuộc tính: id, name, idvaccin
Mô tả: gồm có id địa điểm, tên địa điểm và id vaccin được tiêm
3.3.2 Cơ sở dữ liệu bằng mySQL
Trang 14CHƯƠNG IV: TRIỂN KHAI VÀ ĐÁNH GIÁ HỆ THỐNG
4.1 Thiết kế giao diện
Hình 4.1.1 Form đăng nhập
Trang 15Hình 4.1.2 Giao điện cho user khi đăng nhập
Trang 16Hình 4.1.3 Thiết kế giao diện cho Admin đăng nhập
4.2 Lập trình
4.2.1 Kết nối CSDL và tránh lỗi
Ví dụ với hàm kiểm tra tên đăng nhập ở form đăng nhập
bool isValidUer()
{
string connectionString =
"datasource=127.0.0.1;port=3306;username=root;password=;database=ql_vaccin;" ;
// Câu lệnh mySQL select tâ t ca / ba /n ghi ở / login
string query = "SELECT * FROM login" ;
MySqlConnection databaseConnection = new MySqlConnection(connectionString);
MySqlCommand commandDatabase = new MySqlCommand(query, databaseConnection);
commandDatabase.CommandTimeout = 60;
MySqlDataReader reader;
// tránh lỗ< i
try
{
//Kế t nỗ i với csdl và rà soát xem có ba /n ghi nào ở / login có username và password hợp lệ
databaseConnection.Open();
reader = commandDatabase.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
if ((reader.GetString(1)==tbUser.Text)&&(reader.GetString(2)==tbPassword.Text)) {
userId = reader.GetString(0);
MessageBox.Show( "Đăng nhập thành cỗng" , "Thỗng báo" );
return true ;
}
}
}
else
{
Console.WriteLine( "No rows found." );
}
databaseConnection.Close();
}
// nế u lỗ< i in ra mã lỗ< i
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
MessageBox.Show( "Sai mật khâ/ u hoặc tài khoa /ng" , "Lỗ< i" );
return false ;
}
4.2.2 Điều khiển Form
Ví dụ với hàm điều khiển form trong form login
private void btLogin_Click( object sender, EventArgs e)
{
// Kiế/ m tra đúng tài khoa /n và mật khâ/ u khỗng
bool checkLogin = isValidUer();
// đăng nhập với tư cách thành viến
if ((checkedListBox1.SelectedIndex == 0) && checkLogin)
{
MainForm frMain = new MainForm (userId);
Trang 17this Hide();
}
// đăng nhập với tư cách admin
if ((checkedListBox1.SelectedIndex==1)&& checkLogin)
{
QuanLySinhVien frMain = new QuanLySinhVien();
frMain.ShowDialog();
this Hide();
}
}
4.2.3 Hiển thị dữ liệu ở CSDL
Ví dụ với hàm hiển thị ra thông tinh sinh viên ở form Admin
private void listSV()
{
string connectionString =
"datasource=127.0.0.1;port=3306;username=root;password=;database=ql_vaccin;" ;
// Lệnh mysql đọc tâ t ca / ba /n ghi
string query = "SELECT * FROM user" ;
MySqlConnection databaseConnection = new MySqlConnection(connectionString); MySqlCommand commandDatabase = new MySqlCommand(query, databaseConnection); commandDatabase.CommandTimeout = 60;
MySqlDataReader reader;
// lệnh try catch tránh lỗ< i
try
{
//kế t nỗ i csdl
databaseConnection.Open();
reader = commandDatabase.ExecuteReader();
if (reader.HasRows)
{
//đọc csdl
while (reader.Read())
{
// đọc từng sinh viến 1
numberSV++; // sỗ lượng sinh viến tăng lến
// tạo một hàng trong listviewer trong form hiế/ n thị
string [] row = { reader.GetString(0), reader.GetString(1), reader.GetString(2), reader.GetString(3),
reader.GetString(4), reader.GetString(5), reader.GetString(6), reader.GetString(7) };
var listViewItem = new ListViewItem(row);
// thếm thỗng tin sinh viến vào listviewer
listView1.Items.Add(listViewItem);
// đánh dâ u sỗ lượng sinh viến tiếm mũi 1 và mũi 2
if (reader.GetString(6) == "1" )
{
numberSVVaccin1++;
}
if (reader.GetString(6) == "2" )
{
numberSVVaccin2++;
}
}
Trang 18"%" ;
lbPredic2.Text = "Mũi 2: " + (numberSVVaccin2*100 / numberSV).ToString() +
"%" ;
// Đóng csdl
databaseConnection.Close();
}
//In ra lỗ< i kế t nỗ i
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Trang 19CHƯƠNG V: KẾT LUẬN
Trong báo cáo này nhóm đã tìm hiểu và xây dựng thành bước đầu trong công việc thiết kế một phần mềm ứng dụng: Khảo sát hiện trạng và xác lập dự án Tìm hiểu yêu cầu Phần Demo còn nhiều hạn chế, nhiều vấn đề do kiến thức còn chưa đủ, chưa
có nhiều kinh nghiệm
Nhóm em xin chân thành cảm ơn thầy đã tận tình hỗ trợ và giúp đỡ để em có thể hoàn thành tốt được báo cáo này Trong quá trình thực hiện sẽ không tránh khỏi những sai sót, nhóm em mong nhận được những ý kiến và góp ý từ thầy và các bạn để hoàn thiện hơn