ASP.NET小型证券术语解释及翻译系统的设计与开发
摘 要
在系统设计上,综合各种翻译类型网站优缺点,设计出具有任何使用者都可添加术语信息的且只有管理员能够实现术语修改及删除等独特方式的术语查看管理系统。此方式能够使术语量快速增大,并且便于使用者及管理员操作,满足相互之间不断增长的需求,即使用者增加术语量,管理员管理以实现数据信息的合理管理及利用。在查看方式上,使用术语的第一个汉字的中文拼音首字母为索引,并分页显示,用户能够非常方便地找到所需术语名及对应的英、日文翻译。此外,系统还提供术语搜索,更加方便用户查询。管理方式和按首字母分页显示及搜索的查看方式为系统第二个特点。其次,应用Cascading style Sheets(简称CSS,层叠样式表)外部链接方式,界面(UI)较为精致。系统应用CSS自定义样式并在首页应用透明FLASH,具有操作简便、界面友好等特性。
关键词:计算机应用技术;ASP.net 2005;证券术语;解释及翻译;术语管理
3.1 系统功能结构设计
在系统需求分析的基础上,结合系统设计的目标,可将系统划分为4个功能模块:
- 首页:术语添加
- 术语一览:默认术语按ID顺序分页显示;页面上方点击术语中文拼音首字母可按首字母检索分页查看;页面中间提供输入术语名搜索方式查看术语。
- 术语管理:主要包括管理员登陆模块,对术语进行修改和删除操作。
- 其它模块:提供相关业务的服务,如资料下载等。
3.2 开发设计思想
系统开发设计思想有以下3点:
- 系统采用B/S结构,选用ASP.NET2005和SQL2000作为开发工具及开发环境进行系统的设计与开发。系统提供术语应准确全面,符合证券翻译及解释系统用户需求,并达到操作过程中的直观、方便、实用等要求。
- 系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于日后的补充和维护。
- 系统应具备数据库维护功能,及时根据用户需求进行术语的添加、删除、修改等操作。
5.1 公用模块及代码
- 定义数据库公用操作方法类DbHelperSQL,用以连接数据库,执行sql语句等数据库操作。
- 定义公共类Glossary,完成添加,修改,删除等操作。
- 定义公共验证类PageValidate。
5.2 首页界面及功能代码
首页为系统门户,是使用者对系统的第一印象,故需精心设计。根据对系统用户群的分析,设计出如下所示的首页界面如下图5所示:
图5 首页
首页中用户有点击添加术语信息的功能,中间运用透明FLASH代码将所制作的图片放为背景图,在代码中加入如下代码,将FLASH变为透明。
<param name="wmode" value="transparent" />
添加功能模块具有添加术语五项信息功能,在Glossary.cs中编写如下代码实现添加功能:
/// 增加一条数据
public int Add()
{
StringBuilder strSql=new StringBuilder();
strSql.Append("insert into Glossary(");
strSql.Append("cGlossaryName,cChineseSpell,cGlossaryEnglish,cGlossaryJapan,cGlossaryInterpret)");
strSql.Append(" values (");
strSql.Append("@cGlossaryName,@cChineseSpell,@cGlossaryEnglish,@cGlossaryJapan,@cGlossaryInterpret)");
SqlParameter[] parameters = {
new SqlParameter("@cGlossaryName", SqlDbType.NVarChar),
new SqlParameter("@cChineseSpell", SqlDbType.NVarChar),
new SqlParameter("@cGlossaryEnglish", SqlDbType.NVarChar),
new SqlParameter("@cGlossaryJapan", SqlDbType.NVarChar),
new SqlParameter("@cGlossaryInterpret", SqlDbType.NVarChar)};
parameters[0].Value = cGlossaryName;
parameters[1].Value = cChineseSpell;
parameters[2].Value = cGlossaryEnglish;
parameters[3].Value = cGlossaryJapan;
parameters[4].Value = cGlossaryInterpret;
DbHelperSQL.ExecuteSql(strSql.ToString(),parameters);
return ID;
}
Append方法将sql语句连接起来,整个的语句为
Insert into Glossary
(cGlossaryName,cChineseSpell,cGlossaryEnglish,cGlossaryJapan,cGlossaryInterpret)
Values (@cGlossaryName,@cChineseSpell,@cGlossaryEnglish,@cGlossaryJapan,@cGlossaryInterpret)
定义一个new SqlParameter,执行数据库公用方法DbHelperSQL.cs中定义的ExecuteSql完成与数据库连接,并执行SqlCommand语句,返回ID。
在ADD.cs中,代码如下
Glossary g = new Glossary();
g.cGlossaryName = PageValidate.Encode(this.txtName.Text);
g.cChineseSpell = PageValidate.Encode(this.txtChineseSpell.Text);
g.cGlossaryEnglish = PageValidate.Encode(this.txtEnglish.Text);
g.cGlossaryJapan = PageValidate.Encode(this.txtJapanese.Text);
g.cGlossaryInterpret = PageValidate.Encode(this.txtInterPret.Text);
g.Add();
Response.Write("<script>alert('添加成功');</script>");
将所要添加的术语信息通过PageValidate.Encode方法增加到数据库中,完成添加功能。
5.3 术语一览界面和主要代码
术语一览界面如下图6所示:
图6 术语一览
- 系统默认为按术语ID分页显示。
- 利用cChineseSpell字段,中文拼音首字母为S的演示结果如下图7所示:
图7 以S为索引分页显示
点击索引S,画面上出现以S为拼音开头的所有术语,分页显示,很容易找到所需术语名。
按术语中文拼音首字母检索浏览方式代码如下:
页面ViewAll.aspx中代码如下:
<td><a href="ViewAll.aspx?spell=A" class="fontview">A</a></td>
后台ViewAll.aspx.cs中代码:
if (Request["spell"] != null)
{
this.gvGlossary.DataSource = g.GetList(" cChineseSpell like '" + Request["spell"].ToString() + "%' order by ID asc");
this.gvGlossary.DataBind();
return;
}
this.gvGlossary.DataSource = g.GetList(" 1=1 order by ID asc");
this.gvGlossary.DataBind();
利用Request["spell"]与cChineseSpell比较,以ID的升序排列来检索分页显示。
- 搜索功能的实现代码如下:
if (Request["search"] != null)
{
this.gvGlossary.DataSource = g.GetList(" cGlossaryName like '"+Request["search"].ToString()+"%' order by ID asc");
this.gvGlossary.DataBind();
return;
}
以所输入的术语名与数据库中cGlossaryName比较,得出搜索结果。
5.4 管理模块
管理模块中首先为管理员登陆、管理员用户验证。输入用户名或密码为空时再label中显示红色提示语:“用户名和密码不能为空!”;当输入有误时在label中显示提示语“您输入的用户名或密码有误!请重新输入。”;清除按钮将账号和密码都清空,如下图8,图9所示:
图8 用户验证(1)
图9 用户验证(2)
当确定为系统管理员后页面将登录到术语管理模块,主要有管理员查看、修改和删除操作。界面如下图10所示:
图10 管理模块
查看操作与术语浏览操作相似,不再赘述。
修改页面如下图11所示:
图11 修改
点击修改成功时弹出“修改成功”提示语。
在Glossary.cs中代码如下:
public void Update(int id)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("update Glossary set ");
strSql.Append("cGlossaryName=@cGlossaryName,");
strSql.Append("cChineseSpell=@cChineseSpell,");
strSql.Append("cGlossaryEnglish=@cGlossaryEnglish,");
strSql.Append("cGlossaryJapan=@cGlossaryJapan,");
strSql.Append("cGlossaryInterpret=@cGlossaryInterpret");
strSql.Append(" where ID=@ID" );
SqlParameter[] parameters = {
new SqlParameter("@ID",SqlDbType.Int),
new SqlParameter("@cGlossaryName", SqlDbType.NVarChar),
new SqlParameter("@cChineseSpell", SqlDbType.NVarChar),
new SqlParameter("@cGlossaryEnglish", SqlDbType.NVarChar),
new SqlParameter("@cGlossaryJapan", SqlDbType.NVarChar),
new SqlParameter("@cGlossaryInterpret", SqlDbType.NVarChar)};
parameters[0].Value = id;
parameters[1].Value = cGlossaryName;
parameters[2].Value = cChineseSpell;
parameters[3].Value = cGlossaryEnglish;
parameters[4].Value = cGlossaryJapan;
parameters[5].Value = cGlossaryInterpret;
DbHelperSQL.ExecuteSql(strSql.ToString(),parameters);
}
在修改页面Update.aspx.cs中代码如下
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Request["id"] != null)
{
Glossary g = new Glossary();
g.GetModel(int.Parse(Request["id"]));
this.txtName.Text = PageValidate.Decode(g.cGlossaryName);
this.txtChineseSpell.Text = PageValidate.Decode(g.cChineseSpell);
this.txtEnglish.Text = PageValidate.Decode(g.cGlossaryEnglish);
this.txtInterPret.Text = PageValidate.Decode(g.cGlossaryInterpret);
this.txtJapanese.Text = PageValidate.Decode(g.cGlossaryJapan);
}
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (Request["id"] != null)
{
Glossary g = new Glossary();
g.GetModel(int.Parse(Request["id"]));
g.cGlossaryName = PageValidate.Encode(this.txtName.Text);
g.cChineseSpell = PageValidate.Encode(this.txtChineseSpell.Text);
g.cGlossaryEnglish = PageValidate.Encode(this.txtEnglish.Text);
g.cGlossaryJapan = PageValidate.Encode(this.txtJapanese.Text);
g.cGlossaryInterpret = PageValidate.Encode(this.txtInterPret.Text);
g.Update(int.Parse(Request["id"]));
Response.Write("<script>alert('修改成功');</script>");
}
}
在PageLoad时用PageValidate.Decode方法获得数据库中原有数据项,然后修改后用PageValidate.Encode方法将修改后的数据项传到数据库中。此处注意必须将Update方法带上参数int id,然后才能修改数据库中数据项。
删除操作,在Glossary.cs中定义如下代码:
public void Delete(int ID)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("delete from Glossary ");
strSql.Append("where ID=@ID" );
SqlParameter[] parameters = {
new SqlParameter("@ID", SqlDbType.Int,4) };
parameters[0].Value = ID;
DbHelperSQL.ExecuteSql(strSql.ToString(),parameters);
}
在Manage.aspx.cs中编写删除代码如下:
Glossary g = new Glossary();
g.Delete(int.Parse(this.gvGlossary.DataKeys[e.RowIndex].Value.ToString()));
Response.Write("<script>alert('删除成功');</script>");
bindALL();
点击删除时出现确认是否要删除,删除成功后显示删除成功提示语。
相关文章:

ASP.NET小型证券术语解释及翻译系统的设计与开发
摘 要 在系统设计上,综合各种翻译类型网站优缺点,设计出具有任何使用者都可添加术语信息的且只有管理员能够实现术语修改及删除等独特方式的术语查看管理系统。此方式能够使术语量快速增大,并且便于使用者及管理员操作,满足相互…...

硬件知识积累 音频插座的了解,看音频插座的原理图来了解音频插座的引脚。
1. 音频接口 音频插座是一种用于连接音频信号线路的电子元件,常见于音频设备(如音响、耳机、话筒等)中。它的主要作用是将电子信号转化为声音信号,以满足人们对于音乐、电影、游戏等方面的需求。 根据插头形状的不同,音…...

error LNK2001: 无法解析的外部符号 “__declspec(dllimport) public: __cdecl ......
运行程序时,报如上图所示错误,其中一条是: ReflectionProbe.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: __cdecl osg::Object::Object(bool)" (__imp_??0ObjectosgQEAA_NZ) 报这个错误一般是因为…...

邮箱Webhook API发送邮件的性能怎么优化?
邮箱Webhook API发送邮件的步骤?如何用邮箱API发信? 随着业务规模的扩大,如何高效地通过邮箱Webhook API发送邮件,成为了许多企业面临的关键问题。下面,AokSend将探讨一些优化邮箱Webhook API发送邮件性能的方法。 邮…...

并发编程实现
一、并行编程 1、Parallel 类 Parallel类是System.Threading.Tasks命名空间中的一个重要类,它提供数据并行和任务并行的高级抽象。 For和ForEach Parallel类下的For和ForEach对应着普通的循环和遍历(普通的for和foreach),但执行时会尝试在多个线程上…...

基于EBAZ4205矿板的图像处理:12图像二值化(阈值可调)
基于EBAZ4205矿板的图像处理:12图像二值化(阈值可调) 我的项目是基于EBAZ4205矿板的阈值可调的图像阈值二值化处理,可以通过按键调整二值化的阈值,key1为阈值加1,key4为阈值减1,key2为阈值加10,key5为阈值…...

人大金仓数据库报com.kingbase8.util.KSQLException: 致命错误: 用户 “SYSTEM“ Password 认证失败
com.kingbase8.util.KSQLException: 致命错误: 用户 “SYSTEM” Password 认证失败 解决办法: 问题在于用户权限只不足,相关配置文件在一般在 /data/sys hba.conf,修改IPV4 local connections选项中的改为trust。...

文件加密软件哪个好?文件加密软件排行榜前十名(好用软件推荐)
文件加密软件哪个好?这是许多个人和企业用户在面临数据保护需求时所关心的问题。随着数字化时代的推进,数据安全问题日益凸显,文件加密软件成为了保护数据安全的重要手段。本文将为您介绍当前市场上排名前十的文件加密软件,帮助您…...

Netty的第一个简单Demo实现
目录 说明需求ClientServer写法总结 实现运行 说明 Netty 的一个练习,使用 Netty 连通 服务端 和 客户端,进行基本的通信。 需求 Client 连接服务端成功后,打印连接成功给服务端发送消息HelloServer Server 客户端连接成功后࿰…...

K8S 哲学 - 服务发现 services
apiVersion: v1 kind: Service metadata:name: deploy-servicelabels:app: deploy-service spec: ports: - port: 80targetPort: 80name: deploy-service-podselector: app: deploy-podtype: NodePort service 的 endPoint (ep) 主机端口分配方式 两…...

Springboot工程创建
目录 一、步骤 二、遇到的问题及解决方案 一、步骤 打开idea,点击文件 ->新建 ->新模块 选择Spring Initializr,并设置相关信息。其中组为域名,如果没有公司,可以默认com.example。点击下一步 蓝色方框部分需要去掉,软件包…...

日本站群服务器的优点以及适合该服务器的业务类型?
日本站群服务器的优点以及适合该服务器的业务类型? 日本站群服务器是指位于日本地区的多个网站共享同一台服务器的架构。这种服务器架构有着诸多优点,使其成为许多企业和网站管理员的首选。以下是日本站群服务器的优点以及适合该服务器的业务类型的分析࿱…...

堆的应用2——TOPK问题
TOPK问题 TOP-K问题:即求数据结合中前K个最大的元素或者最小的元素,一般情况下数据量都比较大。 比如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。 情况1——数据量小 对于Top-K问题,能想到的最简单直接的方式就…...
leetcode-5. 最长回文子串
题目描述 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入:s "babad" 输出:"bab" 解释:"aba"…...
【Flask 系统教程 1】入门及配置
当你开始学习 Flask 时,了解如何进行基本的配置是非常重要的。Flask 是一个简单而灵活的 Python Web 框架,它允许你快速构建 Web 应用程序,并且易于学习。在这篇博客中,我将介绍如何从零开始进行 Flask 的基础配置,适合…...
石家庄河北银行的
有些时候河北石家庄这边的甲方客户人员就是太苛刻了,尤其是银行业 比如河北银行的信息部的卢斌,兰州人,这个人的人品极度恶劣,对乙方的外包人员特别苛刻,像个大爷一样。自己什么都不会,连sql 都不会写&…...

【CCNP ENCOR OCG】CHAPTER 2》Spanning Tree Protocol
目录 “Do I Know This Already?” Quiz Foundation Topics Spanning Tree Protocol Fundamentals 802.1D Port States Spanning Tree Path Cost Root Bridge Election Locating Root Ports Locating Blocked Designated Switch Ports Verification of VLANs on Trun…...
docker无法映射/挂载根目录
docker无法映射(挂载)根目录下的文件夹只能映射家目录 最近想要使用nas-tools做做刮削,电影存在一个机械磁盘里,机械磁盘被挂载到/data1下,发现一个很奇怪的问题,docker只能挂载成功home目录下的文件夹&am…...
C++中不要重新定义继承而来的non-virtual函数
在 C 中,重定义继承而来的 non-virtual(非虚)函数通常是不推荐的,原因如下: 隐藏父类的实现:如果在派生类中重定义了一个非虚函数,这将隐藏父类中具有相同名称和参数的函数。这意味着即使通过基…...

C++ 对象型参数和返回值
对象型参数和返回值 1.对象型类型作为函数的参数2.对象型参数作为函数的返回值 1.对象型类型作为函数的参数 使用对象类型作为函数的参数或者返回值,可能会产生一些不必要的中间对象 例子: // 使用对象类型作为函数的参数 void test1(Car car) {}完整代…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...