oe So SK OSS OO BO GIAO DUC VA DAO TAO Trường Đại Học Duy Tân ĐỎ ÁN CÁ NHÂN LẬP TRÌNH ỨNG DỤNG CHO CÁC THIẾT BỊ DI ĐỘNG ĐÈ TÀI : Ứng Dụng Quản Lý Ghi Chú
|
Ậ
Lớp : CR 424 AM Giảng Viên : Phạm An Bình
Sinh viên thực hiện : Bùi Văn Bình Mã Sinh Viên : 27211240478
Trang 2Contents
1 Thiét ké giao di@in oe c.cccccccccccssessssssessessecsecsecsecsscssssscasesseesesseesscscassseansneateseseeseeeesees 4
1.1 Giao diện chính của ủng dụng - - + so nọ ng ng ng re 4 1.2 Giao diện Lịch sữ phép tínhh - <5 + sọ ng ng ng 4
1.3 c6 nh h6ố QÄ|A ÔỎ 5
Trang 31 Thiết kế giao diện
Trang 5Máy Tính
PHÉP TÍNH HISTORY PHEP TINH Bấm Giờ
9X6=54 9X6=54 —
543 - 3 = 540 543 - 3 = 540 540 + 6 = 546 540 + 6 = 546
0:00:757
0:01:124 0:01:492
0:01:842
0:02:177 0:02:527 0:02:876 0:03:265 0:03:775
Trang 6
3 Toàn bộ Code 3.1 Code chức năng
File Mainactyvity.java
package com.example.maytinhll 12;
import import import import import import import import import import import import import import import import import import public
androidx.annotation.NonNull; androidx.appcompat.app.AlertDialog; androidx.appcompat.app.AppCompatActivity; androidx.appcompat.widget.Toolbar; android.content.DialogInterface; android.content Intent; android.os.Bundle; android.util.Log; android.view.Menu; android.view.MenulInflater; android.view.Menultem; android.view.View; android.widget.AdapterView; android.widget.ArrayAdapter; android.widget.Button; android.widget.ListView; android.widget.TabHost; android.widget.TextView; android.widget.Toast; java.util.ArrayList;
class MainActivity extends AppCompatActivity { Integer sol =0;
Integer so2 =0; Character dau = null; Button btnthoat; ListView lvHistory; ArrayList<String>dskq;
ArrayAdapter<String>adapterkqne; @Override
protected void onCreate (Bundle savedInstanceState)
}
super.onCreate (savedInstanceState);
setContentView(R.layout.activity main);
Trang 7btnthoat.setonClickListener (new View.OnClickListener() { @Override
public void onClick(View v) { AlertDialog.Builder builder = new
AlertDialog Builder (MainActivity.this,
android.R.style Theme DeviceDefault Light Dialog);
builder.setTitle("Bạn có muốn thoat khdi tng dung ?");
builder.setMessage ("Hay lya chọn bên dưới để xác nhận");
builder.setIcon(android.R.drawable.ic dialog alert);
builder.setPositiveButton("Cé6", new DialogInterface.OnClickListener() { @Override public void onClick(Dialoginterface dialog, int which) { onBackPressed(); } })z builder.setNegativeButton("Khéng", new DialogInterface.OnClickListener() { @Override public void onClick(Dialoginterface dialog, int which) { } })z builder.show(); })z }
private void addEvents() {
final TextView txtvkq = (TextView) findViewById(R.id.kq);
Button So0 =(Button) findViewByld(R.id.so0);So0.setOnClickListener (new
View.OnClickListener() {@Override public void onClick(View v) { txtvkq.setText (txtvkq.getText().toString()+"0");if(dau == null) {sel Integer parseInt (txtvkq.getText().toString());} else {so2 =
Tnteger.parseTnt (txtvkq.getText().toString());} }})z
Button Sol =(Button) findViewByld(R.id.sol);Sol.setOnClickListener (new
View.OnClickListener() {@Override public void onClick(View v) { txtvkq.setText (txtvkq.getText().toString()+"1");if(dau == null) {sel Integer parseInt (txtvkq.getText().toString());} else {so2 =
Tnteger.parseTnt (txtvkq.getText().toString());} }})z
Button So2 =(Button) findViewByld(R.id.so2);So2.setOnClickListener (new
View.OnClickListener() {@Override public void onClick(View v) { txtvkq.setText (txtvkq.getText().toString()+"2");if(dau == null) {sel Integer parseInt (txtvkq.getText().toString());} else {so2 =
Tnteger.parseTnt (txtvkq.getText().toString());} }})z
Button So3 =(Button) findViewByld(R.id.so3);So3.setOnClickListener (new
View.OnClickListener() {@Override public void onClick(View v) { txtvkq.setText (txtvkq.getText ().toString()+"3");if(dau == null) {sel Integer parseInt (txtvkq.getText().toString());} else {so2 =
Integer.parselInt (txtvkq.getText().toString());} }!)z
Button So4 =(Button) findViewByld(R.id.so4);So4.setOnClickListener (new
View.OnClickListener() {@Override public void onClick(View v)
{ txtvkq.setText (txtvkq.getText ().toString()+"4");if(dau == null) {sol = Integer parseInt (txtvkq.getText().toString());} else {so2 =
Trang 8{ txtvkq.setText (txtvkq.getText ().toString()+"5");if(dau == null) {sol = Integer parseInt (txtvkq.getText().toString());} else {so2 =
Integer.parselInt (txtvkq.getText().toString());} }!)z
Button So6 =(Button) findViewByld(R.id.so6);So6.setOnClickListener (new
View.OnClickListener() {@Override public void onClick(View v)
{ txtvkq.setText (txtvkq.getText ().toString()+"6");i1f(dau == null) {sol = Integer parseInt (txtvkq.getText().toString());} else {so2 =
Tnteger.parseTnt (txtvkq.getText().toString());} }})z
Button So7 =(Button) findViewByld(R.id.so7);So7.setOnClickListener (new
View.OnClickListener() {@Override public void onClick(View v)
{ txtvkq.setText (txtvkq.getText ().toString()+"7");if(dau == null) {sol = Integer parseInt (txtvkq.getText().toString());} else {so2 =
Tnteger.parseTnt (txtvkq.getText().toString());} }})z
Button So8 =(Button) findViewByld(R.id.so8);So8.setOnClickListener (new
View.OnClickListener() {@Override public void onClick(View v)
{ txtvkq.setText (txtvkq.getText ().toString()+"8");if(dau == null) {sol = Integer parseInt (txtvkq.getText().toString());} else {so2 =
Tnteger.parseTnt (txtvkq.getText().toString());} }})z
Button So9 =(Button) findViewByld(R.id.so9);So9.setOnClickListener (new
View.OnClickListener() {@Override public void onClick(View v)
{ txtvkq.setText (txtvkq.getText ().toString()+"9");if(dau == null) {sol = Integer parseInt (txtvkq.getText().toString());} else {so2 =
Integer.parselInt (txtvkq.getText().toString());} }!)z Button Bo = (Button) findViewById(R.id.bo);
Bo.setOnClickListener (new View.OnClickListener() { @Override public void onClick(View v) { so2 =0; txtvkq.setText(""); })z
Button Cong =(Button) findViewByld(R.id.cong);
Cong setOnClickListener (new View.OnClickListener() { @Override public void onClick(View v) { dau = '+'; txtvkq.setText(""); })z
Button Tru =(Button) findViewByld(R.id.tru);
Tru setOnClickListener (new View.OnClickListener({) { @Override public void onClick(View v) { dau = '-'; txtvkq.setText(""); })z
Button Nhan =(Button) findViewByld(R.id.nhan);
Nhan.setOnClickListener (new View.OnClickListener() {
Trang 9dau = 'X!; txtvkq.setText(""); })z
Button Chia =(Button) findViewByld(R.id.chia);
Chia.setOnClickTistener (new View.OnClickTistener() { @Override public void onClick(View v) { dau = '/'; txtvkq.setText(""); })z
Button Bang =(Button) findViewByld(R.id.bang);
Bang setOnClickListener (new View.OnClickListener() { @Override public void onClick(View v) { if (dau!=null) { Integer kqne =0; switch (dau) {
case '+';:{
kqne = sol + so2; break;
} case '-'rf{
kqne = sol - so2; break;
} case 'X':{
kqne = sol * so2; break;
} case '/':f{
kqne = sol / so2;
break; } }
txtvkq.setText (kqne.toString());
dskq.add(Tnteger.toString(sol) + " " + đau + " "+
Tnteger.toString(so2) + " = " + String.valueOf(kqne)); sol = kqne;
dau = null;
adapterkqne.notifyDataSetChanged({);
Trang 10@Override
public void onClick(View v) { sol =0;
so2 =0; dau =null; txtvkq.setText(""); private void addControls() {
TabHost tabHost= (TabHost) findViewById(R.id.tabHost); tabHost.setup();
TabHost.TabSpec tabl=tabHost.newTabSpec("t1"); tabl.setindicator("Phép Tinh");
tabl.setContent (R.id.tabl); tabHost.addTab(tabl);
TabHost.TabSpec tab2=tabHost.newTabSpec("t2"); tab2.setIindicator ("History");
tab2.setContent (R.id.tab2); tabHost.addTab(tab2);
lvHistory=(ListView) findViewByld(R.id.lvHistory); dskq=new ArrayList<>();
adapterkqne= new ArrayAdapter<String> (
MainActivity.this,
android.R.layout.simple list item 1,
dskq);
lvHistory.setAdapter(adapterkqne); }
public boolean onCreateOptionsMenu (Menu menu) {
// Inflate menu tu tép tin XML
MenuTnflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_demo, menu); return true; } @Override public boolean onOptionsItemSelected(@NonNull MenulItem item) { int id = item getItemId(); if (id == R.id.menu_calculator) {
Toast.makeText (this, "day là phần máy tinh ",
Toast.LENGTH SHORT) show();
return true;
} else if (id == R.id.menu_timer) {
⁄/ Bắt đầu hoạt động bamgio
Toast.makeText (this, "đã chuyển đến phần bắm giờ ",
Trang 11try {
Intent timerIntent = new Intent(this, bamgio.class); startActivity(timerIntent);
return true; } catch (Exception e) {
Log.e("MenuSelection", "Lỗi khi bắt đầu hoạt động Timer", e);
return false; } } else { return super onOptionsitemSelected(item); } File bamgiojava package com.example.maytinhll 12; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import android.content.Intent;
import android.os.Bundle; import android.os.Handler; import android.os.SystemClock; import android.util.Log; import android.view.Menu; import android.view.MenulInflater; import android.view.Menultem; import android.view.View;
import android.widget.ArrayAdapter; import android.widget Button; import android.widget ListView; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList;
public class bamgio extends AppCompatActivity { Button btnStop, btnStart, btnPause, btnCount; TextView txtTimer;
ListView lvCount;
long 1StartTime, lPauseTime, lSystemTime = 0L; boolean isRun;
Handler handler = new Handler();
Trang 12btnStep = findViewById(R.id.btnStop); btnPause = findViewByld(R.id.btnPause); txtTimer = findViewByld(R.id.txtTimer); btnCount = findViewByld(R.id.btnCount); lvCount = findViewByld(R.id.ivCount); clickStart
clickStop (
clickPause clickCount
)z
(
)z On ()3 // Khoi tao adapter cho ListView adapter = new ArrayAdapter<> (this, android.R.layout.simple list _item_1, timeList); lvCount.setAdapter (adapter); Toolbar toolbar = findViewByld(R.id.toolbar2); setSupportActionBar (toolbar); setTitle ("Bam giờ"); } void clickStart() { btnStart.setonClickListener (new View.OnClickListener() { @Override public void onClick(View v) { if (isRun) return; isRun = true;
lStartTime = SystemClock.uptimeMillis() - lIPauseTime; // Cập nhật 1StartTime
handler.postDelayed(runnable, 0); } })z } void clickStop() { btnStop.setonClickListener (new View.OnClickListener() { @Override public void onClick(View v) { isRun = false; 1StartTime = 0; l1PauseTime = 0; lSystemTime = 0;
handler.removeCallbacks (runnable); txtTimer.setText ("0:00:000"); // Lam moi ListView
timeList.clear();
adapter.notifyDataSetChanged(); void clickPause() {
btnPause.setOnClickListener (new View.OnClickListener() {
@Override
Trang 13if (!isRun) return; isRun = false;
lPauseTime = SystemClock.uptimeMillis() - IStartTime; // C&ap nhật 1PauseTime
handler.removeCallbacks (runnable); } })z } voiqd click€eunt() { btnCount.setOnClickTistener (new View.OnClickTlistener() { @Override public void onClick(View v) { if (isRun) { String currentTime txtTimer.getText().toString(); timeList.add(currentTime) ; adapter.notifyDataSetChanged(); })z } Runnable runnable new Runnable() { @Override public void run() { if (isRun) {
ilSystemTime = SystemClock.uptimeMillis() - lStartTime;
long 1UpdateTime lPauseTime + 1SystemTime;
long secs (long) (lUpdateTime / 1000);
long mins secs / 60;
secs = secs % 60;
long milliseconds = (long) (lUpdateTime % 1000);
txtTimer.setText("" + mins + ":" + String format("%$02d", secs)
+ "i" + String format ("$03d", milliseconds) ) ))z
handler.postDelayed (this, 0);
} }
Me
public boolean onCreateOptionsMenu (Menu menu) {
// Inflate menu tu tép tin XML
MenuTnflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_demo, menu); return true;
} @Override
public boolean onOptionsItemSelected(@NonNull MenulItem item) { int id = item getItemId();
if (id == R.id.menu_timer) {
Toast.makeText (this, "đây là phần bấm gid",
Toast.LENGTH SHORT) show();
return true;
} else if (id == R.id.menu calculator) {
⁄/ Bắt đầu hoạt động bamgio
Trang 14Toast.makeText (this, "đã chuyển đến phần máy tinh ",
Toast.LENGTH SHORT) show();
try {
Intent timerIntent = new Intent(this, MainActivity.class); startActivity(timerIntent);
return true; } catch (Exception e) {
Log.e("MenuSelection", "Lỗi khi bắt đầu hoạt động Timer", e);
return false; } } else { return super onOptionsitemSelected(item); } 3.2 Code Giao dien 4 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmins: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=".MainActivity" android: orientation="vertical"> <androidx.appcompat.widget.Toolbar
android: id="@+id/toolbar"
android: layout_width="match_ parent"
android: layout _height="wrap content"
android: background="?attr/colorPrimary" android:minHeight="?attr/actionBarSize" android: theme="?attr/actionBarTheme" /> <TabHost
android: layout_width="match_ parent"
android: layout _height="match_ parent"
android:id="@+id/tabHost"> <LinearLayout
android: layout_width="match_ parent"
android: layout _height="match_ parent"
android: orientation="vertical"> <TabWidget
android: id="@android:id/tabs"
android: layout_width="match parent"
android: layout _height="wrap content" />
<FrameLayout
android: id="@android:id/tabcontent"
android: layout_width="match parent"
android: layout _height="match_parent"> <LinearLayout
android:id="@tid/tabl"
android: layout_width="match_ parent"