资源描述
学生学号
试验课成绩
武汉理工大学
学 生 实 验 报 告 书
试验课程名称 软件设计和体系结构
开 课 学 院 计算机科学和技术学院
指导老师姓名 陈明俊
学 生 姓 名
学生专业班级 软件1302班
— 年 第 1 学期
试验课程名称: 软件设计和体系结构
试验项目名称
图书管理系统架构设计
试验成绩
试验者
专业班级
软件1302班
组别
同组者
试验日期
10月23日
第一部分:试验分析和设计(可加页)
一、 试验内容描述(问题域描述)
试验目标:
以图书管理系统为例,完成系统架构设计,了解架构设计过程和方法。
试验内容:
1 采取用例驱动分析方法,分析需求关键任务,识别系统中参与者和用例,写出用例文本,建立用例模型。
2 依据1结果,深入建立领域模型(类图),完成静态模型建立。
3 结合某一个具体框架(比如JavaJavaEE,Spring等)设计系统架构,要求采取分层架构和MVC模式,用包图表示架构。
4 依据1,2,3结果设计各层包含类,接口及其交互(类图,次序图等),尽可能在设计中表现OO设计标准,设计模式。
5 完成图书管理系统数据库设计。
二、 试验设计(包含试验方案设计,试验手段确实定,试验步骤,试验过程等,用硬件逻辑或算法描述 )
建立领域模型:
1、从业务描述中提取名词;
2、从提取出来名词中总结业务实体,区分名词中属性、角色、实体、实例,形成问题域中操作实体集合;
3、从业务实体集合中抽象业务模型,建立问题域概念;
4、用UML提供方法和图例进行领域模型设计、确定模型之间关系。注:实体之间关系,关键有泛化、依靠和关联,关联又分了通常关联、聚合、组合等
数据库设计:
1.需求分析阶段:综合各个用户应用需求
2.概念设计阶段:形成独立于机器特点,独立于各个DBMS产品概念模式(E-R图)
3.逻辑设计阶段:首先将E-R图转换成具体数据库产品支持数据模型,如关系模型,形成数据库逻辑模式;然后依据用户处理要求、安全性考虑,在基础表基础上再建立必需视图(View),形成数据外模式
4.物理设计阶段:依据DBMS特点和处理需要,进行物理存放安排,建立索引,形成数据库内模式。
三、 关键仪器设备及耗材
PC机、Microsoft Visio
第二部分:试验调试和结果分析(可加页)
一、调试过程(包含调试方法描述、试验数据统计,试验现象统计,试验过程发觉问题等)
试验输入:
图书管理系统功效性需求:
1 学生持有借书证
2 图书管理员作为借阅者代理完成借阅图书,归还图书和查询借阅信息工作
3 系统管理员完成对系统维护,对系统维护关键包含办理借阅证,删除借阅证,添加管理员,删除管理员,添加图书,删除图书,添加标题信息,删除标题信息
4 图书馆服务对象扩充到老师和学生,学生又分为博士生,硕士,本科生,专科生等,不一样类型对象能够借阅图书数量和期限全部是不一样。
5 图书种类扩充到中外文图书,中外文杂志,论文等。
6 学生和老师能够经过网络进行预约,查询
7 超期罚款,多种类型借出物罚款规则不一样(超期时间要求和罚金全部不一样)
二、试验结果及分析(包含结果描述、试验现象分析、影响原因讨论、综合分析和结论等)
1 用例模型
(1)用例文本:
用例编号:001
用例名称:用户登录
用例描述:用户登录图书馆管理系统
参 和 者:用户
前置条件:图书馆管理系统正常运行
后置条件:用户登录成功
基础路径:
1.用户进入图书馆登录页面
2.用户输入用户名和密码
3.登陆成功
扩 展 点:
变 异 点:
4a.用户输入用户名错误
4a2.用户重新输入用户名。
4b.用户输入密码错误
4b2.用户重新输入密码。
用例编号:002
用例名称:查询信息
用例描述:学生或图书管理员查询学生借阅书籍。
参 和 者:学生,图书管理员
前置条件:图书馆主页面正常运行
后置条件:假如学生信息无误,则查询成功,不然失败。
基础路径:
1.学生在图书管理系统上进行查询;
2.图书管理员对学生个人信息进行查询;
扩展点:
变异点:
3a. 学生向图书管理员提出申请未经过
3a1.用户重新提出申请;
3a2.图书管理员重新审核。
用例编号:003
用例名称:学生借阅图书
用例描述:学生携带图书借阅证进行图书借阅。
参 和 者:学生
前置条件:图书馆正常开放
后置条件:假如学生图书借阅证扫描成功,学生进入图书馆借阅,进行图书借阅等操作;不然,不能借阅图书。
基础路径:
1.学生携带图书借阅证进入图书馆;
2.用户到图书馆查阅相关图书信息;
3.学生向图书管理员提出借阅图书请求;
4.图书管理员检验借阅证有效性;
5.图书管理员检验学生有没有超期未还信息;
6.图书管理员许可学生借阅图书。
7.系统添加借阅信息。
扩展点:
变异点:
2a.学生查阅图书不存在
2a1.学生离开图书馆,或学生搜索其它图书信息;
5a.无法借书
5a1.系统弹出学生图书实际借阅数量超出图书额定借阅数量
5b. 无法借书
5b1.系统显示图书证和学生本人信息不符;
5c. 无法借书
5c1.系统显示学生有超期未还得图书;
5c2.学生归还未还图书并交罚款;
5c3.能够借书。
用例编号:004
用例名称:学生归还图书
用例描述:学生到图书馆归还所借阅图书
参与者:学生
前置条件:图书馆正常开放、学生携带图书借阅证及所需还书。
后置条件:假如归还了图书,下次能够正常借书。
基础路径:
1、学生携带图书借阅证,进入图书馆;
2、学生归还图书;
3、图书管理员检验学生所借图书情况;
4、系统删除学生借阅信息。
扩展点:
3a.图书管理员检验学生借阅图书是否超期
3a1.图书管理员检验学生借阅图书是否损坏
3a2.图书管理员判定学生是否缴纳罚金
变异点:
3a.学生借阅图书超期
3a1.图书管理员依据要求及图书超期情况向学生收取对应罚金;
3b.学生借阅读书已损坏
3ab1.图书管理员依据要求及图书损坏情况向学生收取对应罚金;
用例编号:005
用例名称:更新图书信息
用例描述:图书管理员对新书上架或是图书下架进行处理
参与者:图书管理员
前置条件:图书管理员正常工作
后置条件:图书馆能够正常开放
基础路径:
1.搜集旧书和新书信息
1. 对新书贴条形码;;
2. 把旧书下架
3. 把新书上架;
用例编号:006
用例名称:更新学生信息
用例描述:超级管理员增加或删除学生信息
参与者:超级管理员
前置条件:图书馆开放
后置条件:学生信息没有错误
基础路径:
1. 超级管理员搜集学生信息;
2. 超级管理员增加或删除学生信息
扩展点:
变异点:
2a.学生信息有误
2a1.系统显示无法读出用户信息
用例编号:007
用例名称:处理还书
用例描述:处理学生还书操作。
参与者:图书管理员
前置条件:图书馆开放
后置条件:图书管理系统正常运行
基础路径:
1. 学生发出还书请求;
2. 图书管理员扫描图书条形码;
3. 图书管理员检验图书是否有损坏,若有损坏则要求学生按要求交罚款;
4. 图书管理员检验图书是否超期归还,若是超期还书则要求学生按要求交罚款;
2 领域模型
依据上述用例模型,经一步建立领域模型,以下图1-2:
图1-2 领域模型设计
3 系统架构
使用基于SSH框架三层架构,SSH框架是指Struts+ Hibernate+ Spring三大开源框架技术,用SSH技术进行开发,能够提升开发效率,层次清楚。
Struts实现页面设计和请求跳转调用业务逻辑;Hibernate实现对数据增删改查;Spring经过依靠注入控制对象生成和事务处理。
Struts对Model、View和Controller全部提供了对应组件。Spring是一个轻量级控制反转(IOC)和面向切面(AOP)容器框架,使用基础JavaBean来完成以前只可能由EJB完成事情。 Hibernate是一个开放源代码对象关系映射框架,它对JDBC进行了很轻量级对象封装,能够应用在任何使用JDBC场所,能够在Servlet/JSPWeb应用中使用,完成数据持久化重担。SSH任务分工图1-3-3所表示:
图1-3-3 系统架构
4 系统设计
(1)超级管理员模块
超级管理员能够对系统进行任何操作,关键包含用户管理,角色管理,功效权限管理,菜单管理。超级管理员功效模块图1-4-1所表示:
图1-4-1 超级管理员功效模块
(2)系统功效模块
此系统关键是为了管理员和用户操作,对超级管理员只是在特殊情况下才登录,超级管理员能对系统进行任何操作,所以在功效设计模块里不细讲超级管理员功效实现和页面设计。关键介绍管理员和学生功效实现和页面设计。
图书管理员能够查询、添加、删除、修改图书信息,借阅信息,系统信息;对学生信息能够进行查询,添加,删除,但不能修改学生信息!
学生能够查询图书馆所存图书,借阅情况和基础信息修改。
图书馆管理系统功效图图1-4-2所表示:
图1-4-2 图书馆管理系统功效图
(3)系统登录模块
在本系统中,首先要考虑问题就是登录系统,经过登录系统对用户权限判定,控制不一样权限用户进入不一样面页!超级管理员进行超级管理员页面,管理员进入管理员页面,学生进入学生页面。登录系统步骤图图1-4-3所表示:
图1-4-3 登录模块步骤图
(4)管理员模块
此模块是介绍管理员模块实现,关键是学生信息管理,图书信息管理,借阅信息管理和系统信息管理。在相关步骤图中,就不作对应用户判定,默认为管理员身份登录。进入对应管理员页面,进行相关操作。
1) 学生管理模块
本系统对学生管理包含:添加学生信息、修改学生信息、删除学生信息、查询学生信息。在添加学生信息和修改学生信息时,进行对应验证,关键是必填和唯一性验证。学生信息管理步骤图图1-4-4-5所表示:
图1-4-4-1 学生信息管理步骤图
2) 图书管理模块
图书信息管理包含:添加图书信息、删除图书、修改图书信息、查询图书信息。在添加图书信息和修改图书信息时,进行对应验证,关键是必填和唯一性验证。图书信息管理步骤图图3-5所表示:
图1-4-4-2 图书信息管理步骤图
在添加图书信息和修改图书信息时,也进行了对应必填和唯一性验证。关键是图书编号,书名,作者,借阅情况为必填项,图书编号和书号不能反复。
3) 借阅信息管理模块
学生借阅信息管理,关键是对学生借阅图书和归还图书登记。并判定有没有超期,假如超期,则进行对应罚款。借阅信息管理步骤图图1-4-4-3所表示:
图1-4-4-3 借阅信息管理步骤图
4) 系统管理
系统管理关键是管理员对图书馆信息、工作人员信息和工作安排管理。系统管理模块图1-4-4-4所表示:
图1-4-4-4 系统管理模块
(5)学生模块
学生页面关键包含基础信息,图书信息和借阅信息。下面分别对这三个方面作具体设计:
1) 基础信息
因为学生信息是以表结构展现,表里也含有她人基础信息。为了预防用户能够看到她人基础信息。在查看自己基础信息时,需要输入学号和姓名,而且学号和姓名必填。输入正确则会显示信息,输入有误则查出是空表,没有任何数据。
基础信息步骤图图1-4-5-1所表示:
图1-4-5-1 基础信息步骤图
2) 图书信息
对学生来说,最关心问题其实是怎样方便查询到想要借阅书籍,能够立即了解到图书相关信息。
对图书查询关键有三种查询方法:依据图书编号,书名和图书类型。学生能够依据自己了解情况任选择一个方法。
图书信息步骤图图1-4-5-2所表示:
图1-4-5-2 图书信息步骤图
3) 借阅信息
借阅信息管理包含查询借书信息和还书信息。还书时要判定是否超期,若超期,则进行对应罚款。还能够进行行续借操作。
借阅信息步骤图图1-4-5-3所表示:
图1-4-5-3 借阅信息步骤图
5 数据库设计
1) 超级管理员能够对系统进行任何操作,关键包含角色分配,权限控制,菜单管理,系统管理。超级管理员模块总体E-R图图1-5-1所表示:
图1-5-1 超级管理员模块总体E-R图
2) 权限管理总体E-R图图1-5-2所表示:
图1-5-2 权限管理总体E-R图
3) 用户管理关键包含管理员管理和学生管理,其E-R图图1-5-3所表示:
图1-5-3 用户管理E-R图
4) 学生模块总体E-R图图1-5-4所表示:
图1-5-4 学生模块总体E-R图
5) 管理员模块总体E-R图图1-5-5所表示:
图1-5-5 管理员模块总体E-R图
四、 试验小结、提议及体会
经过此次试验,我完成了上学期图书管理系统系统架构设计,了解了架构设计过程和方法,其中发觉了很多上学期设计中不足,并立即更正。这次试验任务量很大,不过我坚持下来了,正是这么任务量,我从中学到了很多知识,也锻炼了自己!而且队友帮助对我来说也是很关键,以后试验我会继续努力!
试验课程名称: 软件设计和体系结构
试验项目名称
图书管理系统具体设计
试验成绩
试验者
专业班级
软件1302班
组别
同组者
试验日期
11月13日
第一部分:试验分析和设计(可加页)
一、试验内容描述(问题域描述)
试验目标:
以图书管理系统为例,完成系统具体设计,了解具体设计过程和方法,程序运行步骤细节,检验设计合理性。
试验内容:
1 以试验一结果为基础,设计每个具体类数据结构,算法和程序运行步骤。
2 界面元素设计。
3 用代码实现设计结果。
二、试验设计(包含试验方案设计,试验手段确实定,试验步骤,试验过程等,用硬件逻辑或算法描述 )
界面设计标准:
1.简易性:界面简练是要让用户便于使用、便于了解、并能降低用户发生错误选择可能性。
2.用户语言:界面中要使用能反应用户本身语言,而不是游戏设计者语言。
3.记忆负担最小化:人脑不是电脑,在设计界面时必需要考虑人类大脑处理信息程度。人类短期记忆极不稳定、有限,二十四小时内存在25%遗忘率。所以对用户来说,浏览信息要比记忆更轻易。
4.一致性:是每一个优异界面全部含有特点。界面结构必需清楚且一致,风格必需和游戏内容相一致。
5.清楚:在视觉效果上便于了解和使用。
6.用户熟悉程度:用户可经过已掌握知识来使用界面,但不应超出通常常识。
7.从用户见解考虑:想用户所想,做用户所做。用户总是根据她们自己方法了解和使用。
8.排列:一个有序界面能让用户轻松使用。
9.安全性:用户能自由作出选择,且全部选择全部是可逆。在用户作出危险选择时有信息介入系统提醒。
10.灵活性:简单来说就是要让用户方便使用,但不一样于上述。即互动多重性,不局限于单一工具(包含鼠标、键盘或手柄)。
11.人性化:高效率和用户满意度是人性化表现。应含有教授级和初级玩家系统,即用户可依据自己习惯定制界面,并能保留设置。
三、关键仪器设备及耗材
PC机,Microsoft Visio
第二部分:试验调试和结果分析(可加页)
一、调试过程(包含调试方法描述、试验数据统计,试验现象统计,试验过程发觉问题等)
试验输入:
图书管理系统功效性需求:
1 学生持有借书证
2 图书管理员作为借阅者代理完成借阅图书,归还图书和查询借阅信息工作
3 系统管理员完成对系统维护,对系统维护关键包含办理借阅证,删除借阅证,添加管理员,删除管理员,添加图书,删除图书,添加标题信息,删除标题信息
4 图书馆服务对象扩充到老师和学生,学生又分为博士生,硕士,本科生,专科生等,不一样类型对象能够借阅图书数量和期限全部是不一样。
5 图书种类扩充到中外文图书,中外文杂志,论文等。
6 学生和老师能够经过网络进行预约,查询
7 超期罚款,多种类型借出物罚款规则不一样(超期时间要求和罚金全部不一样)
二、试验结果及分析(包含结果描述、试验现象分析、影响原因讨论、综合分析和结论等)
1 界面元素
1) 系统登录页面
系统登录页面关键是用户进入系统验证一个手段,经过登录页面对用户角色判定,依据不一样用户角色,控制不一样功效权限。超级管理员进入超级管理员页面,管理员进入管理员页面,学生进入学生页面。系统登录页面图2-1-1所表示:
图2-1-1 系统登录页面
2) 管理员页面
管理员系统实现页面关键包含对学生信息管理页面,图书信息管理页面,借阅信息管理页面和系统信息管理页面四个方面,下面分别对这四个方面系统实现作相关介绍。管理员系统主页面,图2-1-2所表示:
图2-1-2 管理员页面
a) 学生管理信息页面
本系统对学生管理包含:添加学生信息,修改学生信息、、删除学生信息,查询学生信息。在添加学生信息和修改学生信息时,进行对应验证,关键是必填和唯一性验证。
学生管理主页面,关键是进行学生信息查询,删除学生信息操作。能够经过学院,专业,班级索引进行查询,图2-1-2所表示:
图2-1-2 学生管理信息页面
b) 图书管理信息页面
图书信息管理包含:添加图书信息、删除图书、修改图书信息、查询图书信息。在添加图书信息和修改图书信息时,进行对应验证,关键是必填和唯一性验证。
在进行添加图书信息时,是在图书类型编辑区里进行,先选择对应图书类型,再添加图书信息。图书类型界面图2-1-2-3所表示:
图2-1-2-3 图书类型界面
c) 借阅管理信息页面
学生借阅信息管理,关键是对学生借阅图书和归还图书登记。并判定有没有超期,假如超期,则进行对应罚款。借阅信息是在学生借书或还书时,对学生信息进入编辑。实现页面是经过查询到要借书学生信息,在其借阅信息中增加对应统计,其中学号和姓名为要借书学生学号和姓名,依据学生信息会自动赋值,图书编号为必填项,书名会依据选择图书编号自动生成。距到期天数默认为7天,续借情况默认为否。具体实现图2-1-2-4所表示:
图2-1-2-4 借阅管理信息页面
d) 系统管理信息页面
系统管理关键是管理员对图书馆信息、工作人员信息和部分基础数据录入。
学院信息录入,经过在学院信息主页面新增按钮进入新增编辑页面,学院信息主页面能够对学院信息进行增,删,查。具体实现图2-1-2-5所表示:
图2-1-2-5 学院信息
3) 学生页面
学生页面关键包含基础信息,图书信息和借阅信息。下面分别对这三个方面页面实现作相关介绍。图2-1-3所表示:
图2-1-3 学生页面
a) 基础信息页面
因为学生信息是以表结构展现,表里也含有她人基础信息。为了预防用户能够看到她人基础信息。在查看自己基础信息时,需要输入学号和姓名,而且学号和姓名必填。输入正确则会显示信息,输入有误则查出是空表,没有任何数据。具体图2-1-3-1所表示:
图2-1-3-1 基础信息查询页面
b) 图书信息页面
对图书查询关键有三种查询方法:依据图书编号,书名,图书类型。当然,也能够选择混合查询。学生能够依据自己了解情况任选择一个方法。具体实现图2-1-3-2所表示:
图2-1-3-2 图书信息页面
c) 借还信息页面
图书查询页面能够经过学号和姓名验证来查询用户借阅信息,只有当学号和姓名全部输入正确情况下,才能查询到对应图书借还统计。具体实现图2-1-3-3所表示:
图2-1-3-3 借还信息页面
4) 超级管理员页面
超级管理员页面也就是超级管理操作界面设计,超级管理员能够对系统进行任何操作,关键包含用户管理,角色管理,功效权限管理,菜单管理。下面分别对这四个方面进行介绍:超级管理员页面图2-1-4所表示:
图2-1-4 超级管理员页面
2 代码
部分见附录。
三、试验小结、提议及体会
经过对一个这个小型图书管理系统架构设计和具体设计,将课堂上讲授软件架构和设计理论知识应用到软件开发实际工程中,使得我真正了解和初步掌握面向对象分析和设计基础概念,软件架构设计方法和设计原理,常见架构模式,设计模式,学会了怎样用UML表示设计结果。这次试验任务量对我来说很巨大,也对亏了组队队友帮忙,才能完成这两次试验,让我收获颇丰,谢谢老师!
附录:
源码1(StudentEdit.js)
$(window).ready(function (){
getAcademyPhg();
$('#StudentPhg_edit_academyName_sel').change(function(){
getProfessionPhg();
});
$('#StudentPhg_edit_professionName_sel2').change(function(){
getClassPhg();
});
CheckSex(); //判定性别是否为空!
SetBookName(); //首先判定图书编号是否为空,再进行图书编号和书号拼接
SetStudent();
SaveButton();
})
//取得学院信息
function getAcademyPhg(){
AcademyPhgService.findAcademyPhg({callback:setAcademyPhg, async:false});
}
function setAcademyPhg(dataList){
dwr.util.removeAllOptions("StudentPhg_edit_academyName_sel");
dwr.util.addOptions("StudentPhg_edit_academyName_sel", [""]);
dwr.util.addOptions("StudentPhg_edit_academyName_sel",dataList,"academyName", "academyName");
}
//取得专业信息
function getProfessionPhg(){
var academyName = $("#StudentPhg_edit_academyName_sel").val();
if(!(academyName==""||academyName==null)){
AcademyPhgService.academyPhg(academyName,callback);
}
}
function callback(data){
ProfessionPhgService.professionPhg(data,{callback:setProfessionPhg, async:false});
}
function setProfessionPhg(dataList){
dwr.util.removeAllOptions("StudentPhg_edit_professionName_sel2");
dwr.util.addOptions("StudentPhg_edit_professionName_sel2", [""]);
dwr.util.addOptions("StudentPhg_edit_professionName_sel2",dataList,"professioName", "professioName");
}
//取得班级信息
function getClassPhg(){
var professioName = $("#StudentPhg_edit_professionName_sel2").val();
if(!(professioName==null||professioName=="")){
ProfessionPhgService.selprofessionPhg(professioName,callback2);
}
}
function callback2(data){
ClassPhgService.professionPhg(data,{callback:setClassPhg, async:false});
}
function setClassPhg(dataList){
dwr.util.removeAllOptions("StudentPhg_edit_className_sel3");
dwr.util.addOptions("StudentPhg_edit_className_sel3", [""]);
dwr.util.addOptions("StudentPhg_edit_className_sel3",dataList,"className", "className");
}
//判定性别是否为空!
function CheckSex(){
$('#saveBtnStudentPhg').mousedown(function(){
var sex = $('#StudentPhg_edit_sex_sel4').val();
if(sex==""||sex==null){
alert("性别为 必填项");
}
});
}
//首先判定图书编号是否为空,再进行图书编号和书号拼接
function SetBookName(){
$('#BorrowInfoPhg_edit2_bookCode_as3').blur(function(){
var bookCode = $('#BorrowInfoPhg_edit2_bookCode_as3').val();
if(bookCode==""||bookCode==null){
alert("图书编号为 必填项");
}else{
BookPhgService.loadCheckBook(bookCode,function(fatalist){
var BookPhg = dataList[0];
$('#BorrowInfoPhg_edit2_bookName_text9').val(BookPhg.bookName);
});
}
});
}
//验证图书编号是否为必填
function SaveButton(){
$('#newBtnBorrowInfoPhg').click(function(){
$('#saveBtnStudentPhg').mousedown(function(){
var bookCode = $('#BorrowInfoPhg_edit2_bookCode_as3').val();
if(bookCode==""||bookCode==null){
alert("图书编号为 必填项");
}
});
});
}
//自动设置学号和姓名
function SetStudent(){
$('#newBtnBorrowInfoPhg').blur(function(){
var studentCode = $('#StudentPhg_edit_studentCode_text').val();
var studentName = $('#StudentPhg_edit_studentName_text2').val();
$('#BorrowInfoPhg_edit2_studentCode_text12').val(studentCode);
$('#BorrowInfoPhg_edit2_studentName_text11').val(studentName);
})
}
源码2(AcademyPhgServiceImpl.java)
/**
*经过此方法来判定学院编号和学院名称是否反复
*/
public String addAcademyPhgCheck(String academyCode,String academyName){
String str ="";
AcademyPhg academyPhg = new AcademyPhg();
academyPhg.setAcademyCode(academyCode);
academyPhg.setAcademyName(academyName);
if(super.findByProperty(AcademyPhg.class, AcademyPhgDomain.academyCode,academyCode).isEmpty()){ //判定academyCode值在数据库中是否存在
if(super.findByProperty(AcademyPhg.class, AcademyPhgDomain.academyName,academyName).isEmpty()){ //判定academyName值在数据库中是否存在
academyPhg.setRowStatus(BaseObject.ROWSTATUS_ADDED);
this.addAcademyPhg(academyPhg);
}else{
str = "学院名称输入反复,请重新输入!";
}
}else{
str = "学院编号输入反复,请重新输入!";
}
return str;
}
/**
* 自定义方法,实现联动
*/
@SuppressWarnings("unchecked")
public List<AcademyPhg> findAcademyPhg(){
return super.loadAll(AcademyPhg.class);
}
public String validate(String academyName){
AcademyPhg academyPhg = (AcademyPhg) super.loadAll(AcademyPhg.class, AcademyPhgDomain.academyName, academyName);
return academyPhg.getAcademyPhgId();
}
public AcademyPhg academyPhg (String academyName){
AcademyPhg academyPhg = (AcademyPhg) super.loadByPK(AcademyPhg.class, AcademyPhgDomain.academyName, academyName);
return academyPhg;
}
源 码3(bookTypeEdit.js)
//函数适配器
$(window).ready(function(){
$('#saveBtnBookTypePhg').attr('disabled', true);
Change();
ChangeBack();
Check();
SetTypeName();
})
//经过新增按扭来控制保留按扭
function Change(){
$('#newBtnBookPhg').click(function(){
$('#saveBtnBookTypePhg').attr('disabled', false);
})
}
function SetTypeName(){
$('#newBtnBookPhg').blur(function(){
var bookType = $('#BookTypePhg_edit_typeName_text2').val();
$('#BookPhg_edit2_typeName_text8').val(bookType);
})
}
//当点击保留按钮时,让保留按钮失效
function ChangeBack(){
$('#saveBtnBookTypePhg').click(function(){
$('#saveBtnBookTypePhg').attr('disabled', true);
})
}
//先验证图书编号和书名是否为空,以后经过回调函数,判定图书编号和书名是否已存在.
function Check(){
$('#saveBtnBookTypePhg').mousedown(function(){
var bookCode = $('#BookPhg_edit2_bookCode_text3').val(); //定义变量
var bookName = $('#BookPhg_edit2_bookName_text4').val();
var writer = $('#BookPhg_edit2_writer_text5').val();
if(bookCode==""||bookCode==null){ //判定图书编码是否为空
alert("图书编号为 必填项");
}else{
if(bookName==""||bookName==null){ //判定书名是否为空
alert("书名为 必填项");
}else{
if(writer==""||writer==null){
alert("作者为 必填项");
}else{
BookPhgService.addBookPhgCheck(bookCode,bookName,function(str){ //经过回调函数,获取后台传值,判定学院编码和学院名称是否已存在
if(str==""){
}els
展开阅读全文