职工工资管理系统设计课程设计含源代码_第1页
职工工资管理系统设计课程设计含源代码_第2页
职工工资管理系统设计课程设计含源代码_第3页
职工工资管理系统设计课程设计含源代码_第4页
职工工资管理系统设计课程设计含源代码_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、1 / 24设计题设计题目目 职职工工工工资资管理系管理系统设计统设计 2 / 24xxx 技术学院课程设计任务书技术学院课程设计任务书课程名称面向对象程序设计课程设计课程代码设计题目职工工资管理系统的设计题目序号设计时间系(院)班级一、课程设计任务(条件)一、课程设计任务(条件) 、具体技术参数(指标)、具体技术参数(指标) 本课程设计是面向对象程序设计课程的后继教学环节,学好 C+语言就必须坚持用面向对象的思维方式分析问题、解决问题,最好的方法是仿照教材编写 C+实际应用程序。根据教材中人事管理应用程序框架,在此基础上按要求完成以下实际应用程序。职工工资管理系统课程设计题目:实现一个简单的

2、工资管理系统。系统的主要功能是计算职工当月工资并存档。公司内有 5 种不同类型的职工:技术人员、销售人员、文秘、技术经理和销售经理,他们的工资计算方式各不相同。技术人员的工资根据他当月工作的小时数来定,时薪 35 元;销售人员的工资则是根据本人当月销售额来确定,工资为销售额的 5%;文秘有 4000 元的基本工资,奖金视为当月工作情况而定;技术经理和销售经理都有 6000 元的固定工资,技术经理的工作业绩可分为 3 个等级,每级可获得1000 元奖金,销售经理的奖金由他所管理的销售员的销售业绩而定,总销售额的 2%职工工资管理系统的设计:对于整个系统的设计思路是,首先,由员工输入用户信息,包括

3、编号、姓名和职务;然后,在计算某职工的当月工资时,系统先从已输入的职工信息文件中获取职工的工作类型,接着调用不同的处理程序进行计算;最后将结果存档。从用户需求中,可以发现 5 种类型的职员都可以分别设计为一个类。首先,他们都属于雇员,因此可以设计一个基类 employee(雇员) ,然后从中派生出 technician(技术人员)类,salesman(销售人员)类、secretary(文秘)类。对于技术经理和销售经理来说,他们都属于经理,所以设计时可以从 employee 类中派生出一个 manager(经理)类作为 techmanager(技术经理)和salesman(销售经理)类的父类。而

4、经理类本身并不对应实际的员工类型,由于技术经理有技术人员和经理的双重特点,因此 techmanager 类同时继承 technician 类和 manger 类;销售经理有销售人员和经理的双重特点,因此 salesmanager 类同时继承 salesman 类和 manager 类。根据用户需要 employee 类应该拥有的属性有:编号、姓名、职务、月份和工资。Employee 类的服务可以包括 info() 、 search() 、countSalary() 、recordInfo()和 recordSalary() 。其中,info()函数用于接收用户输入的职工信息;search()函

5、数用来根据职工名查找职工信息;countSalary()函数为工资计算函数,但在基类中为空,原因是各类人员的工资计算方法不同,无法在基类中统一定义,必须在派生类中分别定义。recordInfo()函数和 recordSalary()函数分别是职工信息和职工工资的记录函数,分别将信息存入文件 info.txt 和 salary.txt。具体的基类和派生类的定义如下图:3 / 24二、对课程设计成果的要求(包括课程设计说明书、图纸、图表、实物等软硬件要求)(1)分析职工工资管理系统程序结构: 画出程序粗略的流程图和各个模块的详细流程图,每个功能模块用文字说明他们的功能(与对应流程图放在一起) ;(

6、2)对你已经实现的功能(修改的、新编写的)做详细的说明, 并附上流程图及程序清单。(3)自己对该职工工资管理系统的进一步设想;(4)对于有设想但最终未实现的功能的大致编程思路的阐述;(5)论述在设计过程中遇到的并且对你具有启发性的问题。(6)严禁抄袭,发现雷同,双方扣分严禁抄袭,发现雷同,双方扣分。三、课程设计工作进度计划:周一、二:教师布置任务,讲解本课设模块。画出主程序粗略的流程图和各个模块的详细流程图。设计程序及调试程序。周三、四:设计程序及调试程序。同时着手写报告。周五:完成设计,提交报告,接受教师考评。四、主要参考资料(1) 面向对象程序设计 ,郑莉,清华大学出版社, (2) 面向对

7、象程序设计 C+语言,朱战立等编 西安电子科技大学出版社(3) 面向对象程序设计-Visual C+,刘斌等编, 清华大学出版社 (4) 面向对象程序设计-C+语言描述, Richard Johnsonbaugh(美)等著,蔡宇辉等译,机械工业出版社, 20034 / 24目录目录1概述:概述:.51.1基本功能.51.2拓展功能.52 2课题分析课题分析.62.1 类的设计.6 2.2 类的实现 .63详细设计说明详细设计说明.73.1程序主界面.73.2 方案.73.3程序描述(输入INPUT) .94课程设计总结课程设计总结.125软件使用说明软件使用说明.126附录(参考文献,原代码:

8、)附录(参考文献,原代码:).136.1参考文献:.136.2原代码.135 / 241 概述:概述:1.1 基本功能基本功能实现一个简单的工资管理系统。系统的主要用来计算职工当月工资并存档。由于公司内有 5 种不同类型的职工:技术人员、销售人员、文秘、技术经理和销售经理,他们的工资计算方式各不相同。所以,此系统的基本功能是:首先,由员工输入用户信息(包括编号、姓名和职务;然后,计算某职工的当月工资(系统先从已输入的职工信息文件中获取职工的工作类型;接着调用不同的处理程序进行计算) ;最后,可以选择将结果(所有员工的编号、姓名、职位、工资等信息)存档。1.2 拓展功能拓展功能1.设定好 5 种

9、职位各不相同的工资计算方式:技术人员的工资根据他当月工作的小时数来定,时薪 35 元;销售人员的工资则是根据本人当月销售额来确定,工资为销售额的 5%;文秘有 4000 元的基本工资,奖金视为当月工作情况而定;技术经理和销售经理都有 6000 元的固定工资,技术经理的工作业绩可分为 3 个等级,PS:每级可获得 1000 元奖金(¥1000、¥2000、¥3000) ;销售经理的奖金由他所管理的销售员的销售业绩而定,总销售额的 2%。 2.添加某个职工信息的查询功能:只要输入一个已经存在数据库内的雇员名字,即可查到该雇员的编号、姓名、职位和工资的信息。3.清屏功能:为了保护雇员个人信息不外露。

10、4.警报功能: 在查询职员工资信息的时候,会发出警报音“滴”的一声。5.退出确定功能退出程序时,会让用户再次确定是否真的要退出的界面。6 / 24Employee 类Techmanager 类Technician 类Manager 类Salesman 类Secretary 类2 2 课题分析课题分析2.1 类的设计类的设计从用户需求中,可以发现 5 种类型的职员都可以分别设计为一个类。首先,他们都属于雇员,因此可以设计一个基类 employee(雇员) ,然后从中派生出 technician(技术人员)类,salesman(销售人员)类、secretary(文秘)类、techmanager(技

11、术经理)类和manager(销售经理)类。根据用户需要 employee 类应该拥有的属性有:编号、姓名、职务、月份和工资。Employee 类的服务可以包括 input() ,print() ,find() ,save() 。其中,input()函数用于接收用户输入的职工信息;print()函数用于输出用户输入的职工信息;find()函数用来根据职工名查找职工信息;save()函数为将职工信息写入文本。由于各类人员的工资计算方法不同,无法在基类中统一定义,必须在派生类中分别定义。2.2 类的实现类的实现 class Technician:public Employee /技术员类(公有继承雇

12、员类) public: void input() cout技术员的; Employee:input(); coutworktime; void print() pay=worktime*hourpay; Employee:print(); void find() pay=worktime*hourpay; Employee:find(); void save() pay=worktime*hourpay; 其他类,类似形成。 Employee:save(); protected: double worktime; /工作时间(小时);7 / 24输入用户信息,包括编号、姓名和职务从已输入的职工

13、信息文件中获取职工的工作类型调用不同的处理程序进行查询,职员信息将结果存档开始开始3 详细设计说明详细设计说明3.1 程序主界面程序主界面图表 1 主菜单目录3.2方案方案在明确了整个程序基本的功能8 / 24输入用户信息,包括编号、姓名和职务从已输入的职工信息文件中获取职工的信息调用不同的处理程序进行查询,职员信息将结果存档开始开始目的后,接着,便是思考如何具体实现:问题 1:存入的数据放在哪里?const int n1=1,n2=1,n3=1,n4=1,n5=1; /*定义公司各类职工人数(可修改) (n1:技术员人数;n2:经理人数;n3:销售员人数;n4:销售经理人数 )*/ 事先设定

14、好可修改的全局变量。然后确定好全局对象数组。如此便可以按照所需存入员工信息 问题 2:如何程序要求,落实?派生类派生类派生类派生类基类派生类问题 3:怎样处理 2 个菜单关系?(输入职员信息菜单、目录菜单)让目录菜单作为主菜单,输入职员信息的菜单成为二级菜单。并运用清屏的功能,及时清除输入的职员信息,作为一种安全保护。9 / 243.3 程序描述程序描述(输入输入 input)* 由主菜单选择进入“1”的数据输入菜单,进行数据输入(进入二级菜单后会自动清屏) 。图表 2 子菜单(程序中的 menu 3)* 根据需要选择输入要输入的职员信息。 (只需按照中文提示,依次输入英语或数字信息)图表 3

15、 子菜单中选择输入技术经理信息的一个状态* 一个职员的信息全部输入完成后,会自动清屏,回到“财务部门输入数据系统”主菜单10 / 24图表 4 子菜单* 以此类推,随意输入你要输入的职员信息。若输入全部完成,可以回到主菜单* 然后,在主菜单中选择数据查询,可以根据你填入的职工姓名,查到他的所有信息图表 5 由主菜单选择查询一操作时,反馈信息的状态* 也可选择数据备份,会自动清屏。并让所有已输入过的职工信息,全打印在所在磁盘的一个 txt 文档里。11 / 24图表 6 由主菜单选择数据备份一操作后的状态* 如果想要退出系统,可以选择主菜单的退出系统,选择过后,会清屏,显示以下界面,警告用户,是

16、否真的要推出。 图表 7 选择主菜单退出系统一操作后的状态12 / 244 课程设计总结课程设计总结通过此次面向对象程序设计的实践课程学习,本人受益匪浅。经过一系列的编程,本人更加体会到纸上得来终觉浅,绝知此事要躬行。实践是检验真理的唯一标准。这两句话说的真切。遇到的难关 1.在编写销售经理的类的时候,由于思维混乱,继承乱用,以致真个程序一片混乱,运行不出,且外加几十个错误警告。经过回顾自己先前写的流程图,本人得到了很大的顿悟。关系捋清楚了,思路也豁然开朗了,下笔如有神。遇到的难关 2.五种职员在计算工资的时候,先前一直查询不到正确的工资数额。在反复检查、测试的过程中,才发现那些计算公式,继承

17、没有问题,问题出在查询的那个函数忘记将重新计算工资的公式写上。所以一直显示的是 employee 的工资数,而不是各个职位员工的工资数。遇到的难关 3.在增加清屏这一功能时,本以为这很简单。可在具体操作时,才发现,这也考验一个人思维逻辑的严谨。曾设想,为了不泄密,将清屏这一函数放在查询函数后。结果没想到,这导致测试时:工资信息一显示,立刻被擦掉,根本来不及看的窘境。存在的不足 1.本程序设计上还有明显的不妥,就是查询工资信息的时候,要求输入的仅仅为用户姓名。由于还是英语输入,难免有同名同姓的状况出现,容易混乱与出错,还需改进。存在的不足 2.原本思路是将程序分为两个入口:管理员入口和职员入口。

18、管理员入口:需要输入通行账户和密码。进入后,有两个功能输入所有职工信息(编号、姓名、岗位、月份、业绩奖励等等基本信息)和数据备份。职员入口:则面向所有员工。进入后,只有一个功能根据自己的名字和编号查询自己的工资等信息。可是由于实际精力有限,时间的不足。只能不分入口,直接将所有功能放在一个界面内主菜单内。这样不能很好的起到原先设想的保护功能。实乃缺失。 总之,这不到一周的实践课,让本人的对于知识的应用能力有了显著的提升。本人也明白了,想要真正会编程,就要课后下功夫,多“实战” 。这样的进步才更大。5 软件使用说明软件使用说明1.主菜单中,先输入 1,按回车。进入输入数据职员的菜单界面。2.按文字

19、提示信息,依次输入 5 种职员的各个信息。EG:编号 姓名 职位101 zhao techmanager202 qian technician303 sun salesman404 li manager505 zhou secretary13 / 243.输入完毕后,输入 0,按回车。再次回到主菜单。4.输入 2,按回车。可以输入你想查看的职工姓名,按回车,查看其信息。5.输入 3,按回车。可以将所有职工的信息,做成文本。6.输入 0,按回车。可以通过输入 y 或 n 选择,是否退出程序。友情提示:1.由于语言局限,输入的信息仅限 26 个字母和阿拉伯数字。 2.自动清屏是出于对雇员信息的保护

20、和界面整洁。并非出错,请勿恐慌。 3.备份资料时,电脑发出的“滴”的警报声,只是提示用户,备份已完成。6 附录(参考文献,原代码:)附录(参考文献,原代码:)6.1 参考文献:参考文献:(1) 面向对象程序设计 ,郑莉,清华大学出版社, (2) 面向对象程序设计 C+语言,朱战立等编 西安电子科技大学出版社(3) 面向对象程序设计-Visual C+,刘斌等编, 清华大学出版社 (4) 面向对象程序设计-C+语言描述, Richard Johnsonbaugh(美)等著,蔡宇辉等译,机械工业出版社, 20036.2 原代码原代码#INCLUDE#INCLUDE#INCLUDE#INCLUDE#

21、INCLUDEUSING NAMESPACE STD;/常变量(供修改用):CONST INT N1=1,N2=1,N3=1,N4=1,N5=1; /*定义公司各类职工人数(可修改) (N1:技术员人数;N2:经理人数;N3:销售员人数;N4:销售经理人数 )*/CONST DOUBLE M_SALARY=6000; /经理固定月工资CONST DOUBLE HOURPAY=35; /技术员小时工资CONST DOUBLE BASICPAY=6000; /销售经理的底薪CONST DOUBLE SECRETARYPAY = 4000;/文秘的底薪CONST DOUBLE S_PROPORTIO

22、N=5.0/100; /销售员的工资提成比例CONST DOUBLE SM_PROPORTION=2.0/100; /销售经理的提成比例DOUBLE SOLD_AMOUNT;14 / 24/声明部分:VOID MENU(); /主菜单(1/2/3/0)VOID MENU3(); /数据打印二级菜单(1/2/3/4/5/0)VOID DATA_INPUT(); /数据输入函数DOUBLE SM_SALARY(); /销售经理工资计算VOID DATA_FIND(); /数据查询VOID DATA_SAVE(); /数据备份(做到TXT中) VOID CLEAR();OFSTREAM OUTFIL

23、E; /打开磁盘文件流对象STRING F_NAME; /全局变量(查询用)/定义类:CLASS EMPLOYEE /雇员类(基类) PUBLIC: VOID INPUT() /数据输入函数 COUTNUM; COUTNAME; COUTSTATUS; COUTMONTH; VOID PRINT() /打印数据函数 COUT 编号T姓名T职位TT月份T工资 ENDL; COUTNUMTNAMETSTATUSTMONTHTPAYENDL; VOID FIND() /查询函数 IF(F_NAME=NAME ) PRINT(); COUTENDL; VOID SAVE() /备份数据函数15 / 2

24、4 OUTFILENUMTNAMETSTATUSTMONTHTPAYENDL; PROTECTED: INT NUM; /职工号 STRING NAME; /职工姓名 STRING STATUS; /职工职位 INT MONTH; /工资月份 DOUBLE PAY; /职工工资;CLASS TECHNICIAN:PUBLIC EMPLOYEE /技术员类(公有继承) PUBLIC: VOID INPUT() COUT技术员的; EMPLOYEE:INPUT(); COUTWORKTIME; VOID PRINT() PAY=WORKTIME*HOURPAY; EMPLOYEE:PRINT();

25、 VOID FIND() PAY=WORKTIME*HOURPAY; EMPLOYEE:FIND(); VOID SAVE() PAY=WORKTIME*HOURPAY; EMPLOYEE:SAVE(); PROTECTED: DOUBLE WORKTIME; /工作时间(小时);16 / 24CLASS MANAGER:PUBLIC EMPLOYEE /技术经理类PUBLIC: VOID INPUT() COUT技术经理的; EMPLOYEE:INPUT(); COUTM_EXPAY; VOID PRINT() PAY=M_SALARY+M_EXPAY; EMPLOYEE:PRINT();

26、VOID FIND() PAY=M_SALARY+M_EXPAY; EMPLOYEE:FIND(); VOID SAVE() PAY=M_SALARY+M_EXPAY; EMPLOYEE:SAVE(); PROTECTED: INT M_EXPAY;CLASS SELL_MANAGER:PUBLIC EMPLOYEE /销售经理类PUBLIC: VOID INPUT() COUT销售经理的; EMPLOYEE:INPUT(); INT SM_NUMBER() /调用销售经理职工号 RETURN NUM; STRING SM_NAME() /调用销售经理姓名 17 / 24 RETURN NAM

27、E; VOID PRINT() PAY=BASICPAY+SOLD_AMOUNT*SM_PROPORTION; COUT 编号T姓名T职位TT月份T工资ENDL; COUTNUMTNAMETSTATUSTTMONTH; VOID SAVE() PAY=BASICPAY+SOLD_AMOUNT*SM_PROPORTION; OUTFILENUMTNAMETSTATUSTTMONTH; VOID FIND() IF(F_NAME=NAME ) PRINT(); COUTENDL; ;CLASS SELLER:PUBLIC EMPLOYEE /销售员类PUBLIC: SELLER() SOLD_AM

28、OUNT=0; /构造函数,销售额初始化为 0 VOID INPUT() COUT销售员的; EMPLOYEE:INPUT(); COUTSOLD_AMOUNT; COUTNU; VOID PRINT() PAY=SOLD_AMOUNT*S_PROPORTION; COUTNUMTNAMETSTATUSTMONTH TPAYTNUENDL; 18 / 24 INT S_NUMBER() /调用销售员所属销售经理职工号 RETURN NU; DOUBLE AMOUNT() /调用销售员销售额 RETURN SOLD_AMOUNT; VOID FIND() IF(F_NAME=NAME) COUT

29、 编号T姓名T职位TT月份T工资T所属部门经理编号 ENDL; PRINT(); VOID SAVE() PAY=SOLD_AMOUNT*S_PROPORTION; OUTFILENUMTNAMETSTATUSTMONTH TPAYTTNUENDL; PROTECTED: DOUBLE SOLD_AMOUNT; /销售额 INT NU; /所属销售经理职工号;CLASS SECRETARY:PUBLIC EMPLOYEE /文秘类PUBLIC: VOID INPUT() COUT文秘的; EMPLOYEE:INPUT(); COUTSY_EXPAY; VOID PRINT() PAY=SECR

30、ETARYPAY+SY_EXPAY; EMPLOYEE:PRINT(); 19 / 24 VOID FIND() PAY=SECRETARYPAY+SY_EXPAY; EMPLOYEE:FIND(); VOID SAVE() PAY=SECRETARYPAY+SY_EXPAY; EMPLOYEE:SAVE(); PROTECTED:INT SY_EXPAY; ; /定义全局对象数组 TECHNICIAN TN1; /技术员MANAGER MN2; /经理SELLER SN3; /销售员SELL_MANAGER SMN4; /销售经理(下属若干销售员)SECRETARY SYN5; /文秘 /主

31、函数部分:INT MAIN() CHAR N; MENU(); FOR(INT I=0;IN; SWITCH(N) CASE1: /数据输入 CLEAR(); COUTENDL您所选操作为数据输入,请继续-ENDLENDL; DATA_INPUT(); COUTENDL; MENU(); BREAK; CASE2: /数据查询 CLEAR(); COUTENDL您所选操作为数据查询,请继续-ENDLENDL; COUTF_NAME; 20 / 24 COUTENDL-正在查询,请等待-ENDLENDL; COUT您查询的信息如下:ENDLENDL; DATA_FIND(); COUTENDLE

32、NDL; MENU(); BREAK; CASE3: /数据备份 CLEAR(); OUT(C+程序设计实习.TXT,IOS:OUT); /打开磁盘文件流对象 COUTENDL您所选操作为数据备份,请继续-ENDLENDL; OUTFILE职工基本情况一览表如下:NENDL; DATA_SAVE(); OUT(); COUTENDLENDL; COUTA-数据备份完成,请继续-ENDLENDL; MENU(); BREAK; CASE0: /退出系统 CLEAR(); COUTENDL是否真的要退出系统?ENDLENDL; COUT 是( Y ) N; IF(N=Y) COUTN-请按任意键退

33、出系统-ENDL; EXIT(0); COUTENDL; ELSE MENU(); BREAK; DEFAULT: COUTENDL-出错!请重新选择操作! NENDL; MENU(); BREAK; RETURN 0;/自定义函数部分:VOID MENU() /菜单函数 COUT 小型公司工资管理系统 ENDL; COUT ENDL; COUT 数据输入:1,并按回车键; ENDL;21 / 24 COUT ENDL; COUT 数据查询:2,并按回车键; ENDL; COUT ENDL; COUT 数据备份:3,并按回车键; ENDL; COUT ENDL; COUT | 退出系统:0,并

34、按回车键;| ENDL; COUT ENDL; COUT 请输入操作序号:;VOID MENU2() /数据输入二级菜单函数 COUT 财务部门输入数据系统 ENDL; COUTENDL; COUT 技术经理数据输入:1,并按回车键; ENDL; COUT 技术员数据输入 :2,并按回车键; ENDL; COUT 销售员数据输入 :3,并按回车键; ENDL; COUT 销售经理数据输入:4,并按回车键; ENDL; COUT 文秘数据输入 :5,并按回车键; ENDL; COUT 返回上一级 :0,并按回车键; ENDL; COUTENDL; COUT 请输入操作序号:;VOID DATA_

35、INPUT() /数据输入函数 CHAR P; INT I; MENU2(); FOR(INT J=0;J P; IF(P=0)CLEAR(); BREAK; ELSE SWITCH(P) CASE1: CLEAR(); FOR(I=0;IN2;I+) MI.INPUT(); /经理 COUTENDL-22 / 24ENDL;CLEAR();MENU2();BREAK; CASE2: CLEAR(); FOR(I=0;IN1;I+) TI.INPUT(); /技术人员 COUTENDL-ENDL;CLEAR();MENU2();BREAK; CASE3: CLEAR(); FOR(I=0;IN

36、3;I+) SI.INPUT(); /销售员 COUTENDL-ENDL;CLEAR();MENU2();BREAK; CASE4: CLEAR(); FOR(I=0;IN4;I+) SMI.INPUT(); / 销售经理 COUTENDL-ENDL;CLEAR();MENU2();BREAK; CASE5: CLEAR(); FOR(I=0;IN5;I+) SYI.INPUT(); / 文秘 COUTENDL-ENDL;CLEAR();MENU2();BREAK; DOUBLE SALARYN4;DOUBLE SM_SALARY() /销售经理工资计算 INT I,J;DOUBLE A ;SELL_MANAGER B; FOR(INT K=0;KN4;K+) SALARYK=0; FOR(I=0;IN4;I+) DOUBLE SUM=0; FOR

温馨提示

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

评论

0/150

提交评论