diff --git a/app/app/.gitignore b/app/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/app/build.gradle b/app/app/build.gradle new file mode 100644 index 0000000..406467f --- /dev/null +++ b/app/app/build.gradle @@ -0,0 +1,48 @@ +plugins { + id 'com.android.application' +} + +android { + compileSdkVersion 32 + buildToolsVersion "32.0.0" // 确保使用与编译SDK版本兼容的构建工具版本 + + defaultConfig { + applicationId "com.example.myexamproject" + minSdkVersion 22 + targetSdkVersion 32 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + + buildFeatures { + viewBinding true // 启用视图绑定 + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { + implementation 'androidx.appcompat:appcompat:1.3.0' + implementation 'com.google.android.material:material:1.4.0' + implementation 'androidx.constraintlayout:constraintlayout:2.0.4' + + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' +} + +clean { + delete 'build' // 只清理与当前构建相关的目录 +} diff --git a/app/app/proguard-rules.pro b/app/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/app/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/app/app/src/androidTest/java/com/example/myexamproject/ExampleInstrumentedTest.java b/app/app/src/androidTest/java/com/example/myexamproject/ExampleInstrumentedTest.java new file mode 100644 index 0000000..e74f69b --- /dev/null +++ b/app/app/src/androidTest/java/com/example/myexamproject/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.example.myexamproject; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("com.example.myexamproject", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/app/app/src/main/AndroidManifest.xml b/app/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..6c9e01c --- /dev/null +++ b/app/app/src/main/AndroidManifest.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/app/src/main/java/com/example/myexamproject/AddGamesActivity.java b/app/app/src/main/java/com/example/myexamproject/AddGamesActivity.java new file mode 100644 index 0000000..7c63491 --- /dev/null +++ b/app/app/src/main/java/com/example/myexamproject/AddGamesActivity.java @@ -0,0 +1,96 @@ +package com.example.myexamproject; + + + +import androidx.appcompat.app.AppCompatActivity; + +import android.os.Bundle; + +import android.text.TextUtils; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import com.example.myexamproject.bean.Game; +import com.example.myexamproject.utils.MySQLiteOpenHelper; + + +public class AddGamesActivity extends AppCompatActivity implements View.OnClickListener { + //组件定义 + private EditText etGameid; + private EditText etGamename; + private EditText etGametime; + private EditText etGamenote; + + private Button btnAdd; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_add_games); + //初始化界面 + initView(); + } + + //初始化界面 + private void initView() { + etGameid=(EditText)findViewById(R.id.et_gameid); + etGamename = (EditText) findViewById(R.id.et_gamename); + etGametime = (EditText) findViewById(R.id.et_gametime); + etGamenote = (EditText) findViewById(R.id.et_gamenote); + + btnAdd = (Button) findViewById(R.id.btn_add); + //设置按钮的点击事件 + btnAdd.setOnClickListener(this); + } + + @Override + public void onClick(View v) { + //当单击“添加”按钮时,获取添加信息 + String gameid=etGameid.getText().toString().trim(); + String gamename = etGamename.getText().toString().trim(); + String gametime = etGametime.getText().toString().trim(); + String gamenote = etGamenote.getText().toString(); + + + //检验信息是否正确 + if (TextUtils.isEmpty(gameid)) { + Toast.makeText(this, "请输入活动id", Toast.LENGTH_SHORT).show(); + return; + } + if (TextUtils.isEmpty(gamename)) { + Toast.makeText(this, "请输入活动名称", Toast.LENGTH_SHORT).show(); + return; + } + if (TextUtils.isEmpty(gametime)) { + Toast.makeText(this, "请输入活动时间", Toast.LENGTH_SHORT).show(); + return; + } + if (TextUtils.isEmpty(gamenote)) { + Toast.makeText(this, "请输入备注", Toast.LENGTH_SHORT).show(); + return; + } + + //添加信息 + Game game =new Game(); + game.gameid= gameid; + game.gamename = gamename; + game.gametime = gametime; + game.gamenote= gamenote; + + //创建数据库访问对象 + MySQLiteOpenHelper dao = new MySQLiteOpenHelper(getApplicationContext()); + dao.open(); + long result = dao.addGames(game); + + if (result > 0) { + Toast.makeText(this, "发布成功", Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(this, "发布失败", Toast.LENGTH_SHORT).show(); + } + dao.close(); + finish(); + + } +} \ No newline at end of file diff --git a/app/app/src/main/java/com/example/myexamproject/BackActivity.java b/app/app/src/main/java/com/example/myexamproject/BackActivity.java new file mode 100644 index 0000000..dade4cc --- /dev/null +++ b/app/app/src/main/java/com/example/myexamproject/BackActivity.java @@ -0,0 +1,47 @@ +package com.example.myexamproject; + + + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; + +public class BackActivity extends AppCompatActivity implements View.OnClickListener { + + private Button bt_backfalse; + private Button bt_backtrue; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_back); + + bt_backfalse = findViewById(R.id.bt_backfalse); + bt_backfalse.setOnClickListener(this); + + bt_backtrue = findViewById(R.id.bt_backtrue); + bt_backtrue.setOnClickListener(this); + + } + + @Override + public void onClick(View v) { + switch (v.getId()){ + case R.id.bt_backfalse: + Intent intent_insert = new Intent(); + intent_insert.setClass(BackActivity.this, PersonalCenterActivity.class); + startActivity(intent_insert); + break; + + case R.id.bt_backtrue: + Intent intent_query = new Intent(); + intent_query.setClass(BackActivity.this, LoginActivity.class); + startActivity(intent_query); + break; + + } + } +} \ No newline at end of file diff --git a/app/app/src/main/java/com/example/myexamproject/DeleteGamesActivity.java b/app/app/src/main/java/com/example/myexamproject/DeleteGamesActivity.java new file mode 100644 index 0000000..ad8be76 --- /dev/null +++ b/app/app/src/main/java/com/example/myexamproject/DeleteGamesActivity.java @@ -0,0 +1,85 @@ +package com.example.myexamproject; + + + +import androidx.appcompat.app.AppCompatActivity; + +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import com.example.myexamproject.bean.Game; +import com.example.myexamproject.utils.MySQLiteOpenHelper; + + +public class DeleteGamesActivity extends AppCompatActivity implements View.OnClickListener{ + + + private EditText etGameid; + private Button btnSearch; + private EditText etGamename; + private EditText etGametime; + private EditText etGamenote; + private Button btnDelete; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_delete_games); + initView(); + } + + private void initView() { + etGameid=(EditText) findViewById(R.id.et_gameid); + btnSearch=(Button) findViewById(R.id.btn_search); + etGamename=(EditText)findViewById(R.id.et_gamename); + etGametime=(EditText)findViewById(R.id.et_gametime); + etGamenote=(EditText)findViewById(R.id.et_gamenote); + btnDelete= (Button) findViewById(R.id.btn_delete); + + + btnSearch.setOnClickListener((View.OnClickListener) this); + btnDelete.setOnClickListener((View.OnClickListener) this); + } + + @Override + public void onClick(View v) + { + switch(v.getId()) + { + case R.id.btn_search: + searchOrder(); + break; + case R.id.btn_delete: + deleteOrder(); + break; + } + } + //查找借书信息 + private void searchOrder() { + String studentid=etGameid.getText().toString().trim(); + MySQLiteOpenHelper dao=new MySQLiteOpenHelper(getApplicationContext()); + dao.open(); + Game game=dao.getGames(studentid); + etGamename.setText(game.gamename); + etGametime.setText(game.gametime); + etGamenote.setText(game.gamenote); + + dao.close(); + } + private void deleteOrder() { + Game game=new Game(); + game.gameid=etGameid.getText().toString().trim(); + MySQLiteOpenHelper dao=new MySQLiteOpenHelper(getApplicationContext()); + dao.open(); + int result= dao.deletGames(game); + if(result>0) { + Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show(); + }else{ + Toast.makeText(this, "删除失败", Toast.LENGTH_SHORT).show(); + } + dao.close(); + } +} diff --git a/app/app/src/main/java/com/example/myexamproject/LoginActivity.java b/app/app/src/main/java/com/example/myexamproject/LoginActivity.java new file mode 100644 index 0000000..bac3898 --- /dev/null +++ b/app/app/src/main/java/com/example/myexamproject/LoginActivity.java @@ -0,0 +1,157 @@ +package com.example.myexamproject; + +import androidx.appcompat.app.AppCompatActivity; +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.View; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.EditText; +import android.widget.TextView; +import android.widget.Toast; + +import com.example.myexamproject.utils.MD5Utils; + +public class LoginActivity extends AppCompatActivity { + private EditText et_username; + private EditText et_pwd; + private CheckBox save_pwd; + private String userName, passWord, spPsw; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_login); + init(); + } + + private void init() { + et_username = findViewById(R.id.username); + et_pwd = findViewById(R.id.pwd); + save_pwd = findViewById(R.id.save_pwd); + + // 获取记住的账号密码 + getUserInfo(); + + // 登录方法 + Button login = findViewById(R.id.loginBtn); + login.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + getEditString(); + String md5Psw = MD5Utils.md5(passWord); + spPsw = readPsw(userName); + + if (TextUtils.isEmpty(userName)) { + Toast.makeText(LoginActivity.this, "请输入用户名", Toast.LENGTH_SHORT).show(); + return; + } else if (TextUtils.isEmpty(passWord)) { + Toast.makeText(LoginActivity.this, "请输入密码", Toast.LENGTH_SHORT).show(); + return; + } else if (md5Psw.equals(spPsw)) { + // 一致登录成功 + Toast.makeText(LoginActivity.this, "欢迎!" + userName, Toast.LENGTH_SHORT).show(); + // 保存登录状态,在界面保存登录的用户名和密码 + saveLoginInfo(userName, passWord); + saveLoginStatus(true, userName); + // 登录成功后关闭此页面进入主页 + Intent data = new Intent(); + data.putExtra("isLogin", true); + setResult(RESULT_OK, data); + LoginActivity.this.finish(); + // 跳转到下一个界面 + startActivity(new Intent(LoginActivity.this, MainActivity.class)); + return; + } else { + Toast.makeText(LoginActivity.this, "用户名或密码错误", Toast.LENGTH_SHORT).show(); + } + } + }); + + TextView tv_register = findViewById(R.id.register); + tv_register.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + // 跳转到注册界面 + Intent intent = new Intent(LoginActivity.this, RegisterActivity.class); + startActivity(intent); + LoginActivity.this.finish(); + } + }); + } + + // 获取用户名和密码 + private void getEditString() { + userName = et_username.getText().toString().trim(); + passWord = et_pwd.getText().toString().trim(); + } + + // 保存登录信息 + private void saveLoginInfo(String userName, String passWord) { + boolean CheckBoxLogin = save_pwd.isChecked(); + SharedPreferences sp = getSharedPreferences("userInfo", MODE_PRIVATE); + SharedPreferences.Editor editor = sp.edit(); + // 设置参数 + if (CheckBoxLogin) { + editor.putString("username", userName); + editor.putString("password", passWord); + editor.putBoolean("checkboxBoolean", true); + editor.commit(); + } else { + editor.putString("username", null); + editor.putString("password", null); + editor.putBoolean("checkboxBoolean", false); + editor.commit(); + } + } + + // 从已经存入的对象中读取密码 + private String readPsw(String userName) { + SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE); + return sp.getString(userName, ""); + } + + // 保存登录状态 + private void saveLoginStatus(boolean status, String userName) { + SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE); + SharedPreferences.Editor editor = sp.edit(); + editor.putBoolean("isLogin", status); + editor.putString("loginUserName", userName); + editor.commit(); + } + + // 返回注册成功数据 + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (data != null) { + String userName = data.getStringExtra("userName"); + if (!TextUtils.isEmpty(userName)) { + et_username.setText(userName); + et_username.setSelection(userName.length()); + } + } + } + + // 获得用户已注册的信息 + private void getUserInfo() { + SharedPreferences sp = this.getSharedPreferences("userInfo", Context.MODE_PRIVATE); + if (sp.getBoolean("checkboxBoolean", false)) { + et_username.setText(sp.getString("username", null)); + et_pwd.setText(sp.getString("password", null)); + save_pwd.setChecked(true); + } else { + et_username.setText(sp.getString("username", userName)); + et_pwd.setText(sp.getString("password", passWord)); + save_pwd.setChecked(false); + } + } + + @Override + public void onBackPressed() { + LoginActivity.this.finish(); + } +} diff --git a/app/app/src/main/java/com/example/myexamproject/MainActivity.java b/app/app/src/main/java/com/example/myexamproject/MainActivity.java new file mode 100644 index 0000000..8dedb28 --- /dev/null +++ b/app/app/src/main/java/com/example/myexamproject/MainActivity.java @@ -0,0 +1,65 @@ +package com.example.myexamproject; + +import androidx.appcompat.app.AppCompatActivity; +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.ImageButton; +import android.widget.TextView; + +public class MainActivity extends AppCompatActivity implements View.OnClickListener { + private Button bt_updatee; + private Button bt_deletee; + private Button bt_read; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + // 获取按钮实例 + bt_updatee = findViewById(R.id.bt_updatee); + bt_deletee = findViewById(R.id.bt_deletee); + bt_read = findViewById(R.id.bt_read); + + // 设置按钮的点击监听器 + bt_updatee.setOnClickListener(this); + bt_deletee.setOnClickListener(this); + bt_read.setOnClickListener(this); + + // 获取个人中心按钮实例 + ImageButton IbPersonalCenter = findViewById(R.id.bt_personal); + IbPersonalCenter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + startActivity(new Intent(MainActivity.this, PersonalCenterActivity.class)); + } + }); + + // 获取添加按钮实例 + ImageButton IbAdd = findViewById(R.id.bt_add); + IbAdd.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + startActivity(new Intent(MainActivity.this, AddGamesActivity.class)); + } + }); + } + + @Override + public void onClick(View v) { + // 通过switch方法跳转到相应界面 + switch (v.getId()) { + case R.id.bt_updatee: + startActivity(new Intent(MainActivity.this, UpdateGamesActivity.class)); + break; + case R.id.bt_deletee: + startActivity(new Intent(MainActivity.this, DeleteGamesActivity.class)); + break; + case R.id.bt_read: + startActivity(new Intent(MainActivity.this, QueryGamesActivity.class)); + break; + } + } +} diff --git a/app/app/src/main/java/com/example/myexamproject/MyIFActivity.java b/app/app/src/main/java/com/example/myexamproject/MyIFActivity.java new file mode 100644 index 0000000..89075a8 --- /dev/null +++ b/app/app/src/main/java/com/example/myexamproject/MyIFActivity.java @@ -0,0 +1,77 @@ +package com.example.myexamproject; + + + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; + +import androidx.appcompat.app.AppCompatActivity; + +import com.example.myexamproject.bean.Student; +import com.example.myexamproject.utils.StudentDbHelper; + +import java.util.LinkedList; + + +/** + * 我的个人信息活动类 + */ +public class MyIFActivity extends AppCompatActivity { + + TextView tvStuName,tvStuMajor,tvStuPhone,tvStuQq,tvStuAddress; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_my_ifactivity); + Button btnBack = findViewById(R.id.btn_back); + //返回点击事件,销毁当前界面 + btnBack.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + + final TextView tvUserNumber = findViewById(R.id.tv_stu_number); + tvUserNumber.setText(this.getIntent().getStringExtra("stu_number1")); + tvStuName = findViewById(R.id.tv_stu_name); + tvStuMajor = findViewById(R.id.tv_stu_major); + tvStuPhone = findViewById(R.id.tv_stu_phone); + tvStuQq = findViewById(R.id.tv_stu_qq); + tvStuAddress = findViewById(R.id.tv_stu_address); + StudentDbHelper dbHelper = new StudentDbHelper(getApplicationContext(),StudentDbHelper.DB_NAME,null,1); + LinkedList students = dbHelper.readStudents(tvUserNumber.getText().toString()); + if(students != null) { + for(Student student : students) { + tvStuName.setText(student.getStuName()); + tvStuMajor.setText(student.getStuMajor()); + tvStuPhone.setText(student.getStuPhone()); + tvStuQq.setText(student.getStuQq()); + tvStuAddress.setText(student.getStuAddress()); + } + }else { + tvStuName.setText("暂未填写"); + tvStuMajor.setText("暂未填写"); + tvStuPhone.setText("暂未填写"); + tvStuQq.setText("暂未填写"); + tvStuAddress.setText("暂未填写"); + } + Button btnModifyInfo = findViewById(R.id.btn_modify_info); + //跳转到修改用户信息界面 + btnModifyInfo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(getApplicationContext(),UpdateIFActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("stu_number2",tvUserNumber.getText().toString()); + intent.putExtras(bundle); + startActivity(intent); + } + }); + + } +} diff --git a/app/app/src/main/java/com/example/myexamproject/PersonalCenterActivity.java b/app/app/src/main/java/com/example/myexamproject/PersonalCenterActivity.java new file mode 100644 index 0000000..5c64efd --- /dev/null +++ b/app/app/src/main/java/com/example/myexamproject/PersonalCenterActivity.java @@ -0,0 +1,60 @@ +package com.example.myexamproject; + + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; + +import androidx.appcompat.app.AppCompatActivity; + +public class PersonalCenterActivity extends AppCompatActivity implements View.OnClickListener { + + TextView TvStuNumber; + private Button btn_logout; + + @Override + protected void onCreate(final Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_personal_center); + btn_logout = findViewById(R.id.btn_logout); + btn_logout.setOnClickListener(this); + //取出登录时的登录名 + TvStuNumber = findViewById(R.id.tv_student_number); + String StuNumber = this.getIntent().getStringExtra("username1"); + TvStuNumber.setText(StuNumber); + //返回主界面 + Button btnBack = findViewById(R.id.bt_back); + btnBack.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + + //点击个人信息按钮 + Button btnUserInfo = findViewById(R.id.btn_user_info); + btnUserInfo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(getApplicationContext(),MyIFActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("stu_number1",TvStuNumber.getText().toString()); + intent.putExtras(bundle); + startActivity(intent); + } + }); + } + + @Override + public void onClick(View v) { + switch (v.getId()){ + case R.id.btn_logout: + Intent intent_insert = new Intent(); + intent_insert.setClass(PersonalCenterActivity.this, BackActivity.class); + startActivity(intent_insert); + break; + } + } +} diff --git a/app/app/src/main/java/com/example/myexamproject/QueryGamesActivity.java b/app/app/src/main/java/com/example/myexamproject/QueryGamesActivity.java new file mode 100644 index 0000000..6ccbd14 --- /dev/null +++ b/app/app/src/main/java/com/example/myexamproject/QueryGamesActivity.java @@ -0,0 +1,39 @@ +package com.example.myexamproject; + + + +import androidx.appcompat.app.AppCompatActivity; +import android.os.Bundle; +import android.widget.ListView; +import android.widget.SimpleAdapter; + +import com.example.myexamproject.utils.MySQLiteOpenHelper; + +import java.util.List; +import java.util.Map; + +public class QueryGamesActivity extends AppCompatActivity { + //定义组件 + ListView listView=null; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_query_games); + setTitle("查看记录"); + //初始化界面 + initView(); + } + + private void initView() { + MySQLiteOpenHelper dao=new MySQLiteOpenHelper(getApplicationContext()); + dao.open(); + List> mOrderData=dao.getAllGames(); + listView=(ListView)findViewById(R.id.lst_orders); + String[] from={"gameid","gamename","gametime","gamenote"}; + int[] to={R.id.tv_lst_gameid,R.id.tv_lst_gamename,R.id.tv_lst_gametime,R.id.tv_lst_gamenote}; + SimpleAdapter listItemAdapter=new SimpleAdapter(QueryGamesActivity.this,mOrderData,R.layout.item_list,from,to); + listView.setAdapter(listItemAdapter); + dao.close(); + } +} \ No newline at end of file diff --git a/app/app/src/main/java/com/example/myexamproject/RegisterActivity.java b/app/app/src/main/java/com/example/myexamproject/RegisterActivity.java new file mode 100644 index 0000000..f37c586 --- /dev/null +++ b/app/app/src/main/java/com/example/myexamproject/RegisterActivity.java @@ -0,0 +1,101 @@ +package com.example.myexamproject; + +import androidx.appcompat.app.AppCompatActivity; +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import com.example.myexamproject.utils.MD5Utils; + + +public class RegisterActivity extends AppCompatActivity { + //声明所有按钮 + private EditText et_username,et_pwd,et_pwd_sure; + private Button register; + private String userName,passWord,passWord_sure; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_register); + init(); + } + public void init(){ + //给按钮匹配id + et_username = (EditText)findViewById(R.id.username); + et_pwd = (EditText)findViewById(R.id.pwd); + et_pwd_sure = (EditText)findViewById(R.id.pwd2); + register = (Button)findViewById(R.id.registerBtn); + register.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + getEditString(); + //提示输入信息 + if(TextUtils.isEmpty(userName)){ + Toast.makeText(RegisterActivity.this, "请输入用户名", Toast.LENGTH_SHORT).show(); + return; + }else if(TextUtils.isEmpty(passWord)){ + Toast.makeText(RegisterActivity.this, "请输入密码", Toast.LENGTH_SHORT).show(); + return; + }else if(TextUtils.isEmpty(passWord_sure)){ + Toast.makeText(RegisterActivity.this, "请再次输入密码", Toast.LENGTH_SHORT).show(); + return; + }else if(!passWord.equals(passWord_sure)){ + Toast.makeText(RegisterActivity.this, "输入两次的密码不一样", Toast.LENGTH_SHORT).show(); + return; + //判断用户名是否已被注册 + }else if(isExistUserName(userName)){ + Toast.makeText(RegisterActivity.this, "此账户名已经存在", Toast.LENGTH_SHORT).show(); + return; + }else{ + Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_SHORT).show(); + //把保存账号密码 + saveRegisterInfo(userName, passWord); + Intent data = new Intent(); + data.putExtra("userName", userName); + setResult(RESULT_OK, data); + //跳转到登录界面中 + Intent intent = new Intent(RegisterActivity.this,LoginActivity.class); + startActivity(intent); + RegisterActivity.this.finish(); + } + } + }); + } + //获得已输入信息 + private void getEditString(){ + userName = et_username.getText().toString().trim(); + passWord = et_pwd.getText().toString().trim(); + passWord_sure = et_pwd_sure.getText().toString().trim(); + } + //判断输入的用户名是否已经存在 + private boolean isExistUserName(String userName){ + boolean has_userName = false; + SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE); + String spPsw = sp.getString(userName, ""); + //判断密码是否为空,不空则注册成功 + if(!TextUtils.isEmpty(spPsw)) { + has_userName=true; + } + return has_userName; + } + //将用户名和密码保存到sp中 + private void saveRegisterInfo(String userName,String psw){ + String md5Psw = MD5Utils.md5(psw);//把密码用MD5加密 + SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE); + SharedPreferences.Editor editor = sp.edit(); + editor.putString(userName, md5Psw); + editor.commit(); + } + //跳转回登录界面 + public void onBackPressed() { + Intent intent = new Intent(); + intent.setClass(RegisterActivity.this,LoginActivity.class); + startActivity(intent); + RegisterActivity.this.finish(); + } +} \ No newline at end of file diff --git a/app/app/src/main/java/com/example/myexamproject/UpdateGamesActivity.java b/app/app/src/main/java/com/example/myexamproject/UpdateGamesActivity.java new file mode 100644 index 0000000..9e019d5 --- /dev/null +++ b/app/app/src/main/java/com/example/myexamproject/UpdateGamesActivity.java @@ -0,0 +1,83 @@ +package com.example.myexamproject; + +import androidx.appcompat.app.AppCompatActivity; + +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import com.example.myexamproject.bean.Game; +import com.example.myexamproject.utils.MySQLiteOpenHelper; + +public class UpdateGamesActivity extends AppCompatActivity implements View.OnClickListener { + private EditText etGameid; + private EditText etGamename; + private EditText etGametime; + private EditText etGamenote; + private Button btnSearch; + private Button btnEdit; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_update_games); + initView(); + } + + private void initView() { + etGameid = findViewById(R.id.et_gameid); + btnSearch = findViewById(R.id.btn_search); + etGamename = findViewById(R.id.et_gamename); + etGametime = findViewById(R.id.et_gametime); + etGamenote = findViewById(R.id.et_gamenote); + btnEdit = findViewById(R.id.btn_edit); + + btnSearch.setOnClickListener(this); + btnEdit.setOnClickListener(this); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.btn_search: + searchOrder(); + break; + case R.id.btn_edit: + updateOrder(); + break; + } + } + + private void searchOrder() { + String gameid = etGameid.getText().toString().trim(); + MySQLiteOpenHelper dao = new MySQLiteOpenHelper(getApplicationContext()); + dao.open(); + Game game = dao.getGames(gameid); + if (game != null) { + etGamename.setText(game.gamename); + etGametime.setText(game.gametime); + etGamenote.setText(game.gamenote); + } + dao.close(); + } + + private void updateOrder() { + Game game = new Game(); + game.gameid = etGameid.getText().toString().trim(); + game.gamename = etGamename.getText().toString().trim(); + game.gametime = etGametime.getText().toString().trim(); + game.gamenote = etGamenote.getText().toString().trim(); + + MySQLiteOpenHelper dao = new MySQLiteOpenHelper(getApplicationContext()); + dao.open(); + long result = dao.updateGames(game); + if (result > 0) { + Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(this, "修改失败", Toast.LENGTH_SHORT).show(); + } + dao.close(); + } +} diff --git a/app/app/src/main/java/com/example/myexamproject/UpdateIFActivity.java b/app/app/src/main/java/com/example/myexamproject/UpdateIFActivity.java new file mode 100644 index 0000000..2190a08 --- /dev/null +++ b/app/app/src/main/java/com/example/myexamproject/UpdateIFActivity.java @@ -0,0 +1,103 @@ +package com.example.myexamproject; + +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import com.example.myexamproject.bean.Student; +import com.example.myexamproject.utils.StudentDbHelper; + +import java.util.LinkedList; + +/** + * 修改个人信息Activity类 + */ +public class UpdateIFActivity extends AppCompatActivity { + private EditText etStuName, etMajor, etPhone, etQq, etAddress; + private TextView tvStuNumber; + private StudentDbHelper dbHelper; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_update_ifactivity); + tvStuNumber = findViewById(R.id.tv_stu_number); + tvStuNumber.setText(getIntent().getStringExtra("stu_number2")); + etStuName = findViewById(R.id.et_stu_name); + etMajor = findViewById(R.id.et_stu_major); + etPhone = findViewById(R.id.et_stu_phone); + etQq = findViewById(R.id.et_stu_qq); + etAddress = findViewById(R.id.et_stu_address); + dbHelper = new StudentDbHelper(getApplicationContext(), StudentDbHelper.DB_NAME, null, 1); + LinkedList students = dbHelper.readStudents(tvStuNumber.getText().toString()); + if (students != null) { + for (Student student : students) { + etStuName.setText(student.getStuName()); + etMajor.setText(student.getStuMajor()); + etPhone.setText(student.getStuPhone()); + etQq.setText(student.getStuQq()); + etAddress.setText(student.getStuAddress()); + } + } + Button btnBack = findViewById(R.id.btn_back); + btnBack.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + Button btnSaveInfo = findViewById(R.id.btn_save_info); + btnSaveInfo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (CheckInput()) { + Student student = new Student(); + student.setStuNumber(tvStuNumber.getText().toString()); + student.setStuName(etStuName.getText().toString()); + student.setStuMajor(etMajor.getText().toString()); + student.setStuPhone(etPhone.getText().toString()); + student.setStuQq(etQq.getText().toString()); + student.setStuAddress(etAddress.getText().toString()); + dbHelper.saveStudent(student); + Toast.makeText(getApplicationContext(), "用户信息保存成功!", Toast.LENGTH_SHORT).show(); + finish(); // 销毁当前界面 + } + } + }); + } + + // 检查输入是否为空 + private boolean CheckInput() { + String stuName = etStuName.getText().toString().trim(); + String stuMajor = etMajor.getText().toString().trim(); + String stuPhone = etPhone.getText().toString().trim(); + String stuQq = etQq.getText().toString().trim(); + String stuAddress = etAddress.getText().toString().trim(); + if (stuName.isEmpty()) { + Toast.makeText(this, "姓名不能为空!", Toast.LENGTH_SHORT).show(); + return false; + } + if (stuMajor.isEmpty()) { + Toast.makeText(this, "性别不能为空!", Toast.LENGTH_SHORT).show(); + return false; + } + if (stuPhone.isEmpty()) { + Toast.makeText(this, "联系方式不能为空!", Toast.LENGTH_SHORT).show(); + return false; + } + if (stuQq.isEmpty()) { + Toast.makeText(this, "QQ号不能为空!", Toast.LENGTH_SHORT).show(); + return false; + } + if (stuAddress.isEmpty()) { + Toast.makeText(this, "地址不能为空!", Toast.LENGTH_SHORT).show(); + return false; + } + return true; + } +} diff --git a/app/app/src/main/java/com/example/myexamproject/WelcomeActivity.java b/app/app/src/main/java/com/example/myexamproject/WelcomeActivity.java new file mode 100644 index 0000000..eb48867 --- /dev/null +++ b/app/app/src/main/java/com/example/myexamproject/WelcomeActivity.java @@ -0,0 +1,32 @@ +package com.example.myexamproject; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.view.Window; + +public class WelcomeActivity extends AppCompatActivity { + private static final int DELAY_MILLIS = 3000; // 3秒的延迟 + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + requestWindowFeature(Window.FEATURE_NO_TITLE); // 隐藏标题栏 + setContentView(R.layout.activity_welcome); + + // 创建一个Handler来处理延迟跳转 + final Handler handler = new Handler(); + handler.postDelayed(new Runnable() { + @Override + public void run() { + // 跳转到LoginActivity + Intent intent = new Intent(WelcomeActivity.this, LoginActivity.class); + startActivity(intent); + // 关闭当前活动 + WelcomeActivity.this.finish(); + } + }, DELAY_MILLIS); + } +} diff --git a/app/app/src/main/java/com/example/myexamproject/bean/Game.java b/app/app/src/main/java/com/example/myexamproject/bean/Game.java new file mode 100644 index 0000000..245cd2f --- /dev/null +++ b/app/app/src/main/java/com/example/myexamproject/bean/Game.java @@ -0,0 +1,8 @@ +package com.example.myexamproject.bean; + +public class Game { + public String gamename; + public String gametime; + public String gamenote; + public String gameid; +} diff --git a/app/app/src/main/java/com/example/myexamproject/bean/Student.java b/app/app/src/main/java/com/example/myexamproject/bean/Student.java new file mode 100644 index 0000000..a9a28c8 --- /dev/null +++ b/app/app/src/main/java/com/example/myexamproject/bean/Student.java @@ -0,0 +1,60 @@ +package com.example.myexamproject.bean; + + +public class Student { + + private String stuNumber; + private String stuName; + private String stuMajor; + private String stuPhone; + private String stuQq; + private String stuAddress; + + public String getStuNumber() { + return stuNumber; + } + + public void setStuNumber(String stuNumber) { + this.stuNumber = stuNumber; + } + + public String getStuName() { + return stuName; + } + + public void setStuName(String stuName) { + this.stuName = stuName; + } + + public String getStuMajor() { + return stuMajor; + } + + public void setStuMajor(String stuMajor) { + this.stuMajor = stuMajor; + } + + public String getStuPhone() { + return stuPhone; + } + + public void setStuPhone(String stuPhone) { + this.stuPhone = stuPhone; + } + + public String getStuQq() { + return stuQq; + } + + public void setStuQq(String stuQq) { + this.stuQq = stuQq; + } + + public String getStuAddress() { + return stuAddress; + } + + public void setStuAddress(String stuAddress) { + this.stuAddress = stuAddress; + } +} diff --git a/app/app/src/main/java/com/example/myexamproject/utils/MD5Utils.java b/app/app/src/main/java/com/example/myexamproject/utils/MD5Utils.java new file mode 100644 index 0000000..fd4cdee --- /dev/null +++ b/app/app/src/main/java/com/example/myexamproject/utils/MD5Utils.java @@ -0,0 +1,33 @@ +package com.example.myexamproject.utils; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public class MD5Utils { + //md5 加密算法 + public static String md5(String text) { + MessageDigest digest = null; + try { + digest = MessageDigest.getInstance("md5"); + byte[] result = digest.digest(text.getBytes()); + //创建StringBuilder对象 然后建议StringBuffer,安全性高 + StringBuffer sb = new StringBuffer(); + // for 循环数组byte[] result; + for (byte b : result){ + int number = b & 0xff; + // number值 转换 字符串 Integer.toHexString( ); + String hex = Integer.toHexString(number); + if (hex.length() == 1){ + sb.append("0"+hex); + }else { + sb.append(hex); + } + } + return sb.toString(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + //发送异常return空字符串 + return ""; + } + } +} \ No newline at end of file diff --git a/app/app/src/main/java/com/example/myexamproject/utils/MyDBHelper.java b/app/app/src/main/java/com/example/myexamproject/utils/MyDBHelper.java new file mode 100644 index 0000000..28b6164 --- /dev/null +++ b/app/app/src/main/java/com/example/myexamproject/utils/MyDBHelper.java @@ -0,0 +1,25 @@ +package com.example.myexamproject.utils; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + +public class MyDBHelper extends SQLiteOpenHelper { + //常量定义 + public static final String name = "db_game1.db"; + public static final int DB_VERSION = 1; + //创建表 + public static final String CREATE_USERDATA1 = "create table tb_Game(gameid char(10)primary key,gamename varchar(20),gametime varchar(20),gamenote varchar(20))"; + public MyDBHelper(Context context) { + super(context, name, null, DB_VERSION); + } + @Override + public void onCreate(SQLiteDatabase db) { + db.execSQL(CREATE_USERDATA1); + db.execSQL("insert into tb_Game(gameid,gamename,gametime,gamenote)Values('111111','篮球赛','2024.6.1','无')"); + + } + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + } +} \ No newline at end of file diff --git a/app/app/src/main/java/com/example/myexamproject/utils/MySQLiteOpenHelper.java b/app/app/src/main/java/com/example/myexamproject/utils/MySQLiteOpenHelper.java new file mode 100644 index 0000000..1d01aa4 --- /dev/null +++ b/app/app/src/main/java/com/example/myexamproject/utils/MySQLiteOpenHelper.java @@ -0,0 +1,114 @@ +package com.example.myexamproject.utils; + + + +import android.annotation.SuppressLint; +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteException; + + +import com.example.myexamproject.bean.Game; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +public class MySQLiteOpenHelper { + + private Context context; + private MyDBHelper dbHelper; + private SQLiteDatabase db; + + //构造函数 + public MySQLiteOpenHelper(Context context) { + this.context = context; + } + + //打开数据库方法 + public void open() throws SQLiteException { + dbHelper = new MyDBHelper(context); + try { + db = dbHelper.getWritableDatabase(); + } catch (SQLiteException ex) { + db = dbHelper.getReadableDatabase(); + } + } + + //关闭数据库方法 + public void close() { + if (db != null) { + db.close(); + db = null; + } + } + + + //添加发布信息内容 + public long addGames(Game game) { + // 创建ContentValues对象 + ContentValues values = new ContentValues(); + // 向该对象中插入值 + values.put("gameid", game.gameid); + values.put("gamename", game.gamename); + values.put("gametime", game.gametime); + values.put("gamenote", game.gamenote); + + // 通过insert()方法插入数据库中 + return db.insert("tb_Game", null, values); + } + + //删除发布信息 + public int deletGames(Game game) { + return db.delete("tb_Game", "gameid=?", new String[]{String.valueOf(game.gameid)}); + } + + //修改发布信息 + public int updateGames(Game game) { + ContentValues value = new ContentValues(); + value.put("gamename", game.gamename); + value.put("gametime", game.gametime); + value.put("gamenote", game.gamenote); + return db.update("tb_Game", value, "gameid=?", new String[]{String.valueOf(game.gameid)}); + } + + //根据游戏id查找以发布内容 + @SuppressLint("Range") + public Game getGames(String gameid) { + Cursor cursor = db.query("tb_Game", null, "gameid=?", new String[]{gameid}, null, null, null); + Game game = new Game(); + while (cursor.moveToNext()) { + game.gameid = cursor.getString(cursor.getColumnIndex("gameid")); + game.gamename = cursor.getString(cursor.getColumnIndex("gamename")); + game.gametime = cursor.getString(cursor.getColumnIndex("gametime")); + game.gamenote = cursor.getString(cursor.getColumnIndex("gamenote")); + + } + return game; + } + + //查找所有发布信息 + @SuppressLint("Range") + public ArrayList> getAllGames() { + ArrayList> listGames = new ArrayList>(); + Cursor cursor = db.query("tb_Game", null, null, null, null, null,null); + + int resultCounts = cursor.getCount(); + if (resultCounts == 0 ) { + return null; + } else { + while (cursor.moveToNext()) { + Map map = new HashMap(); + map.put("gameid", cursor.getString(cursor.getColumnIndex("gameid"))); + map.put("gamename", cursor.getString(cursor.getColumnIndex("gamename"))); + map.put("gametime", cursor.getString(cursor.getColumnIndex("gametime"))); + map.put("gamenote", cursor.getString(cursor.getColumnIndex("gamenote"))); + + listGames.add(map); + } + return listGames; + } + } +} \ No newline at end of file diff --git a/app/app/src/main/java/com/example/myexamproject/utils/StudentDbHelper.java b/app/app/src/main/java/com/example/myexamproject/utils/StudentDbHelper.java new file mode 100644 index 0000000..6bb086c --- /dev/null +++ b/app/app/src/main/java/com/example/myexamproject/utils/StudentDbHelper.java @@ -0,0 +1,87 @@ +package com.example.myexamproject.utils; + + + +import android.annotation.SuppressLint; +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + + +import com.example.myexamproject.bean.Student; + +import java.util.LinkedList; + + +public class StudentDbHelper extends SQLiteOpenHelper { + + //定义学生表 + public static final String DB_NAME = "tb_student"; + //创建表 + private static final String CREATE_STUDENT_DB = "create table tb_student(" + + "id integer primary key autoincrement," + + "stuNumber text," + + "stuName text," + + "stuMajor text," + + "stuPhone text," + + "stuQq text," + + "stuAddress text)"; + + public StudentDbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { + super(context, name, factory, version); + } + + @Override + public void onCreate(SQLiteDatabase db) { + db.execSQL(CREATE_STUDENT_DB); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + + } + + //保存学生信息 + public void saveStudent(Student student) { + SQLiteDatabase db = this.getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put("stuNumber",student.getStuNumber()); + values.put("stuName",student.getStuName()); + values.put("stuMajor",student.getStuMajor()); + values.put("stuPhone",student.getStuPhone()); + values.put("stuQq",student.getStuQq()); + values.put("stuAddress",student.getStuAddress()); + db.insert(DB_NAME,null,values); + values.clear(); + } + + //通过学号来读取信息 + @SuppressLint("Range") + public LinkedList readStudents(String stuNumber) { + LinkedList students = new LinkedList<>(); + SQLiteDatabase db = this.getWritableDatabase(); + Cursor cursor = db.rawQuery("select * from tb_student where stuNumber=?",new String[]{stuNumber}); + if(cursor.moveToFirst()) { + do { + String stuName = cursor.getString(cursor.getColumnIndex("stuName")); + String stuMajor = cursor.getString(cursor.getColumnIndex("stuMajor")); + String stuPhone = cursor.getString(cursor.getColumnIndex("stuPhone")); + String stuQq = cursor.getString(cursor.getColumnIndex("stuQq")); + String stuAddress = cursor.getString(cursor.getColumnIndex("stuAddress")); + Student student = new Student(); + student.setStuName(stuName); + student.setStuMajor(stuMajor); + student.setStuPhone(stuPhone); + student.setStuQq(stuQq); + student.setStuAddress(stuAddress); + students.add(student); + }while (cursor.moveToNext()); + } + cursor.close(); + return students; + } + +} + diff --git a/app/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/app/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/app/src/main/res/drawable/add.png b/app/app/src/main/res/drawable/add.png new file mode 100644 index 0000000..3ab5a60 Binary files /dev/null and b/app/app/src/main/res/drawable/add.png differ diff --git a/app/app/src/main/res/drawable/back.png b/app/app/src/main/res/drawable/back.png new file mode 100644 index 0000000..1e66b12 Binary files /dev/null and b/app/app/src/main/res/drawable/back.png differ diff --git a/app/app/src/main/res/drawable/bg.jpeg b/app/app/src/main/res/drawable/bg.jpeg new file mode 100644 index 0000000..cb08b8c Binary files /dev/null and b/app/app/src/main/res/drawable/bg.jpeg differ diff --git a/app/app/src/main/res/drawable/btn_bg_selector.xml b/app/app/src/main/res/drawable/btn_bg_selector.xml new file mode 100644 index 0000000..5fad013 --- /dev/null +++ b/app/app/src/main/res/drawable/btn_bg_selector.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/app/src/main/res/drawable/btn_selector.xml b/app/app/src/main/res/drawable/btn_selector.xml new file mode 100644 index 0000000..0c0429d --- /dev/null +++ b/app/app/src/main/res/drawable/btn_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/app/src/main/res/drawable/button_style.xml b/app/app/src/main/res/drawable/button_style.xml new file mode 100644 index 0000000..369e565 --- /dev/null +++ b/app/app/src/main/res/drawable/button_style.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/app/src/main/res/drawable/edit_text.xml b/app/app/src/main/res/drawable/edit_text.xml new file mode 100644 index 0000000..dd43c4f --- /dev/null +++ b/app/app/src/main/res/drawable/edit_text.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/app/src/main/res/drawable/edit_text_bg.xml b/app/app/src/main/res/drawable/edit_text_bg.xml new file mode 100644 index 0000000..50986ab --- /dev/null +++ b/app/app/src/main/res/drawable/edit_text_bg.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/app/src/main/res/drawable/editext_selector.xml b/app/app/src/main/res/drawable/editext_selector.xml new file mode 100644 index 0000000..026b164 --- /dev/null +++ b/app/app/src/main/res/drawable/editext_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/app/src/main/res/drawable/function.png b/app/app/src/main/res/drawable/function.png new file mode 100644 index 0000000..50e48c3 Binary files /dev/null and b/app/app/src/main/res/drawable/function.png differ diff --git a/app/app/src/main/res/drawable/gender.png b/app/app/src/main/res/drawable/gender.png new file mode 100644 index 0000000..4952818 Binary files /dev/null and b/app/app/src/main/res/drawable/gender.png differ diff --git a/app/app/src/main/res/drawable/hobby.png b/app/app/src/main/res/drawable/hobby.png new file mode 100644 index 0000000..e3eff12 Binary files /dev/null and b/app/app/src/main/res/drawable/hobby.png differ diff --git a/app/app/src/main/res/drawable/ic_launcher_background.xml b/app/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/app/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/app/src/main/res/drawable/id.png b/app/app/src/main/res/drawable/id.png new file mode 100644 index 0000000..8dfd22a Binary files /dev/null and b/app/app/src/main/res/drawable/id.png differ diff --git a/app/app/src/main/res/drawable/isbn.png b/app/app/src/main/res/drawable/isbn.png new file mode 100644 index 0000000..3431f2e Binary files /dev/null and b/app/app/src/main/res/drawable/isbn.png differ diff --git a/app/app/src/main/res/drawable/isbn2.png b/app/app/src/main/res/drawable/isbn2.png new file mode 100644 index 0000000..3183b7e Binary files /dev/null and b/app/app/src/main/res/drawable/isbn2.png differ diff --git a/app/app/src/main/res/drawable/key.png b/app/app/src/main/res/drawable/key.png new file mode 100644 index 0000000..dc755bc Binary files /dev/null and b/app/app/src/main/res/drawable/key.png differ diff --git a/app/app/src/main/res/drawable/logo2.png b/app/app/src/main/res/drawable/logo2.png new file mode 100644 index 0000000..4d1ea54 Binary files /dev/null and b/app/app/src/main/res/drawable/logo2.png differ diff --git a/app/app/src/main/res/drawable/major.png b/app/app/src/main/res/drawable/major.png new file mode 100644 index 0000000..3e34f95 Binary files /dev/null and b/app/app/src/main/res/drawable/major.png differ diff --git a/app/app/src/main/res/drawable/manager.png b/app/app/src/main/res/drawable/manager.png new file mode 100644 index 0000000..4ec1b52 Binary files /dev/null and b/app/app/src/main/res/drawable/manager.png differ diff --git a/app/app/src/main/res/drawable/name.png b/app/app/src/main/res/drawable/name.png new file mode 100644 index 0000000..d68f585 Binary files /dev/null and b/app/app/src/main/res/drawable/name.png differ diff --git a/app/app/src/main/res/drawable/password.png b/app/app/src/main/res/drawable/password.png new file mode 100644 index 0000000..7c51ba6 Binary files /dev/null and b/app/app/src/main/res/drawable/password.png differ diff --git a/app/app/src/main/res/drawable/personal.png b/app/app/src/main/res/drawable/personal.png new file mode 100644 index 0000000..b16b291 Binary files /dev/null and b/app/app/src/main/res/drawable/personal.png differ diff --git a/app/app/src/main/res/drawable/pg.png b/app/app/src/main/res/drawable/pg.png new file mode 100644 index 0000000..a2f2acd Binary files /dev/null and b/app/app/src/main/res/drawable/pg.png differ diff --git a/app/app/src/main/res/drawable/phone.png b/app/app/src/main/res/drawable/phone.png new file mode 100644 index 0000000..3963d72 Binary files /dev/null and b/app/app/src/main/res/drawable/phone.png differ diff --git a/app/app/src/main/res/drawable/qq.png b/app/app/src/main/res/drawable/qq.png new file mode 100644 index 0000000..79075ae Binary files /dev/null and b/app/app/src/main/res/drawable/qq.png differ diff --git a/app/app/src/main/res/drawable/register.png b/app/app/src/main/res/drawable/register.png new file mode 100644 index 0000000..4794d3d Binary files /dev/null and b/app/app/src/main/res/drawable/register.png differ diff --git a/app/app/src/main/res/drawable/shape_btn_normal.xml b/app/app/src/main/res/drawable/shape_btn_normal.xml new file mode 100644 index 0000000..c4d42ae --- /dev/null +++ b/app/app/src/main/res/drawable/shape_btn_normal.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/app/src/main/res/drawable/shape_btn_pressed.xml b/app/app/src/main/res/drawable/shape_btn_pressed.xml new file mode 100644 index 0000000..c4d42ae --- /dev/null +++ b/app/app/src/main/res/drawable/shape_btn_pressed.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/app/src/main/res/drawable/shape_edit_focus.xml b/app/app/src/main/res/drawable/shape_edit_focus.xml new file mode 100644 index 0000000..f419698 --- /dev/null +++ b/app/app/src/main/res/drawable/shape_edit_focus.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/app/src/main/res/drawable/shape_edit_normal.xml b/app/app/src/main/res/drawable/shape_edit_normal.xml new file mode 100644 index 0000000..82b8c55 --- /dev/null +++ b/app/app/src/main/res/drawable/shape_edit_normal.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/app/src/main/res/drawable/tubiao.png b/app/app/src/main/res/drawable/tubiao.png new file mode 100644 index 0000000..60507d6 Binary files /dev/null and b/app/app/src/main/res/drawable/tubiao.png differ diff --git a/app/app/src/main/res/drawable/user.png b/app/app/src/main/res/drawable/user.png new file mode 100644 index 0000000..69598f2 Binary files /dev/null and b/app/app/src/main/res/drawable/user.png differ diff --git a/app/app/src/main/res/drawable/usercre.png b/app/app/src/main/res/drawable/usercre.png new file mode 100644 index 0000000..362c335 Binary files /dev/null and b/app/app/src/main/res/drawable/usercre.png differ diff --git a/app/app/src/main/res/drawable/userdel.png b/app/app/src/main/res/drawable/userdel.png new file mode 100644 index 0000000..33a8e41 Binary files /dev/null and b/app/app/src/main/res/drawable/userdel.png differ diff --git a/app/app/src/main/res/drawable/userupd.png b/app/app/src/main/res/drawable/userupd.png new file mode 100644 index 0000000..8939380 Binary files /dev/null and b/app/app/src/main/res/drawable/userupd.png differ diff --git a/app/app/src/main/res/layout/activity_add_games.xml b/app/app/src/main/res/layout/activity_add_games.xml new file mode 100644 index 0000000..4c8a3a0 --- /dev/null +++ b/app/app/src/main/res/layout/activity_add_games.xml @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +