嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 20 元微信扫码支付:20 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
此软件绝对未加入任何病毒代码,完全可以放心使用,希望有更新功能的管理用户,非常感谢!
国华网控工作室_家庭事务管理ASP系统2021 Ver1.020210125-国华网控工作室 Guohua_network_control_studio_
大家好!很高兴“家庭事务管理ASP系统”现已更新到最新2021版本,感谢用户长期对本软件的支持与关注!
如用户有兴趣可以到好例子网(https://www.haolizi.net)下载测试版试用。如果确认适合您,请联系我:QQ3409306881 ,谢谢!
1.系统名称:国华网控工作室_家庭事务管理ASP系统 V1.0。
2.软件仍然采用BS架构,以ASP ACCESS为开发主体。
3.主要包括以下12个模块。
家庭财务管理、家庭照片管理、家庭文档管理、家庭通讯录管理、家庭图书管理、网址收藏管理、历史地震、全国邮编、历史上的今天、用户管理、基础信息维护、报表查询等
4.其它。
使用帮助。
用户管理 (管理员户为soeasy ,密码为111)。
5.软件购买说明,定价为 RMB200 每台IIS服务器授权。购买后可以终生使用,享受1年的技术服务,但如果要二次开发需要另加费用,具体另议。
使用说明:
1.前提要配好IIS6.0以上版本。
2.将解压后的ASP系统文件直接COPY到你指定的文件目录。
3.在IIS中建一个虚拟站点指定到刚COPY指定的目录。
4.首页设为Guohua_network_control_studio_login.asp (测试版加上了前缀"Guohua_network_control_studio_" ,如果用户是正式注册用户,前缀我们会根据用户的注册英文或拼英缩写标识前缀,如张三购买此WEB系统后,登陆首页文件名为"zhangsan-login.asp" )。
感谢支持正式版!谢谢!
5.测试版不保证没有BUG,正式版可以享受完整的售后服务。
<%@ CodePage="65001" %>
<%
Response.Buffer = EW_RESPONSE_BUFFER
%>
<!--#include file="Guohua_network_control_studio_ewcfg15.asp"-->
<!--#include file="Guohua_network_control_studio_aspfn15.asp"-->
<!--#include file="Guohua_network_control_studio_Usersinfo.asp"-->
<!--#include file="Guohua_network_control_studio_userfn15.asp"-->
<% Call ew_Header(False, EW_CHARSET, False) %>
<% Server.ScriptTimeout = 1800 %>
<%
' Define page object
Dim login
Set login = New clogin
Set Page = login
' Page init processing
Call login.Page_Init
' Page main
Call login.Page_Main
' Global Page Rendering event (in userfn*.asp)
Page_Rendering()
' Page Render event
login.Page_Render()
%>
<!--#include file="Guohua_network_control_studio_header.asp"-->
<script type="text/javascript">
// Write your client script here, no need to add script tags.
</script>
<script type="text/javascript">
var flogin = new ew_Form("flogin");
// Validate function
flogin.Validate = function()
{
var fobj = this.Form;
if (!this.ValidateRequired)
return true; // Ignore validation
if (!ew_HasValue(fobj.username))
return this.OnError(fobj.username, ewLanguage.Phrase("EnterUid"));
if (!ew_HasValue(fobj.password))
return this.OnError(fobj.password, ewLanguage.Phrase("EnterPwd"));
if (fobj.captcha && !ew_HasValue(fobj.captcha))
return this.OnError(fobj.captcha, "<%= ew_JsEncode2(Language.Phrase("EnterValidateCode")) %>");
// Call Form Custom Validate event
if (!this.Form_CustomValidate(fobj)) return false;
return true;
}
// Form_CustomValidate function
flogin.Form_CustomValidate =
function(fobj) { // DO NOT CHANGE THIS LINE!
// Your custom validation code here, return false if invalid.
return true;
}
// Use JavaScript validation or not
<% If EW_CLIENT_VALIDATE Then %>
flogin.ValidateRequired = true; // Use JavaScript validation
<% Else %>
flogin.ValidateRequired = false; // No JavaScript validation
<% End If %>
</script>
<% Call login.ShowPageHeader %>
<% Call login.ShowMessage %>
<form name="flogin" id="flogin" class="ewForm ewLoginForm" action="<%= ew_CurrentPage %>" method="post">
<% If login.CheckToken Then %>
<input type="hidden" name="<%= EW_TOKEN_NAME %>" value="<%= login.Token %>">
<% End If %>
<div class="login-box ewLoginBox">
<div class="login-box-body">
<p class="login-box-msg"><%= Language.Phrase("Login") %></p>
<div class="form-group">
<div><input type="text" name="username" id="username" class="form-control ewControl" value="<%= ew_HtmlEncode(login.LoginUsername) %>" placeholder="<%= ew_HtmlEncode(Language.Phrase("Username")) %>"></div>
</div>
<div class="form-group">
<div><input type="password" name="password" id="password" class="form-control ewControl" placeholder="<%= ew_HtmlEncode(Language.Phrase("Password")) %>"></div>
</div>
<div class="checkbox">
<label for="rememberme"><input type="checkbox" name="type" id="rememberme" value="a"<% If login.LoginType = "a" Then %> checked<% End If %>><%= Language.Phrase("RememberMe") %></label>
</div>
<!-- captcha html (begin) -->
<div class="form-group">
<div class="">
<p><img src="captcha.asp?r=<%= ew_Random() %>" alt="Security Image" style="width: 130px; height: 25px;"></p>
<input type="text" name="captcha" id="captcha" class="form-control ewControl" size="30" placeholder="<%= Language.Phrase("EnterValidateCode") %>">
</div>
</div>
<!-- captcha html (end) -->
<button class="btn btn-primary ewButton" name="btnsubmit" id="btnsubmit" type="submit"><%= Language.Phrase("Login") %></button>
<p> </p>
</div>
</div>
</form>
<script type="text/javascript">
flogin.Init();
</script>
<%
Call login.ShowPageFooter
If EW_DEBUG_ENABLED Then Response.Write ew_DebugMsg()
%>
<script type="text/javascript">
// Write your startup script here
// document.write("page loaded");
</script>
<!--#include file="Guohua_network_control_studio_footer.asp"-->
<%
' Clean up and drop page object
Call login.Page_Terminate("")
Set login = Nothing
%>
<%
'
' Page Class
'
Class clogin
' Page ID
Public Property Get PageID
PageID = "login"
End Property
' Project ID
Public Property Get ProjectID
ProjectID = "{81574664-D7D7-445D-929A-43B2BC217A55}"
End Property
' Page Object Name
Public Property Get PageObjName
PageObjName = "login"
End Property
' Field (S_number)
Public Property Get S_number
Set S_number = Users.S_number
End Property
' Field (User_level)
Public Property Get User_level
Set User_level = Users.User_level
End Property
' Field (User_name)
Public Property Get User_name
Set User_name = Users.User_name
End Property
' Field (user_pwd)
Public Property Get user_pwd
Set user_pwd = Users.user_pwd
End Property
' Field (User_email)
Public Property Get User_email
Set User_email = Users.User_email
End Property
' Field (Activated)
Public Property Get Activated
Set Activated = Users.Activated
End Property
' Field (Userprofile)
Public Property Get zUserprofile
Set zUserprofile = Users.zUserprofile
End Property
' Field (User_info)
Public Property Get User_info
Set User_info = Users.User_info
End Property
' Get field object dictionary (ASP)
Public Property Get Fields
Set Fields = Users.Fields
End Property
' Get field object by name (alias of Fields) (ASP)
Public Function GetField(Name)
Set GetField = Fields.Get(Name)
End Function
' Get field object by parm (ASP)
Public Function GetFieldByParm(Parm)
Dim keys, key
keys = Fields.Keys()
For Each key In keys
If Fields.Get(key).FldParm = Parm Then
Set GetFieldByParm = Fields.Get(key)
Exit Function
End If
Next
Set GetFieldByParm = Nothing
End Function
' Export document (ASP)
Dim ExportDoc
' Page headings
Dim Heading
Dim Subheading
' Page heading
Function PageHeading()
PageHeading = ""
If Heading <> "" Then
PageHeading = Heading
End If
End Function
' Page subheading
Function PageSubheading()
If Subheading <> "" Then
PageSubheading = Subheading
Else
PageSubheading = ""
End If
End Function
' Page Name
Public Property Get PageName
PageName = ew_CurrentPage()
End Property
' Page Url
Public Property Get PageUrl
PageUrl = ew_CurrentPage() & "?"
End Property
' Message
Public Property Get Message
Message = Session(EW_SESSION_MESSAGE)
End Property
Public Property Let Message(v)
Dim msg
msg = Session(EW_SESSION_MESSAGE)
Call ew_AddMessage(msg, v)
Session(EW_SESSION_MESSAGE) = msg
End Property
Public Property Get FailureMessage
FailureMessage = Session(EW_SESSION_FAILURE_MESSAGE)
End Property
Public Property Let FailureMessage(v)
Dim msg
msg = Session(EW_SESSION_FAILURE_MESSAGE)
Call ew_AddMessage(msg, v)
Session(EW_SESSION_FAILURE_MESSAGE) = msg
End Property
Public Property Get SuccessMessage
SuccessMessage = Session(EW_SESSION_SUCCESS_MESSAGE)
End Property
Public Property Let SuccessMessage(v)
Dim msg
msg = Session(EW_SESSION_SUCCESS_MESSAGE)
Call ew_AddMessage(msg, v)
Session(EW_SESSION_SUCCESS_MESSAGE) = msg
End Property
Public Property Get WarningMessage
WarningMessage = Session(EW_SESSION_WARNING_MESSAGE)
End Property
Public Property Let WarningMessage(v)
Dim msg
msg = Session(EW_SESSION_WARNING_MESSAGE)
Call ew_AddMessage(msg, v)
Session(EW_SESSION_WARNING_MESSAGE) = msg
End Property
' Methods to clear message
Public Sub ClearMessage()
Session(EW_SESSION_MESSAGE) = ""
End Sub
Public Sub ClearFailureMessage()
Session(EW_SESSION_FAILURE_MESSAGE) = ""
End Sub
Public Sub ClearSuccessMessage()
Session(EW_SESSION_SUCCESS_MESSAGE) = ""
End Sub
Public Sub ClearWarningMessage()
Session(EW_SESSION_WARNING_MESSAGE) = ""
End Sub
Public Sub ClearMessages()
Session(EW_SESSION_MESSAGE) = ""
Session(EW_SESSION_FAILURE_MESSAGE) = ""
Session(EW_SESSION_SUCCESS_MESSAGE) = ""
Session(EW_SESSION_WARNING_MESSAGE) = ""
End Sub
' Show Message
Public Sub ShowMessage()
Dim hidden, html, sMessage
hidden = False
html = ""
' Message
sMessage = Message
Call Message_Showing(sMessage, "")
If sMessage <> "" Then ' Message in Session, display
If Not hidden Then sMessage = "<button type=""button"" class=""close"" data-dismiss=""alert"">×</button>" & sMessage
html = html & "<div class=""alert alert-info ewInfo"">" & sMessage & "</div>"
Session(EW_SESSION_MESSAGE) = "" ' Clear message in Session
End If
' Warning message
Dim sWarningMessage
sWarningMessage = WarningMessage
Call Message_Showing(sWarningMessage, "warning")
If sWarningMessage <> "" Then ' Message in Session, display
If Not hidden Then sWarningMessage = "<button type=""button"" class=""close"" data-dismiss=""alert"">×</button>" & sWarningMessage
html = html & "<div class=""alert alert-warning ewWarning"">" & sWarningMessage & "</div>"
Session(EW_SESSION_WARNING_MESSAGE) = "" ' Clear message in Session
End If
' Success message
Dim sSuccessMessage
sSuccessMessage = SuccessMessage
Call Message_Showing(sSuccessMessage, "success")
If sSuccessMessage <> "" Then ' Message in Session, display
If Not hidden Then sSuccessMessage = "<button type=""button"" class=""close"" data-dismiss=""alert"">×</button>" & sSuccessMessage
html = html & "<div class=""alert alert-success ewSuccess"">" & sSuccessMessage & "</div>"
Session(EW_SESSION_SUCCESS_MESSAGE) = "" ' Clear message in Session
End If
' Failure message
Dim sErrorMessage
sErrorMessage = FailureMessage
Call Message_Showing(sErrorMessage, "failure")
If sErrorMessage <> "" Then ' Message in Session, display
If Not hidden Then sErrorMessage = "<button type=""button"" class=""close"" data-dismiss=""alert"">×</button>" & sErrorMessage
html = html & "<div class=""alert alert-danger ewError"">" & sErrorMessage & "</div>"
Session(EW_SESSION_FAILURE_MESSAGE) = "" ' Clear message in Session
End If
Response.Write "<div class=""ewMessageDialog""" & ew_IIf(hidden, " style=""display: none;""", "") & ">" & html & "</div>"
End Sub
Dim PageHeader
Dim PageFooter
' Show Page Header
Public Sub ShowPageHeader()
Dim sHeader
sHeader = PageHeader
Call Page_DataRendering(sHeader)
If sHeader <> "" Then ' Header exists, display
Response.Write "<p>" & sHeader & "</p>"
End If
End Sub
' Show Page Footer
Public Sub ShowPageFooter()
Dim sFooter
sFooter = PageFooter
Call Page_DataRendered(sFooter)
If sFooter <> "" Then ' Footer exists, display
Response.Write "<p>" & sFooter & "</p>"
End If
End Sub
'
' Validate Page request
'
Public Function IsPageRequest()
IsPageRequest = True
End Function
Dim Token
Dim CheckToken
Dim TokenTimeout
' Valid Post
Function ValidPost()
If Not CheckToken Or Not ew_IsPost() Then
ValidPost = True
Exit Function
End If
If Request.Form(EW_TOKEN_NAME).Count = 0 Then
ValidPost = False
Exit Function
End If
ValidPost = ew_CheckToken(Request.Form(EW_TOKEN_NAME),TokenTimeout)
End Function
' Create Token
Sub CreateToken()
If CheckToken And Token = "" Then
Token = ew_CreateToken()
gsToken = Token ' Save to global variable
End If
End Sub
'
' Class initialize
'
Private Sub Class_Initialize()
Session.LCID = 1033 ' Always use US locale id
If IsEmpty(StartTimer) Then StartTimer = Timer ' Init start time
' Check Token
Token = ""
CheckToken = EW_CHECK_TOKEN
TokenTimeout = 0
TokenTimeout = 48 * 60 * 60 ' 48 hours for login
' Initialize language object
If IsEmpty(Language) Then
Set Language = New cLanguage
Call Language.LoadPhrases
End If
' Initialize table object
If IsEmpty(Users) Then Set Users = New cUsers
' Initialize form object
Set ObjForm = Nothing
' Get resize object
Call ew_GetResizeObj
' Intialize page id (for backward compatibility)
EW_PAGE_ID = "login"
' Debug message
Call ew_LoadDebugMsg
' Open connection to the database
If IsEmpty(Conn) Then
Set Conn = ew_Connect(Users.TableDBID)
End If
' User table object (Users)
If IsEmpty(UserTable) Then
Set UserTable = New cUsers
Set UserTableConn = ew_GetConn(UserTable.TableDBID)
End If
End Sub
'
' Page_Init
'
Sub Page_Init()
' User profile
Set UserProfile = New cUserProfile
' Security
Set Security = New cAdvancedSecurity
' Global page loading event (in userfn*.asp)
Call Page_Loading
' Page load event, used in current page
Call Page_Load
' Check token
If Not ValidPost() Then
Response.Write Language.Phrase("InvalidPostRequest")
Call Page_Terminate("")
Response.End
End If
' Create Token
Call CreateToken
End Sub
'
' Page_Terminate
'
Sub Page_Terminate(url)
If Request.Form("customexport")&"" = "" Then
' Page unload event, used in current page
Call Page_Unload
' Global page unloaded event (in userfn*.asp)
Call Page_Unloaded
End If
Dim sRedirectUrl
sRedirectUrl = url
Call Page_Redirecting(sRedirectUrl)
Call ew_CloseConn ' Close Connection
Set Security = Nothing
Set ObjForm = Nothing
Set gResizeObj = Nothing
' Go to URL if specified
If gsExport & "" = "" Then
If sRedirectUrl <> "" Then
If Response.Buffer Then Response.Clear
Call ew_SaveDebugMsg
Response.Redirect sRedirectUrl
End If
End If
Call ew_CleanUp
End Sub
'
' Page_Terminate (End)
'
Dim captcha
' Reset Captcha
Sub ResetCaptcha()
SESSION("EW_CAPTCHA_CODE") = ew_Random()
End Sub
' Validate Captcha
Function ValidateCaptcha()
If Captcha = Session("EW_CAPTCHA_CODE") Then
ValidateCaptcha = True
Else
ValidateCaptcha = False
End If
End Function
' Properties
Dim LoginUsername
Dim LoginType
'
' Page main
'
Sub Page_Main()
Dim bValidate, bValidPwd
Dim sPassword
Dim sLastUrl, url
Dim encrypted
url = Mid(ew_CurrentUrl(), InStrRev(ew_CurrentUrl(), "/") 1)
Set Breadcrumb = New cBreadcrumb
Call Breadcrumb.Add("login", "LoginPage", url, "", "", True)
Heading = Language.Phrase("LoginPage")
LoginUsername = "" ' Initialize
sLastUrl = Security.LastUrl ' Get Last URL
If sLastUrl = "" Then sLastUrl = "default.asp" End If
' If session expired, show session expired message
If Request.QueryString("expired") = "1" Then
FailureMessage = Language.Phrase("SessionExpired")
End If
' Login
If IsLoggingIn() Then ' After changing password
LoginUsername = Session(EW_SESSION_USER_PROFILE_USER_NAME)
sPassword = Session(EW_SESSION_USER_PROFILE_PASSWORD)
LoginType = Session(EW_SESSION_USER_PROFILE_LOGIN_TYPE)
bValidPwd = Security.ValidateUser(LoginUsername, sPassword, False, False)
If bValidPwd Then
Session(EW_SESSION_USER_PROFILE_USER_NAME) = ""
Session(EW_SESSION_USER_PROFILE_PASSWORD) = ""
Session(EW_SESSION_USER_PROFILE_LOGIN_TYPE) = ""
End If
Else ' Normal login
If Not Security.IsLoggedIn() Then Security.AutoLogin()
Call Security.LoadUserLevel ' Load user level
encrypted = False
If Request.Form <> "" Then
LoginUsername = ew_RemoveXSS(Request.Form("username"))
sPassword = ew_RemoveXSS(Request.Form("password"))
LoginType = LCase(ew_RemoveXSS(Request.Form("type")))
ElseIf EW_ALLOW_LOGIN_BY_URL And Request.QueryString("username").Count > 0 Then
' Setup variables
LoginUsername = ew_RemoveXSS(Request.QueryString("username"))
sPassword = ew_RemoveXSS(Request.QueryString("password"))
LoginType = LCase(ew_RemoveXSS(Request.QueryString("type")))
encrypted = ew_NotEmpty(Request.Querystring("encrypted"))
End If
If LoginUsername <> "" Then
bValidate = ValidateForm(LoginUsername, sPassword)
If Not bValidate Then
FailureMessage = gsFormError
End If
Session(EW_SESSION_USER_LOGIN_TYPE) = LoginType ' Save user login type
Session(EW_SESSION_USER_PROFILE_USER_NAME) = LoginUsername ' Save login user name
Session(EW_SESSION_USER_PROFILE_LOGIN_TYPE) = LoginType ' Save login type
Else
If Security.IsLoggedIn() Then
If FailureMessage = "" Then Call Page_Terminate(sLastUrl) ' Return to last accessed page
End If
bValidate = False
' Restore settings
LoginUsername = Request.Cookies(EW_PROJECT_NAME)("username")
If Request.Cookies(EW_PROJECT_NAME)("autologin") = "autologin" Then
LoginType = "a"
' ElseIf Request.Cookies(EW_PROJECT_NAME)("autologin") = "rememberusername" Then
' LoginType = "u"
Else
LoginType = ""
End If
End If
bValidPwd = False
' CAPTCHA checking
If Request.Form <> "" Then
captcha = Request.Form("captcha")
If Not ValidateCaptcha() Then ' Captcha not matched
FailureMessage = Language.Phrase("EnterValidateCode") ' Set message
bValidate = False
End If
End If
If Not bValidate Then
Call ResetCaptcha
End If
If bValidate Then
' Call logging in event
bValidate = User_LoggingIn(LoginUsername, sPassword)
If bValidate Then
bValidPwd = Security.ValidateUser(LoginUsername, sPassword, False, encrypted) ' Manual login
If Not bValidPwd Then
If FailureMessage = "" Then FailureMessage = Language.Phrase("InvalidUidPwd") ' Invalid user name or password
End If
Else
If FailureMessage = "" Then FailureMessage = Language.Phrase("LoginCancelled") ' Login cancelled
End If
End If
End If
' After login
If bValidPwd Then
' Write cookies
If LoginType = "a" Then ' Auto login
Response.Cookies(EW_PROJECT_NAME)("autologin") = "autologin" ' Set up autologin cookies
Response.Cookies(EW_PROJECT_NAME)("username") = LoginUsername ' Set up user name cookies
Response.Cookies(EW_PROJECT_NAME)("password") = ew_Encrypt(sPassword) ' Set up password cookies
' ElseIf LoginType = "u" Then ' Remember user name
' Response.Cookies(EW_PROJECT_NAME)("autologin") = "rememberusername" ' Set up remember user name cookies
' Response.Cookies(EW_PROJECT_NAME)("username") = LoginUsername ' Set up user name cookies
Else
Response.Cookies(EW_PROJECT_NAME)("autologin") = "" ' Clear autologin cookies
End If
Response.Cookies(EW_PROJECT_NAME).Expires = DateAdd("d", EW_COOKIE_EXPIRY_TIME, Now)
Call WriteAuditTrailOnLogIn(LoginUsername)
' Call loggedin event
Call User_LoggedIn(LoginUsername)
Call Page_Terminate(sLastUrl) ' Return to last accessed URL
ElseIf LoginUsername <> "" And sPassword <> "" Then
' Call user login error event
Call User_LoginError(LoginUsername, sPassword)
End If
End Sub
'
' Validate form
'
Function ValidateForm(usr, pwd)
' Initialize
gsFormError = ""
' Check if validation required
If Not EW_SERVER_VALIDATE Then
ValidateForm = True
Exit Function
End If
If usr = "" Then
Call ew_AddMessage(gsFormError, Language.Phrase("EnterUid"))
End If
If pwd = "" Then
Call ew_AddMessage(gsFormError, Language.Phrase("EnterPwd"))
End If
' Return validate result
ValidateForm = (gsFormError = "")
' Call Form Custom Validate event
Dim sFormCustomError
sFormCustomError = ""
ValidateForm = ValidateForm And Form_CustomValidate(sFormCustomError)
If sFormCustomError <> "" Then
Call ew_AddMessage(gsFormError, sFormCustomError)
End If
End Function
'
' Write audit trail on login
'
Sub WriteAuditTrailOnLogin(usr)
Call ew_WriteAuditTrail("log", ew_StdCurrentDateTime(), ew_ScriptName(), usr, Language.Phrase("AuditTrailLogin"), ew_CurrentUserIP(), "", "", "", "")
End Sub
' Page Load event
Sub Page_Load()
'Response.Write "Page Load"
End Sub
' Page Unload event
Sub Page_Unload()
'Response.Write "Page Unload"
End Sub
' Page Redirecting event
Sub Page_Redirecting(url)
'url = newurl
End Sub
' Message Showing event
' typ = ""|"success"|"failure"
Sub Message_Showing(msg, typ)
' Example:
'If typ = "success" Then msg = "your success message"
End Sub
' Page Render event
Sub Page_Render()
'Response.Write "Page Render"
End Sub
' Page Data Rendering event
Sub Page_DataRendering(header)
' Example:
'header = "your header"
End Sub
' Page Data Rendered event
Sub Page_DataRendered(footer)
' Example:
'footer = "your footer"
End Sub
' User Logging In event
Function User_LoggingIn(usr, pwd)
If Not EW_DEBUG_ENABLED Then On Error Resume Next
' Enter your code here
' To cancel, set return value to False
User_LoggingIn = True
End Function
' User Logged In event
Sub User_LoggedIn(usr)
' Response.Write "User Logged In"
End Sub
' User Login Error event
Sub User_LoginError(usr, pwd)
' Response.Write "User Login Error"
End Sub
' Form Custom Validate event
Function Form_CustomValidate(CustomError)
'Return error message in CustomError
Form_CustomValidate = True
End Function
End Class
%>