Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.32 MB, 29 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b>BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á</b>
<b>KHOA: CÔNG NGHỆ THÔNG TIN</b>
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2"><b>BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á</b>
<b>KHOA: CÔNG NGHỆ THÔNG TIN</b>
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3"><b>LỜI MỞ ĐẦU...4</b>
<b>CHƯƠNG I: TỔNG QUAN VỀ ĐỀ TÀI...5</b>
<b>1.1. Lý do chọn đề tài...5</b>
<b>1.2. Mục tiêu của đề tài...5</b>
<b>1.3. Nội dung thực hiện...5</b>
<b>1.4. Khảo sát và phân tích ứng dụng...6</b>
<b>1.5. Các yêu cầu về chức năng...6</b>
<b>2. Biểu đồ Diagram...8</b>
<b>CHƯƠNG 2. TRIỂN KHAI ỨNG DỤNG...9</b>
<b>1. Triển Khai Giao Diện Hệ Thống...9</b>
<b>2. Triển khai các chức năng của hệ thống...16</b>
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
<b>3. Kiểm thử và triển khai ứng dụng...30</b>
<b>4. Định hướng phát triển ứng dụng...30</b>
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4"><b>LỜI MỞ ĐẦU</b>
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
<b>quyết định chọn đề tài Xây dựng ứng dụng mobile Đọc sách điện tử. </b>
Để có thể hồ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 q 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
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5"><b>CHƯƠNG I: TỔNG QUAN VỀ ĐỀ TÀI1.1. Lý do chọn đề tài</b>
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ẻ ngồ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.
<b>1.2. Mục tiêu của đề tài</b>
<i>1.2.1 Mục tiêu tổng quát </i>
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
<i>1.2.2 Mục tiêu cụ thể </i>
Ứ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
<b>1.3. Nội dung thực hiện</b>
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.
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">- Người dùng có thẻ đánh giá , chia sẻ, yêu thích.
<b>1.4. Khảo sát và phân tích ứng dụng</b>
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.
<b>1.5. Các yêu cầu về chức năng</b>
<i>Sơ đồ USECASE tổng quát</i>
6
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7"> Người quản trị: Quản lý truyện
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9"><b>CHƯƠNG 2. TRIỂN KHAI ỨNG DỤNG1. Triển Khai Giao Diện Hệ Thống</b>
<i>1.1. Giao diện đăng nhập</i>
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10"><i>1.2. Giao diện ứng dụng</i>
10
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11"><i>1.3. Giao diện account</i>
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12"><i>1.4. Giao diện chia sẻ truyện</i>
12
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13"><i>1.5. Giao diện nội dung</i>
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14"><i>1.6. Giao diện đánh giá</i>
14
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15"><i>1.7. Giao diện cập nhật truyện</i>
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16"><b>2. Triển khai các chức năng của hệ thống</b>
Để 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 -->
<i> <</i>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
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">android: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"
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">android:layout_width="300dp" android:layout_height="60dp" android:layout_gravity="center" android:text="Đăng ký"
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">public 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
</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">btnDangNhap.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);
</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">} }
<i>Chức năng tìm kiếm</i>
<b>a. Thiết kế layout</b>
<i><?</i>xml version="1.0" encoding="utf-8"<i>?></i>
<LinearLayout xmlns:android=" xmlns:app=" xmlns: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"
</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">public void onTextChanged(CharSequence s, int start, int before, int count) {
<i> </i>private void filter(String text){ //xóa sau mỗi lần gọi tới filter
<i> </i>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
<i> </i>arrayList.add(item); }
}
adaptertruyen.filterList(filteredList); }
//Hàm gán dữ liệu từ CSDL vào listview
<i> </i>public void initList(){
TruyenArrayList = new ArrayList<>(); //
<i> </i>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
</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">TruyenArrayList.add(new Truyen(id,tentruyen noidung,anh,id_tk, )); //Thêm dữ liệu vào mảng
<i> </i>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(); }
<i>// //Tạo thanh action bar với toolbar// private void ActionBar() {</i>
<i><?</i>xml version="1.0" encoding="utf-8"<i>?></i>
<LinearLayout xmlns:android=" xmlns:app=" xmlns: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"
</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">android: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"
</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">private void init() {
listView = getActivity().findViewById(R.id.<i>listviewAdmin</i>); buttonThem = getActivity().findViewById(R.id.<i>buttonAddTruyen</i>);
</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">buttonThem.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);
<i> </i>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);
</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">Bundle savedInstanceState) { // Inflate the layout for this fragment
<i> </i>return inflater.inflate(R.layout.<i>fragment_dangbai, container, </i>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
<b>4. Định hướng phát triển ứng dụng</b>
Ứ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
</div>