数据库表设计

 数据库表设计

分析上述各实体的属性集,从中找出关系的主键,然后用关系式来表示实体(其中下划线的属性为主键)。表4-1至表4-5分别给出了主要表结构各实体的属性如下:

表4-1  admin

表名称 

主要字段

数据类型

长度

属性

输入方式

描述

备注

管理员表

Id

字符串

10

NN

输入

用户名(主键)

 

Name

字符串

50

NN

输入

管理员名字

 

Password

字符串

10

NN

输入

密码

 

备注

用于定义登录系统的管理员,只有获得权限的管理员才能登录。

表4-2  Checkin

表名称 

主要字段

数据类型

长度

属性

输入方式

描述

备注

用户表

Id

字符串

10

NN

输入

用户名(主键)

 

Name

字符串

50

NN

输入

姓名

 

Password

字符串

10

NN

输入

密码

 

备注

用于学生的登录信息,只有注册的学生才能登录系统选课。

表4-3 select_course

表名称 

主要字段

数据类型

长度

属性

输入方式

描述

备注

选课表

ID

字符串

50

NN

生成

用户名(主键)

 

CID

字符串

50

NN

 

课程号(主键)

 

Teacher

字符串

50

NN

 

教师

 

备注

用于定义学生所选的课程,可以存储学生选择的所有课程

表4-4 student_infor

表名称 

主要字段

数据类型

长度

属性

输入方式

描述

备注

学生表

S_id

字符串

8

NN

输入

用户名(主键)

 

S_name

字符串

50

NN

输入

姓名

 

major

字符串

50

NN

选择

专业

 

grade

字符串

50

NN

输入

年级

 

College

字符串

50

NN

输入

学院

 

备注

用于存储学生的基本信息

表4-5 Course

表名称 

主要字段

数据类型

长度

属性

输入方式

描述

备注

课程表

Id

bigint

10

NN

生成

编号(主键)

系统自动生成

CID

字符串

200

NN

输入

课程号

 

Cname

字符串

150

NN

选择

课程名

 

Teacher

字符串

150

NN

选择

教师

 

Place

字符串

150

NN

选择

教室

 

Time

字符串

150

NN

选择

时间

 

Sum

Int

10

NN

输入

总人数

 

Spare

Int

10

NN

输入

剩余人数

 

备注

存储所有开设课程的基本信息

 详细设计

用户公共模块流程图如下图所示:

 

                                            用户流程图

(2)密码修改流程图如下图所示:

 

                         密码修改流程图

密码修改JSP页面,用户选择密码修改连接进入密码修改JSP页面。

          管理员模块

           管理模块主要实现了管理学生信息,课程信息以及对学生选课情况进行统计输出的功能。在此模块中使用了一个框架[17]页面manager.jsp,其代码如下:

<frameset rows="240,*,80" frameborder="no" border="0" framespacing="0">

<frame src="manager/top.jsp" name="top" scrolling="No" noresize="noresize" id="topFrame" />

<frameset cols="*,955,*" frameborder="no" border="0" framespacing="0">

<frame src="manager/main.jsp" name="main" noresize="noresize" id="main" />

</frameset>

<frame src="manager/bottom.jsp" name="bottom" scrolling="No"

noresize="noresize" id="bottomFrame" />

</frameset>

其中topFrame部分用于显示管理模块的主菜单页面top.jsp。

(1)学生管理流程如下图所示:

                                           学生管理流程图

 在top.jsp页面中单击“学生管理”超链接,将进入dis_student.jsp页面,其中显示了所有的学生信息。

在dis_student.jsp页面中单击“新增”超链接,将进入addstudent.jsp页面。

 

主要代码

try

{

ResultSet rt=stmt.executeQuery("select * from student_infor where ID='"+ID+"'");

if(rt.next()){%>

      <script language="javascript">

      alert("数据库库中已有该学生信息,请查询后再添加!");

    location.assign("dis_student.jsp");

    </script>

   

<%}else{

        String sql="insert into student_infor values('"+college+"','"+profession+"','"+class_infor+"','"+ID+"','"+name+"')";

   int result = stmt.executeUpdate(sql); 

String sql1="insert into checkin values('"+ID+"','"+password+"','"+name+"')";

int result1 = stmt.executeUpdate(sql1);

if(result!=0&&result!=0){

     %>

<script language="javascript">      

    location.assign("dis_student.jsp");

    </script>

<%

} }

}

catch(Exception e){out.print(e);

  System.err.println(e.getMessage());

}

(2)课程管理流程如下所示:

 

                                             课程管理流程

在top.jsp页面中单击“课程管理”超链接,将进入dis_Course.jsp页面,其中显示了所有的课程信息信息。

 

在该页面中单击“新增”按钮,将进入到addCourse.jsp页面,此页面主要用于创建新的课程。

 

主要代码

try

{

          String sql="select * from course where time='"+time+"' and place='"+place+"'"; //相同时间里一个教室只能开设一门课程

          ResultSet rt=stmt.executeQuery(sql);

          if(rt.next()){

%>

        <script language="javascript">

      alert("相同时间里此教室已经有课程安排了!");

    location.assign("addcourse.jsp");

    </script>

<%

}else{

        String sql2="insert into course(CID,Cname,teacher,place,time,Sum,spare) values('"+CID+"','"+Cname+"','"+teacher+"','"+place+"','"+time+"','"+Sum+"','"+spare+"')";

int result = stmt.executeUpdate(sql2); 

%>

    <script language="javascript">

      alert("插入课程信息成功!");

    location.assign("dis_course.jsp");

    </script>

<%

}

}

catch(Exception e){out.print(e);

  System.err.println(e.getMessage());

}

%>

(3)退出系统

退出系统是在exit.jsp页面中完成,在该页面中只需将当前的用户会话销毁,并跳出框架返回到项目的首页即可。

学生模块

学生模块中的大部分功能都是由StuUserAction类来完成的,StuUserAction继承了DispatchAction类,是一个Struts的控制器。在StuUserAction类中编写insert()方法,用于向数据库插入学生的基本信息;编写welcome()方法此方法将根据学生编号查询出学生的基本信息,然后返回到学生模块的首页——student.jsp页面;编写exit()方法,该方法将对于退出系统的请求,在该方法中首先将用户会话对象销毁,然后返回项目首页;编写selected()方法,用于查询学生已经选过的课程;编写select()方法,用于查询学生可选的所有课程;编写selctting()方法,用于执行学生选课操作,将学生标号与所选的课程编号关联起来;编写courseInfo()方法,用于查询课程的详细信息。

(2)学生选课页面

在学生模块页面中单击“选课”超链接,程序将调用学生模块控制器类StuUserAction中的select方法将此学生可以选择的所有课程查询出来,然后显示在select.jsp页面中。

 

主要代码:

try

{       ...

   String sql="select * from select_course where ID='"+ID+"' and CID='"+CID+"'";//检查是否选过该课程

    ResultSet rs=stmt.executeQuery(sql);

    String sql3="select * from course where CID='"+CID+"' and teacher='"+teacher+"' and spare>0";//列出还有剩余学生的课程

    ResultSet rst=st.executeQuery(sql3);

if(!rs.next()&&rst.next()){

    String sql1="insert into select_course values('"+ID+"','"+CID+"','"+teacher+"')";

stmt.executeUpdate(sql1);

String sql2="update course set spare=spare-1 where CID='"+CID+"' and teacher='"+teacher+"'";

stmt.executeUpdate(sql2);%>

<script language="javascript">

    alert("恭喜您,选课成功!");

  location.assign("select_course.jsp");

        </script>

<% }else{%>

<script language="javascript">

    alert("你已经选过此课,或者此课没有空余名额,请查询后再选!");

  location.assign("select_course.jsp");

        </script>

<% }

}

catch(Exception e){out.print(e);

  System.err.println(e.getMessage());

}

(3)课程查询及退选页面

Selected.jsp页面用于显示学生已选过的课程信息,学生可以从中查询到自己已经学过哪些课程,正在学习哪些课程及选择退选课程。

 

主要代码

try

{       ......

    String sql1="delete from  select_course where CID='"+CID+"' and ID='"+ID+"'";

stmt.executeUpdate(sql1);

String sql2="update course set spare=spare+1 where CID='"+CID+"' and teacher='"+teacher+"'";//退选的课程人数加1

stmt.executeUpdate(sql2);%>

<script language="javascript">

    alert("恭喜您,退课成功!");

  location.assign("display.jsp");

        </script>

<%}

catch(Exception e){out.print(e);

  System.err.println(e.getMessage());

}

(4)修改密码页面

在登录修改密码页面stuUpdate.jsp中,学生可以修改自己的登录密码,只要输入正确的原始密码即可进行密码修改。密码修改操作通过updatePwd.do请求调用用户模块中的密码修改控制器类UpdatePwdAction进行身份验证以及更新数据库中的旧密码。:

 

主要代码:

try{    ......

if(!(user.ChkLogin(username,oldpassword)))

{%>

<script>

alert("旧密码输入错误,请重新输入.");

window.history.back();

</script>

<% }

else{

       if(user.ModifyPassword(username,newpassword))

          { 

             IsSucceed = "1";

          }

     }

}

catch(Exception e){

out.println("error:"+e.getMessage());

}%>

转载于:https://www.cnblogs.com/wangyayao/p/4575927.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抓包写代码模拟怎么减少重复劳动

由于工作需要会经常需要Fiddler抓包Chrome F12抓包然后根据抓包写代码来模拟&#xff0c;一般来说我都是先抓包&#xff0c;打开postman把抓来的包放到postman里面模拟请求然后利用PostMan的生成代码功能大部分的Reponse都是Json&#xff0c;为了方反列化接着要打开一个在线工具…

机械史上最复杂的巅峰之作,这才是最强大脑!

全世界只有3.14 % 的人关注了爆炸吧知识今天我们来认识一下机械史上最强大脑&#xff1a;英国数学家查尔斯巴贝奇&#xff0c;他是可编程计算机的发明者&#xff0c;计算机的先驱。他设计过的计算机器有差分机、分析机和第二个差分机。差分机可谓是机械史最复杂的巅峰之作。在英…

mybatis-plus 会自动增加 order by_python自动撸支付宝基金答题红包

python自动撸支付宝基金答题红包背景在一个套利撸羊毛群里&#xff0c;一群小伙伴每天在不懈地撸支付宝的基金红包&#xff0c;于是自己也加入了撸红包大军。于是就重复地在不同的基金里面&#xff0c;看有没有答题红包&#xff0c;有的话就点进去&#xff0c;回答一个及其容易…

C# WPF文本框TextEdit不以科学计数法显示

01—前言一个float或者double类型的数值&#xff0c;如果小数点后0的个数≥4&#xff0c;在界面上就会自动以科学计数法显示&#xff0c;比如&#xff1a;0.00003会显示成这样但是很多时候我并不希望它这样显示&#xff0c;因为这样不方便编辑&#xff0c;和界面其它数据格式也…

php 获取浏览器时区,获取用户时区

噜噜哒这将使您将时区作为PHP变量。我使用jQuery和PHP编写了一个函数。这是经过测试的&#xff0c;而且确实有效&#xff01;在希望将时区作为变量的PHP页面上&#xff0c;在页面顶部附近有以下代码片段&#xff1a;<?php session_start();$timezone $_SESSION[time];…

女生说话都是加密的

1 年纪轻轻就能过肩摔普京了&#xff0c;真黑带九段&#xff01;&#xff01;&#xff01;2 第一次知道蒜苔本身是这个样子的。。3 一只来自四川的兔子。。4 不敢自己坐电梯的大宝宝5 去睡沙发吧&#xff01;这里没有你的位置了&#xff01;6 虽然是拒绝但这个回复很棒&#xf…

52Exchange 2010升级到Exchange 2013-升级SH站点Ex2010到2013

20、升级SH站点Ex2010到201320.1 准备Exchange服务器两台前端两台后端的标准架构&#xff0c;准备四台EX2013服务器&#xff0c;已经部署成功&#xff0c;安装方法不再赘述进入到EAC中&#xff0c;可以看到所有EX服务器&#xff0c;包括EX2010和EX201320.2 配置SH-Site前端NLB安…

一问就打鼓,一用就糊涂,是我小看它了

听过一个说法&#xff0c;“10 个程序员里&#xff0c;10 个都说学过网络协议&#xff0c;9 个都说懂网络协议。”&#xff0c;但事实上&#xff0c;能真正轻松应对各个大厂校招/社招相关问题的&#xff0c;可能也就两三个。网络协议的不少问题都给人一种似懂非懂的感觉&#x…

Visio工具 UML的建模

&#xff35;&#xff2d;&#xff2c;描述模型的内容有三种 分别是  事物、关系和图事物有&#xff1a;类&#xff0c;接口&#xff0c;用例&#xff0c;组件&#xff0c;结点&#xff0c;交互&#xff0c;包&#xff0c;注释等类&#xff1a; 类分为三部分&#xff0c;顶部…

php获取qzonetoken,QQ一键登录实现

首先&#xff0c;登录QQ互联平台获取QQ一键登录所需的Appkey和Appsecret。2、下载QQ登录用的SDK软件包&#xff0c;可以上QQ互联官方网下载。这里用的是Connect_PHP_SDK_for_OAuth2_V1.1.zip3、在登录页面放置QQ登录的图标。如functiontoQzoneLogin(){varAwindow.open("oa…

生物系统学中的进化树构建和分析R工具包V.PhyloMaker2的介绍和详细使用

V.PhyloMaker2是一个R语言的工具包&#xff0c;专门用于构建和分析生物系统学中的进化树&#xff08;也称为系统发育树或phylogenetic tree&#xff09;。以下是对V.PhyloMaker2的一些基本介绍和使用说明&#xff1a; 论文介绍&#xff1a;V.PhyloMaker2: An updated and enla…

互联网加大赛历届作品_匠心筑梦 ——家具漆服务系统2020年度涂装大赛成功举办...

时进九月&#xff0c;秋分将至&#xff0c;天气逐渐微凉&#xff0c;展辰新材家具漆2020年度涂装大赛进入最终评审阶段。大赛历时3个月&#xff0c;国内5大区域一百多位技术能手提交了参赛作品&#xff0c;经过层层筛选&#xff0c;最终入围作品175件&#xff0c;是历届参赛作品…

面对女人的喋喋不休时,男人内心的真实想法

1 笑而不语2 击了掌你就是我的狗了。。。。3 每次看猫咪背对着自己舔毛&#xff0c;总有一种饿的感觉。。4 你看对面的那个小朋友可不可爱&#xff0c;快去抱抱他~5 猫咪三明治&#xff0c;感觉很好吃的样子&#xff01;6 看剧的时候真的不能开弹幕&#xff01;你点的每个赞&am…

Dapr牵手.NET学习笔记:绑定

绑定有点像订阅发布&#xff0c;但又不一样&#xff0c;绑定更简单&#xff0c;绑定输出&#xff08;调用方&#xff09;-绑定输入&#xff08;被调用方&#xff09;。本例是用docker compose编排&#xff0c;并且用rabbitMQ来支持&#xff0c;因为rabbitMQ支持输入和输出绑定。…

pytorch 加载模型_福利,PyTorch中文版官方教程来啦(附下载)

PyTorch 中文版官方教程来了。PyTorch 是近期最为火爆的深度学习框架之一&#xff0c;然而其中文版官方教程久久不来。近日&#xff0c;一款完整的 PyTorch 中文版官方教程出炉&#xff0c;读者朋友从中可以更好的学习了解 PyTorch 的相关细节了。教程作者来自 pytorchchina.co…

为什么睡觉时身体突然抖一下?答案吓到我了!

全世界只有3.14 % 的人关注了爆炸吧知识不知你有没有过这样的经历&#xff1a;即将进入甜美梦乡&#xff0c;突然就像触电般地抖了一下&#xff0c;或者不由自主猛地踢一下&#xff0c;瞬间被惊醒&#xff01;这到底是啥情况&#xff1f;网上的答案五花八门&#xff1a;有人说缺…

Dapper防sql注入,同一条SQL支持多种数据库

前言防SQL注入&#xff0c;常用的方案是使用Dapper执行SQL的参数化查询。例如&#xff1a;using (IDbConnection conn CreateConnection()) {string sqlCommandText "SELECT * FROM USERS WHERE IDID";Users user conn.Query<Users>(sqlCommandText, new { …

基于css3的鼠标滑动按钮动画之CSS--续

2019独角兽企业重金招聘Python工程师标准>>> btn2 /*--按钮1--*/ .container1 {width:200px;display:block;margin:20px auto;position:relative;font-family:droid arabic kufi; } .con_down1 {display:block;cursor:pointer;background-color:#F6EB96;width:190px…

rabbitmq入门_Rabbit MQ 入门

Rabbit MQ是一个通用的消息中间件&#xff0c;支持AMQP&#xff0c;STOMP&#xff0c;MQTT等多种协议安装#在OSX下可以使用如下命令来安装 rabbitmqbrew install rabbitmq基本命令#ls -al ~/rabbitmq/3.7.14/sbin/total 1104drwxr-xr-x 10 jet admin 320 May 19 14:35 .d…

94年出生,她们如今都是985高校博士生导师!

全世界只有3.14 % 的人关注了爆炸吧知识鱼羊 萧萧 发自 凹非寺量子位 报道 | 公众号 QbitAI94年出生、博士研究方向与材料相关、目前都成了985重点高校的博士生导师。拥有相同经历的两个女生&#xff0c;概率有多大&#xff1f;就在今年&#xff0c;26岁的夏娟和李晟曼&#xf…