Đang tải... (xem toàn văn)
BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
KHOA: CÔNG NGHỆ THÔNG TIN
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
KHOA: CÔNG NGHỆ THÔNG TIN
Trang 3MỤC LỤC
LỜI MỞ ĐẦU 4
CHƯƠNG I: TỔNG QUAN VỀ ĐỀ TÀI 5
1.1 Lý do chọn đề tài 5
1.2 Mục tiêu của đề tài 5
1.3 Nội dung thực hiện 5
1.4 Khảo sát và phân tích ứng dụng 6
1.5 Các yêu cầu về chức năng 6
2 Biểu đồ Diagram 8
CHƯƠNG 2 TRIỂN KHAI ỨNG DỤNG 9
1 Triển Khai Giao Diện Hệ Thống 9
2 Triển khai các chức năng của hệ thống 16
Chức năng đăng nhập 16
Chức năng tìm kiếm 22
Chức năng đăng bài 26
3 Kiểm thử và triển khai ứng dụng 30
4 Định hướng phát triển ứng dụng 30
Trang 4LỜI MỞ ĐẦU
Ngày nay Internet đã trở thành dịch vụ phổ biến, thiết yếu và có ảnh hưởng sâu rộng tới thói quen, sinh hoạt, giải trí của nhiều người nhất là trong khi tình hình dịch ngày càng phức tạp nhiều diễn biến Với sự phát triển của internet thì các hình thức giai trí cho mọi người ngày càng đa dạng và phát triển hơn Các ứng dụng web ngày càng trở nên phổ biến Trước như 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 ứng dụng mobile Đọc sách điện tử
Để có thể hoàn thành bài tập lớn này, lời đầu tiên em xin phép gửi lời cảm ơn tới thầy cô bộ môn, Khoa Công nghệ thông tin đã tạo điều kiện thuận lợi cho em thực hiện bài tập lớn môn học này.
Đặc biệt em xin chân thành cảm ơn thầy đã rất tận tình hướng dẫn, chỉ bảo em trong suốt thời gian thực hiện đồ án vừa qua.
Em cũng xin chân thành cảm ơn tất cả các Thầy, các Cô trong Trường đã tận tình giảng dạy, trang bị cho em những kiến thức cần thiết, quý báu để giúp em thực hiện được bài tập lớn này.
Mặc dù em đã có cố gắng, nhưng với trình độ còn hạn chế, trong quá trình thực hiện đề tài không tránh khỏi những thiếu sót Em hi vọng sẽ nhận được những ý kiến nhận xét, góp ý của các Thầy giáo, Cô giáo về những kết quả triển khai trong đồ án.
Em xin trân trọng cảm ơn!
4
Trang 5CHƯƠNG I: TỔNG QUAN VỀ ĐỀ TÀI1.1 Lý do chọn đề tài
Hiện nay trong thời đại cách mạng 4.0, công nghệ giúp con người phát triển nhiều mọi mặt từ tài chính, kinh tế, kĩ thuật… khiến mọi vấn đề đều có thể giải quyết dễ dàng bằng công nghệ và bên giải trí cũng không phải ngoại lệ Hiện nay giới trẻ ngoài sử dụng công cụ phần mềm học tập và công việc ra cũng thích sử dụng ứng dụng hình thức giải trí đặc biệt như là ứng dụng đọc truyện tranh Từ khi một vài bộ truyện tranh được tải lên ở một số vài trang web và cho người đọc miễn phí Từ đó hình thành ra xu hướng đọc truyện qua mạng tăng vọt lên và có thể cao hơn mua ở ngoài về đọc Khi Smartphone ngày càng phổ cập đến mọi người thì bây giờ đi đâu cũng có thể mở truyện tranh ra đọc chỉ bằng cách có 1 chiếc smartphone kết nối internet.
Nhưng đọc truyện qua smartphone/tablet còn có vài thứ bất cập của nó chẳng hạn như là tốc độ tải hình ảnh qua web trên smartphone thường chậm hơn trên pc/laptop bởi vì bộ nhớ điện thoại rất ít và trình duyệt web xử lí thao tác nhiều tác vụ khác nhau cộng thêm tốc độ mạng chậm khiến nhiều người vô cùng khó chịu Nhưng ứng dụng đọc truyện tranh thì khác, khi người đọc mở trang truyện nào đó thì tất cả tập trung xử lí hình ảnh truyện và cũng tốn ít dung lượng 4G hơn bên trang web và các nhóm dịch truyện dễ dàng nhận được nguồn vốn đóng góp quỹ duy trì hoạt động Từ đó, tôi muốn xây dựng một ứng dụng đọc truyện miễn phí cho mọi người để không còn ai đắn đo việc đọc truyện qua mạng tốn dung lượng 4G và tốc độ xử lí chậm chạp.
1.2 Mục tiêu của đề tài
1.2.1 Mục tiêu tổng quát
Xây dựng ứng dụng đọc truyện có giao diện bắt mắt người đọc và người đọc có thể lựa chọn thể loại truyện mình thích và tìm kiếm tên truyện dễ dàng
1.2.2 Mục tiêu cụ thể
Ứng dụng sẽ cập nhật các chương truyện hàng ngày theo từng bộ truyện và thông báo cho người đọc truyện mình quan tâm đã ra chương mới và thông báo bảo trì đồng thời hiện thị toàn bộ lịch sử các chương truyện người đọc đã lướt qua Trên trang chủ sẽ luôn hiển trị truyện mới có tiêu đề hình ảnh và 1 đoạn mô tả nội dung
1.3 Nội dung thực hiện
Hệ thống ứng dụng thực hiện sẽ được mô tả như sau: - Người dùng phải đăng kí và đăng nhập để dọc truyện.
Trang 6- Người dùng có thẻ đánh giá , chia sẻ, yêu thích.
1.4 Khảo sát và phân tích ứng dụng
Trong thời đại 4.0 ai cũng có cho riêng mình một chiếc điện thoại thông minh để cập nhật mọi tin tức đời sống cũng như để giải trí sau những giờ làm việc căng thẳng bằng việc như: đọc truyện tranh online,… Nhưng hầu hết phải lên các trang web chính thống để đọc do đó nó có rất nhiều bất cập xảy đến như: yêu cầu phải kết nối với mạng internet, đắn đo về dung lượng khi đọc truyện qua mạng, tốc độ xử lý chậm, …
Do đó chúng em muốn mang tới một ứng dụng có thể thay đổi được các bất cập xảy đến khi đọc truyện tranh hay đọc sách online xảy ra với người sử dụng Nhằm mang đến một ứng dụng trên điện thoại có thể giúp mọi người đọc truyện không bị gián đoạn hay phải lo nghĩ về hết data khi sử dụng internet, và hơn hết tốc độ xử lý sẽ vượt trội hơn khi sử dụng trên web.
Dựa trên các kết quả khảo sát và phân tích trên, nhóm chúng em đã đưa ra quyết định để xây dựng các tính năng và thiết kế ứng dụng đọc truyện tranh, với mục tiêu tối đa hóa trải nghiệm người dùng và đáp ứng nhu cầu giải trí của sử dụng ứng dụng
1.5 Các yêu cầu về chức năng
Sơ đồ USECASE tổng quát
6
Trang 7 Người quản trị: Quản lý truyện
Trang 9CHƯƠNG 2 TRIỂN KHAI ỨNG DỤNG1 Triển Khai Giao Diện Hệ Thống
1.1 Giao diện đăng nhập
Trang 101.2 Giao diện ứng dụng
10
Trang 111.3 Giao diện account
Trang 121.4 Giao diện chia sẻ truyện
12
Trang 131.5 Giao diện nội dung
Trang 141.6 Giao diện đánh giá
14
Trang 151.7 Giao diện cập nhật truyện
Trang 162 Triển khai các chức năng của hệ thống
Để xây dựng được các chức năng của ứng dụng theo thiết kế đã được trình bày ở chương 3, đồ án đã sử dụng drawable để thiết kế giao diện người dùng theo yêu cầu Tiếp theo, đồ án sẽ trình bày các kỹ thuật được sử dụng để xây dựng ứng dụng.
android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/longhihi" >
<! TODO: Update blank fragment layout >
<LinearLayout
android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_gravity="center"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Wellcome to App" android:textColor="#2CA7E0" android:textStyle="bold" android:layout_gravity="center" android:layout_height="wrap_content" android:inputType="textEmailAddress"
16
Trang 17android:hint="username" android:textColorHint="#2CA7E0" android:layout_gravity="center"
android:drawableLeft="@drawable/ic_person" android:layout_height="wrap_content" android:inputType="textPassword" android:hint="Password" android:textColorHint="#2CA7E0" android:layout_gravity="center"
android:drawableLeft="@drawable/ic_person"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Forget Password?" android:textColor="#E11010"
android:fontFamily="sans-serif-medium" android:layout_gravity="right" android:layout_gravity="center" android:text="Đăng nhập" android:textColor="#fff" android:layout_marginTop="20dp" android:background="@drawable/botron"
Trang 18android:layout_width="300dp" android:layout_height="60dp" android:layout_gravity="center" android:text="Đăng ký"
Trang 20public class MainDangNhap extends AppCompatActivity { EditText edtTaiKhoan edtMatKhau, ;
Button btnDangNhap btnDangKy, ;
databaseDocTruyen = new databasedoctruyen(this);
btnDangKy.setOnClickListener(new View.OnClickListener() { @Override
Intent intent = new
Intent(MainDangNhap.this,MainDangKy.class); startActivity(intent);
} });
20
Trang 21btnDangNhap.setOnClickListener(new View.OnClickListener() { @Override
String tentaikhoan = edtTaiKhoan.getText().toString(); String matkhau = edtMatKhau.getText().toString(); Cursor cursor = databaseDocTruyen.getData(); while (cursor.moveToNext()){
String datatentaikhoan cursor.getString( );= 1
String datamatkhau cursor.getString( );= 2
if(datatentaikhoan.equals(tentaikhoan) && datamatkhau.equals(matkhau)){
int phanquyen cursor.getInt( );= 4
int idd cursor.getInt( );= 0
String tentk cursor.getString( );= 1
String email cursor.getString( );= 3
Intent intent = new
Intent(MainDangNhap.this,MainActivity.class); intent.putExtra("phanq",phanquyen); intent.putExtra("idd",idd);
intent.putExtra("email",email); intent.putExtra("tentaikhoan",tentk);
private void AnhXa() {
edtTaiKhoan = findViewById(R.id.edtUsername); edtMatKhau = findViewById(R.id.edtPasswod);
Trang 22} }
Chức năng tìm kiếm
a Thiết kế layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainTimKiem">
<LinearLayout
android:layout_margin="5dp" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText
android:hint="Search" android:id="@+id/timkiem" android:layout_width="match_parent"
android:layout_height="wrap_content"></EditText> <androidx.recyclerview.widget.RecyclerView android:id="@+id/listviewtimkiem" android:layout_width="match_parent"
Trang 24public void onTextChanged(CharSequence s, int start, int before, int count) {
private void filter(String text){ //xóa sau mỗi lần gọi tới filter
arrayList.clear();
ArrayList<Truyen filteredList > = new ArrayList<>(); for(Truyen item : TruyenArrayList){
if (item.getTenTruyen().toLowerCase().contains(text.toLowerCase())){ filteredList.add(item);
//Thêm dữ liệu để hiển thị ra item nội dung
arrayList.add(item); }
}
adaptertruyen.filterList(filteredList); }
//Hàm gán dữ liệu từ CSDL vào listview
public void initList(){
TruyenArrayList = new ArrayList<>(); //
arrayList = new ArrayList<>();
databaseDocTruyen = new databasedoctruyen(this); Cursor cursor1 = databaseDocTruyen.getData2(); while (cursor1.moveToNext()){
int id cursor1.getInt( );= 0
String tentruyen cursor1.getString( );= 1
String noidung cursor1.getString( );= 2
String anh cursor1.getString( );= 3
int id_tk cursor1.getInt( );= 4
24
Trang 25TruyenArrayList.add(new Truyen(id,tentruyen noidung,anh,id_tk, )); //Thêm dữ liệu vào mảng
arrayList.add(new Truyen( ,id tentruyen,noidung anh id_tk, , )); }
LinearLayoutManager linearLayoutManager = new
LinearLayoutManager(getApplicationContext(), RecyclerView.VERTICAL, false); listView.setLayoutManager(linearLayoutManager);
adaptertruyen=new adapterTruyen(getApplicationContext(),TruyenArrayList); listView.setAdapter(adaptertruyen);
cursor1.moveToFirst(); cursor1.close(); }
// //Tạo thanh action bar với toolbar// private void ActionBar() {
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainDangBai"> <TextView
android:textColor="#2196F3" android:textStyle="bold" android:textSize="30sp" android:gravity="center" android:text="Đăng bài"
Trang 26android:inputType="text" android:id="@+id/dbtieude" android:hint="Tên truyện" android:layout_gravity="center" android:hint="Nội dung"
android:inputType="text"></EditText> <EditText
android:inputType="textUri" android:hint="Ảnh bìa" android:id="@+id/dbimg" android:layout_gravity="center" android:layout_marginTop="20dp" android:layout_width="300dp"
android:layout_height="wrap_content"></EditText> <Button
android:id="@+id/dbdangbai" android:layout_gravity="center" android:layout_marginTop="20dp" android:text="Đăng bài"
android:textColor="@color/white"
android:background="@drawable/themtruyen"
Trang 27private void init() {
listView = getActivity().findViewById(R.id.listviewAdmin); buttonThem = getActivity().findViewById(R.id.buttonAddTruyen);
Trang 28buttonThem.setOnClickListener(new View.OnClickListener() { @Override
Intent intent = getActivity().getIntent(); int id intent.getIntExtra(= "Id", );0
Intent intent1 = new Intent(getContext(), MainDangBai.class); intent.putExtra("Id",id);
public void initList(){
TruyenArrayList = new ArrayList<>();
databaseDocTruyen = new databasedoctruyen(getContext()); Cursor cursor1 = databaseDocTruyen.getData2();
while (cursor1.moveToNext()){ int id cursor1.getInt( );= 0
String tentruyen cursor1.getString( );= 1
String noidung cursor1.getString( );= 2
String anh cursor1.getString( );= 3
int id_tk cursor1.getInt( );= 4
TruyenArrayList.add(new Truyen(id,tentruyen noidung,anh,id_tk, )); }
LinearLayoutManager linearLayoutManager = new
LinearLayoutManager(getContext(), RecyclerView.VERTICAL, false); listView.setLayoutManager(linearLayoutManager);
adaptertruyen = new adapterDangBai(getContext(),TruyenArrayList); listView.setAdapter(adaptertruyen);
Trang 29Bundle savedInstanceState) { // Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_dangbai, container, false);
+ Hệ thống sẽ hiển thị các yêu cầu chức năng của người dùng lựa chọn + Người dùng có thể yêu thích truyện , tìm kiếm, chia sẻ, đánh giá truyện
4 Định hướng phát triển ứng dụng
Ứng dụng đọc truyện tranh là một ứng dụng đơn giản và dễ sử dụng nhưng nó vẫn còn khá nhiều thiếu sót dưới đây sẽ là một số hướng phát triển ứng dụng nhằm mang tới cho người sử dụng một trải nghiệm khi sử dụng ứng dụng tốt nhất: - Cập nhật các truyện mới nhanh chóng.
- Thêm tính năng xem truyện đã đọc qua