自己动手开发的第一个即将投入使用中的ASP+DLL

本文介绍了一个ASP文件如何通过调用DLL文件来计算不同服务器、不同等级范围内的代练服务价格,包括全职代练和兼职代练两种模式的价格计算方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ASP文件调用:

location=trim(request("location"))

beginlevel=trim(request("beginlevel"))
endlevel=trim(request("endlevel"))
powertype=trim(request("PowerType"))

Set PWLPrice1=server.createobject("PWLPrice.PowerLevel")
if powertype="FullTime" then
call PWLPrice1.GetPWLFullTimePrice(location, beginlevel, endlevel, currency_code, time2, Price, Price2)
else
call PWLPrice1.GetPWLPartTimePrice(location, beginlevel, endlevel, currency_code, time2, Price, Price2)
end if
set PWLPrice1=nothing
end if

DLL代码

'location 服务器类别
'beginlevel 代练开始级别
'englevel 代练完成级别
'currency_code 货币类型
'time2 代练时间
'ptrPrice1 市场价格
'ptrPrice2 折扣价格

Public Sub GetPWLFullTimePrice(location, beginlevel, endlevel, ByRef currency_code, ByRef time2, ByRef Price, ByRef Price2)
Dim btime As Single
Dim etime As Single

Dim t1 As Single
Dim t2 As Single
Dim t3 As Single
Dim t4 As Single
Dim t5 As Single
Dim t6 As Single
Dim t7 As Single
Dim t8 As Single
Dim t9 As Single
Dim t10 As Single
Dim t11 As Single
Dim t12 As Single
Dim t13 As Single
Dim t14 As Single
Dim t15 As Single
Dim t16 As Single
Dim t17 As Single
Dim t18 As Single
Dim t19 As Single


btime = 1
etime = 2
time1 = 0

t1 = 1
t2 = t1 + 3 * 1
t3 = t2 + 3 * 2
t4 = t3 + 3 * 2.5
t5 = t4 + 3 * 3
t6 = t5 + 3 * 4

t7 = t6 + 3 * 4.5
t8 = t7 + 3 * 5
t9 = t8 + 3 * 5.5
t10 = t9 + 3 * 6.5
t11 = t10 + 3 * 7.5

t12 = t11 + 3 * 8
t13 = t12 + 3 * 8.5
t14 = t13 + 3 * 9
t15 = t14 + 3 * 9.5

t16 = t15 + 3 * 10
t17 = t16 + 3 * 10.5
t18 = t17 + 3 * 11
t19 = t18 + 3 * 12

If beginlevel < 6 Then
btime = 0
Else
Select Case Int((beginlevel - 1) / 3)
Case 2: btime = t1 + (beginlevel - 6) * 1 ' L7-9
Case 3: btime = t2 + (beginlevel - 9) * 2 ' L10-12
Case 4: btime = t3 + (beginlevel - 12) * 2.5 ' L13-15
Case 5: btime = t4 + (beginlevel - 15) * 3 ' L16-18
Case 6: btime = t5 + (beginlevel - 18) * 4 ' L19-21
Case 7: btime = t6 + (beginlevel - 21) * 4.5 ' L22-24
Case 8: btime = t7 + (beginlevel - 24) * 5 ' L25-27
Case 9: btime = t8 + (beginlevel - 27) * 5.5 ' L28-30
Case 10: btime = t9 + (beginlevel - 30) * 6.5 ' L31-33
Case 11: btime = t10 + (beginlevel - 33) * 7.5 ' L34-36
Case 12: btime = t11 + (beginlevel - 36) * 8 ' L37-39
Case 13: btime = t12 + (beginlevel - 39) * 8.5 ' L40-42
Case 14: btime = t13 + (beginlevel - 42) * 9 ' L43-45
Case 15: btime = t14 + (beginlevel - 45) * 9.5 ' L46-48
Case 16: btime = t15 + (beginlevel - 48) * 10 ' L49-51
Case 17: btime = t16 + (beginlevel - 51) * 10.5 ' L52-54
Case 18: btime = t17 + (beginlevel - 54) * 11 ' L55-57
Case 19: btime = t18 + (beginlevel - 57) * 12 ' L58-60

End Select
End If

If endlevel <= 6 Then
etime = 1
Else
Select Case Int((endlevel - 1) / 3)
Case 2: etime = t1 + (endlevel - 6) * 1 'L7-9
Case 3: etime = t2 + (endlevel - 9) * 2 'L10-12
Case 4: etime = t3 + (endlevel - 12) * 2.5 'L13-15
Case 5: etime = t4 + (endlevel - 15) * 3 'L16-18
Case 6: etime = t5 + (endlevel - 18) * 4 'L19-21

Case 7: etime = t6 + (endlevel - 21) * 4.5 'L22-24
Case 8: etime = t7 + (endlevel - 24) * 5 'L25-27
Case 9: etime = t8 + (endlevel - 27) * 5.5 'L28-30
Case 10: etime = t9 + (endlevel - 30) * 6.5 'L31-33
Case 11: etime = t10 + (endlevel - 33) * 7.5 'L34-36
Case 12: etime = t11 + (endlevel - 36) * 8 'L37-39

Case 13: etime = t12 + (endlevel - 39) * 8.5 'L40-42
Case 14: etime = t13 + (endlevel - 42) * 9 'L43-45
Case 15: etime = t14 + (endlevel - 45) * 9.5 'L46-48
Case 16: etime = t15 + (endlevel - 48) * 10 'L49-51
Case 17: etime = t16 + (endlevel - 51) * 10.5 'L52-54
Case 18: etime = t17 + (endlevel - 54) * 11 'L55-57
Case 19: etime = t18 + (endlevel - 57) * 12 'L58-60
End Select
End If

time1 = Round(etime - btime + 0.4999)
time2 = time1
If location = 1 Then
currency_code = "USD"
If time1 < 36 Then
Price2 = Round(time1 * 0.792 * 1.2 * 10 / 8 + 0.49999)
Price = Round(time1 * 0.792 * 1.2 + 0.4999)
Else
Price2 = Round(time1 * 0.792 * 10 / 8 + 0.49999)
Price = Round(time1 * 0.792 + 0.4999)
End If
Else
currency_code = "EUR"
If time1 < 36 Then
Price2 = Round(time1 * 0.792 * 10 / 8 + 0.49999)
Price = Round(time1 * 0.792 + 0.4999)
Else
Price2 = Round(time1 * 0.66 * 10 / 8 + 0.49999)
Price = Round(time1 * 0.66 + 0.4999)
End If
End If


End Sub
'location 服务器类别
'beginlevel 代练开始级别
'englevel 代练完成级别
'currency_code 货币类型
'time2 代练时间
'ptrPrice1 市场价格
'ptrPrice2 折扣价格
Public Sub GetPWLPartTimePrice(location, beginlevel, endlevel, ByRef currency_code, ByRef time2, ByRef Price, ByRef Price2)
Dim btime As Single
Dim etime As Single

Dim t1 As Single
Dim t2 As Single
Dim t3 As Single
Dim t4 As Single
Dim t5 As Single
Dim t6 As Single
Dim t7 As Single
Dim t8 As Single
Dim t9 As Single
Dim t10 As Single
Dim t11 As Single
Dim t12 As Single
Dim t13 As Single
Dim t14 As Single
Dim t15 As Single
Dim t16 As Single
Dim t17 As Single
Dim t18 As Single
Dim t19 As Single


btime = 1
etime = 2
time1 = 0
t1 = 1
t2 = t1 + 3 * 1
t3 = t2 + 3 * 2
t4 = t3 + 3 * 2.5
t5 = t4 + 3 * 3
t6 = t5 + 3 * 4

t7 = t6 + 3 * 4.5
t8 = t7 + 3 * 5
t9 = t8 + 3 * 5.5
t10 = t9 + 3 * 6.5
t11 = t10 + 3 * 7.5

t12 = t11 + 3 * 8
t13 = t12 + 3 * 8.5
t14 = t13 + 3 * 9
t15 = t14 + 3 * 9.5

t16 = t15 + 3 * 10
t17 = t16 + 3 * 10.5
t18 = t17 + 3 * 11
t19 = t18 + 3 * 12

If beginlevel < 6 Then
btime = 0
Else
Select Case Int((beginlevel - 1) / 3)
Case 2: btime = t1 + (beginlevel - 6) * 1 ' L7-9
Case 3: btime = t2 + (beginlevel - 9) * 2 ' L10-12
Case 4: btime = t3 + (beginlevel - 12) * 2.5 ' L13-15
Case 5: btime = t4 + (beginlevel - 15) * 3 ' L16-18
Case 6: btime = t5 + (beginlevel - 18) * 4 ' L19-21
Case 7: btime = t6 + (beginlevel - 21) * 4.5 ' L22-24
Case 8: btime = t7 + (beginlevel - 24) * 5 ' L25-27
Case 9: btime = t8 + (beginlevel - 27) * 5.5 ' L28-30
Case 10: btime = t9 + (beginlevel - 30) * 6.5 ' L31-33
Case 11: btime = t10 + (beginlevel - 33) * 7.5 ' L34-36
Case 12: btime = t11 + (beginlevel - 36) * 8 ' L37-39
Case 13: btime = t12 + (beginlevel - 39) * 8.5 ' L40-42
Case 14: btime = t13 + (beginlevel - 42) * 9 ' L43-45
Case 15: btime = t14 + (beginlevel - 45) * 9.5 ' L46-48
Case 16: btime = t15 + (beginlevel - 48) * 10 ' L49-51
Case 17: btime = t16 + (beginlevel - 51) * 10.5 ' L52-54
Case 18: btime = t17 + (beginlevel - 54) * 11 ' L55-57
Case 19: btime = t18 + (beginlevel - 57) * 12 ' L58-60

End Select
End If

If endlevel <= 6 Then
etime = 1
Else
Select Case Int((endlevel - 1) / 3)
Case 2: etime = t1 + (endlevel - 6) * 1 'L7-9
Case 3: etime = t2 + (endlevel - 9) * 2 'L10-12
Case 4: etime = t3 + (endlevel - 12) * 2.5 'L13-15
Case 5: etime = t4 + (endlevel - 15) * 3 'L16-18
Case 6: etime = t5 + (endlevel - 18) * 4 'L19-21

Case 7: etime = t6 + (endlevel - 21) * 4.5 'L22-24
Case 8: etime = t7 + (endlevel - 24) * 5 'L25-27
Case 9: etime = t8 + (endlevel - 27) * 5.5 'L28-30
Case 10: etime = t9 + (endlevel - 30) * 6.5 'L31-33
Case 11: etime = t10 + (endlevel - 33) * 7.5 'L34-36
Case 12: etime = t11 + (endlevel - 36) * 8 'L37-39

Case 13: etime = t12 + (endlevel - 39) * 8.5 'L40-42
Case 14: etime = t13 + (endlevel - 42) * 9 'L43-45
Case 15: etime = t14 + (endlevel - 45) * 9.5 'L46-48
Case 16: etime = t15 + (endlevel - 48) * 10 'L49-51
Case 17: etime = t16 + (endlevel - 51) * 10.5 'L52-54
Case 18: etime = t17 + (endlevel - 54) * 11 'L55-57
Case 19: etime = t18 + (endlevel - 57) * 12 'L58-60
End Select
End If

time1 = Round(etime - btime + 0.499)
time2 = time1

If location = 1 Then

If time1 < 36 Then
Price2 = Round(time1 * 0.84 * 1.2 * 10 / 8 + 0.49999)
Price = Round(time1 * 0.84 * 1.2 + 0.4999)
Else
Price2 = Round(time1 * 0.84 * 10 / 8 + 0.49999)
Price = Round(time1 * 0.84 + 0.4999)
End If
currency_code = "USD"
Else

If time1 < 36 Then
Price2 = Round(time1 * 0.84 * 10 / 8 + 0.49999)
Price = Round(time1 * 0.84 + 0.4999)
Else
Price2 = Round(time1 * 0.7 * 10 / 8 + 0.49999)
Price = Round(time1 * 0.7 + 0.4999)
End If
currency_code = "EUR"
End If
End Sub

开发过程。编写DLL文件。注册DLL文件,ASP调用DLL对象。

Regsrv32.exe d:/dll/PowerLevel.dll

资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 在ASP.NET开发中,定时任务是一种常见功能,用于在固定时间间隔内执行特定操作,比如数据同步、清理缓存或发送通知等。以下是实现ASP.NET定时任务的详细步骤和关键要点: ASP.NET定时任务通常通过System.Threading.Timer或System.Timers.Timer实现,二者都能周期性触发事件。在ASP.NET中,可以利用后台线程或HttpApplication生命周期事件来启动定时器。 System.Threading.Timer:适合在独立线程上运行任务,避免阻塞主线程,适合轻量级任务。 System.Timers.Timer:在多线程环境下,它会自动管理线程,更适合服务器端复杂任务。 创建定时器对象,设置Interval属性为10000毫秒(10秒),并注册Elapsed事件。该事件会在每个时间间隔结束时触发。 在Elapsed事件中编写要执行的代码,确保代码执行效率高,避免阻塞,因为长时间运行的任务可能影响其他请求。 通过Timer.Start()启动定时器,Timer.Stop()停止定时器。在ASP.NET中,可以在Application_Start和Application_End事件中控制定时器的启动和停止,确保服务器启动时定时器开始运行,关闭时停止。 在多用户环境下,如果定时任务会修改共享状态,必须考虑线程安全问题,可以使用锁或其他同步机制来确保数据一致性。 将应用程序部署到IIS时,需设置应用程序池的回收策略,避免定时任务因应用程序回收而中断。同时,确保IIS配置支持长时间运行的请求。 为定时任务添加日志记录非常重要,可以帮助排查问题并监控任务执行情况。 定时任务过于频繁可能会影响服务器性能,进而影响其他请求的响应时间。可根据需求调整时间间隔,或
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值