Android學生信息基礎管理系統(tǒng)APP_第1頁
Android學生信息基礎管理系統(tǒng)APP_第2頁
Android學生信息基礎管理系統(tǒng)APP_第3頁
Android學生信息基礎管理系統(tǒng)APP_第4頁
Android學生信息基礎管理系統(tǒng)APP_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

Android學生信息管理系統(tǒng)APP

一、需求分析

為了以便的進行對學生數(shù)據(jù)庫的操作,本app可在android設備

上進行對學生信息數(shù)據(jù)庫的信息管理功能,具體功能如下:

1.對數(shù)據(jù)庫中所有學生姓名進行顯示,對各個條目進行點擊可展開具

體信息

2.查詢數(shù)據(jù):查詢數(shù)據(jù)是根據(jù)姓名與學號兩個條件進行查詢,兩者滿

足任一條件則進行模糊查詢,兩個條件同步滿足則進行精確查詢,查

詢成果界面與功能一中相似,以姓名排列,點擊展開所有信息

3.增長數(shù)據(jù):在數(shù)據(jù)庫中增添條目,涉及姓名(字符串),學號(數(shù)

字,主鍵),性別(單選框),年齡(數(shù)字),專業(yè)(字符串)。每

個條目均有誤輸入設定,且主鍵可檢查反復性,所有數(shù)據(jù)可檢查完整

性,若插入成功則會顯示一條消息提示成功,若失敗則會提示檢查主

鍵反復或者數(shù)據(jù)不完整

4.修改數(shù)據(jù):根據(jù)姓名學號進行精確查找,查找成功后轉(zhuǎn)入修改界面,

為了避免漏填與便捷修改界面會默認填充之前日勺數(shù)據(jù)(除學號),修

改完畢即可更新,同樣會檢查數(shù)據(jù)完整性

5.刪除數(shù)據(jù):根據(jù)姓名學號進行精確查找,查找成功則會進行刪除,

并顯示一條刪除成功日勺提示,若失敗,也會進行提示

二、概念構(gòu)造設計

ER圖:

三、邏輯構(gòu)造設計

學生:

姓名(字符串)

學號(數(shù)字,主碼)

性別(單選框)

年齡(數(shù)字)

專業(yè)(字符串)

createtablestudent

nameTEXT,

NOTEXTPrimaryKey,

sexTEXT,

professionTEXT,

ageTEXT

四、具體實現(xiàn)

1.主界面:

^DemoStuDat

?'Tf)'r

顯示數(shù)據(jù)

查詢數(shù)據(jù)心

修改數(shù)據(jù)F

網(wǎng)口數(shù)據(jù)

刪除數(shù)據(jù)

退出SYSTEM

主界面顯示所有功能,每個按鈕點擊后,跳轉(zhuǎn)進入相應功能

核心代碼:

publicclassMainextendsActivity{

SQLiteDatabasedb;

Buttonbtn_search;

Buttonbtn_modify;

Buttonbtnadd;

Buttonbtn_delete;

Buttonbtn_quit;

Buttonbtn_show;

@Override

protectedvoidonCreate(BundlesavedlnstanceState){

requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setFlags(Windov/Manager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN};

super.onCreate(savedlnstanceState);

setContentVievz(R.layout.layout_main);

//打開數(shù)據(jù)庫,若不存在,則創(chuàng)立

db=

SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString()-*'/S

tudent.db3",null);

btn_search=(Button)findViewByld(R.id.btn_searc?i);

btn_modify=(Button)findViewById(R.id.btn_modify);

btn_add=(Button)findViewByld(R.id.btn_adc/);

btn_delete=(Button)findViewByld(R.id.btn_de2ete);

btn_quit=(Button)findViev/Byld(R.id.btn_quit);

btn_show=(Button)findViewByld(R.id.Btn_shoi<7);

try

(

Cursorcursor=db.rawQuery(Hselect*fromstudent11,null);

cursor.close();

catch(SQLiteExceptione)

db.execSQL(ncreatetablestudent"

+?'("

+"nameTEXT,”

+HNOTEXTPrimaryKey,”

+"sexTEXT,"

+“professionTEXT,

+"ageTEXT"

)

//顯示所有數(shù)據(jù)按鈕的功能實現(xiàn)

btn_show.setOnClickListener(newOnCLickListener()

(

publicvoidonClick(Viewsource){

//獲取指針

Cursorcursor=db.rawQuery("select*fromstudentn,null);

//判斷數(shù)據(jù)庫與否不存在任何數(shù)據(jù)

x£(cursor.moveToFirst()==false)

{

Toast.makeText(Main.this,”不存在記錄”,

Toast.LENGTH_SHORT).show();

}

else

List<Student>p=newArrayList<Student>();

List<String>re_name=newArrayList<String>();

List<String[]>info=newArrayList<String[]>();

//保存搜索出口勺所有數(shù)據(jù)

for(cursor.moveToFirst();?cursor.isAfterLast();

cursor.moveToNext())

intnameColume=cursor.getColumnlndex("name");

intNOColume=cursor.getColumnlndex("NO");

intproColume=

cursor.getColumnlndex("profession");

intsexColume=cursor.getColumnlndex(,,sexn);

intageColume=cursor.getColumnlndex("age',);

Studentstudent=newStudent();

="姓

名:"+cursor.getstring(nameColume);

student.NO=:*'+cursor.getstring(NOColums);

student.sex="性別:H+cursor.getString(sexColume);

fession="專

業(yè):"+cursor.getString(proColume);

student.age="年齡:"+cursor.getString(ageColume);

p.add(student);

String[]temp=student.MakeString();

info.add(temp);

Stringnewname=cursor.getString(nameColume);

re_name.add(newname);

}

〃對保存的數(shù)據(jù)進行封裝

String[]Cur_name=newString[re_name.size()];

Cur_name=re_name.toArray(Cur_name);

String[][]Cur_info=newString[info.size()][];

Cur_info=info.toArray(Cur_info);

Bundlebundle=newBundle();

bundle.putStringArray(HnameH,Cur_name);

Studentdata=newStudent();

=Cur_info;

〃將封裝的數(shù)據(jù)傳遞給成果界面的activity

Intentintent=new

Intent(Main.this,SearchResult.class);

intent.putExtras(bundle);

intent.putExtra("data",data);

startActivity(intent);

cursor.close();

}

)

));

//為剩余的按鈕綁定監(jiān)聽器實現(xiàn)跳轉(zhuǎn)功能

btn_search.setOnClickListener(newOnClickListener()

(

publicvoidonClick(Viewsource)(

Intentintent=newIntent(Main.this,Search.class);

startActivity(intent);

)

});

btn_modify.setOnClickListener(newOnClickListener()

(

publicvoidonClick(Viewsource){

Intentintent=newIntent(Main.this,Modify.class);

startActivity(intent);

)

});

btnadd.setOnClickListener(newOnClickListener()

publicvoidonClick(Viewsource){

Intentintent=newIntent(Main.this,Add.class);

startActivity(intent);

)

));

btn_delete.setOnClickListener(newOnClickListener()

(

publicvoidonClick(Viewsource){

Intentintent=newIntent(Main.this,Delete.class);

startActivity(intent);

)

});

btn_quit.setOnClickListener(newOnClickListener()

(

publicvoidonClick(Vievzsource){

db.close();

finish();

}

));

)

}

2.數(shù)據(jù)顯示界面:

按姓名排列,點擊條目展開具體信息

核心代碼:

publicclassSearchResultextendsActivity

@SuppressLint("RtlHardcoded")

publicvoidonCreate(BundlesavedinstanceState)

requestWindowFeature(Window.FEATURENOTITLE);

getWindow().setFlags(Windov/Manager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

//獲取傳送來的數(shù)據(jù)

super.onCreate(savedlnstanceState);

setContentVievz(R.layout.2ayout_resu21);

finalIntentintent=getlntent();

BaseExpandabLeListAdapteradapter=new

BaseExpandableListAdapter()

(

〃提取數(shù)據(jù)

Bundlebundle=intent.getExtras();

Studentmem_data=(Student)

getlntent().getExtras().get("data");

String(]people=(String[])bundle.getSerializable("namen);

String(][]data=mem_;

publicObjectgetChild(intgroupPosition,intchildPosition)

|

returndata[groupPosition][childPosition];

)

publiclonggetChildld(intgroupPosition,intchildPosition)

returnchildPosition;

)

publicintgetChildrenCount(intgroupPosition)

(

returndata[groupPosition].length;

)

//設定每個子選項每行的顯示方式

privateTextviewgetTextView()

(

AbsListView.LayoutParamsIp=new

AbsListView.LayoutParams(

ViewGroup.LayoutParams.MATCH_PARENT,

ViewGroup.LayoutParams.MATCH_PARENT);

TextViewtextview=newTextview(SearchResult.this);

textView.setLayoutParams(Ip);

textView.setGravity(Gravity.CENTER_VERTICALI

Gravity.LEFT);

textView.setPadding(36,0,0,0);

textView.setTextSize(20);

returntextview;

)

//設定每個子選項顯示內(nèi)容

publicViewgetChildView(intgroupPosition,int

childPosition,booleanisLastChild,Viewconvertview,ViewGroupParent)

TextViewtextview=getTextView();

textView.setText("

M+getChild(groupPosition,childPosition).toString());

returntextview;

}

publicObjectgetGroup(intgroupPosition)

(

returnpeople[groupPosition];

)

publicintgetGroupCount()

{

returnpeople.length;

}

publiclonggetGroupId(intgroupPosition)

(

returngroupPosition;

}

//設定每個組選項顯示內(nèi)容

publicViewgetGroupView(intgroupPosition,boolean

isExpanded,Viewconvertview,Viev/Groupparnet)

LinearLayout11=newLinearLayout(SearchResult.this);

11.setOrientation(0);

TextViewtextview=getTextView();

textView.setText("

"+getGroup(groupPosition).toString());

11.addView(textview);

return11;

)

);

ExpandableListViewexpandListView=(ExpandableListView)

findViewByld(R.id.list);

expandListVievz.setAdapter(adapter);

)

}

3.增添數(shù)據(jù)界面:

根據(jù)文本框輸入內(nèi)容進行數(shù)據(jù)的插入,且具有完整性和反復性的判斷,插入成功失敗均會產(chǎn)

生提示

核心代碼:

publicclassAddextendsActivity{

SQLiteDatabasedb;

Buttonbtn_Accept;

Buttonbtn_Cancle;

TextViev/ET_name;

TextviewETNO;

TAxt.ViAV?ETPro;

TextviewETAge;

RadioGrouprg;

Stringradio_sex="男

(^Override

protectedvoidonCreate(BundlesavedlnstanceState){

requestWindowFeature(Window.FEATURE_N0_TITLE);

getWindovz().setFlags(Windov/Manager.LayoutParams.FLAG_FULLSCREEN,

windowManager.LayoutParams.FLAG_FULLSCREEN);

super.onCreate(savedlnstanceState);

setContentVievz(R.layout.layout_add);

db=

SQLiteDatabase.openDatabase(this.getFilesDir().toString()+',/Student.d

b3",null,SQLiteDatabase.OPEN_READWRITE);

btn_Accept=(Button)findViewByld(R.id.btn_Accept);

btn_Cancle=(Button)findViewByld(R.id.btnMancie);

ET_name=(Textview)findViewByld(R.id.ET_Add_nanie);

ET_NO=(Textview)findViewByld(R.id.ET_Add_NO);

ET_Pro=(Textview)findViewByld(R.id.ET_Add_Pro);

:

ET_Agp=(TAxt.ViAW)findViAv/RyTd(R.d.F!T_Add_Age>);

rg(RadioGroup)findViewByld(R.id.rg);

rg.setOnCheckedChangeListener(newOnCheckedChangeListener(){

publicvoidonCheckedChanged(RadioGroupgroup,int

Checkedld){

radio_sex=Checkedld==R.id.rad_male?"男":"女,

)

));

〃提交操作

btn_Accept.setOnClickListener(newOnClickListener()

(

publicvoidonClick(Viewsource){

Stringname=ET_name.getText().toString();

StringNO=ET_NO.getText().toString();

Stringsex=radio_sex;

Stringpro=ET_Pro.getText().toString();

Stringage=ET_Age.getText().toString();

//規(guī)范性與完整性判斷

try

〃插入數(shù)據(jù)

db.execSQL("insertintostudent

values(?,?,?,?,?)"znewString(]{name,NO,sex,pro,age});

)

//規(guī)范性與完整性判斷

catch(SQLiteExceptione)

{

Toast./naAeText(Add.this,”插入數(shù)據(jù)失敗,請檢查數(shù)據(jù)規(guī)范性

與學號的唯一性”,Toast.LENGTH_SHORT).show();

return;

)

Toast.makeText(Add.this,“成功插入一條數(shù)

據(jù):"+"\n"+name+n\n"+N0+"\nn+sex+"\n'*+pro+"\n'*+age,

Toast.LENGTH_SHORT).show();

)

});

btn_Cancle.setOnClickListener(newOnClickListener()

{

publicvoidonClick(Viewsource){

db.close();

finish();

)

});

)

4.修改數(shù)據(jù)界面:

查找界面:

對文本框內(nèi)輸入的數(shù)據(jù)進行精確查找,成功后轉(zhuǎn)入修改界面

修改界面:

專業(yè)

年齡

性別

取消

匕o

文本框內(nèi)默認顯示之前的數(shù)據(jù),修改完畢點擊擬定以文本框內(nèi)的信息對數(shù)據(jù)進行更新

核心代碼:

查找:

btn_Accept.setOnClickListener(newOnClickListener()

publicvoidonClick(Viewsource){

Stringname=ET_Modify_Name.getText().toString();

StringNO=ET_Modify_No.getText().toString();

Cursorcursor=db.rawQuery(uselect*fromstudentwhere

+”name=?”

+"andN0=?n

,newString[]{name,NO});

//判斷查找成果與否為空

if(cursor.moveToFirst()==false)

Toast.makeText(Modify.this,“記錄不存在“,

Toast.LENGTHSHORT).show();

else

Stringmem_name=null;

Stringmem_No=null;

Stringmem_profession=null;

Stringmem_sex=null;

Stringmem_age=null;

//保存所有數(shù)據(jù)

for(cursor.moveToFirst();!cursor.isAfterLast();

cursor.moveToNext())

intnameColume=cursor.getColumnlndex(*'name");

intNoColume=cursor.getColumnlndex("NO");

intproColume=

cursor.getColumnIndex(?'profession");

intsexColume=cursor.getColumnIndex("sex'*);

intageColume=cursor.getColumnlndex("age1');

mem_name=cursor.getString(nameColume);

mem_No=cursor.getString(NoColume);

mem_profession=cursor.getString(proColume);

mem_sex=cursor.getString(sexColume);

mem_age=cursor.getString(ageColume);

}

//封裝所有數(shù)據(jù)

Bundlebundle=newBundle();

bundle.putString(??name1,,mem_name);

bundle.putString("No",mem_No);

bundle.putString(uprofession",mem_profession);

bundle.putString("sex**,mem_sex);

bundle.putString("age”,mem_age);

〃傳遞數(shù)據(jù)

Intentintent=new

Intent(Modify.this,ModifyResult.class);

intent.putExtras(bundle);

startActivity(intent);

cursor.close();

}

)

));

btn_Cancle.setOnClickListener(newOnClickListener()

(

publicvoidonClick(Viewsource){

//TODOAuto-generatedmethodstub

db.close();

finish();

)

));

修改:

publicclassModifyResultextendsActivity

{

SQLiteDatabasedb;

Buttonbtn_accept;

Buttonbtn_cancle;

TextviewTextViev?_ModifyResult_No;

EditTextET_ModifyResult_Name;

EditTextET_ModifyResult_pro;

EditTextET_ModifyResult_age;

RadioGrouprg;

Stringradio_sex;

protectedvoidonCreate(BundlesavedlnstanceState){

super.onCreate(savedlnstanceState);

setcontentview(R.layout.layout_modifyresult);

〃獲取數(shù)據(jù)

finalIntentintent=getlntent();

Bundlebundle=intent.getExtras();

db=

SQLiteDatabase.openDatabase(this.getFilesDir().toString()+"/Student.d

b3”,null,SQLiteDatabase.以DWH1TE);

btn_accept=(Button)

findViewByld(R.id.bLn_modifyresult_accept);

btn_cancle=(Button)

findViewByld(R.id.bLn_modifyresult_cancle);

TextView_ModifyResult_No=(Textview)

findViewByld(R.id.TextView_ModifyResult_No);

ETModifyResultName=(EditText)

findViewByld(R.id.ETModifyResultName);

ET_ModifyResult_pro=(EditText)

findViewByld(R.id.ET_ModifyResult_pro);

ET_ModifyResult_age=(EditText)

findViewByld(R.id.ET_ModifyResult_age);

rg=(RadioGroup)findViewByld(R.id.;

//設定默認數(shù)據(jù)

Stringname=bundle.getString(nnamen);

finalStringNo=bundle.getString("No");

Stringpro=bundle.getString("profession0);

Stringage=bundle.getString("age");

radio_sex=bundle.getString("sex'*);

TextView_ModifyResult_No.setText(No);

ET_ModifyResult_Name.setText(name);

ET_ModifyResult_pro.setText(pro);

ET_ModifyResult_age.setText(age);

rg.setOnCheckedChangeListener(newOnCheckedChangeListener(){

publicvoidonCheckedChanged(RadioGroupgroup,int

Checkedld){

radio_sex=Checkedld==R.id.rad_male?"男":"女";

}

));

btnaccept.setOnClickListener(newOnClickListener()

publicvoidonClick(Viewsource){

Stringnew_name=

ET_ModifyResult_Name.getText().toString();

Stringnew_profession=

ET_ModifyResult_pro.getText().toString();

Stringnew_age=

ET_ModifyResult_age.getText().toString();

Stringnew_sex=radio_sex;

//更新數(shù)據(jù)

try

{

db.execSQL("UPDATEstudent”

+"SETname=?,NO=?,sex=?,profession=?,age=?

H

+"WHEREN0=?"z

newString[]{new_name,No,new_sex,

new_profession,new_age,No});

)

catch(SQLiteExceptione)

(

Toast.makeText(ModifyResult.this,"更新數(shù)據(jù)失敗,

Toast.LENGTH_SHORT).show();

return;

)

Toast.makeText(ModifyResult.this,”更新數(shù)據(jù)成功”,

Toast.LENGTH_SHORT).show();

finish();

}

));

btn_cancle.setOnClickListener(newOnClickListener()

(

publicvoidonClick(Viewsource){

db.close();

finish();

)

));

)

)

5.查找數(shù)據(jù)界面:

3

學號

確定

對文本框內(nèi)的數(shù)據(jù)進行模糊查詢,查詢成功則跳轉(zhuǎn)只查詢成果界面,查詢失敗則產(chǎn)生相應提

核心代碼:

publicclassSearchextendsActivity{

SQLiteDatabasedb;

Buttonbtn_Accept;

Buttonbtn_Cancle;

EditTextET_name;

EdiLTexLETNO;

@Override

protectedvoidonCreate(BundlesavedlnstanceState){

requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setFlags(Windov/Manager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

super.onCreate(savedlnstanceState);

setContentVievz(R.layout.layout_search);

db=

SQLiteDatabase.openDatabase(this.getFilesDtr().toString()+"/Student.d

b3”,null,SQLiteDatabase.OPEN_READI^RITE);

btn_Accept=(Dutton)findViewDyld(R.id.btn_Accept);

btn_Cancle=(Button)findViewByld(R.id.btn_Canc2e);

ET_name=(EditText)findViewByld(R.id.ET_Searchname);

ET_NO=(EditText)findViewByld(R.id.ET_Search_W);

btn_Accept.setOnClickListener(newOnClickListener()

publicvoidonClick(Viewsource)

Stringnama=ETnamA.gAt-.TAxt.().t.oString();

StringNO=ET_NO.getText().toString();

//獲取指針

Cursorcursor=db.rawQuery(uselect*fromstudentwhere

n

+"name=?n//+“or”+"name=?"

+"orNO=?"http://+"or"-nNO=?"

,newString[]{name,NO});

//檢杳查找與否為空

if(cursor.moveToFirst()==false)

{

Toast./naAeText(Search.this,"i已錄不存在“,

Toast.LENGTH_SHORT).show();

)

else

{

Toast.makeText(Search.this,"成功”,

Toast.LENGTH_SHORT).show();

//return;

List<Student>p=newArrayList<Student>();

List<String>re_name=newArrayList<String>();

List<String[]>info=newArrayList<String[]>();

//保存數(shù)據(jù)

for(cursor.moveToFirst();!cursor.isAfterLast();

cursor.moveToNext())

intnameColume=cursor.getColumnlndex("name");

intNOColume=cursor.getColumnlndex("NO");

intproColume=

cursor.getColumnlndex("profession");

intsexColume=cursor.getColumnlndex("sex'*);

intageColume=cursor.getColumnlndex("age");

Studentstudent=newStudent();

="姓

名:"+cursor.getString(nameColume);

student.NO=:"+cursor.getString(NOColume);

student.sex="性別:n+cursor.getString(sexColume);

fession="專

業(yè):"+cursor.getString(proColume);

student.age="年齡:"+cursor.getString(ageColume);

p.add(student);

String[]temp=student.MakeString();

info.add(temp);

Stringnewname=cursor.getString(nameColume);

rename.add(newname);

)

//封裝數(shù)據(jù)

String[]Cur_name=newString[re_name.size()];

Cur_name=re_name.toArray(Cur_name);

String[](]Cur_info=newString[info.sizeO][];

Cur_info=info.toArray(Cur_info);

Bundlebundle=newBundle();

bundle.putStringArray("name”,Cur_name);

Studentdata=newStudent();

data.info=Cur_info;

//傳遞數(shù)據(jù)

Intentintent=new

Intent(Search.this,SearchResult.class);

intent.putExtras(bundle);

intent.putExtra("data",data);

startActivity(intent);

cursor.close();

}

)

});

btn_Cancle.setOnClickListener(newOnClickListener()

publicvoidonClink(ViAWssourcp){

db.close();

finish();

)

));

6.刪除數(shù)據(jù)界面:

匕O3

對文本框內(nèi)輸入的內(nèi)容進行精確查詢,若查詢成功則對相應的條目進行刪除,并提示刪除成

功,若失敗,則提示刪除失敗

核心代碼:

//擬定按鈕點擊后的監(jiān)聽尋件

btn_Accept.setOnClickListener(newOnClickListener()

(

publicvoidonClick(Viewsource){

Stringname=ET_Modify_Name.getText().toString();

StringNO=ETModify_No.getText().toString();

//查詢數(shù)據(jù)

Cursorcursor=db.rawQuery(^select*fromstudentwhere

+"name=?,r

+"andN0=?"

,newString[]{name,NO});

if(cursor.moveToFirst()==false)

{

Toast.makeText(Delete.this,"記錄不存在”,

Toast.LENGTH_SHORT).show();

}

else

(

try

I

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論