diff --git a/Job_Management/.gitignore b/Job_Management/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/Job_Management/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/Job_Management/.idea/.gitignore b/Job_Management/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/Job_Management/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/Job_Management/.idea/compiler.xml b/Job_Management/.idea/compiler.xml new file mode 100644 index 0000000..61a9130 --- /dev/null +++ b/Job_Management/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Job_Management/.idea/gradle.xml b/Job_Management/.idea/gradle.xml new file mode 100644 index 0000000..b617266 --- /dev/null +++ b/Job_Management/.idea/gradle.xml @@ -0,0 +1,23 @@ + + + + + + + \ No newline at end of file diff --git a/Job_Management/.idea/jarRepositories.xml b/Job_Management/.idea/jarRepositories.xml new file mode 100644 index 0000000..2370474 --- /dev/null +++ b/Job_Management/.idea/jarRepositories.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Job_Management/.idea/misc.xml b/Job_Management/.idea/misc.xml new file mode 100644 index 0000000..d5d35ec --- /dev/null +++ b/Job_Management/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/Job_Management/app/.gitignore b/Job_Management/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/Job_Management/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/Job_Management/app/build.gradle b/Job_Management/app/build.gradle new file mode 100644 index 0000000..e0e3dfd --- /dev/null +++ b/Job_Management/app/build.gradle @@ -0,0 +1,41 @@ +plugins { + id 'com.android.application' +} + +android { + compileSdkVersion 30 + buildToolsVersion "30.0.3" + + defaultConfig { + applicationId "com.hong.job_management" + minSdkVersion 16 + targetSdkVersion 30 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { + + implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'com.google.android.material:material:1.1.0' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3' + testImplementation 'junit:junit:4.+' + androidTestImplementation 'androidx.test.ext:junit:1.1.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' + implementation 'com.baoyz.swipemenulistview:library:1.3.0' +} \ No newline at end of file diff --git a/Job_Management/app/src/androidTest/java/com/hong/job_management/ExampleInstrumentedTest.java b/Job_Management/app/src/androidTest/java/com/hong/job_management/ExampleInstrumentedTest.java new file mode 100644 index 0000000..4578ce7 --- /dev/null +++ b/Job_Management/app/src/androidTest/java/com/hong/job_management/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.hong.job_management; + +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.hong.job_management", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/Job_Management/app/src/main/AndroidManifest.xml b/Job_Management/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..345d9de --- /dev/null +++ b/Job_Management/app/src/main/AndroidManifest.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Job_Management/app/src/main/java/com/hong/job_management/Homework.java b/Job_Management/app/src/main/java/com/hong/job_management/Homework.java new file mode 100644 index 0000000..ed902eb --- /dev/null +++ b/Job_Management/app/src/main/java/com/hong/job_management/Homework.java @@ -0,0 +1,75 @@ +package com.hong.job_management; + +import android.widget.DatePicker; + +public class Homework { + private String homework_name;//用来放作业名称的 + private String homework_subject;//用来放作业科目的 + private String homework_rank;//用来放作业难度的 + private String homework_time;//用来放作业截止时间的 + public int isfinish;//1为已经完成,0为未完成 + private String homework_finish;//完成标记 + + public Homework(String homework_name,String homework_subject,String homework_rank,String homework_time,int isfinish) { + this.homework_name = homework_name; + this.homework_rank = homework_rank; + this.homework_subject=homework_subject; + this.homework_time=homework_time; + this.isfinish=isfinish; + } + + public String getHomework_finish() { + + return homework_finish; + } + + public void setHomework_finish(String homework_finish) { + + this.homework_finish = homework_finish; + } + + public String getHomework_name() { + + return homework_name; + } + + public void setHomework_name(String homework_name) { + + this.homework_name = homework_name; + } + + public String getHomework_subject() { + + return homework_subject; + } + + public void setHomework_subject(String homework_subject) { + + this.homework_subject = homework_subject; + } + + public String getHomework_rank() { + + return homework_rank; + } + + public void setHomework_rank(String homework_rank) { + + this.homework_rank= homework_rank; + } + + public String getHomework_time() { + + return homework_time; + } + + public void setHomework_time(String homework_rank) { + + this.homework_time= homework_time; + } +} + + + + + diff --git a/Job_Management/app/src/main/java/com/hong/job_management/JsonParse.java b/Job_Management/app/src/main/java/com/hong/job_management/JsonParse.java new file mode 100644 index 0000000..7dad43f --- /dev/null +++ b/Job_Management/app/src/main/java/com/hong/job_management/JsonParse.java @@ -0,0 +1,40 @@ +package com.hong.job_management; + +import java.io.ByteArrayOutputStream; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.List; + +import org.json.JSONArray; +import org.json.JSONObject; + +public class JsonParse { + public static byte[] readParse(String urlPath) throws Exception { + ByteArrayOutputStream outStream = new ByteArrayOutputStream(); + byte[] data = new byte[1024]; + int len = 0; + URL url = new URL(urlPath); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + InputStream inStream = conn.getInputStream(); + while ((len = inStream.read(data)) != -1) { + outStream.write(data, 0, len); + } + inStream.close(); + return outStream.toByteArray();//通过out.Stream.toByteArray获取到写的数据 + } + + public static List getList(String urlPath) throws Exception { + List url_backgroud = new ArrayList(); + byte[] data = readParse(urlPath); + JSONArray array = new JSONArray(new String(data)); + for (int i = 0; i < array.length(); i++) { + JSONObject item = array.getJSONObject(i); + String icon = item.getString("icon"); + url_backgroud.add(icon); + } + return url_backgroud; + } +} diff --git a/Job_Management/app/src/main/java/com/hong/job_management/MainActivity.java b/Job_Management/app/src/main/java/com/hong/job_management/MainActivity.java new file mode 100644 index 0000000..13a1f5f --- /dev/null +++ b/Job_Management/app/src/main/java/com/hong/job_management/MainActivity.java @@ -0,0 +1,1263 @@ +package com.hong.job_management; + +import androidx.annotation.ContentView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.loader.content.CursorLoader; +import androidx.loader.content.Loader; + +import android.annotation.SuppressLint; +import android.app.Activity; +import android.app.AlertDialog; +import android.content.ContentProvider; +import android.content.ContentResolver; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; +import android.hardware.Sensor; +import android.hardware.SensorEvent; +import android.hardware.SensorEventListener; +import android.hardware.SensorManager; +import android.net.Uri; +import android.os.Bundle; +import android.os.StrictMode; +import android.provider.Telephony; +import android.text.Editable; +import android.text.Layout; +import android.text.TextWatcher; +import android.util.Log; +import android.util.TypedValue; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.BaseAdapter; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.RelativeLayout; +import android.widget.TextView; +import android.widget.Toast; + +import com.baoyz.swipemenulistview.SwipeMenu; +import com.baoyz.swipemenulistview.SwipeMenuCreator; +import com.baoyz.swipemenulistview.SwipeMenuItem; +import com.baoyz.swipemenulistview.SwipeMenuListView; + +import org.json.JSONArray; +import org.json.JSONObject; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.sql.Array; +import java.util.ArrayList; +import java.util.List; + + + +public class MainActivity extends AppCompatActivity { + private static final String urlPath = "http://192.168.56.1:8080/backgroud.json"; + private RelativeLayout main_layout; + public List homework = new ArrayList(); + private List url_backgroud = new ArrayList<>(); + public myAdapter_Homework adapter_homework; + public SwipeMenuListView listView; + MyHelper myHelper=new MyHelper(MainActivity.this); + private ImageView change; + private int background_index=1; + private SensorManager sensorManager; + private Sensor tempertureSensor; + private TextView temp; + + public static int chinese; + public static int chinese_finish; + public static int math; + public static int math_finish; + public static int english; + public static int english_finish; + public static int biology; + public static int biology_finish; + public static int chemistry; + public static int chemistry_finish; + public static int physics; + public static int physics_finish; + public static int history; + public static int history_finish; + public static int politics; + public static int politics_finish; + public static int geography; + public static int geography_finish; + public static int other; + public static int other_finish; + public static int sum; + public static int sum_finish; + + @SuppressLint("WrongViewCast") + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + requestWindowFeature(Window.FEATURE_NO_TITLE);//除去标题(得放在setContentView之前) + if (getSupportActionBar() != null) { //除去标题 + getSupportActionBar().hide(); //除去标题 + } + setContentView(R.layout.activity_main); + + change=findViewById(R.id.change_background); + temp=findViewById(R.id.temp); + sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); + tempertureSensor = sensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE); + if (tempertureSensor == null) { + Toast.makeText(MainActivity.this, "你的设备不支持测温功能", Toast.LENGTH_SHORT).show(); + }else{ + sensorManager.registerListener(sensorEventListener, tempertureSensor, SensorManager.SENSOR_DELAY_NORMAL); + } + + SharedPreferences myprefs=getSharedPreferences("homework_jd",MODE_PRIVATE); + chinese=myprefs.getInt("chinese",0); + chinese_finish=myprefs.getInt("chinese_finish",0); + math=myprefs.getInt("math",0); + math_finish=myprefs.getInt("math_finish",0); + english=myprefs.getInt("english",0); + english_finish=myprefs.getInt("english_finish",0); + biology=myprefs.getInt("biology",0); + biology_finish=myprefs.getInt("biology_finish",0); + chemistry=myprefs.getInt("chemistry",0); + chemistry_finish=myprefs.getInt("chemistry_finish",0); + physics=myprefs.getInt("physics",0); + physics_finish=myprefs.getInt("physics_finish",0); + history=myprefs.getInt("history",0); + history_finish=myprefs.getInt("history_finish",0); + politics=myprefs.getInt("politics",0); + politics_finish=myprefs.getInt("politics_finish",0); + geography=myprefs.getInt("geography",0); + geography_finish=myprefs.getInt("geography_finish",0); + other=myprefs.getInt("other",0); + other_finish=myprefs.getInt("other_finish",0); + sum=myprefs.getInt("sum",0); + sum_finish=myprefs.getInt("sum_finish",0); + + //网络设置 会秒退 + StrictMode.setThreadPolicy(new + StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build()); + StrictMode.setVmPolicy( + new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build()); + + change.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if(background_index==0)background_index=1; + else background_index=0; + Bitmap bitmap = null; + try { + url_backgroud = JsonParse.getList(urlPath); + bitmap = getBitmap(url_backgroud.get(background_index)); + BitmapDrawable bd=new BitmapDrawable(bitmap); + main_layout=(RelativeLayout)findViewById(R.id.main_layout); + main_layout.setBackground(bd); + } catch (IOException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + + Button btn_dj = (Button) findViewById(R.id.btn_dj); + //View view_dj = findViewById(R.id.btn_dj); + Button btn_jd = (Button) findViewById(R.id.btn_jd); + //View view_jd = findViewById(R.id.btn_jd); + Button btn_tj = (Button) findViewById(R.id.btn_tj); + //View view_tj = findViewById(R.id.btn_tj); + final MainActivity thisActivity = this; + adapter_homework = new myAdapter_Homework(MainActivity.this, homework); + listView = (SwipeMenuListView) findViewById(R.id.homework_list); + listView.setAdapter(adapter_homework); + + btn_dj.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(thisActivity, RegisterActivity.class); + thisActivity.startActivity(intent); + } + }); + btn_jd.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(thisActivity, ScheduleActivity.class); + thisActivity.startActivity(intent); + } + }); + btn_tj.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(thisActivity, StatisticsActivity.class); + thisActivity.startActivity(intent); + } + }); + + listView.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() { + public boolean onMenuItemClick(int position, SwipeMenu menu, int index) { + int id =menu.getMenuItem(index).getId(); + SQLiteDatabase db=myHelper.getWritableDatabase(); + switch (id) { + case 0: + case 1: + // is_finish + // no_finish + is_finish(position); + createMenue(); + break; + case 2: + // delete + delete(position); + break; + } + createMenue(); + return false; + } + }); + + //set SwipeListener + listView.setOnSwipeListener(new SwipeMenuListView.OnSwipeListener() { + @Override + public void onSwipeStart(int position) { + // swipe start + } + @Override + public void onSwipeEnd(int position) { + // swipe end + } + }); + } + + public Bitmap getBitmap(String path) throws IOException { + try { + URL url = new URL(path); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setConnectTimeout(5000); + conn.setRequestMethod("GET"); + if (conn.getResponseCode() == 200) { + InputStream inputStream = conn.getInputStream(); + Bitmap bitmap = BitmapFactory.decodeStream(inputStream); + return bitmap; + } + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + //温度传感器 + private SensorEventListener sensorEventListener = new SensorEventListener() { + @Override + public void onSensorChanged(SensorEvent event) { + float[] values = event.values; + temp.setText(values[0]+"℃"); + } + + @Override + public void onAccuracyChanged(Sensor sensor, int accuracy) { + } + }; + + @Override + protected void onDestroy() { + // TODO Auto-generated method stub + super.onDestroy(); + sensorManager.unregisterListener(sensorEventListener); + } + //温度以上 + + @Override + protected void onStart() { + super.onStart(); + initHomework(); + listView.setAdapter(adapter_homework); + createMenue(); + } + + private void createMenue (){ + SwipeMenuCreator creator = new SwipeMenuCreator() { + @Override + public void create(SwipeMenu menu) { + switch (menu.getViewType()) + { + case 0: //未完成作业 用已经完成按钮 + createMenu1(menu); + break; + case 1://已经完成作业 用未完成按钮 + createMenu2(menu); + break; + } + } + }; + listView.setMenuCreator(creator); + } + + private void createMenu1 (SwipeMenu menu) { + // create "no_finish" item + SwipeMenuItem no_finishItem = new SwipeMenuItem(getApplicationContext()); + no_finishItem.setId(0); + // set item background + no_finishItem.setBackground(new ColorDrawable(Color.rgb(0xC9, 0xC9, 0xCE))); + // set item width + no_finishItem.setWidth(dp2px(90)); + // set item title + no_finishItem.setTitle("已完成"); + // set item title fontsize + no_finishItem.setTitleSize(18); + // set item title font color + no_finishItem.setTitleColor(Color.WHITE); + // add to menu + menu.addMenuItem(no_finishItem); + + // create "delete" item + SwipeMenuItem deleteItem = new SwipeMenuItem(getApplicationContext()); + deleteItem.setId(2); + // set item background + deleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9, 0x3F, 0x25))); + // set item width + deleteItem.setWidth(dp2px(90)); + // set a icon + deleteItem.setTitle("删除"); + deleteItem.setTitleSize(18); + deleteItem.setTitleColor(Color.WHITE); + // add to menu + menu.addMenuItem(deleteItem); + } + + private void createMenu2 (SwipeMenu menu) { + // create "finish" item + SwipeMenuItem finishItem = new SwipeMenuItem(getApplicationContext()); + finishItem.setId(1); + // set item background + finishItem.setBackground(new ColorDrawable(Color.rgb(0xC9, 0xC9, 0xCE))); + // set item width + finishItem.setWidth(dp2px(90)); + // set item title + finishItem.setTitle("未完成"); + // set item title fontsize + finishItem.setTitleSize(18); + // set item title font color + finishItem.setTitleColor(Color.WHITE); + // add to menu + menu.addMenuItem(finishItem); + + // create "delete" item + SwipeMenuItem deleteItem = new SwipeMenuItem(getApplicationContext()); + deleteItem.setId(2); + // set item background + deleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9, 0x3F, 0x25))); + // set item width + deleteItem.setWidth(dp2px(90)); + // set a icon + deleteItem.setTitle("删除"); + deleteItem.setTitleSize(18); + deleteItem.setTitleColor(Color.WHITE); + // add to menu + menu.addMenuItem(deleteItem); + } + + private void is_finish ( int position){ + Homework h = homework.get(position); + int pd=h.isfinish; + SQLiteDatabase db =myHelper.getWritableDatabase(); + ContentValues values= new ContentValues(); + + Cursor cursor = db.query("homework",null,null,null,null,null,null); + cursor.moveToPosition(position); + int itemid=cursor.getInt(cursor.getColumnIndex("_id")); + + if (h != null) + { + if(pd==1) + { + values.put("isfinish",0); + db.update("homework",values,"_id=?",new String[]{itemid+""}); + homework.get(position).isfinish =0; + Toast.makeText(MainActivity.this, "未完成 : " + h.getHomework_name(), Toast.LENGTH_SHORT).show(); + switch (h.getHomework_subject()) + { + case "语文": + if(h.getHomework_rank().equals("简单")) + { + chinese_finish=chinese_finish-1; + sum_finish=sum_finish-1; + } + else if(h.getHomework_rank().equals("中等")) + { + chinese_finish=chinese_finish-2; + sum_finish=sum_finish-2; + } + else if(h.getHomework_rank().equals("困难")) + { + chinese_finish=chinese_finish-3; + sum_finish=sum_finish-3; + } + break; + case "数学": + if(h.getHomework_rank().equals("简单")) + { + math_finish=math_finish-1; + sum_finish=sum_finish-1; + } + else if(h.getHomework_rank().equals("中等")) + { + math_finish=math_finish-2; + sum_finish=sum_finish-2; + } + else if(h.getHomework_rank().equals("困难")) + { + math_finish=math_finish-3; + sum_finish=sum_finish-3; + } + break; + case "英语": + if(h.getHomework_rank().equals("简单")) + { + english_finish=english_finish-1; + sum_finish=sum_finish-1; + } + else if(h.getHomework_rank().equals("中等")) + { + english_finish=english_finish-2; + sum_finish=sum_finish-2; + } + else if(h.getHomework_rank().equals("困难")) + { + english_finish=english_finish-3; + sum_finish=sum_finish-3; + } + break; + case "生物": + if(h.getHomework_rank().equals("简单")) + { + biology_finish=biology_finish-1; + sum_finish=sum_finish-1; + } + else if(h.getHomework_rank().equals("中等")) + { + biology_finish=biology_finish-2; + sum_finish=sum_finish-2; + } + else if(h.getHomework_rank().equals("困难")) + { + biology_finish=biology_finish-3; + sum_finish=sum_finish-3; + } + break; + case "物理": + if(h.getHomework_rank().equals("简单")) + { + physics_finish=physics_finish-1; + sum_finish=sum_finish-1; + } + else if(h.getHomework_rank().equals("中等")) + { + physics_finish=physics_finish-2; + sum_finish=sum_finish-2; + } + else if(h.getHomework_rank().equals("困难")) + { + physics_finish=physics_finish-3; + sum_finish=sum_finish-3; + } + break; + case "化学": + if(h.getHomework_rank().equals("简单")) + { + chemistry_finish=chemistry_finish-1; + sum_finish=sum_finish-1; + } + else if(h.getHomework_rank().equals("中等")) + { + chemistry_finish=chemistry_finish-2; + sum_finish=sum_finish-2; + } + else if(h.getHomework_rank().equals("困难")) + { + chemistry_finish=chemistry_finish-3; + sum_finish=sum_finish-3; + } + break; + case "历史": + if(h.getHomework_rank().equals("简单")) + { + history_finish=history_finish-1; + sum_finish=sum_finish-1; + } + else if(h.getHomework_rank().equals("中等")) + { + history_finish=history_finish-2; + sum_finish=sum_finish-2; + } + else if(h.getHomework_rank().equals("困难")) + { + history_finish=history_finish-3; + sum_finish=sum_finish-3; + } + break; + case "政治": + if(h.getHomework_rank().equals("简单")) + { + politics_finish=politics_finish-1; + sum_finish=sum_finish-1; + } + else if(h.getHomework_rank().equals("中等")) + { + politics_finish=politics_finish-2; + sum_finish=sum_finish-2; + } + else if(h.getHomework_rank().equals("困难")) + { + politics_finish=politics_finish-3; + sum_finish=sum_finish-3; + } + break; + case "地理": + if(h.getHomework_rank().equals("简单")) + { + geography_finish=geography_finish-1; + sum_finish=sum_finish-1; + } + else if(h.getHomework_rank().equals("中等")) + { + geography_finish=geography_finish-2; + sum_finish=sum_finish-2; + } + else if(h.getHomework_rank().equals("困难")) + { + geography_finish=geography_finish-3; + sum_finish=sum_finish-3; + } + break; + case "其他": + if(h.getHomework_rank().equals("简单")) + { + other_finish=other_finish-1; + sum_finish=sum_finish-1; + } + else if(h.getHomework_rank().equals("中等")) + { + other_finish=other_finish-2; + sum_finish=sum_finish-2; + } + else if(h.getHomework_rank().equals("困难")) + { + other_finish=other_finish-3; + sum_finish=sum_finish-3; + } + break; + } + }else { + values.put("isfinish",1); + db.update("homework",values,"_id=?",new String[]{itemid+""}); + homework.get(position).isfinish = 1; + Toast.makeText(MainActivity.this, "已完成 : " + h.getHomework_name(), Toast.LENGTH_SHORT).show(); + switch (h.getHomework_subject()) + { + case "语文": + if(h.getHomework_rank().equals("简单")) + { + chinese_finish=chinese_finish+1; + sum_finish=sum_finish+1; + } + else if(h.getHomework_rank().equals("中等")) + { + chinese_finish=chinese_finish+2; + sum_finish=sum_finish+2; + } + else if(h.getHomework_rank().equals("困难")) + { + chinese_finish=chinese_finish+3; + sum_finish=sum_finish+3; + } + break; + case "数学": + if(h.getHomework_rank().equals("简单")) + { + math_finish=math_finish+1; + sum_finish=sum_finish+1; + } + else if(h.getHomework_rank().equals("中等")) + { + math_finish=math_finish+2; + sum_finish=sum_finish+2; + } + else if(h.getHomework_rank().equals("困难")) + { + math_finish=math_finish+3; + sum_finish=sum_finish+3; + } + break; + case "英语": + if(h.getHomework_rank().equals("简单")) + { + english_finish=english_finish+1; + sum_finish=sum_finish+1; + } + else if(h.getHomework_rank().equals("中等")) + { + english_finish=english_finish+2; + sum_finish=sum_finish+2; + } + else if(h.getHomework_rank().equals("困难")) + { + english_finish=english_finish+3; + sum_finish=sum_finish+3; + } + break; + case "生物": + if(h.getHomework_rank().equals("简单")) + { + biology_finish=biology_finish+1; + sum_finish=sum_finish+1; + } + else if(h.getHomework_rank().equals("中等")) + { + biology_finish=biology_finish+2; + sum_finish=sum_finish+2; + } + else if(h.getHomework_rank().equals("困难")) + { + biology_finish=biology_finish+3; + sum_finish=sum_finish+3; + } + break; + case "物理": + if(h.getHomework_rank().equals("简单")) + { + physics_finish=physics_finish+1; + sum_finish=sum_finish+1; + } + else if(h.getHomework_rank().equals("中等")) + { + physics_finish=physics_finish+2; + sum_finish=sum_finish+2; + } + else if(h.getHomework_rank().equals("困难")) + { + physics_finish=physics_finish+3; + sum_finish=sum_finish+3; + } + break; + case "化学": + if(h.getHomework_rank().equals("简单")) + { + chemistry_finish=chemistry_finish+1; + sum_finish=sum_finish+1; + } + else if(h.getHomework_rank().equals("中等")) + { + chemistry_finish=chemistry_finish+2; + sum_finish=sum_finish+2; + } + else if(h.getHomework_rank().equals("困难")) + { + chemistry_finish=chemistry_finish+3; + sum_finish=sum_finish+3; + } + break; + case "历史": + if(h.getHomework_rank().equals("简单")) + { + history_finish=history_finish+1; + sum_finish=sum_finish+1; + } + else if(h.getHomework_rank().equals("中等")) + { + history_finish=history_finish+2; + sum_finish=sum_finish+2; + } + else if(h.getHomework_rank().equals("困难")) + { + history_finish=history_finish+3; + sum_finish=sum_finish+3; + } + break; + case "政治": + if(h.getHomework_rank().equals("简单")) + { + politics_finish=politics_finish+1; + sum_finish=sum_finish+1; + } + else if(h.getHomework_rank().equals("中等")) + { + politics_finish=politics_finish+2; + sum_finish=sum_finish+2; + } + else if(h.getHomework_rank().equals("困难")) + { + politics_finish=politics_finish+3; + sum_finish=sum_finish+3; + } + break; + case "地理": + if(h.getHomework_rank().equals("简单")) + { + geography_finish=geography_finish+1; + sum_finish=sum_finish+1; + } + else if(h.getHomework_rank().equals("中等")) + { + geography_finish=geography_finish+2; + sum_finish=sum_finish+2; + } + else if(h.getHomework_rank().equals("困难")) + { + geography_finish=geography_finish+3; + sum_finish=sum_finish+3; + } + break; + case "其他": + if(h.getHomework_rank().equals("简单")) + { + other_finish=other_finish+1; + sum_finish=sum_finish+1; + } + else if(h.getHomework_rank().equals("中等")) + { + other_finish=other_finish+2; + sum_finish=sum_finish+2; + } + else if(h.getHomework_rank().equals("困难")) + { + other_finish=other_finish+3; + sum_finish=sum_finish+3; + } + break; + } + } + cursor.close(); + db.close(); + adapter_homework.notifyDataSetChanged(); + SharedPreferences myprefs=getSharedPreferences("homework_jd",MODE_PRIVATE); + SharedPreferences.Editor editor=myprefs.edit(); + editor.putInt("chinese_finish",chinese_finish); + editor.putInt("math_finish",math_finish); + editor.putInt("english_finish",english_finish); + editor.putInt("biology_finish",biology_finish); + editor.putInt("chemistry_finish",chemistry_finish); + editor.putInt("physics_finish",physics_finish); + editor.putInt("history_finish",history_finish); + editor.putInt("politics_finish",politics_finish); + editor.putInt("geography_finish",geography_finish); + editor.putInt("other_finish",other_finish); + editor.putInt("sum_finish",sum_finish); + editor.commit(); + editor.apply(); + } + } + + private void delete(int position) { + SQLiteDatabase db=myHelper.getWritableDatabase(); + Homework h = homework.get(position); + Cursor cursor = db.query("homework",null,null,null,null,null,null); + cursor.moveToPosition(position); + int itemid=cursor.getInt(cursor.getColumnIndex("_id")); + if (h != null) { + int delete_pd=db.delete("homework","_id=?",new String []{itemid+""}); + if(delete_pd==1) //删除成功为1 不成功为0 + { + homework.remove(h); + adapter_homework.notifyDataSetChanged(); + Toast.makeText(MainActivity.this, "删除 : " + h.getHomework_name(), Toast.LENGTH_SHORT).show(); + int pd=h.isfinish; + if(pd==1) + { + switch (h.getHomework_subject()) + { + case "语文": + if(h.getHomework_rank().equals("简单")) + { + chinese=chinese-1; + chinese_finish=chinese_finish-1; + sum=sum-1; + sum_finish=sum_finish-1; + } + else if(h.getHomework_rank().equals("中等")) + { + chinese=chinese-2; + chinese_finish=chinese_finish-2; + sum=sum-2; + sum_finish=sum_finish-2; + } + else if(h.getHomework_rank().equals("困难")) + { + chinese=chinese-3; + chinese_finish=chinese_finish-3; + sum=sum-3; + sum_finish=sum_finish-3; + } + break; + case "数学": + if(h.getHomework_rank().equals("简单")) + { + math=math-1; + math_finish=math_finish-1; + sum=sum-1; + sum_finish=sum_finish-1; + } + else if(h.getHomework_rank().equals("中等")) + { + math=math-2; + math_finish=math_finish-2; + sum=sum-2; + sum_finish=sum_finish-2; + } + else if(h.getHomework_rank().equals("困难")) + { + math=math-3; + math_finish=math_finish-3; + sum=sum-3; + sum_finish=sum_finish-3; + } + break; + case "英语": + if(h.getHomework_rank().equals("简单")) + { + english=english-1; + english_finish=english_finish-1; + sum=sum-1; + sum_finish=sum_finish-1; + } + else if(h.getHomework_rank().equals("中等")) + { + english=english-2; + english_finish=english_finish-2; + sum=sum-2; + sum_finish=sum_finish-2; + } + else if(h.getHomework_rank().equals("困难")) + { + english=english-3; + english_finish=english_finish-3; + sum=sum-3; + sum_finish=sum_finish-3; + } + break; + case "生物": + if(h.getHomework_rank().equals("简单")) + { + biology=biology-1; + biology_finish=biology_finish-1; + sum=sum-1; + sum_finish=sum_finish-1; + } + else if(h.getHomework_rank().equals("中等")) + { + biology=biology-2; + biology_finish=biology_finish-2; + sum=sum-2; + sum_finish=sum_finish-2; + } + else if(h.getHomework_rank().equals("困难")) + { + biology=biology-3; + biology_finish=biology_finish-3; + sum=sum-3; + sum_finish=sum_finish-3; + } + break; + case "物理": + if(h.getHomework_rank().equals("简单")) + { + physics=physics-1; + physics_finish=physics_finish-1; + sum=sum-1; + sum_finish=sum_finish-1; + } + else if(h.getHomework_rank().equals("中等")) + { + physics=physics-2; + physics_finish=physics_finish-2; + sum=sum-2; + sum_finish=sum_finish-2; + } + else if(h.getHomework_rank().equals("困难")) + { + physics=physics-3; + physics_finish=physics_finish-3; + sum=sum-3; + sum_finish=sum_finish-3; + } + break; + case "化学": + if(h.getHomework_rank().equals("简单")) + { + chemistry=chemistry-1; + chemistry_finish=chemistry_finish-1; + sum=sum-1; + sum_finish=sum_finish-1; + } + else if(h.getHomework_rank().equals("中等")) + { + chemistry=chemistry-2; + chemistry_finish=chemistry_finish-2; + sum=sum-2; + sum_finish=sum_finish-2; + } + else if(h.getHomework_rank().equals("困难")) + { + chemistry=chemistry-3; + chemistry_finish=chemistry_finish-3; + sum=sum-3; + sum_finish=sum_finish-3; + } + break; + case "历史": + if(h.getHomework_rank().equals("简单")) + { + history=history-1; + history_finish=history_finish-1; + sum=sum-1; + sum_finish=sum_finish-1; + } + else if(h.getHomework_rank().equals("中等")) + { + history=history-2; + history_finish=history_finish-2; + sum=sum-2; + sum_finish=sum_finish-2; + } + else if(h.getHomework_rank().equals("困难")) + { + history=history-3; + history_finish=history_finish-3; + sum=sum-3; + sum_finish=sum_finish-3; + } + break; + case "政治": + if(h.getHomework_rank().equals("简单")) + { + politics=politics-1; + politics_finish=politics_finish-1; + sum=sum-1; + sum_finish=sum_finish-1; + } + else if(h.getHomework_rank().equals("中等")) + { + politics=politics-2; + politics_finish=politics_finish-2; + sum=sum-2; + sum_finish=sum_finish-2; + } + else if(h.getHomework_rank().equals("困难")) + { + politics=politics-3; + politics_finish=politics_finish-3; + sum=sum-3; + sum_finish=sum_finish-3; + } + break; + case "地理": + if(h.getHomework_rank().equals("简单")) + { + geography=geography-1; + geography_finish=geography_finish-1; + sum=sum-1; + sum_finish=sum_finish-1; + } + else if(h.getHomework_rank().equals("中等")) + { + geography=geography-2; + geography_finish=geography_finish-2; + sum=sum-2; + sum_finish=sum_finish-2; + } + else if(h.getHomework_rank().equals("困难")) + { + geography=geography-3; + geography_finish=geography_finish-3; + sum=sum-3; + sum_finish=sum_finish-3; + } + break; + case "其他": + if(h.getHomework_rank().equals("简单")) + { + other=other-1; + other_finish=other_finish-1; + sum=sum-1; + sum_finish=sum_finish-1; + } + else if(h.getHomework_rank().equals("中等")) + { + other=other-2; + other_finish=other_finish-2; + sum=sum-2; + sum_finish=sum_finish-2; + } + else if(h.getHomework_rank().equals("困难")) + { + other=other-3; + other_finish=other_finish-3; + sum=sum-3; + sum_finish=sum_finish-3; + } + break; + } + }else { + switch (h.getHomework_subject()) + { + case "语文": + if(h.getHomework_rank().equals("简单")) + { + chinese=chinese-1; + sum=sum-1; + } + else if(h.getHomework_rank().equals("中等")) + { + chinese=chinese-2; + sum=sum-2; + } + else if(h.getHomework_rank().equals("困难")) + { + chinese=chinese-3; + sum=sum-3; + } + break; + case "数学": + if(h.getHomework_rank().equals("简单")) + { + math=math-1; + sum=sum-1; + } + else if(h.getHomework_rank().equals("中等")) + { + math=math-2; + sum=sum-2; + } + else if(h.getHomework_rank().equals("困难")) + { + math=math-3; + sum=sum-3; + } + break; + case "英语": + if(h.getHomework_rank().equals("简单")) + { + english=english-1; + sum=sum-1; + } + else if(h.getHomework_rank().equals("中等")) + { + english=english-2; + sum=sum-2; + } + else if(h.getHomework_rank().equals("困难")) + { + english=english-3; + sum=sum-3; + } + break; + case "生物": + if(h.getHomework_rank().equals("简单")) + { + biology=biology-1; + sum=sum-1; + } + else if(h.getHomework_rank().equals("中等")) + { + biology=biology-2; + sum=sum-2; + } + else if(h.getHomework_rank().equals("困难")) + { + biology=biology-+3; + sum=sum-3; + } + break; + case "物理": + if(h.getHomework_rank().equals("简单")) + { + physics=physics-1; + sum=sum-1; + } + else if(h.getHomework_rank().equals("中等")) + { + physics=physics-2; + sum=sum-2; + } + else if(h.getHomework_rank().equals("困难")) + { + physics=physics-3; + sum=sum-3; + } + break; + case "化学": + if(h.getHomework_rank().equals("简单")) + { + chemistry=chemistry-1; + sum=sum-1; + } + else if(h.getHomework_rank().equals("中等")) + { + chemistry=chemistry-2; + sum=sum-2; + } + else if(h.getHomework_rank().equals("困难")) + { + chemistry=chemistry-3; + sum=sum-3; + } + break; + case "历史": + if(h.getHomework_rank().equals("简单")) + { + history=history-1; + sum=sum-1; + } + else if(h.getHomework_rank().equals("中等")) + { + history=history-2; + sum=sum-2; + } + else if(h.getHomework_rank().equals("困难")) + { + history=history-3; + sum=sum-3; + } + break; + case "政治": + if(h.getHomework_rank().equals("简单")) + { + politics=politics-1; + sum=sum-1; + } + else if(h.getHomework_rank().equals("中等")) + { + politics=politics-2; + sum=sum-2; + } + else if(h.getHomework_rank().equals("困难")) + { + politics=politics-3; + sum=sum-3; + } + break; + case "地理": + if(h.getHomework_rank().equals("简单")) + { + geography=geography-1; + sum=sum-1; + } + else if(h.getHomework_rank().equals("中等")) + { + geography=geography-2; + sum=sum-2; + } + else if(h.getHomework_rank().equals("困难")) + { + geography=geography-3; + sum=sum-3; + } + break; + case "其他": + if(h.getHomework_rank().equals("简单")) + { + other=other-1; + sum=sum-1; + } + else if(h.getHomework_rank().equals("中等")) + { + other=other-2; + sum=sum-2; + } + else if(h.getHomework_rank().equals("困难")) + { + other=other-3; + sum=sum-3; + } + break; + } + } + SharedPreferences myprefs=getSharedPreferences("homework_jd",MODE_PRIVATE); + SharedPreferences.Editor editor=myprefs.edit(); + editor.putInt("chinese",chinese); + editor.putInt("chinese_finish",chinese_finish); + editor.putInt("math",math); + editor.putInt("math_finish",math_finish); + editor.putInt("english",english); + editor.putInt("english_finish",english_finish); + editor.putInt("biology",biology); + editor.putInt("biology_finish",biology_finish); + editor.putInt("chemistry",chemistry); + editor.putInt("chemistry_finish",chemistry_finish); + editor.putInt("physics",physics); + editor.putInt("physics_finish",physics_finish); + editor.putInt("history",history); + editor.putInt("history_finish",history_finish); + editor.putInt("politics",politics); + editor.putInt("politics_finish",politics_finish); + editor.putInt("geography",geography); + editor.putInt("geography_finish",geography_finish); + editor.putInt("other",other); + editor.putInt("other_finish",other_finish); + editor.putInt("sum",sum); + editor.putInt("sum_finish",sum_finish); + editor.commit(); + editor.apply(); + }else + { + Toast.makeText(MainActivity.this, "删除失败", Toast.LENGTH_SHORT).show(); + } + cursor.close(); + db.close(); + } + } + + private int dp2px(int dp) { + return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, + getResources().getDisplayMetrics()); + } + + public void initHomework() + { + String name; + String rank; + String time; + String subject; + int isfinish; + SQLiteDatabase db; + db=myHelper.getReadableDatabase(); + Cursor cursor=db.query("homework",null,null,null,null,null,null,null); + homework.clear(); + if(cursor.getCount()==0){ + Toast.makeText(MainActivity.this,"请添加作业",Toast.LENGTH_SHORT).show(); + }else{ + while(cursor.moveToNext()) + { + name=cursor.getString(cursor.getColumnIndex("name")); + subject=cursor.getString(cursor.getColumnIndex("subject")); + rank=cursor.getString(cursor.getColumnIndex("rank")); + time=cursor.getString(cursor.getColumnIndex("time")); + isfinish=cursor.getInt(cursor.getColumnIndex("isfinish")); + Homework h=new Homework(name,subject,rank,time,isfinish); + homework.add(h); + } + cursor.close(); + db.close(); + } + } + } \ No newline at end of file diff --git a/Job_Management/app/src/main/java/com/hong/job_management/MyHelper.java b/Job_Management/app/src/main/java/com/hong/job_management/MyHelper.java new file mode 100644 index 0000000..6397851 --- /dev/null +++ b/Job_Management/app/src/main/java/com/hong/job_management/MyHelper.java @@ -0,0 +1,23 @@ +package com.hong.job_management; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + +import androidx.annotation.Nullable; + +public class MyHelper extends SQLiteOpenHelper { + + public MyHelper(@Nullable Context context) { + super(context,"Homework.db",null,2); + } + + @Override + public void onCreate(SQLiteDatabase db) { + db.execSQL("CREATE TABLE homework(_id INTEGER PRIMARY KEY AUTOINCREMENT,subject VARCHAR(6),name VARCHAR(30),time VARCHAR(12),rank VARCHAR(6),isfinish INT(20))"); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + } +} diff --git a/Job_Management/app/src/main/java/com/hong/job_management/RegisterActivity.java b/Job_Management/app/src/main/java/com/hong/job_management/RegisterActivity.java new file mode 100644 index 0000000..a476e02 --- /dev/null +++ b/Job_Management/app/src/main/java/com/hong/job_management/RegisterActivity.java @@ -0,0 +1,356 @@ +package com.hong.job_management; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.ContentValues; +import android.content.Context; +import android.content.SharedPreferences; +import android.database.sqlite.SQLiteDatabase; +import android.os.Bundle; +import android.view.MotionEvent; +import android.view.View; +import android.view.inputmethod.InputMethodManager; +import android.widget.AdapterView; +import android.widget.Button; +import android.widget.DatePicker; +import android.widget.EditText; +import android.widget.Spinner; +import android.widget.Toast; + +import static com.hong.job_management.MainActivity.chinese; +import static com.hong.job_management.MainActivity.chinese_finish; +import static com.hong.job_management.MainActivity.biology; +import static com.hong.job_management.MainActivity.biology_finish; +import static com.hong.job_management.MainActivity.chemistry; +import static com.hong.job_management.MainActivity.chemistry_finish; +import static com.hong.job_management.MainActivity.english; +import static com.hong.job_management.MainActivity.english_finish; +import static com.hong.job_management.MainActivity.geography; +import static com.hong.job_management.MainActivity.geography_finish; +import static com.hong.job_management.MainActivity.history; +import static com.hong.job_management.MainActivity.history_finish; +import static com.hong.job_management.MainActivity.math; +import static com.hong.job_management.MainActivity.math_finish; +import static com.hong.job_management.MainActivity.other; +import static com.hong.job_management.MainActivity.other_finish; +import static com.hong.job_management.MainActivity.physics; +import static com.hong.job_management.MainActivity.physics_finish; +import static com.hong.job_management.MainActivity.politics; +import static com.hong.job_management.MainActivity.politics_finish; +import static com.hong.job_management.MainActivity.sum; +import static com.hong.job_management.MainActivity.sum_finish; + + +public class RegisterActivity extends AppCompatActivity { + private Button bt_register; + private Spinner subject; + private String subject_select; + private Spinner rank; + private String rank_select; + private DatePicker time; + private String time_select; + private EditText name; + private String name_editext; + private int isfinish=0; + private RegisterActivity ScreenUtil; + + MyHelper myHelper; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_register); + bt_register=(Button)findViewById(R.id.btn_homework_dj); + subject=(Spinner)findViewById(R.id.subject); + rank=(Spinner)findViewById(R.id.rank); + time=(DatePicker)findViewById((R.id.time)); + name=(EditText)findViewById(R.id.name); + myHelper=new MyHelper(this); + + rank.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView parent, View view, int position, long id) { + if(position!=0) + Toast.makeText(RegisterActivity.this, "您选择了 :" +parent.getItemAtPosition(position).toString() , Toast.LENGTH_SHORT).show(); + } + @Override + public void onNothingSelected(AdapterView parent) { + + } + }); + + subject.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView parent, View view, int position, long id) { + if(position!=0) + Toast.makeText(RegisterActivity.this, "您选择了 :" +parent.getItemAtPosition(position).toString() , Toast.LENGTH_SHORT).show(); + } + @Override + public void onNothingSelected(AdapterView parent) { + + } + }); + + bt_register.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ScreenUtil.closeSoftInput(RegisterActivity.this, v);//关闭输入法 + + SQLiteDatabase db; + ContentValues values; + name_editext=name.getText().toString().trim(); + subject_select=subject.getSelectedItem().toString(); + rank_select=rank.getSelectedItem().toString(); + int year=time.getYear(); + int month=time.getMonth()+1; + int day=time.getDayOfMonth(); + time_select=(String.valueOf(year)+"."+String.format("%02d",month)+"."+String.format("%02d",day)); + if(name_editext.length()==0||subject_select.equals("科目")||rank_select.equals("难度")) + { +// db=myHelper.getWritableDatabase(); +// db.delete("homework",null,null); +// db.close(); + if(subject_select.equals("科目")) + Toast.makeText(RegisterActivity.this, "请选择作业科目", Toast.LENGTH_SHORT).show(); + else if(name_editext.length()==0) + Toast.makeText(RegisterActivity.this, "请填写作业名称", Toast.LENGTH_SHORT).show(); + else if (rank_select.equals("难度")) + Toast.makeText(RegisterActivity.this, "请选择作业难度", Toast.LENGTH_SHORT).show(); + }else{ + name_editext=name.getText().toString(); + switch (subject_select) + { + case "语文": + if(rank_select.equals("简单")) + { + chinese=chinese+1; + sum=sum+1; + } + else if(rank_select.equals("中等")) + { + chinese=chinese+2; + sum=sum+2; + } + else if(rank_select.equals("困难")) + { + chinese=chinese+3; + sum=sum+3; + } + Toast.makeText(RegisterActivity.this, "作业登记成功!", Toast.LENGTH_SHORT).show(); + break; + case "数学": + if(rank_select.equals("简单")) + { + math=math+1; + sum=sum+1; + } + else if(rank_select.equals("中等")) + { + math=math+2; + sum=sum+2; + } + else if(rank_select.equals("困难")) + { + math=math+3; + sum=sum+3; + } + break; + case "英语": + if(rank_select.equals("简单")) + { + english=english+1; + sum=sum+1; + } + else if(rank_select.equals("中等")) + { + english=english+2; + sum=sum+2; + } + else if(rank_select.equals("困难")) + { + english=english+3; + sum=sum+3; + } + break; + case "生物": + if(rank_select.equals("简单")) + { + biology=biology+1; + sum=sum+1; + } + else if(rank_select.equals("中等")) + { + biology=biology+2; + sum=sum+2; + } + else if(rank_select.equals("困难")) + { + biology=biology+3; + sum=sum+3; + } + break; + case "物理": + if(rank_select.equals("简单")) + { + physics=physics+1; + sum=sum+1; + } + else if(rank_select.equals("中等")) + { + physics=physics+2; + sum=sum+2; + } + else if(rank_select.equals("困难")) + { + physics=physics+3; + sum=sum+3; + } + break; + case "化学": + if(rank_select.equals("简单")) + { + chemistry=chemistry+1; + sum=sum+1; + } + else if(rank_select.equals("中等")) + { + chemistry=chemistry+2; + sum=sum+2; + } + else if(rank_select.equals("困难")) + { + chemistry=chemistry+3; + sum=sum+3; + } + break; + case "历史": + if(rank_select.equals("简单")) + { + history=history+1; + sum=sum+1; + } + else if(rank_select.equals("中等")) + { + history=history+2; + sum=sum+2; + } + else if(rank_select.equals("困难")) + { + history=history+3; + sum=sum+3; + } + break; + case "政治": + if(rank_select.equals("简单")) + { + politics=politics+1; + sum=sum+1; + } + else if(rank_select.equals("中等")) + { + politics=politics+2; + sum=sum+2; + } + else if(rank_select.equals("困难")) + { + politics=politics+3; + sum=sum+3; + } + break; + case "地理": + if(rank_select.equals("简单")) + { + geography=geography+1; + sum=sum+1; + } + else if(rank_select.equals("中等")) + { + geography=geography+2; + sum=sum+2; + } + else if(rank_select.equals("困难")) + { + geography=geography+3; + sum=sum+3; + } + break; + case "其他": + if(rank_select.equals("简单")) + { + other=other+1; + sum=sum+1; + } + else if(rank_select.equals("中等")) + { + other=other+2; + sum=sum+2; + } + else if(rank_select.equals("困难")) + { + other=other+3; + sum=sum+3; + } + break; + } + + SharedPreferences myprefs=getSharedPreferences("homework_jd",MODE_PRIVATE); + SharedPreferences.Editor editor=myprefs.edit(); + editor.putInt("chinese",chinese); + editor.putInt("math",math); + editor.putInt("english",english); + editor.putInt("biology",biology); + editor.putInt("chemistry",chemistry); + editor.putInt("physics",physics); + editor.putInt("history",history); + editor.putInt("politics",politics); + editor.putInt("geography",geography); + editor.putInt("other",other); + editor.putInt("sum",sum); + editor.commit(); + editor.apply(); + + //储存后清零 + name.setText(""); + rank.setSelection(0); + subject.setSelection(0); + + values=new ContentValues(); + values.put("subject",subject_select); + values.put("name",name_editext); + values.put("time",time_select); + values.put("rank",rank_select); + //values.put("isfinish",isfinish); + db=myHelper.getWritableDatabase(); + long insert_pd=db.insert("homework",null,values); + db.close(); + if(insert_pd!=-1)//插入失败为-1 + Toast.makeText(RegisterActivity.this, "作业登记成功!", Toast.LENGTH_SHORT).show(); + else + Toast.makeText(RegisterActivity.this, "作业登记失败!", Toast.LENGTH_SHORT).show(); + } + } + }); + + + } + + public boolean onTouchEvent(MotionEvent event) { + closeKeyBoard(); + return super.onTouchEvent(event); + } + + public void closeKeyBoard() { + if (getCurrentFocus() != null && getCurrentFocus().getWindowToken() != null) { + View v = getCurrentFocus(); + ScreenUtil.closeSoftInput(this, v); + } + } + + public static void closeSoftInput(Context context, View v) { + if (v != null) { + InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(v.getWindowToken(), 0); + } + } + +} \ No newline at end of file diff --git a/Job_Management/app/src/main/java/com/hong/job_management/ScheduleActivity.java b/Job_Management/app/src/main/java/com/hong/job_management/ScheduleActivity.java new file mode 100644 index 0000000..28a026d --- /dev/null +++ b/Job_Management/app/src/main/java/com/hong/job_management/ScheduleActivity.java @@ -0,0 +1,107 @@ +package com.hong.job_management; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ListView; +import android.widget.ProgressBar; +import android.widget.TextView; + +import java.util.ArrayList; +import java.util.List; +import static com.hong.job_management.MainActivity.chinese; +import static com.hong.job_management.MainActivity.chinese_finish; +import static com.hong.job_management.MainActivity.biology; +import static com.hong.job_management.MainActivity.biology_finish; +import static com.hong.job_management.MainActivity.chemistry; +import static com.hong.job_management.MainActivity.chemistry_finish; +import static com.hong.job_management.MainActivity.english; +import static com.hong.job_management.MainActivity.english_finish; +import static com.hong.job_management.MainActivity.geography; +import static com.hong.job_management.MainActivity.geography_finish; +import static com.hong.job_management.MainActivity.history; +import static com.hong.job_management.MainActivity.history_finish; +import static com.hong.job_management.MainActivity.math; +import static com.hong.job_management.MainActivity.math_finish; +import static com.hong.job_management.MainActivity.other; +import static com.hong.job_management.MainActivity.other_finish; +import static com.hong.job_management.MainActivity.physics; +import static com.hong.job_management.MainActivity.physics_finish; +import static com.hong.job_management.MainActivity.politics; +import static com.hong.job_management.MainActivity.politics_finish; +import static com.hong.job_management.MainActivity.sum; +import static com.hong.job_management.MainActivity.sum_finish; + +public class ScheduleActivity extends AppCompatActivity { + public List subject_schedule=new ArrayList(); + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_schedule); + final ScheduleActivity thisActivity=this; + initSubject_schedule(); + update_Schedule(subject_schedule); + myAdapter_Schedule myAdapter_schedule= new myAdapter_Schedule(ScheduleActivity.this,subject_schedule); + ListView listView=(ListView)findViewById(R.id.schedule_list); + listView.setAdapter(myAdapter_schedule); + } + private void initSubject_schedule() + { + Subject_schedule subject_schedule1= new Subject_schedule("语文"); + subject_schedule.add(subject_schedule1); + Subject_schedule subject_schedule2= new Subject_schedule("数学"); + subject_schedule.add(subject_schedule2); + Subject_schedule subject_schedule3= new Subject_schedule("英语"); + subject_schedule.add(subject_schedule3); + Subject_schedule subject_schedule4= new Subject_schedule("历史"); + subject_schedule.add(subject_schedule4); + Subject_schedule subject_schedule5= new Subject_schedule("地理"); + subject_schedule.add(subject_schedule5); + Subject_schedule subject_schedule6= new Subject_schedule("政治"); + subject_schedule.add(subject_schedule6); + Subject_schedule subject_schedule7= new Subject_schedule("物理"); + subject_schedule.add(subject_schedule7); + Subject_schedule subject_schedule8= new Subject_schedule("化学"); + subject_schedule.add(subject_schedule8); + Subject_schedule subject_schedule9= new Subject_schedule("生物"); + subject_schedule.add(subject_schedule9); + Subject_schedule subject_schedule10= new Subject_schedule("其他"); + subject_schedule.add(subject_schedule10); + Subject_schedule subject_schedule11= new Subject_schedule("总"); + subject_schedule.add(subject_schedule11); + } + private void update_Schedule (List subject_schedule) + { + subject_schedule.get(0).max=chinese; + subject_schedule.get(0).progress=chinese_finish; + subject_schedule.get(1).max=math; + subject_schedule.get(1).progress=math_finish; + subject_schedule.get(2).max=english; + subject_schedule.get(2).progress=english_finish; + subject_schedule.get(3).max=history; + subject_schedule.get(3).progress=history_finish; + subject_schedule.get(4).max=geography; + subject_schedule.get(4).progress=geography_finish; + subject_schedule.get(5).max=politics; + subject_schedule.get(5).progress=politics_finish; + subject_schedule.get(6).max=physics; + subject_schedule.get(6).progress=physics_finish; + subject_schedule.get(7).max=chemistry; + subject_schedule.get(7).progress=chemistry_finish; + subject_schedule.get(8).max=biology; + subject_schedule.get(8).progress=biology_finish; + subject_schedule.get(9).max=other; + subject_schedule.get(9).progress=other_finish; + subject_schedule.get(10).max=sum; + subject_schedule.get(10).progress=sum_finish; + } +} + + diff --git a/Job_Management/app/src/main/java/com/hong/job_management/StatisticsActivity.java b/Job_Management/app/src/main/java/com/hong/job_management/StatisticsActivity.java new file mode 100644 index 0000000..d496c63 --- /dev/null +++ b/Job_Management/app/src/main/java/com/hong/job_management/StatisticsActivity.java @@ -0,0 +1,152 @@ +package com.hong.job_management; + +import androidx.appcompat.app.AppCompatActivity; + +import android.graphics.Color; +import android.os.Bundle; + +import com.github.mikephil.charting.animation.Easing; +import com.github.mikephil.charting.charts.PieChart; +import com.github.mikephil.charting.components.Legend; +import com.github.mikephil.charting.data.PieData; +import com.github.mikephil.charting.data.PieDataSet; +import com.github.mikephil.charting.data.PieEntry; +import com.github.mikephil.charting.formatter.PercentFormatter; +import com.github.mikephil.charting.utils.ColorTemplate; + +import java.util.ArrayList; + +import static com.hong.job_management.MainActivity.chinese; +import static com.hong.job_management.MainActivity.chinese_finish; +import static com.hong.job_management.MainActivity.biology; +import static com.hong.job_management.MainActivity.biology_finish; +import static com.hong.job_management.MainActivity.chemistry; +import static com.hong.job_management.MainActivity.chemistry_finish; +import static com.hong.job_management.MainActivity.english; +import static com.hong.job_management.MainActivity.english_finish; +import static com.hong.job_management.MainActivity.geography; +import static com.hong.job_management.MainActivity.geography_finish; +import static com.hong.job_management.MainActivity.history; +import static com.hong.job_management.MainActivity.history_finish; +import static com.hong.job_management.MainActivity.math; +import static com.hong.job_management.MainActivity.math_finish; +import static com.hong.job_management.MainActivity.other; +import static com.hong.job_management.MainActivity.other_finish; +import static com.hong.job_management.MainActivity.physics; +import static com.hong.job_management.MainActivity.physics_finish; +import static com.hong.job_management.MainActivity.politics; +import static com.hong.job_management.MainActivity.politics_finish; +import static com.hong.job_management.MainActivity.sum; +import static com.hong.job_management.MainActivity.sum_finish; + +public class StatisticsActivity extends AppCompatActivity { + + private PieChart pic_chart; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_statistics); + initView(); + } + + private void initView(){ + pic_chart = (PieChart) findViewById(R.id.pic_chart); + pic_chart.setUsePercentValues(true);//设置为显示百分比 + pic_chart.getDescription().setEnabled(false);//设置pieChart图表的描述 + pic_chart.setExtraOffsets(5,0,5,5);//设置pieChart图表上下左右的偏移,类似于外边距 + pic_chart.setDragDecelerationFrictionCoef(0.95f);//设置pieChart图表转动阻力摩擦系数[0,1] + pic_chart.animateY(1400, Easing.EasingOption.EaseInOutBack);//设置pieChart图表展示动画效果 + + //设置圆环内部属性 + pic_chart.setDrawCenterText(true);//是否绘制PieChart内部中心文本(true:下面属性才有意义) + pic_chart.setCenterText("作业统计");//设置PieChart内部圆文字的内容 + pic_chart.setCenterTextSize(27); + //pic_chart.setCenterTextTypeface(Typeface.defaultFromStyle(Typeface.BOLD));//设置PieChart内部圆文字的字体样式 + pic_chart.setDrawHoleEnabled(true);//是否显示PieChart内部圆环(true:下面属性才有意义) + pic_chart.setHoleColor(Color.WHITE);//设置PieChart内部圆的颜色 + pic_chart.setTransparentCircleColor(Color.WHITE);//设置PieChart内部透明圆与内部圆间距的填充颜色 + pic_chart.setTransparentCircleAlpha(110);//设置PieChart内部透明圆与内部圆间距透明度[0~255]数值越小越透明 + pic_chart.setHoleRadius(58f);//设置PieChart内部圆的半径 + pic_chart.setTransparentCircleRadius(61f);//设置PieChart内部透明圆的半径 + + pic_chart.setRotationAngle(0);//设置pieChart图表起始角度 + // 触摸旋转 + pic_chart.setRotationEnabled(true);//设置pieChart图表是否可以手动旋转 + pic_chart.setHighlightPerTapEnabled(true);//设置pieChart图表点击Item高亮是否可用 + + //模拟数据 + ArrayList entries = new ArrayList(); + entries.clear(); + PieEntry pieEntry =new PieEntry(3,"模板"); + if(chinese!=0) + entries.add(new PieEntry(chinese,"语文")); + if(math!=0) + entries.add(new PieEntry(math, "数学")); + if(english!=0) + entries.add(new PieEntry(english, "英语")); + if(biology!=0) + entries.add(new PieEntry(biology, "生物")); + if(chemistry!=0) + entries.add(new PieEntry(chemistry, "化学")); + if(physics!=0) + entries.add(new PieEntry(physics, "物理")); + if(history!=0) + entries.add(new PieEntry(history, "历史")); + if(politics!=0) + entries.add(new PieEntry(politics, "政治")); + if(geography!=0) + entries.add(new PieEntry(geography, "地理")); + if(other!=0) + entries.add(new PieEntry(other, "其他")); + + //pieEntry.setData(10); //重复传入同个科目时重新设置其值 + //pieEntry.setLabel("chensh"); + //entries.set(0,pieEntry); + + //设置数据 + setDate(entries); + + // 获取pieChart图列 + Legend l=pic_chart.getLegend(); + l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP); + l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT); + l.setOrientation(Legend.LegendOrientation.VERTICAL); + l.setDrawInside(false); + l.setXEntrySpace(7f); + l.setYEntrySpace(0f); + l.setYOffset(0f); + + // 输入标签样式 + pic_chart.setEntryLabelColor(Color.WHITE); + pic_chart.setEntryLabelTextSize(16f); + } + + private void setDate(ArrayList entries) { + PieDataSet dataSet = new PieDataSet(entries, "科目类别"); + dataSet.setSliceSpace(3f); + dataSet.setSelectionShift(5f); + + //数据和颜色 + ArrayList colors = new ArrayList(); + for (int c : ColorTemplate.VORDIPLOM_COLORS) + colors.add(c); + for (int c : ColorTemplate.JOYFUL_COLORS) + colors.add(c); + for (int c : ColorTemplate.COLORFUL_COLORS) + colors.add(c); + for (int c : ColorTemplate.LIBERTY_COLORS) + colors.add(c); + for (int c : ColorTemplate.PASTEL_COLORS) + colors.add(c); + colors.add(ColorTemplate.getHoloBlue()); + dataSet.setColors(colors); + PieData data = new PieData(dataSet); + data.setValueFormatter(new PercentFormatter()); + data.setValueTextSize(14f); + data.setValueTextColor(Color.WHITE); + pic_chart.setData(data); + pic_chart.highlightValues(null); + //刷新 + pic_chart.invalidate(); + } +} \ No newline at end of file diff --git a/Job_Management/app/src/main/java/com/hong/job_management/Subject_schedule.java b/Job_Management/app/src/main/java/com/hong/job_management/Subject_schedule.java new file mode 100644 index 0000000..f052177 --- /dev/null +++ b/Job_Management/app/src/main/java/com/hong/job_management/Subject_schedule.java @@ -0,0 +1,47 @@ +package com.hong.job_management; + +public class Subject_schedule { + private String subject;//用来放科目的 + public int max=0;//用来放科目总共的进度 + public int progress=0;//用来放已经完成进度 + + public Subject_schedule(String subject) { + this.subject = subject; + } + + public String getSubject() { + + return subject; + } + + public void setSubject(String subject) { + + this.subject = subject; + } + + public int getMax() { + + return max; + } + + public void setMax(int max) { + + this.max = max; + } + + public int getProgress() { + + return progress; + } + + public void setProgress(int progress) { + + this.progress= progress; + } + +} + + + + + diff --git a/Job_Management/app/src/main/java/com/hong/job_management/myAdapter_Homework.java b/Job_Management/app/src/main/java/com/hong/job_management/myAdapter_Homework.java new file mode 100644 index 0000000..46138b5 --- /dev/null +++ b/Job_Management/app/src/main/java/com/hong/job_management/myAdapter_Homework.java @@ -0,0 +1,88 @@ +package com.hong.job_management; + +import android.app.Activity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import java.util.List; + +public class myAdapter_Homework extends BaseAdapter { + private Activity mContext; + private LayoutInflater mInflater; + private List mDatas; + private class ViewHolder{ + private TextView homework_name; + private TextView homework_subject; + private TextView homework_time; + private TextView homework_rank; + private TextView homework_finish; + } + + @Override + public int getItemViewType(int position) { + int Isfinish=mDatas.get(position).isfinish; + if(Isfinish==1){ + return 1; + }else{ + return 0; + } + } + + public myAdapter_Homework(Activity context , List data) { + mContext=context; + mDatas=data; + mInflater=LayoutInflater.from(mContext); + } + + @Override + public int getCount() { + return (mDatas != null ? mDatas.size() : 0); + } + + @Override + public Object getItem(int position) { + return (mDatas != null ? mDatas.get(position) : null); + } + + @Override + public long getItemId(int position) { + return position; + } + + @NonNull + @Override + public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) { + ViewHolder viewHolder=null; + if(convertView == null){ + convertView =mInflater.inflate(R.layout.homework_item,null); + viewHolder =new ViewHolder(); + viewHolder.homework_name=(TextView)convertView.findViewById(R.id.homework_name); + viewHolder.homework_subject=(TextView)convertView.findViewById(R.id.homework_subject); + viewHolder.homework_rank=(TextView)convertView.findViewById(R.id.homework_rank); + viewHolder.homework_time=(TextView)convertView.findViewById(R.id.homework_time); + viewHolder.homework_finish=(TextView)convertView.findViewById(R.id.homework_finish); + convertView.setTag(viewHolder); + } else { + viewHolder =(ViewHolder)convertView.getTag(); + } + Homework homework= (Homework) getItem(position); + viewHolder.homework_name.setText(homework.getHomework_name()); + viewHolder.homework_subject.setText(homework.getHomework_subject()); + viewHolder.homework_rank.setText(homework.getHomework_rank()); + viewHolder.homework_time.setText(homework.getHomework_time()); + if(homework.isfinish==0) + { + viewHolder.homework_finish.setText("×"); + }else{ + viewHolder.homework_finish.setText("√"); + } + return convertView; + } + +} diff --git a/Job_Management/app/src/main/java/com/hong/job_management/myAdapter_Schedule.java b/Job_Management/app/src/main/java/com/hong/job_management/myAdapter_Schedule.java new file mode 100644 index 0000000..cd64ad5 --- /dev/null +++ b/Job_Management/app/src/main/java/com/hong/job_management/myAdapter_Schedule.java @@ -0,0 +1,69 @@ +package com.hong.job_management; + +import android.app.Activity; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.BaseAdapter; +import android.widget.ProgressBar; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import java.util.List; + +class myAdapter_Schedule extends BaseAdapter { + private Activity mContext; + private LayoutInflater mInflater; + private List mDatas; + private class ViewHolder{ + private TextView subject_name; + private TextView subject_value; + private ProgressBar subject_progress; + } + + public myAdapter_Schedule(Activity context ,List data){ + mContext=context; + mDatas=data; + mInflater=LayoutInflater.from(mContext); + } + + @Override + public int getCount() { + return (mDatas != null ? mDatas.size() : 0); + } + @Override + public Object getItem(int position) { + return (mDatas != null ? mDatas.get(position) : null); + } + @Override + public long getItemId(int position) { + return position; + } + + @NonNull + @Override + public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { + ViewHolder viewHolder=null; + if(convertView==null) + { + convertView =mInflater.inflate(R.layout.schedule_item,null); + viewHolder=new ViewHolder(); + viewHolder.subject_name=(TextView) convertView.findViewById(R.id.subject_name); + viewHolder.subject_value=(TextView)convertView.findViewById(R.id.subject_value); + viewHolder.subject_progress=(ProgressBar)convertView.findViewById((R.id.subject_progress)); + convertView.setTag(viewHolder); + }else{ + viewHolder=(ViewHolder) convertView.getTag(); + } + Subject_schedule subject_schedule=(Subject_schedule) getItem(position); + viewHolder.subject_name.setText(subject_schedule.getSubject()); + viewHolder.subject_progress.setMax(subject_schedule.getMax()); + viewHolder.subject_progress.setProgress(subject_schedule.getProgress()); + viewHolder.subject_value.setText(String.valueOf((int)(((float)subject_schedule.getProgress()/(float)subject_schedule.getMax())*1000)/10.0+"%")); + return convertView; + } +} \ No newline at end of file diff --git a/Job_Management/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/Job_Management/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/Job_Management/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Job_Management/app/src/main/res/drawable/a.jpg b/Job_Management/app/src/main/res/drawable/a.jpg new file mode 100644 index 0000000..f7c4ea7 Binary files /dev/null and b/Job_Management/app/src/main/res/drawable/a.jpg differ diff --git a/Job_Management/app/src/main/res/drawable/add_circle.xml b/Job_Management/app/src/main/res/drawable/add_circle.xml new file mode 100644 index 0000000..a1c721d --- /dev/null +++ b/Job_Management/app/src/main/res/drawable/add_circle.xml @@ -0,0 +1,10 @@ + + + diff --git a/Job_Management/app/src/main/res/drawable/ic_launcher_background.xml b/Job_Management/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/Job_Management/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Job_Management/app/src/main/res/layout/activity_main.xml b/Job_Management/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..1e4477b --- /dev/null +++ b/Job_Management/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Job_Management/app/src/main/res/layout/activity_schedule.xml b/Job_Management/app/src/main/res/layout/activity_schedule.xml new file mode 100644 index 0000000..b06d05a --- /dev/null +++ b/Job_Management/app/src/main/res/layout/activity_schedule.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/Job_Management/app/src/main/res/layout/activity_statistics.xml b/Job_Management/app/src/main/res/layout/activity_statistics.xml new file mode 100644 index 0000000..8f934db --- /dev/null +++ b/Job_Management/app/src/main/res/layout/activity_statistics.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Job_Management/app/src/main/res/layout/homework_item.xml b/Job_Management/app/src/main/res/layout/homework_item.xml new file mode 100644 index 0000000..1275d99 --- /dev/null +++ b/Job_Management/app/src/main/res/layout/homework_item.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Job_Management/app/src/main/res/layout/schedule_item.xml b/Job_Management/app/src/main/res/layout/schedule_item.xml new file mode 100644 index 0000000..1a8d141 --- /dev/null +++ b/Job_Management/app/src/main/res/layout/schedule_item.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Job_Management/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/Job_Management/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/Job_Management/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Job_Management/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/Job_Management/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/Job_Management/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Job_Management/app/src/main/res/mipmap-hdpi/ic_launcher.png b/Job_Management/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..a571e60 Binary files /dev/null and b/Job_Management/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/Job_Management/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/Job_Management/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000..61da551 Binary files /dev/null and b/Job_Management/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/Job_Management/app/src/main/res/mipmap-mdpi/ic_launcher.png b/Job_Management/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..c41dd28 Binary files /dev/null and b/Job_Management/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/Job_Management/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/Job_Management/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000..db5080a Binary files /dev/null and b/Job_Management/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/Job_Management/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/Job_Management/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..6dba46d Binary files /dev/null and b/Job_Management/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/Job_Management/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/Job_Management/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000..da31a87 Binary files /dev/null and b/Job_Management/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/Job_Management/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/Job_Management/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..15ac681 Binary files /dev/null and b/Job_Management/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/Job_Management/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/Job_Management/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..b216f2d Binary files /dev/null and b/Job_Management/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/Job_Management/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/Job_Management/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..f25a419 Binary files /dev/null and b/Job_Management/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/Job_Management/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/Job_Management/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..e96783c Binary files /dev/null and b/Job_Management/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/Job_Management/app/src/main/res/values-night/themes.xml b/Job_Management/app/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..7541efc --- /dev/null +++ b/Job_Management/app/src/main/res/values-night/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/Job_Management/app/src/main/res/values/arrays.xml b/Job_Management/app/src/main/res/values/arrays.xml new file mode 100644 index 0000000..3d67b93 --- /dev/null +++ b/Job_Management/app/src/main/res/values/arrays.xml @@ -0,0 +1,27 @@ + + + + 科目 + 语文 + 数学 + 英语 + 历史 + 地理 + 政治 + 物理 + 化学 + 生物 + 其他 + + + + + 难度 + 简单 + 中等 + 困难 + + + + + \ No newline at end of file diff --git a/Job_Management/app/src/main/res/values/colors.xml b/Job_Management/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..f8c6127 --- /dev/null +++ b/Job_Management/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/Job_Management/app/src/main/res/values/strings.xml b/Job_Management/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..cb569b9 --- /dev/null +++ b/Job_Management/app/src/main/res/values/strings.xml @@ -0,0 +1,6 @@ + + Job_Management + 登记 + 进度 + 统计 + \ No newline at end of file diff --git a/Job_Management/app/src/main/res/values/themes.xml b/Job_Management/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..57541e9 --- /dev/null +++ b/Job_Management/app/src/main/res/values/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/Job_Management/app/src/test/java/com/hong/job_management/ExampleUnitTest.java b/Job_Management/app/src/test/java/com/hong/job_management/ExampleUnitTest.java new file mode 100644 index 0000000..2bef065 --- /dev/null +++ b/Job_Management/app/src/test/java/com/hong/job_management/ExampleUnitTest.java @@ -0,0 +1,17 @@ +package com.hong.job_management; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +public class ExampleUnitTest { + @Test + public void addition_isCorrect() { + assertEquals(4, 2 + 2); + } +} \ No newline at end of file diff --git a/Job_Management/build.gradle b/Job_Management/build.gradle new file mode 100644 index 0000000..f605f32 --- /dev/null +++ b/Job_Management/build.gradle @@ -0,0 +1,24 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + repositories { + google() + jcenter() + } + dependencies { + classpath "com.android.tools.build:gradle:4.1.3" + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + google() + jcenter() + maven { url "https://jitpack.io" } + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/Job_Management/gradle.properties b/Job_Management/gradle.properties new file mode 100644 index 0000000..52f5917 --- /dev/null +++ b/Job_Management/gradle.properties @@ -0,0 +1,19 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app"s APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=true \ No newline at end of file diff --git a/Job_Management/gradle/wrapper/gradle-wrapper.jar b/Job_Management/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..f6b961f Binary files /dev/null and b/Job_Management/gradle/wrapper/gradle-wrapper.jar differ diff --git a/Job_Management/gradle/wrapper/gradle-wrapper.properties b/Job_Management/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..57d2a5e --- /dev/null +++ b/Job_Management/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Sun Apr 11 19:05:04 CST 2021 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip diff --git a/Job_Management/gradlew b/Job_Management/gradlew new file mode 100644 index 0000000..cccdd3d --- /dev/null +++ b/Job_Management/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/Job_Management/gradlew.bat b/Job_Management/gradlew.bat new file mode 100644 index 0000000..f955316 --- /dev/null +++ b/Job_Management/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Job_Management/settings.gradle b/Job_Management/settings.gradle new file mode 100644 index 0000000..d27c37e --- /dev/null +++ b/Job_Management/settings.gradle @@ -0,0 +1,2 @@ +include ':app' +rootProject.name = "Job_Management" \ No newline at end of file diff --git a/spring-boot-usejpa/.gitignore b/spring-boot-usejpa/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/spring-boot-usejpa/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/spring-boot-usejpa/.mvn/wrapper/MavenWrapperDownloader.java b/spring-boot-usejpa/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100644 index 0000000..a45eb6b --- /dev/null +++ b/spring-boot-usejpa/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,118 @@ +/* + * Copyright 2007-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.net.*; +import java.io.*; +import java.nio.channels.*; +import java.util.Properties; + +public class MavenWrapperDownloader { + + private static final String WRAPPER_VERSION = "0.5.6"; + /** + * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. + */ + private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to + * use instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; + + /** + * Path where the maven-wrapper.jar will be saved to. + */ + private static final String MAVEN_WRAPPER_JAR_PATH = + ".mvn/wrapper/maven-wrapper.jar"; + + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if (mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { + try { + if (mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... + } + } + } + System.out.println("- Downloading from: " + url); + + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if (!outputFile.getParentFile().exists()) { + if (!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); + } + } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault(new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } + +} diff --git a/spring-boot-usejpa/.mvn/wrapper/maven-wrapper.jar b/spring-boot-usejpa/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..2cc7d4a Binary files /dev/null and b/spring-boot-usejpa/.mvn/wrapper/maven-wrapper.jar differ diff --git a/spring-boot-usejpa/.mvn/wrapper/maven-wrapper.properties b/spring-boot-usejpa/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..abd303b --- /dev/null +++ b/spring-boot-usejpa/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.2/apache-maven-3.8.2-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar diff --git a/spring-boot-usejpa/mvnw b/spring-boot-usejpa/mvnw new file mode 100644 index 0000000..a16b543 --- /dev/null +++ b/spring-boot-usejpa/mvnw @@ -0,0 +1,310 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/spring-boot-usejpa/mvnw.cmd b/spring-boot-usejpa/mvnw.cmd new file mode 100644 index 0000000..c8d4337 --- /dev/null +++ b/spring-boot-usejpa/mvnw.cmd @@ -0,0 +1,182 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/spring-boot-usejpa/pom.xml b/spring-boot-usejpa/pom.xml new file mode 100644 index 0000000..092c28e --- /dev/null +++ b/spring-boot-usejpa/pom.xml @@ -0,0 +1,72 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.5.5 + + + cn.hzxy + spring-boot-usejpa + 0.0.1-SNAPSHOT + spring-boot-usejpa + spring-boot-usejpa + + 1.8 + + + + org.springframework.boot + spring-boot-starter-data-jdbc + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-jdbc + + + org.springframework.boot + spring-boot-starter-web + + + com.alibaba + druid + 1.1.12 + + + org.springframework.boot + spring-boot-starter-test + test + + + mysql + mysql-connector-java + runtime + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + junit + junit + 4.12 + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/SpringBootUsejpaApplication.java b/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/SpringBootUsejpaApplication.java new file mode 100644 index 0000000..344073b --- /dev/null +++ b/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/SpringBootUsejpaApplication.java @@ -0,0 +1,16 @@ +package cn.hzxy.springbootusejpa; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; + + +@SpringBootApplication +public class SpringBootUsejpaApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringBootUsejpaApplication.class, args); + } + +} diff --git a/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/controller/NewTeacherController.java b/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/controller/NewTeacherController.java new file mode 100644 index 0000000..d8e1845 --- /dev/null +++ b/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/controller/NewTeacherController.java @@ -0,0 +1,22 @@ +package cn.hzxy.springbootusejpa.controller; +import cn.hzxy.springbootusejpa.entity.NewTeacher; +import cn.hzxy.springbootusejpa.service.NewTeacherService; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.annotation.Resource; +import java.util.List; + +@Controller +@RequestMapping("/newTeacher") +public class NewTeacherController { + @Resource + private NewTeacherService newTeacherService; + @RequestMapping("/test") + public String test(Model model){ + List newTeacherList=newTeacherService.findAll(); + model.addAttribute("newTeachers",newTeacherList); + return "newTeacher"; + } +} diff --git a/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/entity/NewTeacher.java b/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/entity/NewTeacher.java new file mode 100644 index 0000000..f46d4be --- /dev/null +++ b/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/entity/NewTeacher.java @@ -0,0 +1,38 @@ +package cn.hzxy.springbootusejpa.entity; + +import javax.persistence.*; + +@Entity +@Table(name="teacher") +public class NewTeacher { + @Id + private String id; + @Column(name="name",length=32) + private String name; + @Column + private String password; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } +} diff --git a/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/repository/TeacherRepository.java b/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/repository/TeacherRepository.java new file mode 100644 index 0000000..57a14ef --- /dev/null +++ b/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/repository/TeacherRepository.java @@ -0,0 +1,15 @@ +package cn.hzxy.springbootusejpa.repository; + +import cn.hzxy.springbootusejpa.entity.NewTeacher; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.Collection; +import java.util.List; + + +public interface TeacherRepository extends JpaRepository { + List findByName(String name); + List findByNameLike(String name); + List findByIdIn(Collection ids); + +} diff --git a/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/service/NewTeacherService.java b/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/service/NewTeacherService.java new file mode 100644 index 0000000..39c393a --- /dev/null +++ b/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/service/NewTeacherService.java @@ -0,0 +1,22 @@ +package cn.hzxy.springbootusejpa.service; + +import cn.hzxy.springbootusejpa.entity.NewTeacher; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; + +import java.awt.print.Pageable; +import java.util.Collection; +import java.util.List; + +public interface NewTeacherService { + NewTeacher findById(String id); + List findAll(); + NewTeacher sava(NewTeacher newTeacher); + void delete(String id); + + Page findAll(PageRequest pageRequest); + List findByName(String name); + List findByNameLike(String name); + List findByIdIn(Collection ids); + +} diff --git a/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/service/impl/Assert.java b/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/service/impl/Assert.java new file mode 100644 index 0000000..554e100 --- /dev/null +++ b/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/service/impl/Assert.java @@ -0,0 +1,11 @@ +package cn.hzxy.springbootusejpa.service.impl; + +public class Assert extends org.springframework.util.Assert { + public static void isTrue(boolean expression,String message){ + if(!expression) + { + throw new IllegalArgumentException(message); + } + } + +} diff --git a/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/service/impl/NewTeacherServiceImpl.java b/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/service/impl/NewTeacherServiceImpl.java new file mode 100644 index 0000000..97de825 --- /dev/null +++ b/spring-boot-usejpa/src/main/java/cn/hzxy/springbootusejpa/service/impl/NewTeacherServiceImpl.java @@ -0,0 +1,60 @@ +package cn.hzxy.springbootusejpa.service.impl; + +import cn.hzxy.springbootusejpa.entity.NewTeacher; +import cn.hzxy.springbootusejpa.repository.TeacherRepository; +import cn.hzxy.springbootusejpa.service.NewTeacherService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.awt.print.Pageable; +import java.util.Collection; +import java.util.List; + +@Service +public class NewTeacherServiceImpl implements NewTeacherService { + @Resource + private TeacherRepository teacherRepository; + @Override + public NewTeacher findById(String id) { + return teacherRepository.findById(id).orElse(null); + } + + @Override + public List findAll() { + List newTeacherList=teacherRepository.findAll(); + return newTeacherList; + } + + @Override + public NewTeacher sava(NewTeacher newTeacher) { + return teacherRepository.save(newTeacher); + } + + @Override + public void delete(String id) { + teacherRepository.deleteById(id); + } + + @Override + public Page findAll(PageRequest pageRequest) { + return teacherRepository.findAll(pageRequest); + } + + + @Override + public List findByName(String name) { + return teacherRepository.findByName(name); + } + + @Override + public List findByNameLike(String name) { + return teacherRepository.findByNameLike(name); + } + + @Override + public List findByIdIn(Collection ids) { + return teacherRepository.findByIdIn(ids); + } +} diff --git a/spring-boot-usejpa/src/main/resources/application.properties b/spring-boot-usejpa/src/main/resources/application.properties new file mode 100644 index 0000000..bd9326e --- /dev/null +++ b/spring-boot-usejpa/src/main/resources/application.properties @@ -0,0 +1,26 @@ +spring.datasource.username=root +spring.datasource.password=123456 +spring.datasource.url=jdbc:mysql://127.0.0.1:3306/teacher +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.type=com.alibaba.druid.pool.DruidDataSource +spring.datasource.initialSize=5 +spring.datasource.minIdle=5 +spring.datasource.maxActive=20 +spring.datasource.maxWait=6000 +spring.datasource.timeBetweenEvictionRunsMillis=60000 +spring.datasource.minEvictableIdleTimeMills=300000 +spring.datasource.validationQuery=SELECT 1 FROM DUAL +spring.datasource.testWhileIdle=true +spring.datasource.testOnBorrow=false +spring.datasource.testOnReturn=false +spring.datasource.poolPreparedStatements=true +spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 +spring.datasource.filters=stat,wall,log4j +spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 +spring.jpa.hibernate.naming.physical-strategy= org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl + +spring.thymeleaf.mode=HTML5 +spring.thymeleaf.encoding=UTF-8 +spring.thymeleaf.servlet.content-type=text/html +spring.thymeleaf.cache=false +spring.thymeleaf.prefix=classpath:/templates/ \ No newline at end of file diff --git a/spring-boot-usejpa/src/main/resources/static/1.jfif b/spring-boot-usejpa/src/main/resources/static/1.jfif new file mode 100644 index 0000000..cd72128 Binary files /dev/null and b/spring-boot-usejpa/src/main/resources/static/1.jfif differ diff --git a/spring-boot-usejpa/src/main/resources/templates/newTeacher.html b/spring-boot-usejpa/src/main/resources/templates/newTeacher.html new file mode 100644 index 0000000..51ca9a3 --- /dev/null +++ b/spring-boot-usejpa/src/main/resources/templates/newTeacher.html @@ -0,0 +1,27 @@ + + + + + teacher + + + + + + + + + + + + + +
教师名密码
+ + \ No newline at end of file diff --git a/spring-boot-usejpa/src/test/java/cn/hzxy/springbootusejpa/SpringBootUsejpaApplicationTests.java b/spring-boot-usejpa/src/test/java/cn/hzxy/springbootusejpa/SpringBootUsejpaApplicationTests.java new file mode 100644 index 0000000..9846cb1 --- /dev/null +++ b/spring-boot-usejpa/src/test/java/cn/hzxy/springbootusejpa/SpringBootUsejpaApplicationTests.java @@ -0,0 +1,52 @@ +package cn.hzxy.springbootusejpa; + +import cn.hzxy.springbootusejpa.entity.NewTeacher; +import cn.hzxy.springbootusejpa.service.NewTeacherService; +import cn.hzxy.springbootusejpa.service.impl.Assert; +import org.junit.jupiter.api.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; +import java.awt.print.Pageable; +import java.util.ArrayList; +import java.util.List; +@RunWith(SpringRunner.class) +@SpringBootTest +class SpringBootUsejpaApplicationTests { + @Resource + private NewTeacherService newTeacherService; + @Test + public void testRepository(){ +// List teacherList=newTeacherService.findAll(); +// System.out.println("findAll():"+teacherList.size()); + List teacherList2=newTeacherService.findByName("马驰"); + System.out.println("findByName():"+teacherList2.size()); + Assert.isTrue(teacherList2.get(0).getName().equals("马驰"),"data error"); + List teacherList3=newTeacherService.findByNameLike("%张%"); + System.out.println("findByNameLike():"+teacherList3.size()); + System.out.println("第一条记录是:"+teacherList3.get(0).getName()); + System.out.println("第二条记录是:"+teacherList3.get(1).getName()); + Assert.isTrue(teacherList3.get(0).getName().equals("张晓欢"),"data error"); + List ids=new ArrayList(); + ids.add("1"); + ids.add("3"); + List teacherList4=newTeacherService.findByIdIn(ids); + System.out.println("findByIdIn():"+teacherList4.size()); + PageRequest pageRequest =PageRequest.of(0,10); + Page teacherList5=newTeacherService.findAll(pageRequest); + System.out.println("page findAll():"+teacherList5.getTotalPages()+"/"+teacherList5.getSize()); + NewTeacher newTeacher=new NewTeacher(); + newTeacher.setId("4"); + newTeacher.setName("彭晓刚"); + newTeacher.setPassword("000000"); + newTeacherService.sava(newTeacher); + } + @Test + void contextLoads() { + } + +}