手机天气预报系统毕业设计.doc
《手机天气预报系统毕业设计.doc》由会员分享,可在线阅读,更多相关《手机天气预报系统毕业设计.doc(50页珍藏版)》请在咨信网上搜索。
目录 摘要 1 需求分析 2 一、开发背景 2 二、项目需求分析 2 总体设计 2 一、系统规划 2 二、系统功能界面 3 1. 设立预报城市界面: 3 2.天气显示界面: 4 3.Widget 桌面小部件界面: 5 三.设计目的 6 系统设计 6 一、开发及运营环境 6 二、数据库设计 6 三、重要方法及环节 7 四、重要方法及技术 7 重要模块 7 一、项目框架 7 二、重要功能实现 8 1.获取城市码 db_weather.db 数据库文献 8 2.实现可伸缩性列表的的构建与过滤 12 3.GPS 定位功能的实现 15 4.Widget 窗体小部件的更新 18 功能测试 19 结论 23 摘要 Window 操作系统的诞生成就了微软帝国,同时也造就了 PC 时代的繁荣, 然而如今,以 Android 和 iPhone 手机为代表的智能移动设备的发明与互联网云 技术的兴起却敲响了 PC 时代的丧钟!这也预示着移动互联网时代(3G)已经来临。 在这个互联网繁荣的时代,有一颗超新星,以它独特性能优势与人性化的 UI 设计使它在短短的几年迅速的占领了智能移动设备的市场份额,它就是 Google 的 Android!这也意味着 Google 在移动互联网时代开始抢跑并领跑。 Android 是基于 Linux 平台完全开源的手机操作系统,同时开发语言为 Java,这对于 Java 开发的我们是何等的诱人,程序员的技术要与时代同行,因此 我选择了以 Android 为平台的手机天气预报系统来作为我的毕业设计,选择手机 天气预报系统不仅可以提高技术,同时也很实用,为人们时刻了解天气状况和出 行带来了方便。 1 需求分析 一、开发背景 近几年来随着 3G 技术成熟和智能手机的不断普及,移动应用的需求与日俱 增,移动应用开发成为当下最热门的技术之一。在 Google 和 Android 手机联盟 的共同推动下,Android 在众多移动应用开发平台中脱颖而出。Android 是一个 真正意义上的开源智能手机操作系统,该系统一经推出立即受到全球移动设备厂 商和开发者的热捧。为顺应潮流,本设计旨在搭载 Android 的移动设备上运营, 实现天气状况的实时动态更新与显示,方便人们的出行与生活。 二、项目需求分析 根据功能的需求,分析此项目的重要功能应具有以下几点: 1. 精确查询定位全国各地城市未来几天内的实时天气状况 2. 系统要具的实用性,符合用户查看信息习惯,界面设计优美 3. 系统要具有稳定性,且在一定限度上节省流量的开销 总体设计 一、系统规划 由上述的需求,现将系统分为三大模块:天气显示界面模块、预报城市设立 模块与 Widget 桌面小部件模块。各系统模块功能如下: 1). 天气显示界面模块 显示指定城市三天内的天气状况,涉及日期、城市名称、温度、风力与当 日的建议,用户可通过按菜单键来显示菜单更新当前天气与设立天气显示的界面 背景,以及跳转至设立预报城市界面来更换预报城市。 2). 预报城市设立模块 由自动设立预报城市与手动设立二部分组成,自动设立实现 GPS 定位功 能,自动拟定当前用户所在地;而手动设立则通过可伸展性下拉列表单击选择系 统数据库中预存的城市来进行设立,同时为了方便用户查找,支持以输入框的形 式来过滤查询预报城市。当单击选中城市时跳转至天气显示界面,来显示该城市 当三天内的天气状况;第一次运营时自动跳到该界面。 3). Widget 桌面小部件模块 为了方便用户实时了解天气状况,特别添加在 Android 系统桌面上显示 当前天气与时间的天气小部件,使用户拿起手机的第一时刻就能了解天气,同时 当用户单击小部件时,自动跳转至天气显示界面,显示三天内的具体天气。 2 二、系统功能界面 1. 设立预报城市界面: 1.1 当第一次运营程序时,跳转至城市设立界面进行预报城市的选择: 1.2 用户可以通过单击选择“定位当前城市”的方式调用系统 GPS 功能自动 定位预报城市: 3 1.3 用户可通过输入框过滤查询当前系统中预存的城市: 2.天气显示界面: 2.1 选择了预报城市后,系统跳转至天气显示界面,显示该城市三天内的实 时天气: 4 2.2 在天气界面中用户可通过按菜单键来调出菜单,选择城市,更新天气与更 换背景: 3.Widget 桌面小部件界面: 方便用户第一时间了解天气动态,添加 widget 显示功能界面: 5 三.设计目的 设计完毕一个实用稳定的天气预报系统,同时要便宜使其能滿足大部分用户 的需求,因此针对上述规定,本设计应滿足: 1. 系统能及时的返反馈指定预报城市的天气情况 2. 自动定位用户所在城市,支持 GPS 定位 3. 节省流量开销,规定在指定的时间间隔内才更新天气,其它时段显示缓 存的天气 4. 操作方便快捷,使用简朴,界面设计美观大方,支持 widget 系统设计 一、开发及运营环境 JDK1.6.10 Eclipse3.5 Android Development Toolkit (ADT) 15.0.0 Android 2.2 及以上 Windows XP 及以上 二、数据库设计 由于在本系统中是通过中央气象台的 WebService 提供的 API 访问得到的天气 预报,在查询指定城市的天气时,需要用到它提供的城市码,而城市码相对稳定 不变,所以在构建系统时将其事先通过 Android 的网络访问技术将其缓冲到本地 SQLite 数据库进行保存起来,方便以后的查询,同时节省了流量开销。综上所 述在本地建立 db_weather.db 的数据库,其中的表结构如下: 其中只存在两个表: provices 和 citys City 中存在 city_num 用天气的查询,同时还存在外键 province_id 与 provices 表 形成 1 对 n 的关系。 6 三、重要方法及环节 1. 搭建 Android 开发环境,并建立一个 android2.2 版本名为 WeatherSystem 项目 2. 一方面编写网络访问代码,访问 3. 在程序第一次运营时,将 db_weatcher.db 数据库文献导入到应用程序数据 库中 4. 建立设立城市界面,读取数据库文献,获取省份,城市以及相应的城市码。 5. 接受用户选择的城市码,访问:<城市码>.html 得到天气信息 6. 解析天气信息,将城市码及天气信息缓冲下来,并为其设立有效时间,方 便下次启动时直接得到天气信息,过期则从网上更新 7. 定期由保存的城市码更新天气信息 四、重要方法及技术 1. Android 手机的界面 UI 设计 2. Android 的网络通信 3. Android 的广播 4. GPS 调用解析 5. Widget 小部件编程 6. XML 与 JSON 解析 7. SQLite 数据库操作 8. Android 文献操作 重要模块 一、项目框架 在装有 ADT 插件的 Eclipse 中新建一个名为 WeatherSystem 的 Android2.2 版本的项目, 项目重要文献结构如下: WeatherSystem |__src | |_com.weather.app | | |_MainActivity.java | | |_SetCityActivity.java | | |_UpdateWidgetService.java | | |_WeatherWidget.java | |_p | | |_GPSListAdapter.java | | |_MyListAdpater.java | |_com.weather.dao | | |_DBHelper.java | |_com.weaher.utils 7 | |_LocationXMParser.java | |_WeatherInfoParser.java | |_WebAccessTools.java |__res | |_ drawable | | |_(略) | |_layout | | |_gps.xml | | |_main.xml | | |_widget_layout.xml | | |_set_city.xml | |_menu | | |_configure_menu.xml | |_raw | | |_db_weather.db | |_values | | |_color.xml | | |_strings.xml | |_xml | |_weather_widget.xml | |_AndroidManifest.xml 二、重要功能实现 1.获取城市码 db_weather.db 数据库文献 获取全国各地的城市码,是通过访问中央气象局网从省份直辖市到城乡一级 一级进一步得到的,获得一个地区的城市码总共需要访问 4 次网络,分别如下: 1. 访问 : 01|北京,02|上海,03|天津,04|重庆,05|黑龙江,06|吉林,07|辽宁,08|内蒙古,… 2. 访问 <省份编号>.xml 得到该省份直辖市 的城市编号(如访问山东:) 1201|济南,1202|青岛,1203|淄博,1204|德州,1205|烟台,1206|潍坊,…… 3. 访问 <城市编号>.xml 得到该城市的县区 编号(如访问济南:) 120231|济南,120232|长清,120233|商河,120234|章丘,120235|平阴,…. 4. 访问 <县区编号>.xml 得到该县区的城市 码(如访问长清:) 120232| 8 一方面实现上述功能需使用 Android 的网络访问技术, 故编写工具类 WebAccessTools 类如下: /** * 根据给定的url地址访问网络,得到响应内容(这里为GET方式访问) * @param url 指定的url地址 * @return web服务器响应的内容,为<code>String</code>类型,当访问失败时,返回为null */ public String getWebContent(String url) { //创建一个http请求对象 HttpGet request = new HttpGet(url); //创建HttpParams以用来设立HTTP参数 HttpParams params=new BasicHttpParams(); //设立连接超时或响应超时 HttpConnectionParams.setConnectionTimeout(params, 3000); HttpConnectionParams.setSoTimeout(params, 5000); //创建一个网络访问解决对象 HttpClient httpClient = new DefaultHttpClient(params); try{ //执行请求参数项 HttpResponse response = httpClient.execute(request); //判断是否请求成功 if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { //获得响应信息 String content = EntityUtils.toString(response.getEntity()); return content; } else { //网连接失败,使用Toast显示提醒信息 Toast.makeText(context, "网络访问失败,请检查您机器的联网设备!", Toast.LENGTH_LONG).show(); } }catch(Exception e) { e.printStackTrace(); } finally { //释放网络连接资源 httpClient.getConnectionManager().shutdown(); } return null; } 由上面访问的可知,得到的编码与名称都是“编码|名称”的形式,因此在这也 编写一个解析得到城市码的工具类 WeatherInfoParser,用于解析从服务器中得到 的城市码: 9 /** * 通过解析content,得到一个一维为城市编号,二维为城市名的二维数组 * 解析的字符串的形式为: <code>编号|城市名,编号|城市名,.....</code> * @param content 需要解析的字符串 * @return 封装有城市编码与名称的二维数组 */ public static String[][] parseCity(String content) { //判断content不为空 if(content!=null&&content.trim().length()!=0) { StringTokenizer st=new StringTokenizer(content, ","); int count = st.countTokens(); String[][] citys = new String[count][2]; int i=0, index=0; while(st.hasMoreTokens()) { String city = st.nextToken(); index = city.indexOf('|'); citys[i][0] = city.substring(0, index); citys[i][1] = city.substring(index+1); i = i+1; } return citys; } return null; } 编写这两个类后现在就是编写从服务器端用程序遍历得到全国各地的城市名与 城市码,并将它们分别的保存在 String[][] provinces 数组,String[][] childs 数组与 String[][] cityCode 中: WebAccessTools webTools = new WebAccessTools(this); //得到访问网络的内容 String webContent=webTools.getWebContent(""); //第一次解析得到的为省份或一级直辖市 String[][] provinces = WeaterInfoParser.parseCity(webContent); String[] groups = new String[provinces.length]; String[][] childs = new String[provinces.length][]; String[][] cityCode = new String[provinces.length][]; for(int i=0; i< provinces.length; i++) { groups[i] = provinces[i][1]; //由省份码来得到城市码 StringBuffer urlBuilder= new StringBuffer(""); urlBuilder.append(provinces[i][0]); urlBuilder.append(".xml"); webContent = webTools.getWebContent(urlBuilder.toString()); 10 String[][] citys = WeaterInfoParser.parseCity(webContent); //用于保存所的有towns String[][][] towns = new String[citys.length][][]; //计算总的城乡数 int sum=0; for(int j=0; j<citys.length; j++) { //由城市码来得到地方码 urlBuilder= new StringBuffer(""); urlBuilder.append(citys[j][0]); urlBuilder.append(".xml"); webContent = webTools.getWebContent(urlBuilder.toString()); towns[j] = WeaterInfoParser.parseCity(webContent); sum = sum + towns[j].length; } childs[i] = new String[sum]; cityCode[i] = new String[sum]; sum=0; for(int j=0; j<citys.length; j++) { for(int n=0; n<towns[j].length; n++) { if(n==0) childs[i][sum] = towns[j][n][1]; else childs[i][sum] = towns[j][0][1] + "." + towns[j][n][1]; urlBuilder= new StringBuffer(""); urlBuilder.append(towns[j][n][0]); urlBuilder.append(".xml"); webContent = webTools.getWebContent(urlBuilder.toString()); String[][] code=WeaterInfoParser.parseCity(webContent); cityCode[i][sum] = code[0][1]; sum = sum + 1; } } urlBuilder=null; } 接下来就是将得到的上面的三个数组建立数据库文献 db_weather.db 保存起来, 用到 android.database.sqlite.SQLiteDatabase 类的静态方法: SQLiteDatabase openOrCreateDatabase(String path, CursorFactory factory)来创建一 个数据库文献,其中的 path 表达数据库存放的途径,而 factory 中游标工厂,这 里可将它设为空,从而得到 SQLiteDatabase 对象,则再调用它的 execSQL(String sql)方法来执行保存数据库的操作,从而将上面的三个数组转换为数据库中的数 据,最后使用 ADT 插件中的 DDMS 工具将得到的数据库文献从 Android 模拟器 11 中导出,最终就得到了 db_weather.db 文献。以后上述的代码就可以不使用,直 接将 db_weather.db 文献放入资源文献夹 res 目录中的 raw 目录中,则在程序第一 次运营时导入到/data/data/com.weather.app/databases 目录中就行了,其中关于数 据库的导入实际是 Java 中文献的复制。 2.实现可伸缩性列表的的构建与过滤 实现可伸缩性列表是通过继承 android.widget.BaseExpandableListAdapter 适 配器实现的,其中重要实现它的 public View getGroupView()得列表的一级列表和 public void getChildView()得到列表的二级子列表实现的,在这里由于只是实现文 本显示功能,故用 TextView 组件来填充就行了,假如要构造这个自定义的适配 器,则只需在提供存放省份直辖市的一级列表的数组 String[] groups 和存放相应 的城乡的二级列表的 String[][] childs 就行了。 同时为了兼具过滤功能,还要需再实现 android.widget.Filterable 接口,这个 接口有一个 getFilter()返回 Filter 过滤器的列表,故还要提供一个 Filter 过滤类, 在本系统中,实现的是一个内部类 CityFilter,它继承 android.widget.Filter 类,覆 盖实现了两个方法,一个是 performFiltering()得到 FilterResults 过滤结果对象方 法,另一个是根据得到的 FilterResults 对象更新适配器的 publishResults()方法。 其中的 performFiltering(CharSequence constraint)方法的实现是通过 constraint 这个关键字以省份直辖市为单位进行匹配,假如匹配成功,则添加该省份以下的 所有城市,假如匹配不成功,则再逐个与这个省份的下的城市配匹,则只添加匹 配的城市,其中匹配的结果放在 Map<Integer, ArrayList<Integer>> values 这样的 向量中,再由新建的 FilterResults 封装返回,(具体实现如下): 1. 一方面是对关键字进行判断是否为空,如为空则由 values 添加所有省份与城 市,其中的 allGroups 和 allChilds 保存的是所有的省份与相应的城市: //当过滤条件为空时,返回所有的省份与城市 if(constraint == null || constraint.length() == 0) { for(int i=0; i<allGroups.length; i++) { ArrayList<Integer> index = new ArrayList<Integer>(); //添加所有与之相应的城市 for(int j=0; j<allChilds[i].length; j++) { index.add(j); } values.put(i, index); } } 2. 假如关键字 constraint 不为空,则以省份为单位进行匹配,省份匹配的添 加下面的所在城乡,假如不匹配,则进行步进一步匹配城乡,添加符合条件 的城乡: 12 String filterStr = constraint.toString(); for(int i=0; i<allGroups.length; i++) { //查找省名是否包含用户输入的字符串 if(allGroups[i].contains(filterStr)) { ArrayList<Integer> index = new ArrayList<Integer>(); //添加所有与之相应的城市 for(int j=0; j<allChilds[i].length; j++) { index.add(j); } values.put(i, index); } else { ArrayList<Integer> index = new ArrayList<Integer>(); //假如省份名没有,则查找它下面的城市名是否包含 for(int j=0; j<allChilds[i].length; j++) { if(allChilds[i][j].contains(filterStr)) { index.add(j); } } //假如添加进入了城市,说明存在,则它的省份也添加进去 if(index.size() > 0) { values.put(i, index); } else { index = null; } } } 3. 得到过滤的结果后将其用 FilterResource 封装后返回: FilterResults results = new FilterResults(); results.values = values; results.count = values.size(); 此外的 publishResults(CharSequence constraint, FilterResults results)方法就 是根据上面得到的 results 对象来得到新的 String[] groups 与 String[][] Childs 数组, 再调用 BaseExpandableListAdapter 父类的 notifyDataSetChanged()方法来更新列 表,从而实现过滤后结果的显示(具体实现如下): 1. 一方面将参数 FiltersResuls 对象转换为 Map<Integer, ArrayList<Integer>> filterResult,然后来判断过滤后的结果长度时否为 0,假如长度为 0 则说 明过滤后的结果为空,则调用父类的 notifyDataSetInvalidated()方法来阻 止列表的更新: 2. 假如长度不为 0,则说明存在过滤结果,则将它转换为 groups 数组与 childs 数组,并调用 notifyDataSetChanged()方法实再更新: 13 String[] newGroups = new String[count]; String[][] newChilds = new String[count][]; int index = 0; int length = 0; //得到新的groups和childs for(int i=0; i<allGroups.length; i++) { if(filterResult.containsKey(i)) { newGroups[index] = allGroups[i]; //符合条件的城市 ArrayList<Integer> citys = filterResult.get(i); length = citys.size(); newChilds[index] = new String[length]; for(int j = 0; j< length; j++) { newChilds[index][j] = allChilds[i][citys.get(j)]; } index = index + 1; } } //设立groups和childs groups = newGroups; childs = newChilds; //更新列表 notifyDataSetChanged(); //判断是否展开列表 count = getGroupCount(); if(count < 34) { //展开伸缩性列表 for(int i=0; i<count; i++) { provinceList.expandGroup(i); } } else { //收缩伸缩性列表 for(int i=0; i<count; i++) { provinceList.collapseGroup(i); } } 如上所述则就实现了带有过滤性可伸展性列表适配性的实现,则在使用时在 XML 组件配置文献中使用 ExpandableListView 列表,并调用它的 setAdapter()方 法来,加载自定义的适配器。而在使用它的过滤功能时则调用自定义适配器的 getFilter()得到过滤 Filter 对象,再调用 Filter 对象的 filter(String)方法实现的,在 本系统中才用的时触发文本输入框 EditText 的 TextChangedListener 事件时调用从 而实现手动选择预报城市的过滤查询。 14 3.GPS 定位功能的实现 Android 中调用 GPS 功能,一方面要获取 GPS 定位管理器 LocationManager, 获取 LocationManager 后就是获取 LocationProvider,可以通过 Criteria 对象设立 过滤条件来获得最符合用户需求的 LocationProvider,得到 LocationProvider 后就 可通过调用 LocationMananger 对象的 getLastKnownLocation() 方法来获取 Location 地址封装对象,最后由实例化的 Geocoder 将 Location 中的经度和纬度 反编译为地址信息集合 List 对象,从而由 List 对象来得到当前用户地址名。在 开发过程中通过 Eclipse 中的 ADT 插件的 DDMS 可认为 Android 模拟器指定任 意地址,如下: 当在模拟器控制面板中指定经纬度后,则会在模拟器中出现 GPS 的标志: 但在实际开发调用 GPS 功能过程时,只能获取经度与纬度,而在使用 Geocoder 反编译地址时报错: 使用的调用代码如下: 后来通过网上搜索得知在 Android2.2 模拟器中调用 Geocoder 需要 backend 服务: ”The Geocoder class requires a backend service that is not included in the core android framework. The Geocoder query methods will return an empty list if there no backend service in the platform.“ 15 但并有说此服务要怎么得到,这看起来像是 Android2.2 模拟器的一个 Bug,故而 在本设计中采用访问[经度,纬度] 的形式来得到详备的地址信息(来源于:), 如下访问 ,104.065762: 其中的 output 参数指定的是服务器响应的格式,除了 XML 格式还可认为 JSON, CSV 等格式。 由此可知,为了实现 GPS 的定位功能还需要实现一个解析 XML 的工具类,在本 系统中由工具类 LocationXMParser 完毕,它继承至 org.xml.sax.helpers.DefaultHandler 类,用于专门用于解析 XML 文献。 上述的 GPS 功能具体实现过程如下: 1. 得到 LocationManager 系统定位服务管理者: LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 16 2. 设立 Geocoder 对象, 过滤得到符合条件的 LocationProvider , 再由 LocationProvider 得到封装经纬度信息的 Location 对象: //设立一个Criteria标准用于过滤LocationProvider Criteria criteria = new Criteria(); //设立不需要高度信息 criteria.setAltitudeRequired(false); //设立不需要方位信息 criteria.setBearingRequired(false); //得到最佳的可用的Provider String provider = locationManager.getBestProvider(criteria, true); //得到当前的位置对象 Location location = locationManager.getLastKnownLocation(provider); double latitude = location.getLatitude(); //得到经度 double longitude = location.getLongitude(); //得到纬度 3. 得到经纬度后再访问 XML 文本内容,并用自定义的 LocationXMParser 工具类解析封装得到此 经纬度相应的城市名: //根据经纬度得到具体的地址信息 //定义的一个网络访问工具类 WebAccessTools webTools = new WebAccessTools(this); String addressContext = webTools.getWebContent (""+ latitude+","+longitude); //解析地- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 手机 天气预报 系统 毕业设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文