基于B/S模式的学生选课系下世化云

由于我们传统的选课方式不仅麻烦而且容易出错,老师和同学以及教务部门都为每学年的学生选课感到头痛,况且随着高校的扩招,学生人数的剧增,以前传统的选课方式已经不能适应学校发展的需要,因此开发一个既方便有效又简单易行的网上选课系统就显得很有实用价值,它定为使得复杂且易出错的学生选课程序变得简单且可靠。本文通过采用Delphi提供的WebBroker技术,利用B/S模式,设置了学生选课页面、选课结果查询页面、以及重选信息页面,使的学生选课真正网络化。

关键词:B/S模式、WebBroke技术、Delphi7、WebServer应用程序、Apache服务器

Abstract

Teachers,studentsandeducationaldepartmentofuniversitiesarefeeluneasywiththeannualchoosingcoursesofstudentsduetothetraditionalformofchoosingcourses,ofwhichnotonlytroublesomebutalsohasahighrateofmakingmistakes.Whatisworse,withthecollegesanduniversitiesenlargetheirenrollmenttremendously,thenumberofstudentshasincreaseddramatically,thetraditionalformofchoosingcoursescouldn’tcatchupwiththedevelopmentofschools.Thus,itisvaluabletodevelopaconvenientandflexiblechoosingcoursessystemthatcanreachedbyeverystudentthroughtheInternet,Iamsureitisboundtomakethetraditionaloneeasyandresponsible.ThisthesistakesadvantageofthetechniquesprovidedbyDelphiaswellasBrowser/Servermode.Itsetsthepageofstudentchoosingcourses,thepageofchoosingresult,andthepageofrechoosinginformation,whichvirtuallyrenderthestudentchoosingcoursesviainternet.

Keywords:B/Smode、WebBrokertechnics、Delphi7、WebServerapplicationprogram、ApacheServer

引言

第一章B/S体系结构简介

随着PC机的诞生与应用,计算模式从集中式(数据和应用程序在一台主机上)转向了分布式(数据和应用程序跨越多个节点机),尤为典型的是C/S结构(Client/Server的简称,客户机/服务器模式)。两层结构C/S模式,在上个世纪八十年代及九十年代初得到了大量应用,最直接的原因是可视化开发工具的推广。之后,它开始向三层结构发展。近来,随着网络技术不断发展,尤其是基于Web的信息发布和检索技术、Java计算技术以及网络分布式对象技术的飞速发展,导致了很多应用系统的体系结构从C/S结构向更加灵活的多级分布结构演变,使得软件系统的网络体系结构跨入一个新阶段,即B/S体系结构(Browser/Server的简称,浏览器/服务器模式)。基于Web的B/S方式其实也是一种客户机/服务器方式,只不过它的客户端是浏览器。为了区别于传统的C/S模式,才特意将其称为B/S(浏览器/服务器)模式。认识到这些结构的特征,对于系统的选型而言是很关键的。

系统的性能

不过,采用B/S结构,客户端只能完成浏览、查询、数据输入等简单功能,绝大部分工作由服务器承担,这使得服务器的负担很重。采用C/S结构时,客户端和服务器端都能够处理任务,这虽然对客户机的要求较高,但因此可以减轻服务器的压力。而且,由于客户端使用浏览器,使得网上发布的信息必须是以HTML格式为主,其它格式文件多半是以附件的形式存放。而HTML格式文件(也就是Web页面)不便于编辑修改,给文件管理带来了许多不便。

系统的开发

最新的C/S结构是建立在中间件产品基础之上的,严格来讲这些产品还缺乏作为企业级应用平台的一些特性,难以扩展到互联网这样的环境上去,而且要求应用开发者自己去处理事务管理、消息队列、数据的复制和同步、通信安全等等系统级的问题。这对应用开发者提出了较高的要求,而且迫使应用开发者投入很多精力来解决应用程序以外的问题。这使得应用程序的维护、移植和互操作变得复杂,成了C/S的一大缺陷。如果客户端是在不同的操作系统上(比如Windows2000以及不同版本的Unix),C/S结构的软件需要开发不同版本的客户端软件。如果产品经常需要更新换代,那么升级系统时候需要付出的高代价以及工作的低效率会在一定程度上制约企业的应用。

但是,与B/S结构相比,C/S技术发展历史更为“悠久”。从技术成熟度及软件设计、开发人员的掌握水平来看,C/S技术应是更成熟、更可靠的。和佳软件总裁陈佳认为:对于ERP软件而言,采用100%的B/S方式将造成系统响应速度慢、服务器开销大、通信带宽要求高、安全性差、总投资增加等问题。而且,对于复杂的应用,B/S方式目前尚没有合适方式进行开发。

系统的升级维护

在系统安全维护上,B/S则略显不足,B/S结构尤其得考虑数据的安全性和服务器的安全性,毕竟现在的网络安全系数并不高。以OA软件为例,B/S结构要实现办公协作过程中复杂的工作流控制与安全性控制,还有很多技术上的难点。因此,当前虽然出现了B/S结构的OA系统产品,但尚未大范围推广。

融合——取长补短

客观地分析C/S、B/S的优劣,规划系统的时候有的放矢地“趋利避害”,才能够搭建成合适的信息系统。我们接触的很多开发人员认为,在大型信息系统中采用B/S、C/S混合模式比较可行。在今年参与评测的一套软件系统中,开发人员就将C/S、B/S有机结合起来:需要对数据库进行频繁操作例如添加、修改资料的人员使用C/S客户端,这样客户端功能比较强、安全系数也高;领导层则使用B/S客户端进行数据的查询,这样客户端比较灵活,只要能上网即可以操作。如此处理,可充分发挥各种模式的优越性——避免了B/S结构在安全性、保密性和响应速度等方面的缺点以及C/S结构在维护和灵活性等方面的缺点。B/S模式是一种以Web技术为基础的新型的管理信息系统平台模式。把传统的C/S模式中的服务器部分分解为一个数据服务器与一个或多个应用服务器(Web服务器),就构成了一个三层结构的客户服务器体系。其体系结构如图所示。

图1B/S体系结构

第二章WebBroker技术

第三章系统数据库设计

3.2数据库逻辑结构设计我们采用MicrosoftSQLServer2000数据库来存放数据。在本例中,我们将数据库服务器命名为dbserver,数据库命名为“选课系统”。在“选课系统”数据库中,新建7个数据表,表名和表的说明见下表:表1选课系统的数据表序号表名用途1系统参数表选课系参数2选课登记表记录当前选课学生信息3专业基本信息表学校专业的设置情况4学生基本信息表学校学生基本信息5学生重修课程表学生需要进行重修的课程信息6选课手册表学校开设课程信息7选课结果表学生选修课程信息各个数据表的结构信息见如下几个表。

学生基本信息表结构字段编号数据类型字段大小说明学生编号char8学生姓名char8学生性别bit1所属专业编号char3年级smallint2班级编号smallint2密码varchar8

选课结果表结构字段名称数据类型字段大小说明SNint自增长学生编号char8课程编号char8课堂号tinyint1课程标志char8是否得修bit1

学生重修课程表结构字段名称数据类型字段大小说明学生编号char8课程编号char8学期smallint2课程标志char8平时成绩smallint2期末成绩smallint2总评成绩smallint2学分numeric5

4.2创建选课页面main.htm提供用户进行选课的操作界面。创建main.htm的HTML文件,在其中设置的动态标记见下表。

表main.htm中的动态标记设置动态标记名说明<#LoginSN>学生选课标识号<#SdXH>学生编号<#SdXM>学生姓名<#SdXb>学生性别<#SdZyBH>学生专业编号<#SdZyMc>学生专业名称<#SdNj>学生年级<#GongBil>公共必修学分<#ZhuanBil>专业必修学分<#ZhaunXuan1>专业选修学分<#RenXuan1>任意选修学分<#KcBH>课程编号<#KtH>课堂号<#KcMc>课程名称<#LessonList>选修结果列表界面如下图所示:

4.3重修课程查询页面fail.htm提供重修课程的查询界面。创建fail.htm的HTML文件,并在其在设置动态标记见下表:表fail.htm中的动态标记设置动态标记名说明<#SdXH>学生编号<#SdXM>学生姓名<#FailList>重修课程列表界面如下图所示:

第五章系统实现

procedureTWebModule1.WebModule1aisubmitAction(Sender:TObject;Request:TWebRequest;Response:TWebResponse;varHandled:Boolean);vari:integer;aCookie:TStringList;beginSubmitType:=Request.ContentFields.Values['strSubmitType'];LoginSN:=Request.ContentFields.Values['LoginSN'];

SdXH:=Request.ContentFields.Values['strSdXH'];SdXM:=Request.ContentFields.Values['strSdXM'];SdZyBH:=Request.ContentFields.Values['strSdZyBH'];SdZyMc:=Request.ContentFields.Values['strSdZyMc'];SdXb:=Request.ContentFields.Values['strSdXb'];SdNj:=Request.ContentFields.Values['strSdNj'];GongBi1:=Request.ContentFields.Values['strGongBi1'];ZhuanBi1:=Request.ContentFields.Values['strZhuanBi1'];ZhuanXuan1:=Request.ContentFields.Values['strZhuanXuan1'];RenXuan1:=Request.ContentFields.Values['strRenXuan1'];

KcBH:=Request.ContentFields.Values['strKcBH'];KtH:=Request.ContentFields.Values['strKtH'];KcMc:=Request.ContentFields.Values['strKcMc'];KcbhList:=TStringList.Create;KcbhList.Delimiter:=',';KcbhList.DelimitedText:=Request.ContentFields.Values['strDelnoteSN'];

ifSubmitType='logout'thenbeginqueryString:='delete选课登记whereSN='''+LoginSN+'''';ADOQryTemp.Close;ADOQryTemp.SQL.Clear;ADOQryTemp.SQL.Add(queryString);ADOQryTemp.ExecSQL;

aCookie:=TStringList.Create;aCookie.Add('LoginSN"'+LoginSN+'"');Response.SetCookieField(aCookie,Request.Host,'/',(Now-1),False);aCookie.Free;

SdVerify:='';SdXH:='';SdXM:='';

Response.Content:=PageLogin.Content;Exit;end;

ifRequest.CookieFields.Values['LoginSN']<>'"'+LoginSN+'"'thenbeginResponse.Content:='

';Exit;end;

ifSubmitType='getcx'thenbeginqueryString:='select*from学生重修课程where学生编号='''+SdXH+'''';ADOQryTemp.Close;ADOQryTemp.SQL.Clear;ADOQryTemp.SQL.Add(queryString);ADOQryTemp.Open;

Response.Content:=PageFail.Content;Exit;endelseifSubmitType='getkc'thenbeginqueryString:='select课程名称from选课手册where课程编号='''+KcBH+'''';

ADOQryTemp.Close;ADOQryTemp.SQL.Clear;ADOQryTemp.SQL.Add(queryString);ADOQryTemp.Open;ifADOQryTemp.IsEmptythenbeginResponse.Content:='

错误:本学期课程<'+KcBH+'>不存在,请检查并重新输入

返回

KtH:='';KcMc:=ADOQryTemp.FieldByName('课程名称').AsString;

ADOQuery1.Close;ADOQuery1.Parameters[0].Value:=SdXH;ADOQuery1.Open;

Response.Content:=PageMain.Content;Handled:=true;endelseifSubmitType='getweek'thenbeginADOQuery1.Close;ADOQuery1.Parameters[0].Value:=SdXH;ADOQuery1.Open;

Response.Content:=PageMain.Content;Handled:=true;endelseifSubmitType='add'thenbeginwithADOStoredProc2dobeginParameters.ParamByName('@学生编号').Value:=SdXH;Parameters.ParamByName('@课程编号').Value:=KcBH;Parameters.ParamByName('@课堂号').Value:=KtH;ExecProc;

caseParameters.ParamByName('@返回码').Valueof1:begin//重复选课Response.Content:='

错误:课程<'+KcBH+'>已在本学期选修,请检查输入是否正确

';Exit;end;2:begin//课堂号不存在Response.Content:='

错误:课堂号<'+KtH+'>不存在,请检查并重新输入

';Exit;end;3:begin//限选男生Response.Content:='

错误:课程<'+KcBH+'>限选男生!

';Exit;end;4:begin//限选女生Response.Content:='

错误:课程<'+KcBH+'>限选女生!

';Exit;end;5:begin//人数限制-改选Response.Content:='

错误:课程<'+KcBH+'>第'+KtH+'课堂选课人数已满!

';Exit;end;end;end;

SubmitType:='';KcBH:='';KtH:='';KcMc:='';

Response.Content:=PageMain.Content;Handled:=true;endelseifSubmitType='del'thenbeginfori:=0toKcbhList.Count-1dobeginwithADOStoredProc3dobeginParameters.ParamByName('@SN').Value:=KcbhList[i];ExecProc;end;end;

Response.Content:=PageMain.Content;Handled:=true;end;end;

5.2编译在Delphi的File菜单下单击File|SaveProjectAs子菜单项保存以上建立的工程文件,工程文件取名为xuanke.dpr,Project菜单下的BuildProject1子菜单自动转变为Buildxuanke,单击它,Delphi将编译、链接这个工程文件,生成文件名为xuanke.dll的动态链接库,这就是我们所需要的WebServer应用程序。

第六章应用程序的发布

总结与讨论

致谢

在本文的撰写过程中,得到很多人无私的帮助和建议。首先要极其感谢我的指导老师揭老师,有了他的指导方向、教导和支持才使我一直坚持不懈地做这篇论文的工作并最终完成。还要感谢文春勇同学,高衍鹏同学,周小山同学他们为我提供电脑及上网的环境。感谢章文杰同学,他为我提供了大量的参考书籍。以及感谢李广平同学,陆森众同学,杜菊滚同学,他们在我撰写论文期间给了我生活上很大的帮助。我还要向所有评阅老师和同学致谢,感谢他们非常有益的指点。

THE END
1.原创猫:Web2.0+数字资产=Web3.0互联网区块链web2.0web3.0在探讨“Web2.0+数字资产=Web3.0”这一等式时,我们首先需要理解这三个核心要素:Web2.0、数字资产以及Web3.0分别代表什么,以及它们之间如何相互作用,共同推动互联网技术的演进。 ### Web2.0:互联网的互动与参与时代 Web2.0,作为互联网发展历程中的一个重要阶段,标志着从静态的网页浏览向动态的、用户生成内容的转变。https://www.163.com/dy/article/JGPONKPU0518A60U.html
2.B/S还是C/SeHR系统技术架构如何选择?目前,市场上主流的eHR系统采用的技术架构主要有三种模式:C/S、B/S、C/S+B/S。基于Web的B/S方式其实也是一种客户机/服务器方式,只不过它的客户端是浏览器,为了区别于传统的C/S模式,才特意将其称为B/S模式。那么它们的特点是什么?各有那些优缺点?eHR系统技术架构究竟该如何选择?笔者根据多年从事eHR系统开发...https://www.cup.edu.cn/nic/netclass/web/25794.htm
3.AWR报告详解柏林之花Parses:SQL解析的次数.每秒解析次数,包括fast parse,soft parse和hard parse三种数量的综合。 软解析每秒超过300次意味着你的"应用程序"效率不高,调整session_cursor_cache。在这里,fast parse指的是直接在PGA中命中的情况(设置了session_cached_cursors=n);soft parse是指在shared pool中命中的情形;hard parse则是...http://blog.chinaunix.net/uid-7847832-id-3486670.html
1.评估Web架构的七大关键属性一个高效、稳定的Web架构需要在上述七大关键属性之间找到平衡。随着互联网应用场景的多样化,构建兼具可扩展性、可靠性和安全性的Web架构显得尤为重要。通过定期评估这些关键属性,可以发现系统的瓶颈和改进空间,从而不断优化Web架构,以支持不断变化的业务需求和用户期望。https://blog.csdn.net/imileseo/article/details/143705462
2.应用系统架构创新mob64ca140fd7c1的技术博客MVC垂直应用架构:随着访问量的逐渐增加,单一应用靠横向增加机器的效果越来越小,我们可以将应用拆分为几个互不相干的应用,以提升效率,此时用于加速前端页面开发的Web框架MVC是关键 PRC远程过程调用架构:垂直应用架构难以应付复杂的业务场景,团队的协作效率差,公共功能重复开发越来越多的缺点暴露出来,引出了PRC架构,这时的...https://blog.51cto.com/u_16213682/12539872
3.开发笔记:前端之前端初识本文由编程笔记#小编为大家整理,主要介绍了前端之前端初识相关的知识,希望对你有一定的参考价值。 一web标准 web准备介绍: 1、w3c:万维网联盟组织,用来制定web标准的机构(组织) 2、web标准:制作网页遵循的规范 3、web准备规范的分类:结构标准、表现标准、行为标准。 https://www.php1.cn/detail/KaiFaBiJi_-_Qian_bea12318.html
4.Java代码的基本知识B/S border/server即浏览器/服务器模式,又称为瘦客户端,客户端不参与程序的运行与计算 3、 企业级应用(大规模的应用)的特点 1.生命周期长、稳定、可靠 2.组件往往分布在异构的环境中,能够跨平台 3.维护性、扩展性、重用性 4.有事务、安全、线程 https://www.yjbys.com/edu/jisuanjidengji/288685_2.html
5.guangdian.qtv.com.cn/system/2015/08/17/012634960.shtml28、 MPEG2视频压缩标准中有三种压缩编码模式:帧内压缩编码(I帧编码)、前向预测编码(P帧编码)和双向预测编码(B帧编码)。信源编码是对信号进行码率压缩,信道编码是对信号进行误码控制。 29、 我国HDTV电视标准格式1080/50i,HDSDI接口的含义是高清串行数字接口。 30、 MPEG-2压缩编码方式的GOP中含有I、B、P三种...http://guangdian.qtv.com.cn/system/2015/08/17/012634960.shtml
6.deskreenwebsite此外,不需要虚拟显示适配器,您可以使用平板电脑或智能手机拥有带有 Deskreen 的提示器,因为 Deskreen 具有翻转屏幕模式,可以在平板电脑的 Web 浏览器中镜像计算机屏幕 (又名:水平翻转屏幕)。 Deskreen 的系统要求 操作系统: Windows, Linux, MacOS 可用磁盘空间: 210MB 内存: 在一个屏幕共享会话中运行应用程序的平均...https://deskreen.com/
7.C/S和B/S两种架构区别与优缺点分析腾讯云开发者社区二、B/S架构 1、概念 B/S架构的全称为Browser/Server,即浏览器/服务器结构。Browser指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现,Browser客户端,WebApp服务器端和DB端构成所谓的三层架构。B/S架构的系统无须特别安装,只有Web浏览器即可。 https://cloud.tencent.com/developer/article/1528732
8.>第2章Solaris运行时问题有关文件格式的信息,请参见pam.conf(4) 手册页。 更改分辨率后,屏幕上不显示受信任的窗口条 (6460624) 键入/usr/X11/bin/xrander-s命令设置较小的屏幕分辨率后,不再显示受信任的窗口条。这会影响受信任的 CDE 桌面但不影响受信任的 Java DS 桌面。不会显示任何错误消息。 https://docs.oracle.com/cd/E19253-01/819-7842/6n9ort64h/index.html
9.Awesome你可以假设 s 的最大长度为 1000。(leetcode 5) 本题至少有三种不错的做法 采用动态规划求解:P(i, j) = (P(i + 1, j ? 1) and Si == Sj ) 中心扩展法:回文中心的两侧互为镜像。因此,回文可以从它的中心展开,并且只有 2n - 1 个这样的中心。此处n表示插入元素间隔的...https://github.com/Ty-Chen/Awesome-Backend/blob/5ad253a0f2e82d9b83892a60e01a1e0a855d70b3/Data%20Structure%20and%20Algorithm.md
10.python3.2的新功能—Python3.10.0a4文档有了python 3.2,就有了另一种方法:扩展模块(通过 Py_LIMITED_API 定义 )将自己限制在一个有限的api中)不能使用许多内部构件,而是限制在一组api函数上,这些函数承诺在几个版本中是稳定的。因此,在该模式下为3.2构建的扩展模块也将与3.3、3.4等一起工作。利用内存结构细节的扩展模块仍然可以构建,但是需要为每个功...https://www.osgeo.cn/cpython/whatsnew/3.2.html