结构体系

master
18027263494@163.com 4 years ago
parent d3bc2b25ba
commit 15e8e7a1c6

@ -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

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="1.8" />
</component>
</project>

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="PLATFORM" />
<option name="disableWrapperSourceDistributionNotification" value="true" />
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="1.8" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
</set>
</option>
<option name="resolveModulePerSourceSet" value="false" />
<option name="useQualifiedModuleNames" value="true" />
</GradleProjectSettings>
</option>
</component>
</project>

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="BintrayJCenter" />
<option name="name" value="BintrayJCenter" />
<option name="url" value="https://jcenter.bintray.com/" />
</remote-repository>
<remote-repository>
<option name="id" value="Google" />
<option name="name" value="Google" />
<option name="url" value="https://dl.google.com/dl/android/maven2/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven" />
<option name="name" value="maven" />
<option name="url" value="https://jitpack.io" />
</remote-repository>
</component>
</project>

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>

@ -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'
}

@ -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 <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@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());
}
}

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.hong.job_management">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:usesCleartextTraffic="true"
android:theme="@style/Theme.Job_Management">
<activity android:name=".StatisticsActivity"/>
<activity android:name=".ScheduleActivity" />
<activity android:name=".RegisterActivity" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET" ></uses-permission>
</manifest>

@ -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;
}
}

@ -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<String> getList(String urlPath) throws Exception {
List<String> url_backgroud = new ArrayList<String>();
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;
}
}

@ -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) {
}
}

@ -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);
}
}
}

@ -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> subject_schedule=new ArrayList<Subject_schedule>();
@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)
{
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;
}
}

@ -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<PieEntry> entries = new ArrayList<PieEntry>();
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<PieEntry> entries) {
PieDataSet dataSet = new PieDataSet(entries, "科目类别");
dataSet.setSliceSpace(3f);
dataSet.setSelectionShift(5f);
//数据和颜色
ArrayList<Integer> colors = new ArrayList<Integer>();
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();
}
}

@ -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;
}
}

@ -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<Homework> 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<Homework> 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;
}
}

@ -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<Subject_schedule> mDatas;
private class ViewHolder{
private TextView subject_name;
private TextView subject_value;
private ProgressBar subject_progress;
}
public myAdapter_Schedule(Activity context ,List<Subject_schedule> 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;
}
}

@ -0,0 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 KiB

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M13,7h-2v4L7,11v2h4v4h2v-4h4v-2h-4L13,7zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z"/>
</vector>

@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:id="@+id/main_layout"
android:background="@drawable/a"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="#9F55A6A5">
<TextView
android:id="@+id/temp"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:text="36.7℃"
android:textColor="@color/white"
android:textSize="20dp"
android:layout_marginLeft="20dp">
</TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="60dp"
android:text="作业管理"
android:textSize="22sp"
android:gravity="center_vertical"
android:textColor="@color/white"
android:layout_marginLeft="90dp">
</TextView>
<ImageView
android:id="@+id/change_background"
android:layout_width="30dp"
android:layout_height="match_parent"
android:layout_marginLeft="110dp"
android:src="@drawable/add_circle" />
</LinearLayout>
<com.baoyz.swipemenulistview.SwipeMenuListView
android:id="@+id/homework_list"
android:layout_width="match_parent"
android:layout_height="540dp"
android:layout_marginTop="60dp">
</com.baoyz.swipemenulistview.SwipeMenuListView>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal">
<Button
android:id="@+id/btn_dj"
android:layout_width="205dp"
android:layout_height="60dp"
android:layout_weight="1"
android:textColor="@color/white"
android:text="@string/Register"
android:textSize="20sp"
android:background="#5955A6A5"
/>
<Button
android:id="@+id/btn_jd"
android:layout_width="205dp"
android:layout_height="60dp"
android:layout_weight="1"
android:text="@string/Schedule"
android:textColor="@color/white"
android:textSize="20sp"
android:background="#5955A6A5"
/>
<Button
android:id="@+id/btn_tj"
android:layout_width="205dp"
android:layout_height="60dp"
android:layout_weight="1"
android:text="@string/Statistics"
android:textColor="@color/white"
android:textSize="20sp"
android:background="#5955A6A5"
/>
</LinearLayout>
</RelativeLayout>

@ -0,0 +1,107 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".RegisterActivity">
<!-- <ImageView-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- android:background="@drawable/a3">-->
<!-- </ImageView>-->
<TextView
android:layout_width="match_parent"
android:layout_height="60dp"
android:text="@string/Register"
android:textSize="22sp"
android:textColor="@color/white"
android:gravity="center"
android:background="#D555A6A5">
</TextView>
<LinearLayout
android:id="@+id/homework_register"
android:layout_width="match_parent"
android:layout_height="70dp"
android:layout_marginTop="65dp"
android:orientation="horizontal"
>
<Spinner
android:id="@+id/subject"
android:layout_width="100dp"
android:layout_height="70dp"
android:layout_marginLeft="3dp"
android:entries="@array/subjects"
android:spinnerMode="dialog"
android:gravity="center"
android:layout_marginStart="3dp">
</Spinner>
<EditText
android:id="@+id/name"
android:layout_width="280dp"
android:layout_height="70dp"
android:layout_marginLeft="15dp"
android:hint="作业名称"
android:singleLine="true"
android:textSize="24sp"
/>
</LinearLayout>
<TextView
android:layout_width="130dp"
android:layout_height="40dp"
android:layout_below="@id/homework_register"
android:layout_marginTop="40dp"
android:layout_marginLeft="10dp"
android:text="截止时间 :"
android:textColor="@color/black"
android:textSize="21sp"
android:layout_marginStart="10dp">
</TextView>
<Spinner
android:id="@+id/rank"
android:layout_width="100dp"
android:layout_height="70dp"
android:layout_marginLeft="5dp"
android:entries="@array/rank"
android:spinnerMode="dialog"
android:layout_marginTop="100dp"
android:layout_below="@id/homework_register"
android:layout_marginStart="5dp">
</Spinner>
<DatePicker
android:id="@+id/time"
android:layout_width="270dp"
android:layout_height="150dp"
android:layout_marginTop="120dp"
android:layout_marginLeft="120dp"
android:datePickerMode="spinner"
android:calendarViewShown="false"
android:startYear="2021"
>
</DatePicker>
<Button
android:id="@+id/btn_homework_dj"
android:layout_width="125dp"
android:layout_height="55dp"
android:layout_marginTop="300dp"
android:text="@string/Register"
android:textColor="@color/white"
android:textSize="20dp"
android:background="#A5329D91"
android:layout_marginLeft="260dp">
</Button>
</RelativeLayout>

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ScheduleActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="60dp"
android:text="@string/Schedule"
android:textSize="22dp"
android:textColor="@color/white"
android:gravity="center"
android:background="#D555A6A5">
</TextView>
<ListView
android:id="@+id/schedule_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="60dp"
android:entries="@array/subjects">
</ListView>
</RelativeLayout>

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ScheduleActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="60dp"
android:text="@string/Statistics"
android:textSize="22dp"
android:textColor="@color/white"
android:gravity="center"
android:background="#D555A6A5">
</TextView>
<com.github.mikephil.charting.charts.PieChart
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_marginTop="60dp"
android:id="@+id/pic_chart">
</com.github.mikephil.charting.charts.PieChart>
</RelativeLayout>

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/homework_finish"
android:layout_width="40dp"
android:layout_height="60dp"
android:gravity="center"
android:text="√"
android:textSize="21sp"
android:textColor="@color/black">
</TextView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/homework_name"
android:layout_width="match_parent"
android:layout_height="29dp"
android:text="作业名称作业名称作业"
android:textSize="21sp"
android:textColor="@color/black">
</TextView>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/homework_subject"
android:layout_width="60dp"
android:layout_height="wrap_content"
android:text="科目"
android:textSize="19sp">
</TextView>
<TextView
android:id="@+id/homework_rank"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="难度"
android:textSize="17sp">
</TextView>
<TextView
android:id="@+id/homework_time"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="160dp"
android:text="2021.06.14"
android:textSize="20sp"
android:layout_marginStart="160dp">
</TextView>
</LinearLayout>
<com.baoyz.swipemenulistview.SwipeMenuListView
android:id="@+id/collector_listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="#00000000"
android:dividerHeight="1dp"
android:fadingEdge="none"
android:fastScrollEnabled="false"
android:smoothScrollbar="true">
</com.baoyz.swipemenulistview.SwipeMenuListView>
</LinearLayout>
</LinearLayout>

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/subject_name"
android:layout_width="65dp"
android:layout_height="50dp"
android:text="科目"
android:gravity="center"
android:textSize="21dp"
android:textColor="@color/black">
</TextView>
<ProgressBar
android:id="@+id/subject_progress"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="260dp"
android:layout_height="50dp"
android:max="10"
android:progress="5"
android:indeterminateTintMode="src_atop"
android:indeterminateTint="@color/white">
</ProgressBar>
<TextView
android:id="@+id/subject_value"
android:layout_width="90dp"
android:layout_height="50dp"
android:text="30%"
android:gravity="center"
android:textSize="20dp"
android:textColor="@color/black">
</TextView>
</LinearLayout>

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

@ -0,0 +1,16 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.Job_Management" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_200</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/black</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_200</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
</resources>

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="subjects">
<item>科目</item>
<item>语文</item>
<item>数学</item>
<item>英语</item>
<item>历史</item>
<item>地理</item>
<item>政治</item>
<item>物理</item>
<item>化学</item>
<item>生物</item>
<item>其他</item>
</string-array>
<string-array name="rank">
<item>难度</item>
<item>简单</item>
<item>中等</item>
<item>困难</item>
</string-array>
</resources>

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
</resources>

@ -0,0 +1,6 @@
<resources>
<string name="app_name">Job_Management</string>
<string name="Register">登记</string>
<string name="Schedule">进度</string>
<string name="Statistics">统计</string>
</resources>

@ -0,0 +1,16 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.Job_Management" parent="Theme.MaterialComponents.DayNight.NoActionBar.Bridge">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/teal_700</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
</resources>

@ -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 <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() {
assertEquals(4, 2 + 2);
}
}

@ -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
}

@ -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

@ -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

@ -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" "$@"

@ -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

@ -0,0 +1,2 @@
include ':app'
rootProject.name = "Job_Management"

@ -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/

@ -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();
}
}

@ -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

@ -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 "$@"

@ -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%

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.hzxy</groupId>
<artifactId>spring-boot-usejpa</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-boot-usejpa</name>
<description>spring-boot-usejpa</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

@ -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);
}
}

@ -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<NewTeacher> newTeacherList=newTeacherService.findAll();
model.addAttribute("newTeachers",newTeacherList);
return "newTeacher";
}
}

@ -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;
}
}

@ -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<NewTeacher,String> {
List<NewTeacher> findByName(String name);
List<NewTeacher> findByNameLike(String name);
List<NewTeacher> findByIdIn(Collection<String> ids);
}

@ -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<NewTeacher> findAll();
NewTeacher sava(NewTeacher newTeacher);
void delete(String id);
Page<NewTeacher> findAll(PageRequest pageRequest);
List<NewTeacher> findByName(String name);
List<NewTeacher> findByNameLike(String name);
List<NewTeacher> findByIdIn(Collection<String> ids);
}

@ -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);
}
}
}

@ -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<NewTeacher> findAll() {
List<NewTeacher> 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<NewTeacher> findAll(PageRequest pageRequest) {
return teacherRepository.findAll(pageRequest);
}
@Override
public List<NewTeacher> findByName(String name) {
return teacherRepository.findByName(name);
}
@Override
public List<NewTeacher> findByNameLike(String name) {
return teacherRepository.findByNameLike(name);
}
@Override
public List<NewTeacher> findByIdIn(Collection<String> ids) {
return teacherRepository.findByIdIn(ids);
}
}

@ -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/

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 KiB

@ -0,0 +1,27 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymrleaf.org">
<head>
<meta http-equiv="Content=Type" content="text/html" charset="UTF-8">
<title>teacher</title>
<style>
body{
background-image: url("/static/1.jfif") ;
background-size: 100%;
}
</style>
</head>
<body >
<table>
<tr>
<td>教师名</td>
<td>密码</td>
</tr>
<tr th:each="newteacher:${newTeachers}">
<td th:text="${newteacher.name}"></td>
<td th:text="${newteacher.password}"></td>
</tr>
</table>
</body>
</html>

@ -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<NewTeacher> teacherList=newTeacherService.findAll();
// System.out.println("findAll():"+teacherList.size());
List<NewTeacher> teacherList2=newTeacherService.findByName("马驰");
System.out.println("findByName():"+teacherList2.size());
Assert.isTrue(teacherList2.get(0).getName().equals("马驰"),"data error");
List<NewTeacher> 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<String> ids=new ArrayList<String>();
ids.add("1");
ids.add("3");
List<NewTeacher> teacherList4=newTeacherService.findByIdIn(ids);
System.out.println("findByIdIn():"+teacherList4.size());
PageRequest pageRequest =PageRequest.of(0,10);
Page<NewTeacher> 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() {
}
}
Loading…
Cancel
Save