现代软件工程课程设计模板.doc_第1页
现代软件工程课程设计模板.doc_第2页
现代软件工程课程设计模板.doc_第3页
现代软件工程课程设计模板.doc_第4页
现代软件工程课程设计模板.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

现代软件工程课程设计系统开发报告学 号: 姓 名: 题 目: 工资管理系统 指导教师: 提交时间: 2015年12月 计算机工程系 目录目录11.绪论22. 可行性分析32.1可行性分析前提32.2技术可行性42.3经济可行性42.4法律可行性43. 需求分析53.1定义53.2数据表字典63.3数据表字段字典63.4E-R图83.5数据字典84. 总体设计94.1 模块分析94.3 系统数据库逻辑结构124.4 系统数据库设计125.1数据库物理结构分析155.1.1 设计策略15系统总体结构图155.2系统详细设计说明155.3数据库概念结构设计165.4数据库逻辑结构设计195.4.1 实体195.4.2 实体间的联系196.1 测试方法206.2 部分代码和测试结果216.2.1 登陆平台216.2.2 登陆界面246.2.3 工资查询系统246.2.4 工资查询系统截图265.2.5 工资发放系统266.2.6 工资发放系统截图286.2.7 测试结果分析285.3 测试的作用和意义297. 总结和展望29参考文献30附录:编码规范311.绪论企业工资管理系统是一个企业单位不可缺少的部分,它的内容对于企业的决策者和管理者来说都至关重要,所以工资管理系统应该能够为用户提供充足的信息和快捷的查询手段。使其公司工资管理初步实行计算机化,让计算机在工资管理中得到初步应用。使工资管理者总是根据准确、及时的工资管理信息来进行决策,实现管理。只有计算机才能将现代化社会中,成倍增长的工资管理信息量,进行及时收集、加工、整理、贮存、检索、传递、反馈给决策者。而一个企业工资管理系统在企业对工资管理已不可或缺。其功能主要有:(1)对输入的工资管理数据,进行数值运算和逻辑运算,求解各种问题。(2)对工资管理信息进行加工来解决各种数据处理问题,为人事决策者在决策时提供依据。(3)对工资管理的各种资料数据进等统计计算,并将处理后的信息存贮起来。当前,不少单位的工资管理部门对于计算机的应用还仅限于简单的单机应用,随着时间的推移、任务的复杂、用户的需求,其应用还会扩大。随着计算机的广泛应用,计算机工资管理信息系统的建立,适应了社会经济发的客观要求,是工资管理现代化的一大进步。今天我们运用计算机进行了工资管理档案管理的初步现代化的开发和使用,它大大提高了工资管理工作者的工作效率,它把工资管理(档案、工资)从繁重的手工操作中解脱出来,用更多精力从事创造性的管理活动;它能使决策、计划和其它管理活动更加科学、精确、灵活。因此,建立计算机工资管理信息系统是一种客观发展必然趋势。尽管在工资管理方面还不可能普遍使用计算机,但从长远来说,工资管理现代化和计算机是不分割的。轻视或者拒绝利用计算机技术,就不可能真正地、全面地实现工资管理现代化。2. 可行性分析2.1可行性分析前提要求:满足对工资管理的基本要求及功能,并对职工信息收集、处理、保存。目标:实现无纸化办公,节省成本,提高工作效率。条件、假定、限制:当企业工资管理的信息量和复杂程度达到某一限度时,即管理人员的劳动强度超过其承受能力时,就必须采用新的管理手段,如用计算机技术对信息的收集、加工、传递和存贮等,这样,一个工资管理系统就可以对企业职工工资进行高效、合理、恰当地管理。此系统成本低廉,自开发到运行结束至少可运行3年,开发成本不超过600人民币,开发软件到投入使用不超过1个月。2.2技术可行性软件需求:操作系统WINDOWS 7以上。硬件需求:英特尔1.7G CPU、512M内存 80G硬盘的计算机。本系统采用CS架构实现,依靠C+强大的面向对象系统,与SQL LITE数据库管理系统相结合,能在1个月内开发出系统。2.3经济可行性开发成本:400元人民币。效益:大幅度地提高工资管理信息系统的工作质量和效率,让企业掌握整个工资管理系统的全面情况,为管理人员提供了准确的工资管理信息,促进工资管理工作的规范化及各项管理制度与指标体系的建立和健全;提供各种加工处理了的工资管理信息,以满足工资管理的特殊要求,适应新形势对职工队伍提出的新要求。效益/投资比:暂时无法估算。投资回收期:大约5个月。2.4法律可行性所有软件都用正版,技术资料都由提出方保管,数据信息均可保证合法来源。所以,在法律方面是可行的。3. 需求分析3.1定义QT 是一个1991年由奇趣科技开发的跨平台C+图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器)以及一些宏,易于扩展,允许组件编程。C+C+是在C语言的基础上开发的一种通用编程语言,应用广泛。C+支持多种编程范式 ,面向对象编程、泛型编程和过程化编程。SQL (Structured Query Language)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。 数据流图 简称DFD,就是采用图形方式来表达系统的逻辑功能、数据在 系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的 主要表达工具及用于表示软件模型的一种图示方法。 E-R图 (Entire and Relation)为实体-联系图,提供了表示实体型、属性 和联系的方法,用来描述现实世界的概念模型。 数据字典 (Data dictionary)是一种用户可以访问的记录数据库和应用程 序元数据的目录。主动数据字典是指在对数据库或应用程序结构 进行修改时,其内容可以由DBMS自动更新的数据字典。被动 数据字典是指修改时必须手工更新其内容的数据字典。 静态数据 系统内部有关的数据结构和操作规程。 动态数据 程序运行时输入和输出的数据。数据采集 又称数据获取,是利用一种装置,从系统外部采集数据并输 入到系统内部的一个接口。SQLITE SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2015年已经有15个年头,SQLite也迎来了一个版本 SQLite 3已经发布。3.2数据表字典表名代码内容员工信息表salary记录员工基本信息主要字段:员工ID,姓名,年龄,工龄,所在部门,职务。工资项目表Staff_typesTime_sheetWages_numwages记录员工工资信息主要字段:员工ID,姓名,工龄工资、奖金、计时工资、计件工资、保险金、补贴金、个人所得税、应发工资、实发工资系统日志表user记录用户登陆信息:主要字段:员工ID,登陆名,登陆密码,用户权限,登陆时间,退出时间。3.3数据表字段字典名称属于的表编码长度属性备注员工ID员工信息表工资项目表系统日志表ID5字符例:1姓名员工信息表工资项目表系统日志表Name20字符例:李航年龄员工信息表Age2整型例:10入职时间员工信息表Enter_time8Time例,2015.1.1所在部门员工信息表Dept_name20字符例,技术部职务员工信息表position10字符例,打字员工龄工资工资项目表LenPay8整型例,2450奖金工资项目表Prize8整型例,2450计时工资工资项目表TimePay8整型例,2450补贴金工资项目表Allowance8整型例,2450应发工资工资项目表Wages_num8整型例,2450实发工资工资项目表TrPay8整型例,2450登陆名系统日志表Username10字符例,lh登陆密码系统日志表Password10加码例,123用户权限系统日志表role10字符例,普通用户登陆时间系统日志表UserTime16时间类型2005-4-23 21:29退出时间系统日志表QuitTime16时间类型2005-4-23 21:29登陆事件记录系统日志表Event50字符例,登陆系统。3.4E-R图数据流图:员工员工信息表工资项目表员工信息表银行转帐单据表注册登记工资管理工资查询报表生成和打印银行转帐办理员工离职处理系统维护信息维护管理员管理员系统日志表统计分析3.5数据字典1:USER-PASS用户密码信息表字典:用户名输入用户姓名检查检查用户姓名是否存在,及格式是否正确反馈不存在和格式不正确就提示密码输入个人密码检查检查用户密码是否正确反馈密码不正确时提示权限根据身份设定访问范围2.SALARY员工个人信息表数据字典:学号姓名性别部门职位入职时间字符型字符型字符型字符型字符型字符型4. 总体设计4.1 模块分析根据实际情况,我们使用原型法(Rapid Prototyping)即以少量代价快速地构造一个可执行的软件系统模型。使用户和开发人员可以较快地确定需求,然后采用循环进化的开发方式,对系统模型作连续的精化,将系统需具备的性质逐渐增加上去,直到所有的性质全部满足。此时模块也发展成为最终产品了。通过对用户需求的分析,我们可以分析出该工资管理系统大致可以分为六个模块:人事档案管理模块、职工工资管理模块、工资统计模块的实现、部门查询模块、特殊查询模块、报表查询模块。现在对这六个模块做具体说明: 人事基本情况管理模块: 输入:职工信息 输出:“人员档案表”功能:对人事基本信息的查询 职工工资管理模块 输入:人员月工资 输出:“职工工资表” 功能:完成员工工资的查询 工资统计模块输出:“职工工资统计表”功能:完成员工工资的统计和打印 部门查询模块输出:以部门为索引的“职工档案信息”功能:完成以部门为索引的“职工档案信息”的统计和查询 特殊查询模块的实现输出:满足查询条件的“职工档案信息”和职工合同的期限功能:完成满足查询条件的“职工档案信息”和职工合同的期限的查询 报表查询模块的实现 输出:员工履历信息和工资信息的基本情况 查询及打印功能功能:完成对员工履历信息和工资信息基本情况的查询及打印4.2系统信息流程分析普通员工管理员用户登录判断用户管理平台用户平台发放工资发布消息修改密码添加员工察看消息查询工资修改密码注销登录员工号工资项目及数据录入 工资计算统计分析报表制作查询工资信息工资计算数据统计分析数据报表输出工资项数据上级查阅与决策记录员工信息管理系统维护员工基本档案信息4.3 系统数据库逻辑结构4.4 系统数据库设计1. 详细设计5.1数据库物理结构分析5.1.1 设计策略由于该系统主要用于员工的工资管理,其中工资的录入、计算、扣除与查询,人员的增删减是主要功能,所以应用程序主要就是实现这几个功能。 系统总体结构图员工工资管理系统员工信息录入工种信息录入员工工资查询员工总工资计算系统管理员工子系统登录验证工种信息修改工资统计个人资料工资查询5.2系统详细设计说明员工基本信息表salary的创建;员工种类基本信息表staff_types的创建; 员工工资基本信息表wages的创建。(包含加班统计(wages)、考勤统计(time_sheet)、以及最终工资统计(wages_num))5.3数据库概念结构设计数据库概念设计是整个数据库设计的关键。根据用户需求设计数据库的概念,数据模型。我们首先要将现实世界中的客观对象首先抽象为不依赖任何具体机器的信息结构,这种信息结构不是DBMS支持的数据模型,而是概念级模型。然后再把概念模型转换为具体机器上DBMS支持的数据模型。概念模型是对现实世界的抽象和概括。它真实,充分地反映了现实世界中的事物和事物之间的联系,能满足用户对数据的处理要求。由于其简洁、明晰、独立于机器,很容易理解,因此可以用概念模型和不熟悉计算机的用户交换意见,使用户能积极参与数据库的设计工作。概念模型易于变动,还很容易向各种数据模型转换。概念模型的基本概念涉及的主要有7个,分别为实体、属性、码、域、实体型、实体集、联系。ER图是概念模型最常用的表示方法,在ER图中:1)用长方形表示实体型,在框内写上实体名。2)用菱形表示实体间的联系,菱形框内写上联系名,用无向边把菱形分别与有关实体相连,在无向边旁标上联系的类型。若实体间的联系也具有属性,则把属性和菱形也用无向边连上。 员工员工号姓 名性 别职 业所属部门入职时间图3-1 员工实体关系图图3-2 部门实体关系图图3-3 工资实体关系图工种基础工资加班薪资奖励工资考勤福利补贴津贴基本工资工资日期 图3-4 部门员工实体关系图部 门部门员工员 工 员工工资实体关系图(图5)员工员工工资工资355.4数据库逻辑结构设计 5.4.1 实体根据上述概念模型设计得出的ER图,我们可以得出系统中涉及的主要实体有3个,其结构如下:(1)员工(员工工号,姓名、性别、出生日期、部门代码和职业)(2)工种(员工类型,基础工资,加班薪资)(3)工资(员工工号,姓名,基本工资,奖励工资,津贴,考勤,最终实际得到的工资) 5.4.2 实体间的联系工资管理系统中实体之间有6个联系,其关系如下:(1)具有1关系:员工和奖金的关系是1:N,N个职位相同的员工具有相同的奖金基数。(2)工薪关系:员工和工资单的关系是1:N,每个员工每个月都有一张工资单。(3)属于关系:员工和部门的关系是N:1,一个部门可以有多个员工。(4)聘用关系:员工和职业的关系是N:1,一个职务可以聘用多个员工。(5)设置关系:部门和职业的关系是M:N,一个部门可以设置多个职务,相同的职务也可以设置在多个部门。根据以上逻辑结构分析可以知道:一个部门有多个员工,每个员工都有工资,工资又由基本工资等组成,其关系模式为:员工编号(主键)姓名性别入职时间部门职业(外码)职业(主键)基础工资加班薪资员工工号(主键)基本工资每月一格(12个月)员工工号(主键)考勤每月一格(12个月)员工工号(主键)加班天数每月一格(12个月)用户名密码角色表、视图汇总视图/表名类型说明员工基本表集中保存员工的基本信息工种基本表集中各种类员工的信息工资基本表存放员工工资的基本信息(12个月)考勤基本表存放员工考勤的基本信息(12个月)用户表基本表存放登录情况加班基本表存放员工加班的基本信息(12个月)2. 实验与测试6.1 测试方法(1) 测试人员测试队伍由两位成员组成。软件的设计者在测试整个过程中负责整体测试方案的制定和测试进度的掌握以及白盒测试的测试者。第二位成员由未参加软件制作者担任,主要责任是进行软件的黑盒测试以及软件环境,硬件要求和极限测试工作。(2) 机器测试通过在计算机上直接运行被测程序,来发现程序中的错误。机器测试包括黑盒测试盒白盒测试。黑盒测试也称功能测试,将软件看作黑盒子,在完全不考虑程序的内部结构和特性的情况下,研究软件的外部特性。根据软件的需求规格说明书测试用例,从程序的输入和输出特性上测试是否满足设定的功能。白盒测试也称结构测试,将软件看作一个透明的白盒子,按照程序的内部结构和处理逻辑来选定测试用例,对软件的逻辑路径及过程进行测试,检查与测试是否相符。6.2 部分代码和测试结果6.2.1 登陆平台该平台可以实现员工和管理员的登录验证,根据登陆的身份不同进入不同的管理系统如:普通员工进入工资查询系统,管理员则进入工资发放系统。核心代码:Login:Login(QWidget *parent) : QWidget(parent), ui(new Ui:Login) ui-setupUi(this); pw = new MainWindow; se = new Select;/ dlg = new StackedDlg; m_flag_admin = 普通用户;Login:Login() delete ui;void Login:on_quit_clicked() this-close();void Login:on_reset_clicked() ui-le_username-setText(); ui-le_password-setText();void Login:on_login_clicked() QString username=ui-le_username-text(); QString password=ui-le_password-text(); qDebug() le_username-text(); if(query.exec(queryString) int user_idx = query.record().indexOf(USERNAME); int pass_idx = query.record().indexOf(PASSWORD); qDebug() user_idx pass_idx; while (query.next() QString user = query.value(user_idx).toString(); qDebug() user; QString pass = query.value(pass_idx).toString(); qDebug() le_username-text();/ qDebug() le_username-text();/ qDebug() quit,SIGNAL(clicked(),this,SLOT(close(); se-show(); this-hide(); break; else QMessageBox:warning(NULL,tr(error),tr(please input again!); ui-le_username-setFocus(); break; if(m_flag_admin = 管理员) QSqlQuery query; QString queryString = QString(select * from user); if(query.exec(queryString) int user_idx = query.record().indexOf(USERNAME); int pass_idx = query.record().indexOf(PASSWORD); while (query.next() QString user = query.value(user_idx).toString(); qDebug() user; QString pass = query.value(pass_idx).toString(); qDebug() le_username-text();/ qDebug() le_username-text();/ qDebug() show(); this-hide(); break; else QMessageBox:warning(NULL,tr(error),tr(please input again!); ui-le_username-setFocus(); break; void Login:on_comboBox_activated(const QString &arg1) m_flag_admin = arg1;6.2.2 登陆界面6.2.3 工资查询系统该子系统实现普通员工对工资的查询以及动态新闻的浏览核心代码:void Select:print() QSqlQueryModel *model = new QSqlQueryModel; if(m_flag_select = id) QString queryString = QString(select * from salary where ID = %1) .arg(ui-le_select-text(); model-setQuery(queryString); else if(m_flag_select = name) QString queryString = QString(select *from salary where NAME = %1) .arg(ui-le_select-text(); model-setQuery(queryString); else if(m_flag_select = dept_name) QString queryString = QString(select *from salary where DEPT_NAME = %1) .arg(ui-le_select-text(); model-setQuery(queryString); qDebug() le_select-text() le_select-text(); model-setHeaderData(0,Qt:Horizontal,QObject:tr(id); model-setHeaderData(1,Qt:Horizontal,QObject:tr(name); model-setHeaderData(2,Qt:Horizontal,QObject:tr(sex); model-setHeaderData(3,Qt:Horizontal,QObject:tr(dept_name); model-setHeaderData(4,Qt:Horizontal,QObject:tr(position); model-setHeaderData(5,Qt:Horizontal,QObject:tr(exter_time); ui-tableView-verticalHeader()-hide(); ui-tableView-resizeColumnToContents(0); ui-tableView-resizeRowToContents(0); ui-tableView-horizontalHeader()-setStretchLastSection(true); ui-tableView-verticalHeader()-setResizeContentsPrecision(QHeaderView:Stretch); ui-tableView-setSelectionBehavior(QAbstractItemView:SelectRows); ui-tableView-setModel(model); ui-tableView-setColumnWidth(0,100); ui-tableView-setColumnWidth(1,100); ui-tableView-setColumnWidth(2,100); ui-tableView-setColumnWidth(3,100); ui-tableView-setColumnWidth(4,100); ui-tableView-setColumnWidth(5,100); void Select:on_Box_activated(const QString &arg1) m_flag_select = arg1;void Select:on_p_select_clicked() this-print();void Select:on_box_month_activated(const QString &arg1) m_flag_month = arg1;.。6.2.4 工资查询系统截图5.2.5 工资发放系统该平台下,管理员可以为员工发放每月的工资,同时还可以修改密码以及发布动态的新闻。核心代码:void Select:on_pushButton_clicked() QSqlQuery query; QString queryString = QString(select * from wages_num);/ QSqlQueryModel *model = new QSqlQueryModel;/ QString queryString = QString(select January from wages_num where ID = %1)/ .arg(ui-le_id-text();/ model-setQuery(queryString);/ QModelIndex index = model-index(1,1);/ QVariant data = model-data(index);/ QString text = data.toString();/ QString t =3000;/ ui-lb_month-setText(t); int num_add = 0; int exter_pay = 50; int wages_month = 3000; int lata = 0; if(m_flag_month = 一月) QString queryString = QString(select January from wages where ID = %1) .arg(ui-le_id-text(); if(query.exec(queryString) int n_idx = query.record().indexOf(January); while(query.next() int num_add = query.value(n_idx).toInt(); qDebug() data: lb_add-setText(num_add_s); QString queryString2 = QString(select exter_pay from staff_types where position = (select position from salary where id = %1) .arg(ui-le_id-text(); if(query.exec(queryString2) int pay_idx = query.record().indexOf(exter_pay); while(query.next() exter_pay = query.value(pay_idx).toInt(); qDebug() data: le_id-text(); if(query.exec(queryString3) int lata_idx = query.record().indexOf(Jan); while(query.next() lata = query.value(lata_idx).toInt(); qDebug() data: lb_sheet-setText(lata_s); QString queryString4 = QString(select wages from staff_types where position = (select position from salary where id = %1) .arg(ui-le_id-text(); if(query.exec(queryString4) int wage_idx = query.record().indexOf(wages); while(query.next() wages_month = query.value(wage_idx).toInt(); qDebug() data: lb_wages-setText(wages_s); int wages = wages_month + (num_add * exter_pay ) - (lata *30); QString wages_s = QString:number(wages); ui-lb_month-setText(wages_s); QString queryString5 = QString(updata wages_num set January = wages where id = %1) .arg(ui-le_id-text(); if(query.exec(queryString4) QMessageBox:warning(this,tr(promet box),tr(查询成功! ),QMessageBox:Yes,QMessageBox:Close); 6.2.6 工资发放系统截图6.2.7 测试结果分析软件在运行、关闭及退出时保存记录的提示功能基本完成,在软件的不断启动关闭过程中没有出现死机、程序执行效率降低等各种不良现象,功能的实现较为完善。用户登录界面较友好,但软件界面的视觉效果没有。可操作性及安全性能较好,能完成对不同管理级别者的限制工作,对软件涉及到的机密数据能进行良好的保护。数据库的可维护性良好,数据的录入能顺利完成,并能实现动态更新,删除和修改也能顺利完成。数据查询不够全面,只能按系统设定的少数查询条件进行搜索,以找到合适的答案。数据溢出、越界基本不能进行非法提示,以警告用户正确使用。对用户的非正常操作方式能提出警告。数据类型填写错误时,系统有报错功能,在数据输入错误时,使用者能够获知错误所在。软件兼容性有待提高,版本较低的机子上测试不断出现错误提示。5.3 测试的作用和意义系统测试是工资管理系统的开发周期中的一个十分重要环节。尽管在系统开发周期的各个阶段均采取了严格的技术审查,但依然难免会留下错误,如果没有在投入运行前的系统测试阶段被发现并纠正,问题迟早会在运行中暴露出来,到那时要纠正错误将会付出更大的代价。系统测试占用的时间、花费的人力和成本占软件开发的很大比例。统计表明,开发较大规模的系统,系统测试的工作量大约占整个软件开发工作量的4050。而对于一些特别重要的大系统,测试的工作量和成本更大,甚至超过系统开发其他各阶段的总和的若干倍。7. 总结和展望经过反复测试,系统完成后运行添加、修改、查询、报表等功能均正常,发布1.0版。此系统仍存在许多缺陷,但是通过该系统设计达到了系统设计目的意义,基本掌握了软件开发的主要步骤,了解了各环节在开发时要注意的问题,体会到开发一个系统应该注意的方面以及重视用户在系统开发过程中间的作用,开发出好的软件高质量的软件。另外在设计过程中也逐渐提高了软件开发技能和编程技能以及良好的软件开发思维模式。在经过这学期的学习后,在老师的建议下,知道了前期工作的重要性。对于需求分析,要学会找有经验的人请教方法。不要只是自己思考,而应该去学会了解不同的知识,真正的了解需求。最后,此次课程设计给我的体会有以下几点:(1)看似简单,其实不然以前没有过课程设计的经验,作为第一次整体设计,我抱着试试看的态度去写,一开始看了只有这么几个模块是心里挺高兴的,但是当我真真正正地去把一个操作写成功时,很多意想不到的情况发生了。有时候会为了一个操作不能调试成功而整个晚上都不能去安心做其他的作业。(2)冷静沉着、兢兢业业编程是一个很繁琐的过程,要考虑到很多错误转移情况,在这期间会有很多以前不曾想过的问题出现,次

温馨提示

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

评论

0/150

提交评论