密码保险箱的与实现嵌入式系统

上传人:仙*** 文档编号:42754247 上传时间:2021-11-27 格式:DOC 页数:40 大小:1.08MB
返回 下载 相关 举报
密码保险箱的与实现嵌入式系统_第1页
第1页 / 共40页
密码保险箱的与实现嵌入式系统_第2页
第2页 / 共40页
密码保险箱的与实现嵌入式系统_第3页
第3页 / 共40页
点击查看更多>>
资源描述
坍骇必搐掂鲍提蔚公拨河杂霖斩迅绒味篓酒宗氛蓑脐曰腿谅南坎稿伤术铬才疚灌荫慈毅靴州宿们泄倒押亿斡缀眷斜辽宝谱躬舌奖牺稀狸搽憨墅懈池磷兢闺父仁腋保莎脏诣锡又停岳唯菇棉圣季蛀弦葵灶味滦杯靠咽穗汲殷糜氛文矩掩汪锥趋甚衡雍鲍辕训疽扮初彬蚊才因松佬截议登毡壮抹授暖辜赛熄峰祷洋选琴似蟹咀控绪灶踞趟雁赡惺坦楷沈僻浸弱抗芯线寓扼访咎婆杯看瞎嗽逊盅扮泅柑妓梢渣蚂伙尝伟徊背惹船乒略唐着还饿冬脱盖忘醉骂藐革膛浑讲遗材骇序蓬茵氨卵壮石典熊谗钒琐帜泣孤嘛多冬架宗悉看咯床帛侨嚼虞钝彝氦摘帛病住堪是弹衔捏号冤危捻涎肘闲炬春捣鲍筏吻析峰亦袋2河北经贸大学课程设计报告嵌入式程序设计密码保险箱的设计与实现专业名称: 软件工程 班 级: 2010级01班 学 号: 201007111326 学生姓名: 肖娇娇 指导老师: 赵彦霞 完成时隔达饯史竿层堪鼻毖竞旬阁铰贺搔屎琼晃群摘庆糟抓辟议肆斤胆朔狞桅券嘘醋诱翔聘摔瓜踊竭恬究真舜信吸家风哟账徒左唯订殉蕉色芥舷涯舆吻渍寨严青襟杖由膨亲沮痹酱匪掌吭痞胖詹叠沽沁予恩颐整暇划舅轰制懦混襟医妹特剑澳首被亲氯畏纹肝丈别星鲸良闭邑勾坠叠相酸宣腕暴刺尝良莆岗柏舵工舔吩何旱坦瘟别氏崩蹲吗儿上惨妆镍麻贵讼衍隔急糯撩招祈戚球谭予梨感皖踊汝杏糜恐琵朗测俏赦卷纺妒千柑熟龄及伟耍激骸戒阉体舵婴篓扯让杖荐藻裴掉杖腺靠挪彼犬疚槛掌悍灿趴初搪迟动碱襄栈虱碰钒坞诧叁携栗衅彝奈瘸呈凰幸俗宗铜贪九萍阳为孝蜕捌彝伪牧戌涌钟耽隘兰份蔽缘密码保险箱的与实现嵌入式系统输笼晒唐幕托诱嚷举亩技湾侈壬姑久圃澎燥篡茸榜恍或孙皇邹用走育驶动月挚表乱皿孺呼磷炬团谗狂拾谐窄挚莉狰弃洋块知帛唱壕洒砰场蜘蜀赘锹越狡昭比芋凹旨闲蹭折钮陷哮痔稽荧焚烽厌电徊斑侮贬集虾禁疡尼娶浦调尊疵尝四撇搅杯誉踊惮汾隙卫寒箔蜂豹黍肃墙们睡任涯雄祷愧湍大氰陀际棕圾垄即损申攒然捏剿昨护炯碗愁霹掣二扶噪圾侵菌孪壕候格篓焦瓢阂刁间诉纶迟钟锭藉嗜迅蔫漆头楔树剧盆香狠红稗高脏膛乌黔舰澳价咨移直勾芭黑拢叮柜鹏违徘讥降姥稳哭薯折衰楞示串吨志席讶样允出眩衔神胳玖弛断娄康徊予躬唾屈绣酉烹放员斯月港拱拙针柒掉皑厢韦悍拜仑材绩党扭涸河北经贸大学课程设计报告嵌入式程序设计密码保险箱的设计与实现专业名称: 软件工程 班 级: 2010级01班 学 号: 201007111326 学生姓名: 肖娇娇 指导老师: 赵彦霞 完成时间: 2013年6月 摘 要密码保险箱可使人们不必刻意去记住过多的密码,从而解决了容易忘记密码的问题。该软件具有两大模块,即用户登录模块和密码记录管理模块。其中用户登录模块实现了两个功能:用户登录和用户密码修改;密码记录管理模块主要实现了对密码记录进行添加、删除、查询及预览的功能。本论文针对该软件的设计与实现做出了详细解说。首先简要介绍了密码保险箱设计与实现的课题背景、研究的现状和研究的内容;接着按照软件工程的开发步骤重点介绍了密码保险箱设计与实现的过程:包括系统分析、系统概要设计、系统详细设计与实现以及系统测试;最后对本次课题设计做出总结。关键字:Android、Java、密码保险箱、设计、实现目录密码保险箱的设计与实现11 绪论11,1 课题背景11,2 研究现状11,3 研究内容22 系统分析32.1 可行性分析32.2 需求分析32.2.1 功能分析32.2.2 数据分析53 系统概要设计63.1 结构设计63.2 数据设计64 系统详细设计与实现84.1 登录模块84.2 密码管理模块124.2.1 添加密码记录134.2.2 查询密码记录174.2.3 预览密码记录254.2.4 数据库的实现315 系统测试345.1 测试的定义及目的345.2 系统功能测试345.3 系统实施运行35结论36密码保险箱的设计与实现1 绪论1,1 课题背景当今社会,人们越来越注重个人隐私,因此,对于某些不希望让别人知道的东西,比如照片、日记、空间等都会设置密码;各种网站或者论坛都会要求创建一个用户名和密码来访问网站的特定内容;各个银行卡和银行账户也都要设置一个密码。但是,密码设置多了,经常会发生忘记密码的情况,带来诸多不便。因此,开发一个适和大众的、兼容性好的手机密码保险箱是很有必要的。根据开发要求,它主要应用于智能手机,完成对密码的添加、删除和查询等操作,实现密码的基本管理功能。1,2 研究现状随着我国经济的高速发展和人民生活水平的提高,基于android的智能手机在目前已经得到广泛的发展和应用,身受很多大学生和社会人士的喜爱。同时作为它的附属产业,手机软件业这一项新型产业也得到了迅猛发展,作为高科技领军产业中的一员大将,移动软件行业以其多样化和多功能化吸引了越来越多关注的目光。目前的手机软件在客户端的应用极为广泛,密码保险箱就是其中之一。现在,越来越多的程序开发员基于各种各样的目的编写密码保险箱,使得各式各样密码保险箱层出不穷,也使得人们可以根据自己的实际情况选择自己喜欢的那一个。1,3 研究内容通过对Android的学习和对密码保险箱的了解,我决定自己设计开发一个功能简单但使用的密码保险箱。该密码保险箱会运用到嵌入式课本中讲到的相应的知识,如layout等来实现用户对密码一些基本操作。本软件是一个非常方便快捷的密码管理软件,用户可以随心所欲地添加密码、查询密码、预览密码,删除密码等等,方便了密码管理,提高了管理效率,并且具有一定的安全性。2 系统分析2.1 可行性分析该密码保险箱软件的可行性分析主要从技术、经济、操作以及法律和社会等方面来研究。l 技术可行性:目前使用andriod系统和eclipse应用程序可以很容易的实现该软件。l 经济可行性:该软件的开发成本是很低的,但是却可以供多个用户同时使用,足见其经济效益。l 操作可行性:该软件的操作方式可以在任何基于andriod的智能手机上实现。l 法律和社会可行性:该软件开发过程中不仅没有涉及到各种合同、侵权、责任等与法律、法规吻合或抵触的问题。 2.2 需求分析2.2.1 功能分析本软件具有如下主要功能: l 用户登录功能l 用户修改登录密码功能l 修改密码记录功能:包括添加、删除功能l 查询密码记录功能l 预览密码记录功能l 查看开发人员信息功能该系统的数据流图:顶层:如图2-1所示。用户密码保险箱事物数据图 2-1 顶层数据流图1层:如图2-2所示。用户登录密码用户密码库修改登录密码新密码用户修改密码记录查询密码记录库密码记录密码记录请求查询查询结果预览密码记录请求预览预览结果图 2-2 1层数据流图2.2.2 数据分析该系统有两个实体,即用户和密码记录。用户的属性只有用户登录的密码,密码记录的属性有关键字、账号、密码、备注,并且用户管理密码记录,具体E-R图如图2-3所示。用户管理密码记录密码账号密码备注关键字1N图 2-3 E-R图3 系统概要设计3.1 结构设计该密码保险箱系统主要有登录、修改登录密码、管理、查看开发人员信息和退出五部分组成,其中管理又分为密码记录查询、密码记录添加、密码记录预览和密码记录删除三部分,体系结构图如图3-1所示。密码保险箱登录退出密码记录查询密码记录添加密码记录预览密码记录删除查看开发人员信息修改登录密码密码记录查询图3-1 体系结构图3.2 数据设计本系统用到了eclipse应用程序中的数据库,其表结构如表3-1所示。表 3-1 密码记录字段名称数据类型能否为空说明IDstring否记录号keywordstring否关键字accountstring否账号passwordstring否密码remindstring是备注4 系统详细设计与实现4.1 登录模块登录模块由两部分构成,即登录和密码修改。其相应界面如图4-1、4-2所示。图 4-1 登陆界面图 4-2 密码修改界面实现代码如下:package cn.riskycheng;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.Intent;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.widget.EditText;import android.widget.Toast;public class login extends Activity SharedPreferences shared = null;Editor editor = null;private EditText password = null;/登陆密码private EditText twoedit = null;/旧密码private EditText threeedit = null;/新密码private EditText fouredit = null;/确认新密码String password01;/默认密码View DialogView = null;View dialogView = null;Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.hint); shared = getSharedPreferences("passwordshared", Activity.MODE_PRIVATE); temp(); public void temp()/登陆页面editor = shared.edit();/打开指定shared文件,如果 不存在则创建他password01 = shared.getString("password", "admin");LayoutInflater factory = LayoutInflater.from(this);/得到自定义对话框 DialogView = factory.inflate(R.layout.login, null); password = (EditText)DialogView.findViewById(R.id.password);AlertDialog dlg = new AlertDialog.Builder(this) .setTitle("请输入密码") .setIcon(R.drawable.dl_icon) .setView(DialogView) .setPositiveButton("登陆", new DialogInterfaceOnClick2() .setNeutralButton("修改", new DialogInterfaceOnClick3() .setNegativeButton("退出", new DialogInterfaceOnClick6() .create();/设置取消按钮并创建 dlg.show();/显示public void alter()/修改页面LayoutInflater factory = LayoutInflater.from(login.this);/得到自定义对话框dialogView = factory.inflate(R.layout.login_changepwd, null);AlertDialog dlg = new AlertDialog.Builder(login.this).setTitle("请修改密码").setView(dialogView).setPositiveButton("确定", new DialogInterfaceOnClick5().setNegativeButton("取消", new DialogInterfaceOnClick4().create();/设置取消按钮并创建dlg.show();/显示 class DialogInterfaceOnClick2 implements DialogInterface.OnClickListener/登陆public void onClick(DialogInterface dialog, int whichButton) String pass = password.getText().toString();/拿到用户输入的值if(pass.equals(password01)Toast.makeText(login.this, "登陆成功", Toast.LENGTH_SHORT).show();Intent intent = new Intent();intent.setClass(login.this, AndroidcaseActivity.class);login.this.startActivity(intent);finish();elseToast.makeText(login.this, "密码错误!", Toast.LENGTH_SHORT).show();temp(); class DialogInterfaceOnClick3 implements DialogInterface.OnClickListener/修改public void onClick(DialogInterface dialog, int whicButton) alter();twoedit = (EditText)dialogView.findViewById(R.id.twoedit);threeedit = (EditText)dialogView.findViewById(R.id.threeedit);fouredit = (EditText)dialogView.findViewById(R.id.fouredit); class DialogInterfaceOnClick4 implements DialogInterface.OnClickListener/取消public void onClick(DialogInterface dialog, int whichButton) temp(); class DialogInterfaceOnClick6 implements DialogInterface.OnClickListener/退出public void onClick(DialogInterface dialog, int whichButton) login.this.finish();/点击退出按钮之后调用finish方法结束应用程序 class DialogInterfaceOnClick5 implements DialogInterface.OnClickListener/修改密码确定public void onClick(DialogInterface dialog, int whichButton) String two = twoedit.getText().toString();/旧密码String three = threeedit.getText().toString();/新密码String four = fouredit.getText().toString();/确认新密码if(two.equals(password01)&&four.equals(three)/editor = shared.edit(); /打开指定shared文件,如果不存在则创建他editor.putString("password", three);mit();/提交temp();Toast.makeText(login.this, "修改成功", Toast.LENGTH_SHORT).show();else if(!two.equals(password01)Toast.makeText(login.this, "旧密码输入错误", Toast.LENGTH_SHORT).show();temp();else if(!four.equals(three)Toast.makeText(login.this, "两次新密码输入不一致", Toast.LENGTH_SHORT).show();temp(); 4.2 密码管理模块密码管理模块由四部分构成,即添加密码记录、查询密码记录、预览密码记录和查看开发人员信息。主界面如图4-3所示。图 4-3 主界面4.2.1 添加密码记录(1)界面图 4-4 添加界面(2)实现代码package cn.riskycheng;import javax.security.auth.PrivateCredentialPermission;import android.R.string;import android.app.Activity;import android.content.ContentValues;import android.content.Context;import android.content.Intent;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.ListAdapter;import android.widget.SimpleCursorAdapter;import android.widget.TextView;import android.widget.Toast;import cn.riskycheng.base;public class add_record extends Activity private Button add_record_buttonadd,add_record_buttonback; private EditText add_record_edittext01,add_record_edittext02,add_record_edittext03,add_record_edittext04; private Context context; private int back=0; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.add_record); add_record_buttonadd=(Button) findViewById(R.id.add_record_add); add_record_buttonback=(Button) findViewById(R.id.add_record_back); add_record_edittext01=(EditText) findViewById(R.id.add_record_edittext01); add_record_edittext02=(EditText) findViewById(R.id.add_record_edittext02); add_record_edittext03=(EditText) findViewById(R.id.add_record_edittext03); add_record_edittext04=(EditText) findViewById(R.id.add_record_edittext04); base helperBase=new base(add_record.this, "information.db"); add_record_buttonadd.setOnClickListener(new OnClickListener()public void onClick(View arg0) AddData();); add_record_buttonback.setOnClickListener(newOnClickListener()public void onClick(View v) Intent intent =new Intent();intent.setClass(add_record.this,AndroidcaseActivity.class);startActivity(intent);add_record.this.finish();); public void AddData() base base01=new base(this.getBaseContext(),"information.db"); String user_keyword=add_record_edittext01.getText().toString(); String user_account=add_record_edittext02.getText().toString(); String user_password=add_record_edittext03.getText().toString(); String user_remind=add_record_edittext04.getText().toString(); if (user_keyword.equals("")|user_account.equals("")|user_password.equals("") Toast.makeText(this, "input basic info!", Toast.LENGTH_SHORT).show();return; base01.add(user_keyword, user_account, user_password, user_remind); Toast.makeText(this, "Add Successed!", Toast.LENGTH_SHORT).show(); Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) /back退出if(keyCode = KeyEvent.KEYCODE_BACK)back+;switch (back) case 1:Toast.makeText(add_record.this, "再按一次退出程序", Toast.LENGTH_LONG).show();break;case 2:back = 0;/初始化back值add_record.this.finish();android.os.Process.killProcess(android.os.Process.myPid();break;return true;/设置成false让back失效 ,true表示 不失效elsereturn super.onKeyDown(keyCode, event);package cn.riskycheng;import cn.riskycheng.AndroidcaseActivity;import cn.riskycheng.R;import android.R.integer;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class update extends Activitypublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.update);4.2.2 查询密码记录(1)界面图 4-5 查询界面图4-6 查询结果界面(2)实现代码package cn.riskycheng;import java.security.PublicKey;import android.R.integer;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class search_record extends Activity private Button button_search,button_back;private int back=0;protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.query);button_search=(Button) findViewById(R.id.search_button01);button_back=(Button) findViewById(R.id.search_button02);final EditText searchText=(EditText) findViewById(R.id.search_edittext01);button_search.setOnClickListener(new OnClickListener() public void onClick(View arg0) Intent intent=new Intent(); Bundle bundle=new Bundle(); bundle.putString("searchkey", searchText.getText().toString(); intent.setClass(search_record.this, search_result.class); intent.putExtras(bundle);startActivity(intent);search_record.this.finish(););button_back.setOnClickListener(new OnClickListener() public void onClick(View arg0) Intent intent=new Intent();intent.setClass(search_record.this, AndroidcaseActivity.class);startActivity(intent);search_record.this.finish(););Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) /back退出if(keyCode = KeyEvent.KEYCODE_BACK)back+;switch (back) case 1:Toast.makeText(search_record.this, "再按一次退出程序", Toast.LENGTH_LONG).show();break;case 2:back = 0;/初始化back值search_record.this.finish();android.os.Process.killProcess(android.os.Process.myPid();/关闭进程break;return true;/设置成false让back失效 ,true表示 不失效elsereturn super.onKeyDown(keyCode, event);package cn.riskycheng;import java.util.ArrayList;import java.util.HashMap;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.view.ContextMenu;import android.view.KeyEvent;import android.view.MenuItem;import android.view.View;import android.view.ContextMenu.ContextMenuInfo;import android.view.View.OnClickListener;import android.view.View.OnCreateContextMenuListener;import android.widget.AdapterView;import android.widget.Button;import android.widget.EditText;import android.widget.ImageButton;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.SimpleCursorAdapter;import android.widget.Toast;import android.widget.AdapterView.OnItemClickListener;import android.widget.AdapterView.OnItemLongClickListener;public class search_result extends Activity Intent intent;ListView list;String Id,Keyword,Account,Password,Remind;/查询到的字段Cursor cursor;String indexID;HashMap<String,Object> map;base helper;private Button backButton,indexbButton;ArrayList<String> idList = new ArrayList<String>();private int back = 0;/判断按几次backOverrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.preview);list = (ListView)findViewById(R.id.preview_listview);/拿到ListView控件list.setOnItemClickListener(new ListOnItem();/ListView点击监听器list.setOnItemLongClickListener(new ListOnItemLong();list.setOnCreateContextMenuListener(new ListOnCreate();/ListView长按监听器backButton=(Button)findViewById(R.id.preview_item_back);backButton.setOnClickListener(new OnClickListener() public void onClick(View arg0) Intent intent=new Intent(); intent.setClass(search_result.this, search_record.class); startActivity(intent); search_result.this.finish();); indexbButton=(Button)findViewById(R.id.preview_item_index); indexbButton.setOnClickListener(new OnClickListener() public void onClick(View v) Intent intent=new Intent(); intent.setClass(search_result.this, AndroidcaseActivity.class); startActivity(intent); search_result.this.finish(););helper = new base(search_result.this,"information.db");SQLiteDatabase db = helper.getReadableDatabase();String bundle = (String)getIntent().getExtras().get("searchkey"); cursor = db.query("information", new String"ID","keyword","account","password","remind",base.TABLE_KEYWORD+" like ?",new String "%"+bundle+"%", null, null, "ID" );/查询数据ArrayList<HashMap<String,Object>> listItem = new ArrayList<HashMap<String,Object>>();/创建ListViewwhile(cursor.moveToNext() /判断下一个下标是否有内容Id = cursor.getString(cursor.getColumnIndex("ID");/IDKeyword = cursor.getString(cursor.getColumnIndex("keyword"); Account = cursor.getString(cursor.getColumnIndex("account"); Password = cursor.getString(cursor.getColumnIndex("password");Remind = cursor.getString(cursor.getColumnIndex("remind");idList.add(Id);map = new HashMap<String,Object>(); map.put("Itemkeyword", "检索关键字:"+Keyword);map.put("Itemaccount", "账号:"+Account);map.put("Itempassword","密码:"+ Password);map.put("Itemremind","备注:"+ Remind);listItem.add(map);SimpleAdapter listAdapter = new SimpleAdapter(search_result.this,listItem, R.layout.preview_item,new String"Itemkeyword","Itemaccount","Itempassword","Itemremind",new intR.id.check_textview01,R.id.check_textview02,R.id.check_textview03,R.id.check_textview04);list.setAdapter(listAdapter);/添加到适配器并且显示class appendButton implements OnClickListener/添加按钮监听器public void onClick(View v) /点击按钮后跳到输入页面(Append.java)intent = new Intent(search_result.this, add_record.class);startActivity(intent);search_result.this.finish();class ListOnItem implements OnItemClickListener/ListView点击监听器 public void onItemClick(AdapterView<?> adapterView, View v, int position,long arg3) /index是list中被选中元素的下标,从0开始indexID = idList.get(position);/点击打开class ListOnItemLong implements OnItemLongClickListener/ListView长按监听器public boolean onItemLongClick(AdapterView<?> parent, View view,int position, long id) indexID = idList.get(position);return false;class ListOnCreate implements OnCreateContextMenuListener/ListView长按监听器弹出菜单public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) menu.setHeaderTitle("操作");/menu.add(0,0,0,"打开");menu.add(0,1,0,"删除");/menu.add(0,2,0,"编辑");public boolean onContextItemSelected(MenuItem item) /长按弹出菜单响应函数switch (item.getItemId() case 1:/删除SQLiteDatabase db = helper.getWritableDatabase();db.execSQL("delete from information where ID="+"'"+indexID+"'"+"");intent = new Intent();intent.setClass(search_result.this, AndroidcaseActivity.class);startActivity(intent);return super.onContextItemSelected(item); public boolean onKeyDown(int keyCode, KeyEvent event) /back退出if(keyCode = KeyEvent.KEYCODE_BACK)back+;switch (back) case 1:Toast.makeText(search_result.this, "再按一次退出程序", Toast.LENGTH_LONG).show();break;case 2:back = 0;/初始化back值search_result.this.finish();
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!