山外示例库 代码工程说明

合集下载

开源代码simple_pjsua代码解读

开源代码simple_pjsua代码解读

开源代码simple_pjsua代码解读简介:开源代码simple_pjsua是一个基于PJSIP库的简单SIP用户代理应用程序。

本文将对simple_pjsua代码进行解读,介绍其主要功能和实现原理。

一、功能介绍simple_pjsua是一个SIP用户代理应用程序,可以实现SIP协议的基本功能,包括注册、呼叫、接听、挂断等。

它提供了一个简单的命令行界面,用户可以通过命令来操作SIP通信。

二、代码结构simple_pjsua的代码结构清晰,主要包括以下几个文件:1. main.c:程序的入口文件,包含了主函数和一些全局变量的定义。

2. pjsua_app.c:定义了SIP用户代理的初始化、注册、呼叫等功能的实现。

3. pjsua_app.h:定义了SIP用户代理的相关结构体和函数的声明。

4. pjsua_cmd.c:定义了命令行界面的实现,包括命令的解析和执行。

5. pjsua_cmd.h:定义了命令行界面的相关结构体和函数的声明。

三、实现原理1. 初始化在main函数中,首先调用pjsua_app_init函数进行SIP用户代理的初始化。

该函数会创建一个pjsua_app_t结构体,并调用pjsua_create函数创建一个PJSUA库实例。

然后,通过pjsua_config结构体设置一些配置参数,如SIP服务器地址、端口号等。

最后,调用pjsua_init函数初始化PJSUA库。

2. 注册在pjsua_app_register函数中,首先创建一个pjsua_acc_config结构体,并设置一些注册参数,如用户名、密码、SIP服务器地址等。

然后,调用pjsua_acc_add函数将该账号添加到PJSUA库中。

最后,调用pjsua_acc_set_default函数将该账号设置为默认账号。

3. 呼叫在pjsua_app_call函数中,首先创建一个pjsua_call_setting结构体,并设置一些呼叫参数,如呼叫的目标地址、媒体参数等。

外包施工人员信息管理系统——使用说明大全

外包施工人员信息管理系统——使用说明大全

外包施工人员信息管理系统——使用说明大全第一篇:外包施工人员信息管理系统——使用说明大全外包施工人员信息管理系统——使用说明一、操作说明(必须在外网机上操作)1.解压;2.双击应用程序“QRCodeMana”文件,进入管理系统;3.点击“用户”,选择“用户登录”,进入登录界面;4.输入“用户名”和“密码”,进入系统;5.点击“注册管理”,选择“用工注册申请”,进入注册录入界面;6.点击“增加”,进入“增加用工记录”界面;7.在“增加用工记录”界面填入对应的所有信息并保存,即完成1条记录;8.继续点击“增加”,重复步骤6-7完成所有信息录入,下图为嘉鱼公司录入情况。

二、录入注意事项及要求1.要求录入所有外包人员,包括项目部和现场施工队班组成员;2.信息录入要求真实全面;3.注册系统“施工单位名称”下拉选项框中,没有的施工单位请及时报给咸安安监;4.要求在下周一即2016年2月29日之前完成所有信息录入;5.有疑问致电咸安安监尹球洋1597511845;江兴无 682820三、管理员帐号和密码 1.帐号zhangt 密码1 2.帐号yinqy密码1第二篇:山东省学生信息管理系统20080522下载使用说明山东省学生信息管理系统20080522下载使用说明本次主要增加了以下功能:1、学籍异动实现了全省数据共享。

A、转出学生窗口,在输入转往何处时,现提供全省学校选择功能。

如果直接输入学校,系统会进行学校验证,如果学校不存在,无法转出。

(跨省区转出除外)B、学校转出学生时系统自动上传学籍信息到服务器;接收学校做转入时会自动下载学生学籍信息。

如果转出学校没有上网,学生信息无法上传到服务器,接收学校在做转入时无法接收到详细学籍信息,但服务器会提供基本信息(姓名,性别,出生,民族等)。

其余信息需要自行输入。

C、在浏览学籍异动窗口中,同时提供了上传学生信息功能。

如果在转出学生时因网络原因无法上传信息,可在以后网络畅通时重新上传。

J2EE课程设计实训项目实录——高校选课系统完整实现过程和代码示例(第7部分)

J2EE课程设计实训项目实录——高校选课系统完整实现过程和代码示例(第7部分)
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
目 录
1.1 课程设计项目——高校选课系统完整实现过程和代码示例(第 7 部分) .............2 1.1.1 1.1.2 1.1.3 1.1.4 在项目中应用数据库连接池提高系统的连接性能 ..............................................2 在项目中应用 Apache 开源 DBCP 组件实现数据库连接池 ..............................2 设计和编程实现针对学生信息表的数据访问组件(DAO 模式) ....................4 添加对学生信息数据库访问的接口 StudentInfoDAOInterface ...........................6
1.1.2 在项目中应用 Apache 开源 DBCP 组件实现数据库连接池
1、添加相关的系统库文件
2、指示所添加的系统库文件的目录路径
杨教授工作室,版权所有,盗版必究, 2/18 页
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
3、修改项目中的数据库连接功能类中的连接方法 public Connection createDBConnection(String jdbcDriveName, String dbURL,String loginName,String loginPassWord){ Connection jdbcConnection=null; /** * 下面的代码是创建出连接池,只需要执行一次 */ oneDataSource=new BasicDataSource(); /** * 设置连接池的工作参数——下面为 4 个连接参数 */ oneDataSource.setDriverClassName(jdbcDriveName); oneDataSource.setUrl(dbURL); oneDataSource.setUsername(loginName); oneDataSource.setPassword(loginPassWord); /** * 设置连接对象的个数 */ oneDataSource.setMaxActive(10);

12种prompt engineering(提示工程)方法

12种prompt engineering(提示工程)方法

提示工程(Prompt Engineering)是一种技术,通过提供适当的指导和提示,帮助模型生成所需输出。

以下是12种常见的提示工程方法:
文本模板:为模型提供固定的文本模板,指导其生成特定格式的输出。

示例引导:提供与目标输出相似的示例,让模型学习模仿。

条件语句:使用条件语句(如if-else)为模型提供更复杂的指导。

上下文引导:在输入中加入上下文信息,帮助模型更好地理解任务。

隐式提示:通过修改输入数据的格式或结构,间接引导模型输出。

人工规则:创建一系列人工定义的规则,指导模型生成输出。

对抗性训练:通过训练模型对抗特定类型的输入,使其对这类输入产生特定反应。

重写策略:对原始输入进行重写或编辑,以改变模型输出。

注释增强:在数据集的注释中加入额外信息,以提高模型的性能。

环境提示:在运行模型的环境中加入特定设置或参数,影响其输出。

外部知识库:使用外部知识库或语料库,为模型提供额外信息。

元学习:使用元学习技术,让模型在大量任务中学习如何适应不同提示。

以上方法并非互斥,可以结合使用以获得最佳效果。

使用提示工程时需注意适度原则,避免过度依赖提示导致模型失去泛化能力。

exe项目源代码案例

exe项目源代码案例

exe项目源代码案例以exe项目源代码案例为题,我将为您列举10个符合要求的例子。

1. 聊天程序这个项目是一个简单的聊天程序,用户可以通过输入消息来与其他用户进行实时对话。

程序通过建立网络连接实现消息的传递,用户可以选择加入不同的聊天室进行交流。

2. 学生管理系统这个项目是一个学生信息管理系统,用于记录学生的基本信息、课程成绩等。

程序提供了添加学生、修改学生信息、查询学生信息等功能,可以方便地管理学生的数据。

3. 图书管理系统这个项目是一个图书馆的图书管理系统,用于管理图书的借阅、归还等操作。

程序提供了图书的添加、删除、查询等功能,可以方便地管理图书的信息和借阅记录。

4. 文件压缩工具这个项目是一个文件压缩工具,可以将多个文件或文件夹压缩为一个压缩包。

程序提供了选择要压缩的文件或文件夹、选择压缩算法、设置压缩级别等功能,可以方便地进行文件的压缩和解压缩。

5. 图片编辑器这个项目是一个简单的图片编辑器,用户可以打开图片文件并进行一些基本的编辑操作,如调整亮度、对比度、裁剪等。

程序提供了简单的图形界面,用户可以直观地进行编辑。

6. 个人财务管理系统这个项目是一个个人财务管理系统,用于记录个人的收入和支出情况,统计每月的财务状况。

程序提供了添加收入和支出、查询统计等功能,可以帮助用户更好地管理自己的财务。

7. 简易计算器这个项目是一个简易计算器,用户可以输入表达式并计算结果。

程序支持基本的四则运算和括号,可以方便地进行简单的数学运算。

8. 电子邮件客户端这个项目是一个简单的电子邮件客户端,用户可以登录自己的邮箱账号,并发送、接收邮件。

程序通过与邮件服务器建立连接,实现了邮件的发送和接收功能。

9. 地图导航系统这个项目是一个简单的地图导航系统,用户可以输入起点和终点,程序将根据地图数据计算最短路径并显示在地图上。

程序提供了简单的地图界面和导航功能,可以帮助用户找到最佳路径。

10. 任务管理器这个项目是一个简单的任务管理器,用户可以创建、编辑和删除任务。

项目二次开发源代码及详细说明

项目二次开发源代码及详细说明

项目二次开发源代码及详细说明I. 项目介绍本文档描述了一个二次开发项目的源代码及详细说明。

该项目是基于一个开源的企业资源管理系统进行二次开发,以满足特定客户的需求。

原始系统功能包括客户关系管理、订单管理、库存管理等,但客户需要在原始系统的基础上增加一些新的功能,比如业务报表的定制、权限管理的优化等。

为了满足客户的需求,我们需要对原系统进行二次开发,修改和添加一些功能,以适应客户的特定业务需求。

II. 项目目标1. 通过二次开发,实现客户需求的定制化功能,并满足特定的业务需求。

2. 优化原系统的权限管理模块,增强系统的安全性和稳定性。

3. 重构原系统的报表模块,实现业务报表的定制化功能。

4. 对原系统的库存管理模块进行优化,提高系统的性能和稳定性。

III. 项目源代码及详细说明1. 新增功能模块:客户需要系统新增一个产品价格管理模块,方便他们随时根据市场需求调整产品的价格。

我们在系统中增加了产品价格管理的功能模块,客户可以在这个模块中根据自己的需求,对产品的价格进行调整。

以下是新增功能模块的主要源代码及详细说明:```python# 产品价格管理模块import datetimefrom django.db import modelsclass Product(models.Model):name = models.CharField(max_length=100, verbose_name='产品名称')price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='产品价格') create_time = models.DateTimeField(default=datetime.now, verbose_name='创建时间')class Meta:verbose_name = '产品'verbose_name_plural = verbose_name# 增加产品价格调整记录模型class PriceAdjustRecord(models.Model):product = models.ForeignKey(Product, on_delete=models.CASCADE, verbose_name='产品')old_price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='调整前价格')new_price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='调整后价格')adjust_time = models.DateTimeField(default=datetime.now, verbose_name='调整时间')class Meta:verbose_name = '价格调整记录'verbose_name_plural = verbose_name```上面的代码是在原系统中新增的产品价格管理模块的源代码。

崖山数据库语句-概述说明以及解释

崖山数据库语句-概述说明以及解释

崖山数据库语句-概述说明以及解释1.引言1.1 概述【概述】随着信息技术的快速发展和互联网的普及,数据库成为了重要的数据存储和管理工具。

数据库语句是操作数据库的核心要素,其能够实现数据的增删改查等各种操作。

崖山数据库语句是一种被广泛应用的数据库语句,在数据库领域具有重要的地位和作用。

本文旨在介绍崖山数据库语句的特点,探讨其使用的优势,并对其未来发展进行展望。

通过深入了解崖山数据库语句及其应用,我们可以更好地理解数据库操作的本质,并掌握这一重要的技术。

在下面的章节中,我们将首先介绍数据库语句的基本概念和作用,然后详细探讨崖山数据库语句的特点,包括其语法结构、语义含义和功能特点。

接着,我们将分析使用崖山数据库语句的优势,包括性能优化、高效操作和安全性等方面的优点。

最后,我们将总结崖山数据库语句的重要性,并对其未来发展进行展望。

通过本文的阅读,读者将能够全面了解崖山数据库语句的基本概念、特点及其应用价值,并对其未来发展有所了解。

希望本文能够对数据库技术的学习和研究提供一定的参考和指导,为数据库领域的从业人员和学术研究者提供有益的信息和思路。

1.2 文章结构文章结构的设计是为了使读者更好地理解和掌握崖山数据库语句的相关知识。

本文主要分为引言、正文和结论三个部分。

引言部分主要从概述、文章结构和目的三个方面介绍了本文的内容。

在概述部分,可以简要介绍崖山数据库语句的背景和相关概念。

文章结构部分则是对整篇文章的组织框架进行说明,揭示出每个部分的主题和目的。

最后,在目的部分可以明确写明本文的写作目的,即为读者提供关于崖山数据库语句的全面了解和使用指导。

正文部分是本文的重点部分,主要分为数据库语句介绍、崖山数据库语句的特点和使用崖山数据库语句的优势三个小节。

数据库语句介绍部分主要对数据库语句的概念进行解释,介绍它们在数据库管理和操作中的作用和重要性。

此部分可从基本的SQL语句开始,逐步深入介绍各种常见的数据库查询、插入、更新和删除等操作语句。

DPU编程示例与实例解析

DPU编程示例与实例解析

DPU在大数据处理中的性能优化
DPU在大数据处理中的未来发展趋势
DPU在大数据处理中的应用场景
DPU在大数据处理中的优势
DPU在大数据处理中的具体实现
实例3:解析DPU在人工智能领域的应用
DPU在人工智能领域的应用背景
DPU在人工智能领域的优势
DPU在人工智能领域的具体应用案例
DPU在人工智能领域的发展趋势和挑战
DPU编程示例与实例解析
汇报人:XXX
目录
01
DPU编程概述
02
DPU编程示例
03
DPU实例解析
04
DPU编程技巧和优化
05
DPU编程的挑战和未来发展
DPU编程概述
DPU的定义和作用
DPU可以处理各种类型的数据,包括图像、音频、视频等
DPU(Data Processing Unit)是一种专门用于数据处理的硬件设备
实例1:解析DPU在密码学中的应用
密码学简介:介绍密码学的基本概念和原理
结论:总结DPU在密码学中的应用优势和局限性,以及对未来发展的展望
实例解析:通过具体的密码学实例,解析DPU在其中的应用和实现过程
DPU在密码学中的应用:详细解析DPU在密码学中的应用场景和实现方法
实例2:解析DPU在大数据处理中的应用
编程接口:DPU编程需要调用特定的编程接口,如CUDA、OpenCL等
性能优化:DPU编程需要进行性能优化,以提高数据处理效率和降低能耗
DPU编程的流程和工具
流程:编写代码、编译、链接、加载、运行
工具:DPU编程器、DPU编译器、DPU链接器、DPU加载器、DPU运行器
示例:编写一个简单的DPU程序,包括输入、处理、输出

solidworks api 二次开发实例详解

solidworks api 二次开发实例详解

标题:深度解析SolidWorks API二次开发实例在工程设计领域,SolidWorks是一个广泛使用的三维CAD软件,其强大的API功能使得二次开发变得异常便捷。

本文将深入探讨SolidWorks API二次开发的实例,以帮助读者更深入地理解和运用这一功能。

1. 理解SolidWorks API的概念和作用让我们简要回顾一下SolidWorks API的概念和作用。

API是应用程序接口的缩写,它允许软件程序之间或不同组件之间进行互动和通讯。

SolidWorks API作为一种编程接口,可以被用来自动化和定制SolidWorks软件的功能,使得用户可以通过编程实现更加高效和个性化的工程设计和分析。

2. 实例分析:创建自定义特征现在,让我们通过一个具体的实例来详细解析SolidWorks API的二次开发。

假设我们需要创建一个自定义特征,以实现在设计中快速生成某种特定的结构。

我们需要通过SolidWorks API获取到当前的活动文档,然后通过编程方式创建新的特征。

在这个过程中,我们需要考虑到各种参数和属性的设置,比如特征的类型、尺寸、位置等。

通过API的函数和方法,我们可以对这些属性进行准确的设置和调整,从而实现对特征的定制化。

我们可以将这个自定义特征保存下来,以备将来在其他设计中复用。

3. 实例分析:批量处理文件另一个常见的应用场景是批量处理文件,这在实际工程项目中非常常见。

通过SolidWorks API,我们可以编写脚本程序,实现对多个文件的批量操作,比如批量导出文件、批量修改属性、批量创建装配等。

这种批量处理的功能可以极大地提高工作效率,尤其是对于大批量的工程设计任务。

在编程实现过程中,我们需要使用API提供的文件遍历和操作函数,同时要考虑到异常处理和错误处理,以确保脚本程序的稳定性和可靠性。

通过合理的设计和编码,我们可以创建出高效、灵活并且易于维护的批量处理脚本。

4. 个人观点和总结SolidWorks API的二次开发为工程师和设计者提供了强大的定制化能力。

工程项目管理程序源代码

工程项目管理程序源代码

首先,我们需要安装SQLite和Python的SQLite库(如果尚未安装):```bashpip install sqlite3```下面是工程项目管理程序的源代码示例:```pythonimport sqlite3from datetime import datetime# 连接到SQLite数据库# 如果文件不存在,会自动在当前目录创建一个数据库文件conn = sqlite3.connect('project_management.db')cursor = conn.cursor()# 创建项目表cursor.execute('''CREATE TABLE IF NOT EXISTS projects (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,start_date TEXT,end_date TEXT,status TEXT)''')# 创建任务表cursor.execute('''CREATE TABLE IF NOT EXISTS tasks (id INTEGER PRIMARY KEY AUTOINCREMENT,project_id INTEGER,name TEXT NOT NULL,description TEXT,start_date TEXT,end_date TEXT,status TEXT,FOREIGN KEY (project_id) REFERENCES projects (id) )''')# 创建用户表cursor.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,email TEXT UNIQUE,password TEXT)''')# 提交创建表的SQL语句mit()# 定义一个函数来添加项目def add_project(name, start_date, end_date, status):cursor.execute('''INSERT INTO projects (name, start_date, end_date, status)VALUES (?, ?, ?, ?)''', (name, start_date, end_date, status))mit()return strowid# 定义一个函数来添加任务def add_task(project_id, name, description, start_date, end_date, status):cursor.execute('''INSERT INTO tasks (project_id, name, description, start_date,end_date, status)VALUES (?, ?, ?, ?, ?, ?)''', (project_id, name, description, start_date, end_date, status))mit()# 定义一个函数来添加用户def add_user(name, email, password):cursor.execute('''INSERT INTO users (name, email, password)VALUES (?, ?, ?)''', (name, email, password))mit()# 定义一个函数来列出所有项目def list_projects():cursor.execute('SELECT FROM projects')return cursor.fetchall()# 定义一个函数来列出所有任务def list_tasks():cursor.execute('SELECT FROM tasks')return cursor.fetchall()# 定义一个函数来登录用户def login(email, password):cursor.execute('SELECT FROM users WHERE email=? AND password=?', (email, password))return cursor.fetchone()# 定义一个函数来更新项目状态def update_project_status(project_id, status):cursor.execute('UPDATE projects SET status=? WHERE id=?', (status, project_id))mit()# 定义一个函数来更新任务状态def update_task_status(task_id, status):cursor.execute('UPDATE tasks SET status=? WHERE id=?', (status, task_id))mit()# 示例:添加一些项目、任务和用户add_project('软件开发项目', '2023-01-01', '2023-12-31', 'Active')add_task(1, '需求分析', '收集和分析项目需求', '2023-01-01', '2023-01-15', 'In Progress')add_user('JohnDoe','****************','password123')# 示例:列出所有项目print("Projects:")for project in list_projects():print(project)# 示例:列出所有任务print("\nTasks:")for task in list_tasks():print(task)# 示例:登录用户print("\nLogin Result:")print(login('****************','password123'))# 示例:更新项目状态update_project_status(1, 'Completed')# 示例:更新任务状态update_task_status(1, 'Completed')# 关闭数据库连接conn.close()```以上代码提供了一个基本的工程项目管理程序的框架,包括数据库表的创建、数据的增删改查以及简单的用户登录功能。

solidworksapi二次开发实例详解

solidworksapi二次开发实例详解

solidworksapi二次开发实例详解摘要:1.SolidWorks API 概述2.SolidWorks API 的二次开发语言3.SolidWorks API 的基本功能4.SolidWorks API 的应用实例5.SolidWorks API 的发展前景正文:SolidWorks 是一款广泛应用于机械设计、工程分析等领域的三维CAD 软件。

为了满足用户的定制需求,SolidWorks 提供了二次开发接口——SolidWorks API。

通过API,用户可以对SolidWorks 进行功能扩展,以实现更有针对性的功能。

本文将详细介绍SolidWorks API 的二次开发实例。

一、SolidWorks API 概述SolidWorks API 是一组编程接口,它允许开发者使用不同的编程语言(如Visual Basic、Visual C++、C#等)对SolidWorks进行二次开发。

通过这些接口,开发者可以访问SolidWorks中的各种功能,并对其进行自定义和扩展。

二、SolidWorks API 的二次开发语言SolidWorks API 支持多种编程语言,包括Visual Basic、Visual C++、C#等。

这些语言都有各自的特点和优势,开发者可以根据自己的需求和技能选择合适的编程语言进行开发。

1.Visual Basic:这是一种简单易学的编程语言,适合初学者使用。

它的语法简单,易于上手,可以快速实现SolidWorks API 的基本功能。

2.Visual C++:这是一种高性能的编程语言,适合有C++基础的开发者使用。

它的运行速度快,可以实现复杂的算法和功能。

3.C#:这是一种面向对象的编程语言,适合开发大型项目。

它的语法严谨,可维护性强,可以实现复杂的业务逻辑和功能。

三、SolidWorks API 的基本功能SolidWorks API 提供了丰富的功能,包括以下几个方面:1.零件和装配体的操作:可以通过API 对零件和装配体进行创建、删除、修改等操作。

(转)SetupFactory打包工具部分功能代码解析

(转)SetupFactory打包工具部分功能代码解析

(转)SetupFactory打包⼯具部分功能代码解析 前阵⼦⽤到了Setup Factory给软件打包,遇到个蛋疼的问题。

想把安装时填写的⽤户姓名和公司名称添加到注册表。

添加注册表的语句倒是找到了,但是这两个TextBox的内容不知道怎么获取。

今天碰到了“救星”,找到了Setup Factory打包⼯具部分功能代码解析,特分享⼀下。

Application.Exit退出安装程序,并返回⼀个可选的返回代码。

Application.GetInstallLanguage返回⼀个包含当前安装语⾔的表格。

Application.GetLastError返回最后的错误代码。

Application.GetWndHandle为安装程序窗⼝返回数字窗⼝句柄。

Application.LoadActionPlugin加载⼀个操作插件⽂件 (.lmd)。

Application.LoadScript加载并执⾏⼀个外部脚本⽂件 (.lua)。

Application.LoadValue加载保存 Application.SaveValue 操作的值。

Application.Minimize最⼩化安装程序窗⼝到任务栏。

Application.Restore恢复安装程序窗⼝。

Application.RunScriptFile执⾏外部脚本⽂件 (.lua) 的内容。

Application.SaveValue保存值到⽤户的系统,以便今后可⽤ Application.LoadValue 操作获取。

Application.SetInstallLanguage设置指定的语⾔为安装语⾔。

Application.SetLastError更改最后的错误代码。

Application.Sleep让安装程序休眠⼀段时间。

Debug.Clear清除调试窗⼝的内容。

Debug.GetEventContext返回描述当前事件上下⽂的字符串,如:"欢迎 > 继续时"。

高校财务管理专业管理会计系统源代码说明文档

高校财务管理专业管理会计系统源代码说明文档

高校财务管理专业管理会计系统源代码说明文档一、引言高校财务管理专业管理会计系统是为了满足高校财务管理专业的需求而开发的一套软件系统。

本文档旨在对系统的源代码进行详细说明,让相关人员能够深入了解系统的设计理念、实现方式以及使用方法。

二、系统设计概述1. 系统目标本系统旨在简化高校财务管理专业中的管理会计工作流程,提高工作效率和准确性。

通过系统,用户可以进行财务数据的输入、处理、分析和报告生成等操作。

2. 系统架构系统采用C#语言进行开发,并基于.NET框架实现。

系统分为前端和后端两部分,前端负责与用户进行交互,后端负责数据处理和存储。

3. 模块划分(1)用户管理模块:用于管理系统的用户,包括用户注册、登录、权限控制等功能。

(2)数据输入模块:用于输入财务相关的数据,如收入、支出等。

(3)数据处理模块:用于对输入的财务数据进行处理和分析,生成相应的报表和统计图。

(4)报表生成模块:用于根据数据处理结果生成各类报表,如利润表、资产负债表等。

(5)数据查询模块:用于查询和检索系统中存储的财务数据。

(6)系统设置模块:用于对系统进行配置和参数设置,满足不同用户的需求。

三、源代码结构1. 前端代码结构(1)界面设计:包括用户登录界面、主界面以及各个模块的操作界面。

(2)事件处理:根据用户的操作,触发相应的事件进行处理,如按钮点击事件、下拉框选择事件等。

(3)数据验证:对用户输入的数据进行验证,确保数据的合法性和准确性。

2. 后端代码结构(1)用户管理功能代码:包括用户注册、登录、权限验证等功能的实现。

(2)数据处理功能代码:包括数据输入、处理和分析的相关算法和逻辑。

(3)报表生成功能代码:包括各类报表生成的算法和逻辑。

(4)数据查询功能代码:包括财务数据的查询和检索的相关实现。

(5)系统设置功能代码:包括系统配置和参数设置的相关逻辑。

四、源代码使用说明1. 系统部署(1)操作系统要求:系统支持Windows操作系统,建议使用Windows 10及以上版本。

ADAMS二次开发及实例【范本模板】

ADAMS二次开发及实例【范本模板】

第11章 ADAMS二次开发及实例ADAMS具有很强的二次开发功能,包括ADAMS/View界面的用户化设计,利用cmd语言实现自动建模和仿真控制,通过编制用户子程序满足用户的某些特定需求,甚至可以拓展ADAMS的功能。

本章主要介绍如何定制用户化界面、宏命令的用法和条件循环命令的用法,以及综合以上功能的应用实例。

由于用户子程序的主要内容已在第9章进行了详细介绍,因此本章只对所涉及到的用户子程序编译联接操作过程进行简单介绍。

11.1 定制用户界面ADAMS/View的界面对象都是以层次结构存储在模型数据库中,类似于零件模型的层次结构。

所有定制的界面对象都存储在名为GUI的数据库中,该数据库可以很方便地管理所有的标准界面对象。

如图11-1所示。

图11—1 界面对象的层次结构机械系统动力学分析及ADAMS应用最上层的界面对象是窗口和对话框。

如果主要建模窗口起名为main的话,其数据库全名应为.gui。

main。

尽管窗口和对话框看起来很相似,但它们却是很不相同的。

窗口通常是在用户工作的时候在屏幕上停留一段时间,而对话框通常是在用户输入数据或是进行访问控制时才会出现。

窗口有工具条和菜单栏,窗口和对话框也包含其他的界面对象如按钮,标签等等。

大多数用户化操作涉及到创建对话框或者修改标准对话框。

但若不用创建一个完整的用户化界面时,则通常只用修改菜单条和工具栏。

ADAMS所包含界面对象属性如表11-1所示。

表11-1 ADAMS所包含界面对象属性第11章ADAMS二次开发及实例Option menu(可选菜单项)在多个菜单项中作一选择包含一个弹出菜单的图框只显示一行选定菜单项Radio boa(状态设置框)设置状态和模式Tab container(标签界面对给界面和对话框设置标签象)Data table(数据表) 用来显示数据的表格,你可增加栏或列在大多数情况下,用户定制界面是指制作用户自己的菜单和对话框。

通常可使用菜单编辑器和对话框编辑器来定制界面,通过它们可以很快地访问并改变大多数界面对象和功能。

qt abstractitemmodel 例子 解释 -回复

qt abstractitemmodel 例子 解释 -回复

qt abstractitemmodel 例子解释-回复"Qt AbstractItemModel例子解释"Qt是一个跨平台的应用开发框架,为开发人员提供了丰富的工具和库,用于创建功能强大且易于维护的图形用户界面(GUI)应用程序。

在Qt中,AbstractItemModel是一个重要的类,用于管理和操作应用程序中的数据模型。

本文将详细解释Qt AbstractItemModel的基本概念,提供一个具体的例子,以帮助读者更好地理解其用法和作用。

# 第一部分:Qt AbstractItemModel概述在Qt中,AbstractItemModel是一个抽象类,定义了数据模型和视图之间的接口。

它充当了数据的容器,通过在数据模型中存储和组织数据,以及向视图提供数据来提供数据支持。

AbstractItemModel的主要功能包括:1. 管理数据:AbstractItemModel可以管理数据的组织和层次结构,以及数据的访问和操作。

它提供了一组方法,用于插入、删除、移动和修改模型中的数据。

2. 提供数据:AbstractItemModel通过实现视图所需的接口,向视图提供模型中的数据。

这包括指定数据的位置、类型和角色,以及根据需要动态加载数据。

3. 更新视图:当数据模型中的数据发生变化时,AbstractItemModel负责通知视图以更新显示的数据。

它提供了一组信号,用于向视图发出数据变化的通知。

4. 支持过滤和排序:AbstractItemModel可以应用过滤和排序规则,以控制哪些数据显示在视图中,以及数据的排序方式。

这提供了对数据的更细粒度的控制。

# 第二部分:Qt AbstractItemModel例子解释为了更好地理解Qt AbstractItemModel的用法和作用,我们将通过一个具体的例子来说明。

假设我们正在开发一个简单的任务管理应用程序,我们需要一个数据模型来存储和管理任务的信息。

muduo库中的示例

muduo库中的示例

Muduo 是一个基于Reactor 模式的多线程C++ 网络库,用于开发高性能的服务器端应用程序。

以下是一个简单的Muduo 示例,演示了如何使用Muduo 的`TcpServer` 类来创建一个简单的回显服务器:```cpp#include <muduo/net/EventLoop.h>#include <muduo/net/TcpServer.h>#include <muduo/net/Buffer.h>#include <iostream>using namespace muduo;using namespace muduo::net;void onMessage(const TcpConnectionPtr& conn, Buffer* buf, Timestamp time) {if (buf->readableBytes() >= kHeaderLen) {int len = buf->peekInt<kHeaderLen>();if (len > 65536 || len < 0) {LOG_ERROR << "Invalid length " << len;conn->shutdown();} else if (buf->readableBytes() >= len + kHeaderLen) {buf->retrieve(kHeaderLen);std::string message(buf->peek(), len);messageCallback_(conn, message, time);buf->retrieve(len);} else {// not enough data received yet}} else {// more data needed before we can process the message}}int main() {EventLoop loop;TcpServer server(&loop, "0.0.0.0", 9988, onMessage);server.setConnectionCallback(defaultConnectionCallback);server.setMessageCallback(defaultMessageCallback);server.start();loop.loop();return 0;}```在这个示例中,`onMessage` 函数是消息处理函数,当服务器接收到客户端发送的消息时,会调用该函数进行处理。

qt unescapexml方法

qt unescapexml方法

一、介绍qt unescapexml方法在使用Qt进行开发的过程中,我们经常会遇到需要处理XML数据的情况。

而在处理XML数据的过程中,有时候我们需要对XML数据中的特殊字符进行转义,以便能正确地处理这些数据。

Qt提供了一种unescapexml方法来帮助开发者完成这一转义过程。

二、unescapexml方法的作用unescapexml方法主要用于将XML数据中的特殊字符进行转义。

XML中有五个预定义的实体引用字符,分别是、<、>、"、'。

而在XML文档中,如果直接使用这些字符,会导致解析错误。

我们需要将这些特殊字符进行转义,以便XML解析器能够正确地解析这些数据。

三、使用unescapexml方法的方法在Qt中,使用unescapexml方法非常简单。

我们只需要调用这个方法,并将需要转义的XML数据作为参数传递给这个方法即可。

unescapexml方法会将特殊字符进行转义,并返回转义后的字符串。

这样,我们就可以使用转义后的字符串来正确地处理XML数据了。

四、示例代码下面是一个简单的示例代码,演示了如何使用unescapexml方法来对XML数据进行转义:```cppQString originalXml = "<message>Hello,lt;worldgt;!</message>";QString escapedXml = Qt::escape(originalXml);qDebug() << escapedXml; // Output: lt;messagegt;Hello, amp;lt;worldamp;gt;!lt;/messagegt;```五、unescapexml方法注意事项在使用unescapexml方法的过程中,需要注意一些细节。

需要确保传递给这个方法的XML数据符合XML规范,否则可能会出现转义错误。

基于sqlite wpf的管理系统源代码

基于sqlite wpf的管理系统源代码

基于SQLite WPF的管理系统源代码一、项目简介1.1 任务背景SQLite是一种轻型的关系型数据库管理系统,它广泛应用于移动设备和嵌入式系统。

而WPF(Windows Presentation Foundation)是一个用于构建Windows桌面应用程序的统一用户界面框架。

基于SQLite和WPF的管理系统源代码,就是一个结合了数据库管理和图形用户界面设计的项目。

1.2 项目目的该项目的目的是通过使用SQLite作为后台数据库,并利用WPF构建直观美观的用户界面,实现一个功能完善的管理系统。

该系统可以用于管理各种类型的数据,如学生信息、销售记录等。

通过学习该项目的源代码,可以深入了解SQLite的使用和WPF的开发技术。

二、项目结构2.1 源代码文件该项目包含以下主要源代码文件:•MainWindow.xaml:主窗口的XAML文件,用于定义用户界面的布局和控件。

•MainWindow.xaml.cs:主窗口的代码文件,用于处理用户交互和数据操作的逻辑。

•DatabaseHelper.cs:数据库操作的助手类,封装了与SQLite数据库交互的方法。

•Models.cs:定义了与数据库表对应的实体类,用于数据的存取和展示。

2.2 数据库设计在该项目中,使用SQLite作为后台数据库,可以根据实际需求设计不同的数据库表。

以下是一个示例的数据库设计:•表名:Students–列1:Id(整型,主键,自增)–列2:Name(文本型,存储学生姓名)–列3:Age(整型,存储学生年龄)–列4:Grade(文本型,存储学生年级)三、功能实现3.1 连接数据库在WPF中,可以使用SQLiteConnection类实现与SQLite数据库的连接。

首先,在App.config文件中添加连接字符串的配置:<connectionStrings><add name="MyConnectionString" connectionString="Data Source=MyDatabase.db;V ersion=3;" providerName="System.Data.SQLite" /></connectionStrings>然后,在DatabaseHelper.cs文件中编写连接数据库的方法:public static SQLiteConnection GetConnection(){string connectionString = ConfigurationManager.ConnectionStrings["MyConnec tionString"].ConnectionString;return new SQLiteConnection(connectionString);}3.2 查询数据通过执行SQL语句,可以实现从数据库中查询数据的功能。

通过代码示例跟我学Struts框架——利用JBuilder创建Struts应用示例(第3部分)

通过代码示例跟我学Struts框架——利用JBuilder创建Struts应用示例(第3部分)

目录1.1利用JBuilder创建Struts应用示例(第3部分) (2)1.1.1在测试项目中添加业务功能组件类 (2)1.1.2构建项目中的DAO组件 (6)1.1.3构建项目中的数据库连接组件 (12)1.1.4在项目中添加JDBC驱动程序类 (15)1.1.5修改Struts的控制层中的UserLoginAction (16)1.1.6部署和测试本示例系统 (18)1.1利用JBuilder创建Struts应用示例(第3部分)1.1.1在测试项目中添加业务功能组件类1、UserInfoVO类private String userName;private String userPassWord;private String userDepartment;private int userAdminLevel;private int departAdminLevel;private String userImage;private String registerTime;private int userID;2、package com.px1987.sshproject.model;public interface UserInfoManageInterface{public boolean doUserLogin(UserInfoVO oneUserInfoVO);public boolean doUserRegister(UserInfoVO oneUserInfoVO) ; }3、UserInfoManageImplepackage com.px1987.sshproject.model;import com.px1987.sshproject.dao.*;import java.util.*;public class UserInfoManageImple implements UserInfoManageInterface {public UserInfoManageImple() {// TODO 自动生成构造函数存根}public boolean doUserLogin(UserInfoVO oneUserInfoVO){String userName=oneUserInfoVO.getUserName();String userPassWord=oneUserInfoVO.getUserPassWord();boolean okOrNot=false;UserManageDAOInterface oneUserManageDAOJDBCImple=newUserManageDAOJDBCImple();UserInfoPO oneUserInfoPO=oneUserManageDAOJDBCImple.SelectOneUserInfoData(userName, userPassWord);if(oneUserInfoPO==null){okOrNot=false;}else{okOrNot=true;}// boolean okOrNot=userName.equals("admin")&&userPassWord.equals("1234");return okOrNot;}public boolean doUserRegister(UserInfoVO oneUserInfoVO){UserManageDAOInterface oneUserManageDAOJDBCImple=new UserManageDAOJDBCImple();UserInfoPO oneUserInfoPO=new UserInfoPO();oneUserInfoPO.setUserName(oneUserInfoVO.getUserName());oneUserInfoPO.setUserPassWord(oneUserInfoVO.getUserPassWord());oneUserInfoPO.setUserAdminLevel(oneUserInfoVO.getUserAdminLevel());oneUserInfoPO.setUserDepartment(oneUserInfoVO.getUserDepartment());oneUserInfoPO.setUserImage(oneUserInfoVO.getUserImage());oneUserInfoPO.setDepartAdminLevel(oneUserInfoVO.getDepartAdminLevel());oneUserInfoPO.setRegisterTime( new Date().toLocaleString());oneUserInfoPO.setId((int) new Date().getTime() );boolean okOrNot=false;okOrNot=oneUserManageDAOJDBCImple.InsertOneUserInfo(oneUserInfoPO);return okOrNot;}}1.1.2构建项目中的DAO组件1、UserInfoPO实体类private String userName;private String userPassWord;private String userDepartment;private int userAdminLevel;private int departAdminLevel;private String userImage;private String registerTime;private int id;2、DAO组件UserManageDAOInterface接口package com.px1987.sshproject.dao;import java.util.*;public interface UserManageDAOInterface{public ArrayList SelectAllUserInfoData();public ArrayList SelectSomeUserInfoData(Map whereMap);public UserInfoPO SelectOneUserInfoData(String userName, String userPassWord);public boolean InsertOneUserInfo(UserInfoPO oneUserInfoPO);public boolean UpdateOneUserInfo(UserInfoPO oneUserInfoPO);public boolean DeleteOneUserInfo(int deletedUserID);public boolean BatchDeleteUserInfo(ArrayList deletedUserIDs);}3、DAO组件接口的实现类UserManageDAOJDBCImplepackage com.px1987.sshproject.dao;import java.util.ArrayList;import java.util.Map;import java.sql.*;public class UserManageDAOJDBCImple implements UserManageDAOInterface {private java.sql.Connection con=null;ConnectDBInterface connectDBBean=null;public UserManageDAOJDBCImple(){connectDBBean=new ConnectDBBean();}public boolean BatchDeleteUserInfo(ArrayList deletedUserIDs) {// TODO 自动生成方法存根return false;}public boolean DeleteOneUserInfo(int deletedUserID) {// TODO 自动生成方法存根return false;}public boolean InsertOneUserInfo(UserInfoPO oneUserInfoPO){String insert_SqlStatement=null;insert_SqlStatement="insert into userInfo values(?,?,?,?,?,?,?,?)";con=connectDBBean.getConnection();try{java.sql.PreparedStatement pstmt = con.prepareStatement(insert_SqlStatement,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);pstmt.setString(1, oneUserInfoPO.getUserName());pstmt.setString(2, oneUserInfoPO.getUserPassWord());pstmt.setString(3, oneUserInfoPO.getUserDepartment());pstmt.setInt(4, oneUserInfoPO.getUserAdminLevel());pstmt.setInt(5, oneUserInfoPO.getDepartAdminLevel());pstmt.setString(6, oneUserInfoPO.getUserImage());pstmt.setString(7, oneUserInfoPO.getRegisterTime());pstmt.setInt(8, oneUserInfoPO.getId());pstmt.executeUpdate();}catch(SQLException e){System.out.println("在查询数据库表时出现错误!");return false;}return true;}public ArrayList SelectAllUserInfoData() {// TODO 自动生成方法存根return null;}public UserInfoPO SelectOneUserInfoData(String userName, String userPassWord) {ResultSet rs=null;UserInfoPO oneUserInfo=null;String select_SqlStatement=null;select_SqlStatement="select * from userInfo where userName='"+ userName+"' and userPassWord='"+userPassWord+"'";con=connectDBBean.getConnection();try{java.sql.PreparedStatement pstmt = con.prepareStatement(select_SqlStatement,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);rs = pstmt.executeQuery();if(rs.next()){oneUserInfo=new UserInfoPO(); //目前只转换下面的几个属性oneUserInfo.setUserName(rs.getString("userName"));oneUserInfo.setUserPassWord(rs.getString("userPassWord"));oneUserInfo.setUserDepartment(rs.getString("userDepartment"));}else{oneUserInfo=null;}}catch(SQLException e){System.out.println("在查询数据库表时出现错误!");}return oneUserInfo;}public ArrayList SelectSomeUserInfoData(Map whereMap) { // TODO 自动生成方法存根return null;}public boolean UpdateOneUserInfo(UserInfoPO oneUserInfoPO) { // TODO 自动生成方法存根return false;}}1.1.3构建项目中的数据库连接组件1、数据库连接的接口ConnectDBInterfacepackage com.px1987.sshproject.dao;import java.sql.*;public interface ConnectDBInterface //功能要求{public Connection getConnection();public void closeDBCon();}2、数据库连接接口的实现类ConnectDBBeanpackage com.px1987.sshproject.dao;import java.sql.*;public class ConnectDBBean implements ConnectDBInterface{String JDBC_JTDS_MSSqlServer_DBDriver= "net.sourceforge.jtds.jdbc.Driver";String JDBC_MSSqlServer_URL = "jdbc:jtds:sqlserver://127.0.0.1:1433/WebStudyDB";private java.sql.Connection con = null;public ConnectDBBean(){try{Class.forName(JDBC_JTDS_MSSqlServer_DBDriver);}catch (ng.ClassNotFoundException e){ //在此先不考虑异常处理System.out.println("不能正确地加载JDBC驱动程序");}try{con = DriverManager.getConnection(JDBC_MSSqlServer_URL, "sa", "1234");}catch (java.sql.SQLException e){System.out.println("不能正确地连接数据库并且出现SQLException");}catch (NullPointerException e){System.out.println("不能正确地连接数据库并且出现NullPointerException");}}public void closeDBCon(){try{con.close();}catch (SQLException e){e.printStackTrace();System.out.println("不能正确地关闭数据库连接");}}public Connection getConnection(){if (con == null){System.out.println("在ConnectDBBean类中的getConnection方法中con对象为空");}return this.con;}}1.1.4在项目中添加JDBC驱动程序类将出现下面的状态并准备数据库表UserInfo1.1.5修改Struts的控制层中的UserLoginActionpackage com.px1987.sshproject.action;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import erLoginForm;import com.px1987.sshproject.model.*;public class UserLoginAction extends Action{public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {UserLoginForm userLoginForm = (UserLoginForm) form;String userName = (userLoginForm.getUserName()).trim();String userPassWord = (userLoginForm.getUserPassWord()).trim();UserInfoManageInterface userInfoManageImpleBean=new UserInfoManageImple();UserInfoVO userInfoVOBean=new UserInfoVO();userInfoVOBean.setUserName(userName);userInfoVOBean.setUserPassWord(userPassWord);booleanloginResult=userInfoManageImpleBean.doUserLogin(userInfoVOBean);if (loginResult){return (mapping.findForward("loginSuccess"));}else{return (mapping.findForward("loginFailure"));}}}1.1.6部署和测试本示例系统http://127.0.0.1:8080/SSHStrutsWeb/index.jsp 并一数据库表中存在的用户身份信息来登录将出现下面的状态。

边坡分析,ARX, CAD二次开发,程序源代码

边坡分析,ARX, CAD二次开发,程序源代码

边坡分析,ARX, CAD二次开发,程序源代码辽宁工程技术大学毕业设计(论文)9.专题部分土坡稳定分析程序9.1 程序理论依据目前,我国的一些地区和行业规范都建议采用瑞典圆弧滑动面条分法验算土坡整体稳定性。

本程序以该方法作为理论基础。

9.1.1 最危险滑动面圆心的确定图9.1 最危险滑动圆弧的确定fig9.1 risk slip face最危险滑动面圆心位置的确定一般采取试算法。

如图9.1。

①内摩擦角??0的高塑性粘土。

认为土坡的最危险圆弧滑动面通过坡脚。

首先根据坡脚?由表9.1查出坡底角?1和坡顶角?2。

再在图9.1中的坡底和坡顶分别画出破底角?1和坡顶角?2,两线交点为O,O即为最危险滑动圆弧的圆心。

表9.1 坡脚与坡底角和坡顶角的关系 tab9.1坡脚?(度)坡底角?1(度) 90 33 75 32 40 60 29 40 45 28 38 33..78 26 35 30 26 36 26.57 25 35 15 24 37 0.32 25 37 坡顶角?2(度)40 ②内摩擦角??0的土:a. 按上述步骤求出O点;b. 由A点垂直向下量取一高度,该高度等于边坡高度H,得C点位置,由C点水平右量4.5倍H得D点,连接DO。

c. 在DO延长线上找若干点O1、O2、O3、……。

作为滑动圆心,画出坡脚,计算边坡稳定性安全系数K,找出K值较小的点59Oi;第9章专题部分d. 过Oi点画DO延长线的垂线,再在垂线上找出若干点作为滑动圆心,试算K值,直至找出K值最小的点,则此点即为最危险滑动弧圆心。

9.1.2 最危险滑动面条分法计算方法按条分法计算时,先找出滑动圆心O,画出滑动圆弧,然后将滑动圆弧分成若干条,每条的b本程序取0.01R,R为滑动半径。

任一分条的自重为Wi其可分解为切向力Ti和法向力Ni。

同时,在滑动面圆弧上还存在土的粘聚力C。

通过推导可得:K??Cl??(qb??bh)cos?Iiiiiii?1i?1ntntitan?i?(qb??bh)sin?iiiii?1ntint―分条数量Ci―分条的内聚力,kPali―分条的圆弧长度,m?i―分条内摩擦角,度?i―分条重度,kN/m3bi―分条宽度,mhi―分条高度,m (以上叙述摘自《基坑工程》,中国地质大学出版社)?―分条的坡角,度9.2 程序说明本程序名位helloarx.arx,(另附软盘),在Visual C++环境中用ObjectARX 2000软件包开发而成。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

工程代码说明
例程是基于IAR6.3版本来建立的,需要先按照代码根目录下的《flash loader》文件夹里的说明,复制flash loader到IAR安装目录,才可正常下载程序。

BUG更新
代码总是存在bug,后续的bug更新会在如下地址进行更新:
【一天攻破K60】BUG 汇总- 一天攻破K60 - 山外-vcan123论坛
/forum.php?mod=viewthread&tid=1294&ctid=1
目前代码版本为V5.1
例程目录
本代码包提供的例程是按照书本的内容,逐步添加所需要的代码。

换句话说,第二章的代码量是最少的,往后逐渐添加代码,书后例程都是完整的山外K60代码驱动。

例程架构说明
山外提供的例程同时支持K60DZ10和K60FX15,可以在工程选项里选择对应的工程。

两款K60的代码是不能混用,否则会锁住芯片的,因此需要选择正确的芯片。

例程重要文件说明
K60下载失败的解决方法和解锁方法
山外论坛上已经有专门帖子来整理方法,可以参考如下帖子:
【山外K60 KL26】jlink 下载失败的最详细解决办法- 智能车资料区- 山外-vcan123论坛/forum.php?mod=viewthread&tid=84&ctid=2
更多K60资料下载
/forum.php?mod=collection&action=view&ctid=1。

相关文档
最新文档