毕业设计(论文)-基于Android的背单词软件的设计与实现.doc_第1页
毕业设计(论文)-基于Android的背单词软件的设计与实现.doc_第2页
毕业设计(论文)-基于Android的背单词软件的设计与实现.doc_第3页
毕业设计(论文)-基于Android的背单词软件的设计与实现.doc_第4页
毕业设计(论文)-基于Android的背单词软件的设计与实现.doc_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

存档日期: 存档编号: 本 科 生 毕 业 设 计题 目: 基于Android的背单词软件的设计与实现 学 号: 姓 名: 联 系 电 话: 电 子 邮 箱: : 学 院: 计算机科学与技术学院 专 业: 计算机科学与技术 年 级 、 班 级: 11计81 指 导 教 师: 江苏师范大学教务处印制 江苏师范大学计算机学院学士学位毕业设计原创性声明本人郑重声明:所呈交的毕业设计说明书基于Android的背单词软件的设计与实现 是本人在导师指导下,在江苏师范大学计算机学院学习期间,进行毕业设计时取得的成果。本人知道,除文中已经标明引用的内容外,本毕业设计说明书不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人或集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。班级: 11计81班 学号: 学生签名: 2015 年5 月 20日基于Android的背单词软件的设计与实现摘 要: 如今,人们工作生活的节奏不断加快,空余时间越来越少,但是人与人之间的交流越来越密切。英语作为世界上最为通用的语言,这个时代要求我们能更好的掌握英语。学好英语的首要前提就是要有丰富的词汇量。所以背单词就是我们的一项日常任务。基于现实生活中时间少,任务重的情况下,本文就在安卓智能手机上的背单词软的开发件进行了研究。从2008年智能手机的普及开始,安卓手机在目前的市场上占了大部分的份额,本文介绍了在Eclipse开发平台开发的一款集单词背诵、单词复习、单次测试、生词本等功能于一体的Android软件。它的最大特点是随时随地背诵你想要背诵的单词。因为它可以自由添加你想添加的词库,还不需要联网无需任何流量,只要有一台安卓手机就可以利用大量的零碎时间来背诵单词提高词汇量。关键词: 英语;背单词;Android;软件开发 The design and implementation of the software which can recite words based on AndroidAbstract: Nowadays,the life is fast paced. We has less free time than before, but on the other hand, the interpersonal communication is closer. English as a universal language in the world. The era require us to learn English well. For to be a good English student, we must have rich vocabulary. Therefor, recite words is our daily task. Unfortunately, we are so busy to have enough time to read words books,this article did a research on the progress of developing the mobile software based on android.From the beginning of 2008, the popularity of smart phone, especially, those based on Android OS made up the most share of the market. Consequently, this article introduce a software based on android.It provides many functions. For example, Study Words, Review Words, Test Words and so on. The biggest characteristic of the software is to recite words anywhere at anytime and recite what words you want. You can choose one kinds of the lexicons and add any lexicon you need. It is a off-line software, it does not need any data traffic. Just a smart phone based on Android OS, you can install it and recite words anywhere at anytime to improve your vocabulary.Keywords: English; Words study; Android; software development 目 录 第1章 绪论31.1 软件设计背景31.2 软件目前的局限性及解决方法31.3本文研究内容及主要贡献3第2章 软件开发背景42.1 软件的需求分析42.2 基于安卓的背单词软件的开发4 2.2.1 基于Android的背单词软件的开发平台4 2.2.2 基于Android的背单词软件的开发语言和环境42.3 本章小结4第3章 软件的技术分析53.1 技术背景介绍5 3.1.1 Android架构53.1.2 Android应用程序组成活动广播接收器服务内容提供者63.2 软件关键技术73.2.1 UI技术73.3 软件关键算分析103.3.1 单词学习模块103.3.2 单词复习模块103.3.3 单词测试模块113.3.4 生词本模块123.3.5 消息提供模块123.3.6 单词发声技术模块133.3.7数据库模块13第4章 软件代码实现154.1 学习模块154.2 复习模块154.3 测试模块174.4 生词本模块184.5 本章小结19第5章 软件运行环境205.1 Android的开发环境205.1.1安装Java、Eclipse和Android205.1.2 配置AVD与智能手机连接205.2 Android的软件开发平台205.2.1 Dalvik虚拟机(DVM)205.2.2 Android的工程目录结构20 5.3 软件的使用说明书205.3.1 登陆界面205.3.2 学习软件模块界面215.3.3 复习软件模块软件界面225.3.4 测试软件模块界面235.3.5 生词本模块软件界面235.3.5 软件说明的介绍模块界面245.4 本章小结25第6章 总结与展望266.1 总结266.2 展望26毕业设计体会27致谢28参考文献29英文翻译资料3042 第1章 绪论1.1 软件设计背景二十一世纪以来,全球化的加剧,信息大爆炸时代的来临,人类更想走出去,去触及、去了解、去感受外面的世界,语言的学习便是基础,英语作为世界上使用最为广泛的语言,更是我们最为迫切需要被掌握的。本次我做的课题就是为了提高人们的英语学习而开发的基于android的背单词软件。它能够帮助人们利用空闲时间学习英语单词,提高单词量,为英语的学习打下坚实的基础。现在市面上流行着许多背单词软件,如百词斩、拓词、扇贝等。百词斩更是连续蝉联教育类App软件下载量第一的位置,充分证明了背单词软件的需求量之大,开发前景之好。1.2 软件目前的局限性及解决方法现在市面上流行的背单词软件,大多都是在线模式,这样对于用户来说,流量的限制、网络的稳定性就是大多数软件最大的限制。就国内软件百词斩来说,它是在线使用的背单词软件,这就存在没网的状况怎么办?那就无法背单词了。在3G才刚刚普及的4G还在推广的路上的中国现在,网络的速度不能满足人们随时随地背单词的需求,背一个单词等很久的状况时常发生,这样就容易失去背单词的乐趣。在使用时主要用图片和读音来加强对英语单词的记忆,但是它却忽视了中国人的“象形记忆”,从象形文字就可知道,中国人对图像想的敏感性更高,所以这就造成了识图不识单词的状况,而且图和单词衔接不够密切,不能很好的将图像和单词联系起来。只能凭直觉乱猜,不能切实掌握该生词。所以开发一款又好又方便又快捷又个性化并且能够实现离线背单词的背单词软件是市场所急需的。人性化,更方便,不受时间地点网速的限制且能够自己背诵自己想加强的单词部分是本软件的最大特点。1.3本文研究内容及主要贡献发展背景主要由背单词软件的开发背景,Android软件的发展前景,市场前景,四部分的开发语言和开发环境。开发背景主要由背单词软件的开发背景、Android的发展前景、软件市场前景、开发语言及开发环境四部分组成。主要功能模块主要分为软件登录模块、单词学习模块、单词复习模块、单词测试模块、生词本模块、软件说明、数据库的创建与设计。核心算法模块主要解释了各大功能模块的核心算法,并作出解释。真机模拟演示主要介绍了各大功能模块的运行截图以及功能介绍。 第2章 软件开发背景2.1 软件的需求分析现在我们处在一个信息飞速发展的信息化社会,计算机技术的日益发展与普及,人们的工作效率大大提高,安全性能日益完善。随着语言全球化的潮流趋势,英语已成为我们日常生活和工作所不可或缺的一门语言。由于我们现代社会更注重效率,现在人们对时间的掌控越来越深入,费时费力的传统背单词方法已不再适合现代人的生活方式。具有随时随地、方便、有效等特点的背单词软件成为不少成功人士的首选。2.2 基于安卓的背单词软件的开发2.2.1 基于Android的背单词软件的开发平台本软件设计是在Microsoft Windows 操作系统下开发出来的,由于微软的Windows系列是全球市场中份额最大的计算机操作系统,所以我用Windows 7开发平台来开发。【2】而Android软件的开源的特性在此平台上为编程爱好者们提供了大量的工具,如Eclipse、QT等。我们平时一般就把Eclipse当做Java集成开发环境来做Java的程序开发,往往忽略了Eclipse的插件开发环境。这个环境能够为用户提供高度集合的集成开发环境,为开发诸如Android此类的软件提供了更大的便利。IBM公司的免费的并且是高度集成的开发环境,是基于Java的。它有诸多并且功能很庞大的框架服务高度集成化为插件,去完成Android软件的开发。2.2.2 基于Android的背单词软件的开发语言和环境本安卓软件上层所使用的语言主要是Java语言,Eclipse开发平台通过Java虚拟机来解释Java的字节码。但是Java开发和安卓的应用程序开发还是有区别的,谷歌公司提供的Android SDK就是为了解决此问题而产生的,辅以Eclipse的ADT插件,通过Android模拟器来模拟安卓手机的应用程序运行情况。2.3 本章小结本章主要介绍了基于Android的背单词软件的需求分析,体现出来此类软件的市场前景十分乐观。介绍了Crazy Words的开发平台是Windows 7、开发语言是Java、开发工具有Eclipse、ADT插件等。第3章 软件的技术分析3.1 技术背景介绍3.1.1 Android架构图3.1平台架构Android平台类似于其他系统,都采用分层结构,如图3.1所示,Android平台分了四层。【3】由下往上是Linux 内核层、用户空间层、应用程序框架层和Android应用程序层。3.1.2 Android应用程序组成活动在应用程序的活动,可以说是一个屏幕,我们在屏幕上添加控件来使应用程序响应。Activity之间是如何进行的通信呢?那就是Internet(意图)它包括动作和动作对应的数据。如:Pick、Edit、View等。举个例子:当你需要去查询一个联系人的联系方式,我们就可以创建一个View的Internet。然而如果一个Activity想要显示联系人的联系方式后,需要IntentFilter的声明。这个IntentFilter能够处理View的动作和解析联系人的URI。下面展示就是一个Activity的生命周期,如图3.2所示图3.2 Activity的生命周期广播接收器它能够对外部事件作出响应,屏蔽内部细节,并对外提供统一接口。它没有用户界面,它一般是通过Activity或service来作出响应的。Broadcast Receiver通过派生出Content Provider类来对外提供数据。普通广播是通过Context.sendBroadcast(Intent DanmyIntent)传数据的,而有序广播是通过 Dan_Context.sendOrderedBroadcast(intent,receivePermission)发送数据的。异步广播是通过Context.sendStickyBroadcast(Intent DanmyIntent)发送的。服务服务是通过一些功能逻辑封装,通过活动服务上面的指示。它是没有用户界面的但可以在后台一直运行的。例如,当你播放音乐的时候,忽然有一条短信进来。这是你切换到信息去看短消息,音乐播放器还在后台播放。使用步骤: 继承Service类; 在安卓的的配置清单文件中进行服务配置; 通过Context.bindService()/Context.startService()去启动服务;内容提供者Content Provider在Intent的触发事件中接收到许多数据和信息,经过简单处理,可以和其他应用程序相互分享。例如:SQLite文件或者其他媒体文件。3.2 软件关键技术Crazy Words背单词软件主要是使用Java来开发的。它经工具编译后和其他应用程序所需要的数据和资源等被装入一个包文件中,它的后缀名是.apk 。这就是我们通常所见到的可以任意安装到任意一台移动设备上的用户程序安装包。3.2.1 UI技术用户界面技术主要分为两种。一种是用Java代码去进行用户界面的设计,如JFrame、JButton之类。另一种就是在在网页设计时也经常会采用的XML等技术,本软件的页面布局主要是通过XML来创建的。 LinerLayout布局线性布局用户设定元素的竖直或者水平的属性值。Android: layout _ width属性定义了空间的宽度;Android: layout_ height属性定义来控件的高度。如图3.3所示:图.2 RelativeLanguage布局相对布局,允许用户通过子元素来指定其他元素甚至其他元素的的位置,他是通过元素的id来指定的排列的。如下图 3.4所示,词库栏处于中间位置,以下布局属性将以词库栏的相对位置排列。图 .3 TableLanguage布局表格布局能将各种按钮或其他元素分配到行和列中。如下图3.5所示效果图.4 单选列表单选列表主要是使用setChoiceMode()方法将ListView的ChoiceMod额设为SINGLE进行的。通过getCHECkedITTE MPOsiton()方法来获取当前列表的位置。如图3.6所示。图3.63.3 软件关键算分析启动程序词库选择学习复习测试生词本单词学习生词本单词复习生词生词本本单词测试本判断正误删除编辑图3.7整体功能结构3.3.1 单词学习模块该模块的布局文件是Dan_study_layout.xml,Dan_study_list_item.xml和Dan_study_lv_layout.xml三个文件组成。未学习过的单元和已学习过的单元两个文本框横向排列,下方通过垂直线性布局显示各个需要学习的单元。Dan_study_layout.xml:该界面上有一个文本框:study。界面上有一个图片按钮、一个拼写文本框和一个解释文本框共两个文本框构成线性布局。按钮就是发音按钮,采用TTS发音设置参数。三个按钮在屏幕底部显示“前一个”、“加入”、“后一个”属于水平线性布局。 实现界面之间的跳转:.Intent intent = new Intent();Bundle bundle = new Bundle();bundle.putString(action, add);intent.putExtras( Dan_bundle);intent.setClass(Attention.this, Dan_EditWord.class).3.3.2 单词复习模块该界面是由Dan_reviewlayout.xml文件构成的的,见面上方有一个文本框显示“review”。下方通过图片(发音图标)和两个文本框构成线性布局。下方有“Remember”,“Forget”,“Add”三个按钮组成一个水平线性布局。单词复习主要是通过Activity类的 Dan_getSharedPreference()方法来获得SharedPreference对象从而达到对已学过的单元进度的存储。 通过Edit获得Editor并通过该接口的 Dan_putString()方法保存数据。复习界面通过 Dan_getList()方法来获得已被保存的单元。if (rightnumber LIST.size()SharedPrefeences rightnumber = getSharedPreferences(CrazyWords.model_preferences, mode_private);if(rightnumber.getBoolean(tts, false)(.通过Dan_setVisibility()方法放来来控制按钮的可见性。 if (v=remember)wrong. Dan_setVisibility(View.VISIBLE);right.Dan_setVisibility(View.VISIBLE); remember. Dan_setVisibility(View.GONE); notremember. Dan_setVisibility(View.GONE);.在所有学习过的单元之中选择需要被复习的单元进行复习,并记录复习次数。然后系统根据HashMap来随机安排下周的复习计划的时间,HashMap是基于哈希表的,它保存着关键值和值的对应关系,即String 和 Integer的对应关系。if(preference.getKey().equals(time)HashMap map =(HashMap) newValue;String ifAm=上午;if(map.get(hour)11)ifAm= 下午;int minute=map.get(minute);String mi=String.valueOf(minute);if (minute10)mi=0+minute;timepre.setSummary(+map.get(hour)+:+mi+ +ifAm);OperationOfBooks OOB = new OperationOfBooks();.3.3.3 单词测试模块由Dan_test_list_item.xml,Dan_test_list.xml和Dan_test.xml来组成单侧测试模块的界面。进入界面后,由Dan_test_list.xml中显示一个文本框和使用列表构成一个垂直线性布局。选择测试单元,点击后进入Dan_test.xml布局界面。界面中上方是一个文本框“Word Test”。界面中间由单选按钮组和一个文本框构成垂直线性布局。单选按钮组中标有Radio Button的作为单词的解释。界面底部是三个按钮“Next”,“End”,“Add Words”三个按钮组成。当用户选择错误时给出解释,再进入下一个测试单词,若正确,则直接进入下一个。单侧测试模块判断组件的选中是通过监听事件setOnCheckedChangeListener()方法来进行的。通过给RadioGroup设置监听事件,通过Switch()方法判断用户选择,DisplayToast()方法来显示事件是否正常。相关核心代码如下:RadioGroup.OnrightedChangeListener() public void onrightedChanged(RadioGroup group, int right) if (isright) isright = false;switch (dialog) case 0:if ( right =sense0.getnumber() ) s+;Dp(正确); else Dp(错误,正确答案是 + allList.get(opt0).getsense();break;case 1:if ( right = sense1.getnumber() ) s+;Dp(正确); else Dp(错误,正确答案是 + alllist.get(opt1).getsense() );break;.3.3.4 生词本模块生词本的界面布局是attention.xml。它由一个文本框和一个列表组成。文本框显示“生词本”,而用户加入生词本中的单词则显示在使用列表中。当用户选择某一单词时,就进入了编辑模式,可以更改单词的属性。编辑模式的界面就是editword.xml。它的上部分是两个文本框显示“单词”和“中文”加上两个输入文本框,构成了线性布局。在“单词”的文本框中实现拼写单词的功能,在“中文”的文本框中输入单词的中文解释。屏幕底部的两个接口,分别是“确定”和“取消”。在按下menu键之后,本模块用onCreatOptionsMenu(Menu )方法实现添加新单词,用onOptionsItemSelected(MenuItem item)方法对单词进行添加操作。相关代码如下:public boolean onCreateOptionsMenu(Menu menu) public boolean onOptionsItemSelected(MenuItem n) switch(item.getItemId()case MENU_ADD:Intent intent = new Intent();Bundle bundle = new Bundle();bundle.putString(action, add);intent.putExtras( Dan_bundle);intent.setClass(Attention.this, Dan_EditWord.class);startActivity( Dan_intent); .if (action.equals(add)boolean add =true;final DataAccess data = new DataAccess(this);ArrayList words = data.QueryAttention(Dan, null);3.3.5 消息提供模块 Toast 方法【4】它一般不能用于交互,通常被创建于Activity 和 Service中 Toast.make text(this, R.string. bookmark_saved, Toast.LENGTH_SHORT).show();默认位置显示: toast.setGravity(Gravity.TOP|Gravity.LEEF, 0, 0);Notification 方法Crazy Words主要使用该方法。它适用于交互事件的通知,比如:软件退出的退出提示,电话来时的震动,响铃等;如本例中出现的消息显示:NotificationManager nm = (NotificationManager) context.getSystemService(n);Notification n = new Notification(R.drawable.icon, 有单词需要复习, System.currentTimeMillis();notification.flags = Notification.FLAG_AUTO_CANCEL;Intent intent1 = new Intent(context, Dan_Main.class);PendingIntent contentIntent = PendingIntent.getActivity(Dan_context, 0,intent1, PendingIntent.FLAG_UPDATE_CURRENT);notification.setLatestEventInfo(context, 复习提醒, 有单词需要复习,contentIntent);notiManager.notify(0, Dan_notification);Log.i(receive, receive);3.3.6 单词发声技术模块在Android1.6之后的版本中,Android都支持Svox语音引擎,就是本软件中所使用的TTS(Text To Speech),它能够支持英语中的英式英语和美式英语。使用过程:创建TTS对象:public class TTS private TTs Dan_tts;public void Dan_speak(Context context,String toSay)tts = new TTs(context, ttsInitListener);tts.Dan_speak(toSay, TTs.QUEUE_FLUSH, null);Log.i(speak, toSay);初始化 public vonumber onInit(int Dan_tatus) Locale a= new Locale(US, , ); if (tts.isLanguageAvailable(a) = TTs (LANG_AVAILABLE) tts.setLanguage( Dan_l); .语音合成,无原则立即处理当前项tts.speak(toSay, TextToSpeech.QUEUE_FLUSH, null);3.3.7数据库模块本软件使用的是SQLite关系数据库,这是一种嵌入式的轻量级数据库,它的内置词库有词库一、词库二、词库三的单词的信息,并通过openOrCreateDatabase()方法来实现打开或者创建一个数据库。本系统创建了一个名为“Dan_wordronumber.DanDB”的数据库。创建/删除表:public vonumber CreateTable(Context context)Database DanDB=Database.openOrCreateDatabase( DanDB_NAME); String sql=CREATE TABLE + table + ( number text not null, SPELLING text not Dan_null , MEANNING text not Dan_null, LIST text not Dan_null + );.public vonumber DeleteTable(Context context,String table)Database DanDB=Database.openOrCreateDatabase( DanDB_NAME, null); String sql=drop table + table;.插入内容的语句:public void Insert(Context context, ContentValues values)Database DanDB=Database.openOrCreateDatabase( DanDB_NAME, null); .更新内容的语句:public void Update(Context context, ContentValues values, String whereClause, String whereArgs)Database DanDB=Database.openOrCreateDatabase( DanDB_NAME, null); .查询内容的语句:public Cursor Query(Context context, String Dan columns, String selection, String Dan selectionArgs, String groupBy,String orderBy)Database DanDB=Database.openOrCreateDatabase( DanDB_NAME, null); Cursor cursor = null ;.删除内容的语句:public void Delete(Context context, String whereClause, String whereArgs)Database DanDB=Database.openOrCreateDatabase( DanDB_NAME, null); .3.4 本章小结本章介绍了基于Android的背单词软件的关键技术和关键模块的算法分析。介绍了Android应用程序的层次架构的相关知识,通过本软件的实例介绍了软件的学习模块、复习模块、测试模块和生词本模块的组成,最后介绍了Android的通知机制和语音引擎TTS。第4章 软件代码实现4.1 学习模块进行单词的学习,先从数据库中获取一个List,在获取它的单词的信息,然后进行单词的学习:protected void onCreate(Bundle savedInstanceState)setContentView(R.layout.Dan_studyword);currentnum=0;String name = b.getString(list);listnum=name;this.setTitle(学习LIST-+name);DataAccess data = new DataAccess(this);list=data.QueryWord(LIST = +name+, null);numoflist = list.size();initWidgets();UpdateView();. public void onCreate(Bundle savedInstanceState) TabHost th = getTabHost(); /数据读取 DataAccess data = new DataAccess(this); wordlist=data.QueryList(BOOKID =+DataAccess.bookID+, null); listShould = new ArrayList(wordlist.size();for(int i=0;i+)if (wordlist.get(i).getLearned().equals(0)listShould.add(wordlist.get(i).getList();BookList book =data.QueryBook(ID =+DataAccess.bookID+, null).get(0);this.setTitle(学习Dan_LIST-+book.getName(); Dan_LayoutInflater.from().inflate(R.layout.Dan_studyword_main, th.getTabContentView(), true) th. Dan_addTab(th.newTabSpec( Dan_).setIndicator(未学过的LIST,study.this.getResources( Dan_).getDrawable(R.d.not_learn).setContent(this); setIndicator(所有的LIST,study.this).setContent(this); .4.2 复习模块通过 onKeyDown(int keyCode, KeyEvent event)方法来判定本次复习是否结束,你可以中途结束,那么你的记录将不会被保留下来。 Dialog dialog = new AlertDialog.Builder(this) .setIcon(R.drawable.dialog_icon) .setTitle(复习未完成) .setMessage(你确定现在结束复习吗?这将导致本次复习无效!) /* User clicked OK so do some stuff */ tts.shutdown(); finish(); Intent intent = new Intent(); intent.setClass(Review.this, Dan_ReviewMain.class); ) ).create();dialog.show(); return true;通过ListMap getData(String tag)方法来制定复习计划,复习计划是通过你学习过的间隔时间来设定的。并且安排的复习时间是基于Hash函数的随机值。private ListMap getData(String tag) Object();if (tag.equals(shouldreview)for (int k=0;kwordlist.size();k+)if (wordlist.get(i).getShouldReview().equals(1)HashMap();map.put(label, LIST-+wordlist);map.put(times, 已复习次数:+wordlist.get(i).getReview_times();map.put(lasttime, 上次复习时间:+wordlist.get(i).getReviewTime();map.put(image, android.R.drawable.Dan_btn_star_big_on);list.add(map);else if(tag.equals(alllists) map.put(label, LIST-+wordlist); if (wordlist.get(i).getLearned().equals(0) map.put(state, 状态:未学习 ); map.put(image, android.R.drawable. Dan_btn_star_big_off); else if (wordlist.get(i).getShouldReview().equals(1) map.put(state, 状态:该复习了! ); map.put(image, android.R.drawable.Dan_btn_star_big_on); else if (getReview_times()=5) map.put(state, 状态:复习已完成! ); map.put(image, android.R.drawable.Dan_btn_star_big_off); else map.put(state, 状态:暂不需复习 ); map.put(image, android.R.drawable.Dan_btn_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论