本章小结本章主要根据需求分析,实现对了学生、教师、管理员三种角色的不同系统功能的设计。5 系统实现 功能实现在毕业论文管理系统中,登录是整个系统使用的必要条件。用户必须先输入正确的账号和密码才能够进入系统,否则会被提示错误信息。为了确保系统的安全性,系统会进行账号和密码的验证,只有当验证通过后,用户才能够进入相应的页面进行操作。对于学生、教师和管理员,登录后可以进入各自的功能模块。学生可以进行毕业论文选题、论文提交等操作;教师可以进行毕业论文审核、题目发布等操作;管理员可以进行用户管理、题目管理、论文管理等操作。每个用户的权限和操作范围都是有限制的,确保了系统的安全性和合理性。在登录过程中,系统还可以记录用户的登录信息和操作记录,方便管理员进行管理和监控。同时,系统还可以提供自动注销功能,避免用户长时间未操作而造成的安全隐患。登录是整个系统使用的基础,保障了系统的正常运行和数据的安全性。根据系权首先,用户进入系统首页,首页包含学院新闻、在线留言、学生风采等功能。如果想要使用毕业论文管理系统,需要进行登录。不同身份的用户会进入不同的界面。登录过程如图5-1所示:图5-1 登录流程图在登录界面,用户需要输入用户名和密码,点击“登录”按钮后,系统会对输入的信息进行验证。如果验证通过,则用户可以进入系统,使用相应的功能。如果验证不通过,则系统会提示用户重新输入。登录界面的设计需要简洁明了,操作方便,用户体验良好。同时,为了保证系统的安全性,需要对用户输入的用户名和密码进行验证,避免恶意攻击和数据泄露。为了提高系统的可用性和稳定性,需要对登录过程进行严格的测试和调试。该系统采用SSM(Spring + Spring MVC + MyBatis)框架来实现MVC模式[5-6],并通过该框架实现Ajax和Echarts相结合,完成页面展示。其中,Spring框架主要负责IoC和AOP的支持,使得代码的编写更加简单,同时可以提高系统的性能和可维护性;Spring MVC框架负责控制器层的实现,处理用户的请求并返回响应;MyBatis框架负责持久化层的实现,与数据库进行交互。通过这三个框架的协同作用,可以更好地实现系统的功能和性能需求。同时,该系统采用Ajax技术,实现了异步请求和局部刷新,提高了用户体验;采用Echarts技术,实现了数据可视化展示,使得系统的数据更加直观、易于理解。整个系统的运行流程如图5-2所示。图5-2 MVC框架用户发起请求后,一个拦截器会判断权限。如果请求被允许,Spring MVC 的核心 Dispatcher Servlet 开始接收用户请求,通过 配置文件扫描文件下的注解,将请求匹配到对应的控制器中。在控制器中,处理请求的方法会返回一个 ModelAndView 对象,该对象包含了处理请求后需要展示给用户的数据和视图名称。视图名称被解析成真正的视图,并将数据绑定到视图上,最终呈现给用户。MyBatis框架负责连接数据库,执行SQL语句,并将结果映射到Java对象中。通过MyBatis映射器(Mapper)提供的接口,控制器可以与数据库进行交互,获取数据或者将数据存储到数据库中。整个过程是基于Spring框架实现的,Spring提供了一个容器(ApplicationContext),负责管理各个组件(如拦截器、控制器、MyBatis等),并将这些组件协同工作,最终实现请求处理和数据交互。同时,Spring框架也提供了丰富的AOP(Aspect Oriented Programming)功能,用于处理一些横切逻辑(如日志记录、事务管理等)。学生进入选题界面,可以查看选题信息,并可以通过搜索选题编号、工号和姓名来查看详细选题信息。学生可以将选题信息添加到项目申报界面中,在此界面中,学生需要填写题目名称、指导教师、选题来源、研究方向、任务书等信息,并上传任务书文件。完成后,学生需要等待指导教师审核,审核通过后,学生可以进入上传论文的界面。如果审核未通过,学生需要重新修改或选择其他选题进行申报。 功能测试测试的意义在于确定程序的准确性、完整性和安全性,并在运行过程中将预测输出与实际输出进行比较[7]。该程序在受限条件下多次运行,发现程序中的错误并估计设计条件。该系统测试了用户信息添加、修改和删除用户信息等功能。测试是软件开发过程中不可或缺的一部分。测试可以帮助开发人员在程序上线之前发现并解决问题,从而提高程序的质量和稳定性。在本系统中,测试主要集中在用户信息管理模块上,包括添加用户、修改用户信息和删除用户等功能的测试。测试用例包括输入正确的数据、输入错误的数据和输入不合法的数据等情况,以尽可能覆盖所有可能的情况,确保程序在各种情况下都能正常运行。在测试过程中,可以使用不同的工具和技术来辅助测试。例如,可以使用自动化测试工具来执行重复性测试和提高测试效率。同时,可以使用代码覆盖率工具来确定测试是否足够全面,并找出代码中未被覆盖的部分,以便进行进一步测试。该系统的设计预计基本满足要求,可以输入正确的信息,判断错误信息并提示错误信息,因此该毕业论文管理系统通过了测试。测试是软件开发过程中的重要环节,旨在确保软件系统的正确性、完整性和安全性。在测试过程中,可以通过多次操作程序,检测程序中的错误并评估设计条件。在本系统中,测试主要集中在用户信息中添加、修改和删除用户信息的功能上。在测试过程中,系统能够正确识别并处理正确的信息,同时也能够正确地提示错误的信息,并能够对错误的输入进行校验和防止其被存储在系统中。因此,经过测试,该毕业论文管理系统被证明具有良好的可用性和可靠性,可以有效地支持毕业论文的管理和维护,满足用户的需求。6 部分代码展示由于毕业论文管理系统功能相对较为复杂,完整系统涉及到前/后端交互、数据库操作、权限控制等多方面知识,因此展示一个完整的毕业论文管理系统的Java代码存在一定难度。以下仅展示基于java的登录系统代码,包括用户登录和注册功能:// class User {private String username;private String password;private String role;public User(String username, String password, String role) { = username; = password; = role;}public String getUsername() {return username;}public String getPassword() {return password;}public String getRole() {return role;}public void setUsername(String username) { = username;}public void setPassword(String password) { = password;}public void setRole(String role) { = role;}}// interface UserDao {void addUser(User user);User getUser(String username, String password);boolean userExists(String username);}// class UserDaoImpl implements UserDao {private List
csdn上有一个,我看了下,非常好,不过要先注册才能下。
我有基于JAVA的 毕业设计管理与指导平台
仅仅给你个参考//Java Group Project_StudentManagement源码//NetBeans IDE 环境package studentmanager;import .*;import .*;import .*;import .*;import .*;class Student implements {String number,name,specialty,grade,borth,sex;public Student(){};public void setNumber(String number){ ;}public String getNumber(){ return number;}public void setName(String name){ ;}public String getName(){ return name;}public void setSex(String sex){ ;}public String getSex(){ return sex;}public void setSpecialty(String specialty){ ;}public String getSpecialty(){ return specialty;}public void setGrade(String grade){ ;}public String getGrade(){ return grade;}public void setBorth(String borth){ ;}public String getBorth(){ return borth;}}public class StudentManager extends JFrame{JLabel lb=new JLabel("录入请先输入记录,查询、删除请先输入学号,修改是对查询" +"内容改后的保存!");JTextField 学号,姓名,专业,年级,出生;JRadioButton 男,女;ButtonGroup group=null;JButton 录入,查询,删除,修改,显示;JPanel p1,p2,p3,p4,p5,p6,pv,ph;Student 学生=null;Hashtable 学生散列表=null;File file=null;FileInputStream inOne=null;ObjectInputStream inTwo=null;FileOutputStream outOne=null;ObjectOutputStream outTwo=null;public StudentManager(){super("学生基本信息管理系统");学号=new JTextField(10);姓名=new JTextField(10);专业=new JTextField(10);年级=new JTextField(10);出生=new JTextField(10);group=new ButtonGroup();男=new JRadioButton("男",true);女=new JRadioButton("女",false);(男);(女);录入=new JButton("录入");查询=new JButton("查询");删除=new JButton("删除");修改=new JButton("修改");显示=new JButton("显示");录入.addActionListener(new InputAct());查询.addActionListener(new InquestAct());修改.addActionListener(new ModifyAct());删除.addActionListener(new DeleteAct());显示.addActionListener(new ShowAct());修改.setEnabled(false);p1=new JPanel();(new JLabel("学号:",));(学号);p2=new JPanel();(new JLabel("姓名:",));(姓名);p3=new JPanel();(new JLabel("性别:",));(男);(女);p4=new JPanel();(new JLabel("专业:",));(专业);p5=new JPanel();(new JLabel("年级:",));(年级);p6=new JPanel();(new JLabel("出生:",));(出生);pv=new JPanel();(new GridLayout(6,1));(p1);(p2);(p3);(p4);(p5);(p6);ph=new JPanel();(录入);(查询);(修改);(删除);(显示);file=new File("学生信息.txt");学生散列表=new Hashtable();if(!()){try{FileOutputStream out=new FileOutputStream(file);ObjectOutputStream objectOut=new ObjectOutputStream(out);(学生散列表);();();}catch(IOException e){}}Container con=getContentPane();(new BorderLayout());(lb, );(pv, );(ph, );setDefaultCloseOperation(EXIT_ON_CLOSE);setBounds(100,100,600,300);setVisible(true);}public static void main(String[] args) {new StudentManager();}class InputAct implements ActionListener{public void actionPerformed(ActionEvent e){修改.setEnabled(false);String number="";number=学号.getText();if(()>0){try{inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);学生散列表=(Hashtable)();();();}catch(Exception ee){("创建散列表出现问题!");}if(学生散列表.containsKey(number)){String warning="该生信息已存在,请到修改页面修改!";(null,warning,"警告",);}//end if1else{String m="该生信息将被录入!";int ok=(null,m,"确认",);if(ok==){String name=姓名.getText();String specialty=专业.getText();String grade=年级.getText();String borth=出生.getText();String sex=null;if(男.isSelected()){sex=男.getText();}else{sex=女.getText();}学生=new Student();学生.setNumber(number);学生.setName(name);学生.setSpecialty(specialty);学生.setGrade(grade);学生.setBorth(borth);学生.setSex(sex);try{outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);学生散列表.put(number,学生);(学生散列表);();();}catch(Exception ee){("输出散列表出现问题!");}学号.setText(null);姓名.setText(null);专业.setText(null);年级.setText(null);出生.setText(null);}}//end else1}//end if0else{String warning="必须输入学号!";(null,warning,"警告",);}//end else0}//end actionPerformed}//end classclass InquestAct implements ActionListener{public void actionPerformed(ActionEvent e){String number="";number=学号.getText();if(()>0){try{inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);学生散列表=(Hashtable)();();();}catch(Exception ee){("散列表有问题!");}if(学生散列表.containsKey(number)){修改.setEnabled(true);Student stu=(Student)学生散列表.get(number);姓名.setText(());专业.setText(());年级.setText(());出生.setText(());if(().equals("男")){男.setSelected(true);}else{女.setSelected(true);}}else{修改.setEnabled(false);String warning="该学号不存在!";(null,warning,"警告",);}}else{修改.setEnabled(false);String warning="必须输入学号!";(null,warning,"警告",);}}}class ModifyAct implements ActionListener{public void actionPerformed(ActionEvent e){String number=学号.getText();String name=姓名.getText();String specialty=专业.getText();String grade=年级.getText();String borth=出生.getText();String sex=null;if(男.isSelected()){sex=男.getText();}else{sex=女.getText();}Student 学生=new Student();学生.setNumber(number);学生.setName(name);学生.setSpecialty(specialty);学生.setGrade(grade);学生.setBorth(borth);学生.setSex(sex);try{outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);学生散列表.put(number, 学生);(学生散列表);();();学号.setText(null);姓名.setText(null);专业.setText(null);年级.setText(null);出生.setText(null);}catch(Exception ee){("录入修改出现异常!");修改.setEnabled(false);}}}class DeleteAct implements ActionListener{public void actionPerformed(ActionEvent e){修改.setEnabled(false);String number=学号.getText();if(()>0){try{inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);学生散列表=(Hashtable)();();();}catch(Exception ee){}if(学生散列表.containsKey(number)){Student stu=(Student)学生散列表.get(number);姓名.setText(());专业.setText(());年级.setText(());出生.setText(());if(().equals("男")){男.setSelected(true);}else{女.setSelected(true);}}String m="确定要删除该学生的记录吗?";int ok=(null,m,"确认",);if(ok==){学生散列表.remove(number);try{outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);(学生散列表);();();学号.setText(null);姓名.setText(null);专业.setText(null);年级.setText(null);出生.setText(null);}catch(Exception ee){(ee);}}else if(ok==){学号.setText(null);姓名.setText(null);专业.setText(null);年级.setText(null);出生.setText(null);}else{String warning="该学号不存在!";(null,warning,"警告",);}}else{String warning="必须输入学号!";(null,warning,"警告",);}}}class ShowAct implements ActionListener{public void actionPerformed(ActionEvent e){new StudentShow(file);}}class StudentShow extends JDialog{Hashtable 学生散列表= null;JTextArea 显示=null;FileInputStream inOne=null;ObjectInputStream inTwo=null;File file=null;public StudentShow(File file){super(new JFrame(),"显示对话框");;显示=new JTextArea(16,30);try{inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);学生散列表=(Hashtable)();();();}catch(Exception ee){}if(学生散列表.isEmpty())显示.append("目前还没有学生的信息记录!\n");else{显示.setText("学号 姓名 性别 专业 年级 出生\n");for(Enumeration enm=学生散列表.elements();();){Student stu=(Student)();String sex="";if(().equals("男"))sex="男";else sex="女";String str=()+","+()+","+sex+","+()+","+()+","+()+"\n";显示.append(str);}}JScrollPane scroll=new JScrollPane(显示);Container con=getContentPane();("Center",scroll);();setVisible(true);setBounds(200,200,400,300);addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){setVisible(false);}});}}}
1. JAVA网络通信系统的研究与开发 2. 本地监听与远程端口扫描的设计与开发 3. 基于Misty1算法的加密软件(Java)的实现 4. 论文格式化系统——后台模块的设计与实现 5. Web音乐搜索软件的设计与实现 6. 基于J2EE酒店管理系统设计与实现 7. 局域网监听软件的设计与开发 8. 网上考试及评析系统的设计与实现 9. 基于J2EE的公交查询系统的设计与实现 10. 面向Internet上的CSCW的共享白板的设计与实现 11. 基于Java的两个通用安全模块的设计与实现 12. 基于J2ME平台的掌上网络商店——客户端的开发 13. 银行帐目管理系统 14. 某百货店POS积分管理系统--积分点更新生成以及通票回收处理 15. 基于j2me平台的掌上网络商店-服务器端开发 16. EIMS系统-OA子系统的设计与开发 17. SMART系统—系统功能管理模块设计与开发 18. J2ME手机游戏的开发-Beckham Goa 19. 手机游戏(堡垒)的设计与开发 20. 一个简单的即时通讯工具的设计与开发 21. 泡泡堂网络游戏的设计与实现 22. 五子棋手机网络对战游戏的设计与实现 23. 机主留言功能在“全时通”系统上的实现 24. 某店POS积分管理系统——积分失效与数据分析模块的实现 25. B/S结构下的邮件系统的设计与开发 26. 在线考试系统的设计与实现 27. 基于JAVA C/S远程监控系统软件的实现 28. Java多线程与线程安全实践——基于Http协议的断点续传 29. 高校学生工作管理系统的设计与开发 30. 基于Java的五子棋游戏的设计 31. 文件压缩与解压缩实践 32. WML信息查询与后端信息发布系统实现——WML信息查询设计 33. FTP客户端软件的设计与实现 34. 基于Java ME无线网络移动端的俄罗斯方块游戏的实现 35. Java论坛管理系统 36. 离散数学题库管理系统 37. 基于Java3D的网络三维技术的设计与实现 38. 基于Java的在线购物系统的设计与实现 39. J2ME贪吃蛇游戏的设计 40. 在线考试 41. 办公自动化系统 42. Java Applet研究与应用——综合测评系统 43. 打飞机游戏毕业设计
1 前言 4 目的 4 范围 4 有关本系统中的定义 4 2 资料引用 4 3 设计思路 4 数据层设计 5 user_book表的触发器 5 用户续借图书的存储过程 6 到期催还表的视图 7 数据链接层设计 8 UserBook Entity Bean设计 9 UserConsumer Entity Bean设计 10 UserLogBook Entity Bean设计 11 数据逻辑层设计 12 TheBook Session Bean设计 13 TheUser Session Bean设计 14 TheLog Session Bean设计 15 网络应用层设计 15 CheckValue bean 16 EnCode bean 16 JDBCBean bean 16 Rank bean 16 SetUp bean 16 SplitPage bean 17 UserLogin bean 17 SearchBook bean 17 SearchDeadline bean 17 ValidateIMG servlet 17 GetDelete servlet servlet 17 GetBookSubmit servlet 18 GetUserSubmit servlet 18 GetRenewBook servlet 18 GetBorrowBook servlet 18 GetReturnBook servlet 18 4 程序架构 18 程序组织结构 18 功能权限划分 20 WEB程序/页面设计 21 本系统实现的功能 22 5 任务分工 22 1 前言 目的 本文档详细描述了图书管理系统的设计,主要是为开发人员提供,使其对本项目的构建和维护有深入的了解。 范围 本文档的描述只针对图书管理系统的版本。 有关本系统中的定义 以下是本说明书中用到的专门术语的定义和外文首字母组词的原词组: 术语或缩写 定义与描述 booksManager 本系统的名称 Reader 系统权限:普通读者 BookAdmin 系统权限:图书管理员 UserAdmin 系统权限:用户管理员 SuperAdmin 系统权限:超级管理员(系统管理员) Undergraduate 系统用户角色:本科生 Graduate 系统用户角色:研究生 Teacher 系统用户角色:教师 2 资料引用 清华大学《应用软件平台与核心技术》讲义 顾明 清华大学《应用软件平台与核心技术》助教文档 张伟业、魏岚、陈勇、林彩荣 《精通EJB(第二版)》 《J2EE应用与BEA Web Logic Server》,刑国庆等译,电子工业出版社 《设计模式——可复用面向对象软件的基础》,Erich Gamma等,机械工业出版社 3 设计思路 本系统严格按照4层结构设计,分为数据层(SQL server),数据链接层(entity bean),数据逻辑层(session bean),网络应用层(java bean, java servlet, java serverpage)。 四层之间完全独立,可以部署在四台服务器上运行,体现了分布式应用的思想。 数据层的功能严格来说是实现基本的数据存储(逻辑处理功能应该全部交给CMP管理),但因为学习原因,在数据库中也用到了一些逻辑处理,如使用了存储过程+系统级临时表处理读者续借图书的功能、使用触发器防止未还书的用户和未归还的图书被注销以及使用视图检测借书记录实现到期催还功能。 数据链接层实现了和数据库的连接,作用在于屏蔽数据库和平台之间的差异,做到底层无关性。本层利用了模糊查找、多表映射、Relationship等技术,通过find,select方法数据的查找功能,抛出聚集对象或远程接口对象给下一层。 数据逻辑层实现了对数据的逻辑处理,例如将远程接口对象转化为值对象、将聚集对象转化为值对象向量、利用日期类完成查找两个特定日期之间的记录等相对复杂的计算。 网络应用层完成页面跳转和页面显示等应用功能,还有一些附加功能如:图片验证,登录验证,等级控制,代码过滤,分页控制,输入值检测、借书日志打印、系统运行日志记录以及系统设置等。(使用了JDBC实现存储过程和模糊查找图书的功能) 数据层设计 数据库表 表名 功能描述 user_consumer 记录了用户的所有信息 user_book 记录了图书的所有信息 user_logBook 记录了用户使用本系统的信息,保留了所有的借书记录,可作为系统日志和报表资料 user_book表的触发器 用到的触发器之一,作用:如果要注销的图书被外借没有归还,则回滚此删除操作。 CREATE TRIGGER bookhavelog ON FOR DELETE AS declare @bookISBN varchar(50) select @bookISBN=book_ISBN from deleted if exists(select * from user_logBook where logb_book_ISBN=@bookISBN and logb_backdate is null) begin rollback return end 用户续借图书的存储过程 利用存储过程实现用户续借图书的逻辑操作,根据用户的当前信息判断其是否有续借的权限,并把处理结果输出到临时表中去。 CREATE PROCEDURE user_renew_book @xxxparm int AS CREATE TABLE ##temp(statement varchar(50)) DECLARE @username varchar(50) SET @username=(select logb_cons_username from user_logBook where ID=@xxxparm) IF @username is null BEGIN INSERT INTO ##temp VALUES ('The ID is not EXIST') RETURN END DECLARE @timelimit int SET @timelimit=(select logb_timelimit from user_logBook where ID=@xxxparm) DECLARE @renewday int SET @renewday=(select cons_maxday from user_consumer where cons_username=@username) DECLARE @maxrenew int SET @maxrenew=(select cons_maxrenew from user_consumer where cons_username=@username) IF (@renewday*@maxrenew)>=@timelimit BEGIN update user_logBook set logb_timelimit=logb_timelimit+@renewday where ID=@xxxparm --update user_consumer set cons_maxrenews=cons_maxrenews-1 where cons_username=@username INSERT INTO ##temp VALUES ('renew successful') RETURN END ELSE BEGIN INSERT INTO ##temp VALUES ('You are not allowed to renew the book') RETURN END GO 到期催还表的视图 利用DATEDIFF,DATEADD,CAST,GETDATE等函数从借书记录表中计算出到期的记录,然后根据此记录找出相应的读者信息,在网页上以email形式催还。 CREATE VIEW AS SELECT TOP 100 PERCENT , , DATEADD([day], , CAST( AS datetime)) AS deadline_date, GETDATE() AS now_date, , , , , , , , , , , , FROM INNER JOIN ON = INNER JOIN ON = WHERE (DATEDIFF([day], DATEADD([day], , CAST( AS datetime)), GETDATE()) >= 0) AND ( IS NULL) ORDER BY DESC 数据链接层设计 entity bean UserBook Entity Bean设计 userbook remotehome接口 方法 描述 findAllBook 得到所有的图书信息 findByISBN 通过图书的书号得到图书的信息 findSearcher 利用关键字模糊查找图书信息 selectUserByBookISBN (userbook remote) 利用select方法实现多表相关的查找 findSearcher实现模糊查找的代码: select object(p) from UserBook as p where like concat(concat('%',?1),'%') or like ?1 or like ?1 or like ?1 or like ?1 or like concat(concat('%',?1),'%') or like ?1 UserConsumer Entity Bean设计 UserConsumer remotehome接口 方法 描述 findAllUser 查找所有的用户信息 findByUsername 通过用户名查找用户信息 findSearcher 利用关键字模糊查找用户信息 selectBookByUsername (userconsumer remote) 利用select方法实现多表相关的查找 findSearcher实现模糊查找的代码: select object(p) from UserConsumer as p where like concat(concat('%',?1),'%') or like ?1 or like concat(concat('%',?1),'%') or like ?1 or like ?1 UserLogBook Entity Bean设计 UserLogBook remotehome接口 方法 描述 findallbybookISBN 查找此书所有的借阅记录 findbybookISBN 查找此书当前的借出记录 findallbyusername 查找此用户所有的借阅记录 findbyusername 查找此用户当前的借出书记录 findbacklog 得到所有已经归还图书的借书记录 findoutlog 得到所有尚未归还图书的借书记录 findbyID 通过记录流水号查找借书记录 findlogbyday 查找某一日期的借书记录 (模糊匹配,例如提交“2004-5”可得到最终记录时间——借阅或归还在2004年5月份的所有借书记录) findallog 得到所有的借书记录 FindLogByDay通过模糊匹配得到一组最终记录时间的代码: select object(p) from UserLogBook as p where ( is null and like concat(concat('%',?1),'%') ) or ( is not null and like concat(concat('%',?1),'%') ) 数据逻辑层设计 session bean TheBook Session Bean设计 TheBook bean 实现图书的增删改查以及模糊搜索、通过书查读者等功能 方法内部实现所有的逻辑处理和转化,返回到远程接口值对象或值对象向量 TheUser Session Bean设计 TheUser bean 实现用户(读者)的增删改查以及模糊搜索、通过读者查书等功能 方法内部实现所有的逻辑处理和转化,返回到远程接口值对象或值对象向量 TheLog Session Bean设计 TheLog bean 主要实现对日志(借书记录)的各项操作,提供多种获得日志的方法(按读者、按图书、按日期、按借还状态等),方法内部实现所有的逻辑处理和转化,返回到远程接口值对象或值对象向量,另外还有如下方法: 方法 功能 public boolean userBorrowBook(String username, String bookISBN) 以一个事务封装读者借书的所有逻辑操作,借书成功返回真值,无法借书返回假值,调用enCode bean对中文进行转码 public boolean userReturnBook(String logbid) 以一个事务封装读者还书的所有逻辑操作,即实现使一笔借书记录销账的功能,调用enCode bean对中文进行转码 public Vector showLogBetweenDays(String dayBegin, String dayEnd) 返回两个日期之间的所有日志,主要利用Calendar类实现 网络应用层设计 本层本着面向对象思想的封装性、数据模糊性、可重用性等原则设计。 本着系统运行错误在系统中打印()、用户输入和误操作错误导向友好的错误处理页并给出友好的提示的错误处理原则。 每次对会话bean的调用写入系统运行日志文件,默认路径是C:\\。 CheckValue bean 封装多个静态方法。 可以用于检测某表中某个字段是否已经存在某个值(可用于检测重名用户、重号图书)、检测用户名合法性、检测密码合法性、检测年龄合法性、检测电子邮件合法性、检测数字合法性、检测日期合法性等。 EnCode bean 封装编码转码工作: html显示转码,例如:将<转为<,将>转为&rt;,将数据库中的换行转为html中的换行等等,这样可以屏蔽用户提交文本中的可执行代码。 可重载的中文转码。 密码的加密和解密编码。 JDBCBean bean 封装所有的数据库操作。包括一个带结果集返回的SQL执行方法和一个不带结果集返回的SQL执行方法。 Rank bean 封装4种权限(普通读者、用户管理员、图书管理员、系统管理员)的页面访问,相当于页面加锁功能。 SetUp bean public static String title="SuperLibrary";//系统名称 public static String dbS="booksManagerDS";//数据库的JNDI名 public static String errorPage="";//友好的错误处理页,用get方法传递出错原因 public static String homePage="";//默认首页 //权限------------------------------------------------------------------------- public static String Reader="Reader";//读者 public static String UserAdmin="UserAdmin";//用户管理员 public static String BookAdmin="BookAdmin";//图书管理员 public static String SuperAdmin="SuperAdmin";//系统管理员 //等级------------------------------------------------------------------------- public static String Undergraduate="Undergraduate";//本科生 public static int UndergraduateRenew=1;//本科生可续借的次数 public static int UndergraduateMaxday=30;//本科生一次可借的天数 public static String Graduate="Graduate";//研究生 public static int GraduateRenew=2;//研究生可续借的次数 public static int GraduateMaxday=45;//研究生一次可借的天数 public static String Teacher="Teacher";//教师 public static int TeacherRenew=3;//教师可续借的次数 public static int TeacherMaxday=60;//教师一次可借的天数 //---------------------------------------------------------------------------- public static int rsPerPage=5;//每页显示记录的数量 public static int minBooks=4;//系统默认的最小借书数 SplitPage bean 将数据记录分页的逻辑实现和页面显示(最简,可在外部由样式表美化)封装在一个bean中,重用时实际只需要传递一个记录集数量的为参数即可,可重用。一般作为session级java bean在页面中被调用,在会话中保存用户对此页面的访问状态,在会话结束之前始终记忆用户访问此页对应的页码。 UserLogin bean 将用户登录的逻辑实现和页面显示(最简,可在外部由样式表美化)封装在一个bean中,包括对用户各种登录情况的处理,可重用。 SearchBook bean 利用JDBC实现模糊查找和按指定类别精确查找图书的功能。 SearchDeadline bean 利用JDBC调用视图实现到期图书的催还功能。 ValidateIMG servlet 动态生成含有随机验证码的图片,在生成图片的同时将验证码写入session中,与用户的登录输入比较。可有效的防止机器人登录。 GetDelete servlet servlet 处理图书、用户、日志的注销操作,根据返回值进行相应页面的跳转。 GetBookSubmit servlet 处理图书的入库和图书信息的修改,根据返回值进行相应页面的跳转。 GetUserSubmit servlet 处理用户的注册和用户信息的修改,根据返回值进行相应页面的跳转。 GetRenewBook servlet 处理用户续借图书的请求(JDBC调用存储过程实现),从系统临时表中读取状态值,根据状态值进行相应页面的跳转。 GetBorrowBook servlet 处理用户的借书请求,将用户借书限额已满、库存为零等错误导向友好的错误页,如果借书成功则跳转到图书信息页面,并给与相应的提示。 GetReturnBook servlet 处理用户的还书请求,如果还书成功则跳转到用户的借书记录页面,并给与相应的提示。 4 程序架构 程序组织结构 说明:图书搜索和用户登录看作系统外部功能,通过JDBC直接调用数据库,其中用户登录模块封装在一个java bean中,可重用。另外,用户续借图书是通过存储过程实现,从而绕过了使用CMP技术管理事务的实体bean。 本系统其余程序的组织结构严格按照下图实现: 程序组织结构图 功能权限划分 站点页面地图 权限名称 系统定义字符 权限 可访问页面 普通读者 Reader 查看自己的信息(还书、续借); 修改自己的信息; 查看图书(借书); userModify userView booklist 图书管理员 BookAdmin 拥有普通读者的权限; 图书的增删改查; 到期催还; userModify userView booklist bookAdder bookModify deadline 用户管理员 UserAdmin 拥有普通读者的权限; 用户的增删改查; userModify userView booklist userRegister userModify userList 系统管理员 SuperAdmin 拥有图书管理员和用户管理员的权限; 查看系统日志; 删除系统日志; 系统设置; 包括(系统设置,利用application级java bean控制整个应用程序)在内的所有页面 WEB程序/页面设计 利用代码关闭客户端的输入法,实现用户名、密码不能出现中文的问题。 利用onfocus=() onmouseover=()代码使文本框自动吸附获得焦点,方便用户输入。 利用WMODE="transparent"参数使flash的背景透明,更好的融入网页。 在每页中,利用代码: 嵌入上下导航条,使网站导航明确,方便用户浏览。 在网页头部加入代码: 使客户端不缓存网页,保证了客户每次浏览该页都从服务器获得最新的版本,以求正确显示。 提供智能搜索(获得尽可能多的匹配)和精确搜索(获得尽可能精确的匹配)图书,服务器端编程都采用模糊查找的方式。 在客户端用javascript对表单提交进行第一次验码,通过后提交到服务器端,再进行第二次验码,验码包括:用户名是否重复、年龄是不是合适的数字,两次密码输入的是否一致、电子邮件是否合法、密码是否太短、用户名是否太短、用户名密码是否为空等等。 利用随机生成JPG图片验证码的方法,防止机器人登录。 在页面中使用session级java bean实现分页,在会话中保存用户对此页面的访问状态,在会话结束之前始终记忆用户访问此页对应的页码。 在页面中使用application级java bean实现安全的系统设置,当服务器启动后,即可对系统运行参数进行应用程序级的设置,只要服务器不关闭,此设置始终有效且作用于所有用户,如果设置不慎造成系统错误或想恢复系统默认设置,则只需重新启动服务器即可。 在对会话bean的调用包ejbClient中,创建系统运行日志,通过包中的writeF类写入web服务器的C:\\中,可做查询用。 本系统实现的功能 确定图书的基本信息,有书名、作者、出版日期、当前借阅状态等属性 系统的使用者包括读者、图书管理员、用户管理员、系统管理员四种 读者可以查询图书;图书管理员可以完成图书管理、借阅管理;读者管理员可以完成读者管理的功能;系统管理员可以使用系统的所有功能 图书管理:新书登记,图书查询,图书注销; 借阅管理:借书,还书,查询到期读者 读者管理:增加读者、删除读者、查询读者、读者类别管理(设置研究生,本科生,教师的可借册数,可借天数,可续借次数等) 系统管理:系统管理员使用,包括用户权限管理(增加用户,删除用户,密码修改等),系统借书日志,系统运行日志,系统设置等功能 页面输入有验码,密码存取有加密 图书到期催还 体现分层设计思想,使用MVC架构 实现了多个Beans,Bean之间实现了对应的关系 使用了EJB QL,事务控制等 使用了jsp->sessionBean->entityBean->数据库模式 数据库使用了触发器和存储过程等一些高级技术
仅仅给你个参考//Java Group Project_StudentManagement源码//NetBeans IDE 环境package studentmanager;import .*;import .*;import .*;import .*;import .*;class Student implements {String number,name,specialty,grade,borth,sex;public Student(){};public void setNumber(String number){ ;}public String getNumber(){ return number;}public void setName(String name){ ;}public String getName(){ return name;}public void setSex(String sex){ ;}public String getSex(){ return sex;}public void setSpecialty(String specialty){ ;}public String getSpecialty(){ return specialty;}public void setGrade(String grade){ ;}public String getGrade(){ return grade;}public void setBorth(String borth){ ;}public String getBorth(){ return borth;}}public class StudentManager extends JFrame{JLabel lb=new JLabel("录入请先输入记录,查询、删除请先输入学号,修改是对查询" +"内容改后的保存!");JTextField 学号,姓名,专业,年级,出生;JRadioButton 男,女;ButtonGroup group=null;JButton 录入,查询,删除,修改,显示;JPanel p1,p2,p3,p4,p5,p6,pv,ph;Student 学生=null;Hashtable 学生散列表=null;File file=null;FileInputStream inOne=null;ObjectInputStream inTwo=null;FileOutputStream outOne=null;ObjectOutputStream outTwo=null;public StudentManager(){super("学生基本信息管理系统");学号=new JTextField(10);姓名=new JTextField(10);专业=new JTextField(10);年级=new JTextField(10);出生=new JTextField(10);group=new ButtonGroup();男=new JRadioButton("男",true);女=new JRadioButton("女",false);(男);(女);录入=new JButton("录入");查询=new JButton("查询");删除=new JButton("删除");修改=new JButton("修改");显示=new JButton("显示");录入.addActionListener(new InputAct());查询.addActionListener(new InquestAct());修改.addActionListener(new ModifyAct());删除.addActionListener(new DeleteAct());显示.addActionListener(new ShowAct());修改.setEnabled(false);p1=new JPanel();(new JLabel("学号:",));(学号);p2=new JPanel();(new JLabel("姓名:",));(姓名);p3=new JPanel();(new JLabel("性别:",));(男);(女);p4=new JPanel();(new JLabel("专业:",));(专业);p5=new JPanel();(new JLabel("年级:",));(年级);p6=new JPanel();(new JLabel("出生:",));(出生);pv=new JPanel();(new GridLayout(6,1));(p1);(p2);(p3);(p4);(p5);(p6);ph=new JPanel();(录入);(查询);(修改);(删除);(显示);file=new File("学生信息.txt");学生散列表=new Hashtable();if(!()){try{FileOutputStream out=new FileOutputStream(file);ObjectOutputStream objectOut=new ObjectOutputStream(out);(学生散列表);();();}catch(IOException e){}}Container con=getContentPane();(new BorderLayout());(lb, );(pv, );(ph, );setDefaultCloseOperation(EXIT_ON_CLOSE);setBounds(100,100,600,300);setVisible(true);}public static void main(String[] args) {new StudentManager();}class InputAct implements ActionListener{public void actionPerformed(ActionEvent e){修改.setEnabled(false);String number="";number=学号.getText();if(()>0){try{inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);学生散列表=(Hashtable)();();();}catch(Exception ee){("创建散列表出现问题!");}if(学生散列表.containsKey(number)){String warning="该生信息已存在,请到修改页面修改!";(null,warning,"警告",);}//end if1else{String m="该生信息将被录入!";int ok=(null,m,"确认",);if(ok==){String name=姓名.getText();String specialty=专业.getText();String grade=年级.getText();String borth=出生.getText();String sex=null;if(男.isSelected()){sex=男.getText();}else{sex=女.getText();}学生=new Student();学生.setNumber(number);学生.setName(name);学生.setSpecialty(specialty);学生.setGrade(grade);学生.setBorth(borth);学生.setSex(sex);try{outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);学生散列表.put(number,学生);(学生散列表);();();}catch(Exception ee){("输出散列表出现问题!");}学号.setText(null);姓名.setText(null);专业.setText(null);年级.setText(null);出生.setText(null);}}//end else1}//end if0else{String warning="必须输入学号!";(null,warning,"警告",);}//end else0}//end actionPerformed}//end classclass InquestAct implements ActionListener{public void actionPerformed(ActionEvent e){String number="";number=学号.getText();if(()>0){try{inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);学生散列表=(Hashtable)();();();}catch(Exception ee){("散列表有问题!");}if(学生散列表.containsKey(number)){修改.setEnabled(true);Student stu=(Student)学生散列表.get(number);姓名.setText(());专业.setText(());年级.setText(());出生.setText(());if(().equals("男")){男.setSelected(true);}else{女.setSelected(true);}}else{修改.setEnabled(false);String warning="该学号不存在!";(null,warning,"警告",);}}else{修改.setEnabled(false);String warning="必须输入学号!";(null,warning,"警告",);}}}class ModifyAct implements ActionListener{public void actionPerformed(ActionEvent e){String number=学号.getText();String name=姓名.getText();String specialty=专业.getText();String grade=年级.getText();String borth=出生.getText();String sex=null;if(男.isSelected()){sex=男.getText();}else{sex=女.getText();}Student 学生=new Student();学生.setNumber(number);学生.setName(name);学生.setSpecialty(specialty);学生.setGrade(grade);学生.setBorth(borth);学生.setSex(sex);try{outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);学生散列表.put(number, 学生);(学生散列表);();();学号.setText(null);姓名.setText(null);专业.setText(null);年级.setText(null);出生.setText(null);}catch(Exception ee){("录入修改出现异常!");修改.setEnabled(false);}}}class DeleteAct implements ActionListener{public void actionPerformed(ActionEvent e){修改.setEnabled(false);String number=学号.getText();if(()>0){try{inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);学生散列表=(Hashtable)();();();}catch(Exception ee){}if(学生散列表.containsKey(number)){Student stu=(Student)学生散列表.get(number);姓名.setText(());专业.setText(());年级.setText(());出生.setText(());if(().equals("男")){男.setSelected(true);}else{女.setSelected(true);}}String m="确定要删除该学生的记录吗?";int ok=(null,m,"确认",);if(ok==){学生散列表.remove(number);try{outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);(学生散列表);();();学号.setText(null);姓名.setText(null);专业.setText(null);年级.setText(null);出生.setText(null);}catch(Exception ee){(ee);}}else if(ok==){学号.setText(null);姓名.setText(null);专业.setText(null);年级.setText(null);出生.setText(null);}else{String warning="该学号不存在!";(null,warning,"警告",);}}else{String warning="必须输入学号!";(null,warning,"警告",);}}}class ShowAct implements ActionListener{public void actionPerformed(ActionEvent e){new StudentShow(file);}}class StudentShow extends JDialog{Hashtable 学生散列表= null;JTextArea 显示=null;FileInputStream inOne=null;ObjectInputStream inTwo=null;File file=null;public StudentShow(File file){super(new JFrame(),"显示对话框");;显示=new JTextArea(16,30);try{inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);学生散列表=(Hashtable)();();();}catch(Exception ee){}if(学生散列表.isEmpty())显示.append("目前还没有学生的信息记录!\n");else{显示.setText("学号 姓名 性别 专业 年级 出生\n");for(Enumeration enm=学生散列表.elements();();){Student stu=(Student)();String sex="";if(().equals("男"))sex="男";else sex="女";String str=()+","+()+","+sex+","+()+","+()+","+()+"\n";显示.append(str);}}JScrollPane scroll=new JScrollPane(显示);Container con=getContentPane();("Center",scroll);();setVisible(true);setBounds(200,200,400,300);addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){setVisible(false);}});}}}
这个是一个基于SSM框架实现的javaweb毕业管理系统, 作为一个8年的程序员告诉你, 用啥框架其实都差不多, 如果要让老师满意, 一定要注意以下几点
我毕业设计就是这个,回家把论文发给你。报告,已回家,论文已发。
1. JAVA网络通信系统的研究与开发 2. 本地监听与远程端口扫描的设计与开发 3. 基于Misty1算法的加密软件(Java)的实现 4. 论文格式化系统——后台模块的设计与实现 5. Web音乐搜索软件的设计与实现 6. 基于J2EE酒店管理系统设计与实现 7. 局域网监听软件的设计与开发 8. 网上考试及评析系统的设计与实现 9. 基于J2EE的公交查询系统的设计与实现 10. 面向Internet上的CSCW的共享白板的设计与实现 11. 基于Java的两个通用安全模块的设计与实现 12. 基于J2ME平台的掌上网络商店——客户端的开发 13. 银行帐目管理系统 14. 某百货店POS积分管理系统--积分点更新生成以及通票回收处理 15. 基于j2me平台的掌上网络商店-服务器端开发 16. EIMS系统-OA子系统的设计与开发 17. SMART系统—系统功能管理模块设计与开发 18. J2ME手机游戏的开发-Beckham Goa 19. 手机游戏(堡垒)的设计与开发 20. 一个简单的即时通讯工具的设计与开发 21. 泡泡堂网络游戏的设计与实现 22. 五子棋手机网络对战游戏的设计与实现 23. 机主留言功能在“全时通”系统上的实现 24. 某店POS积分管理系统——积分失效与数据分析模块的实现 25. B/S结构下的邮件系统的设计与开发 26. 在线考试系统的设计与实现 27. 基于JAVA C/S远程监控系统软件的实现 28. Java多线程与线程安全实践——基于Http协议的断点续传 29. 高校学生工作管理系统的设计与开发 30. 基于Java的五子棋游戏的设计 31. 文件压缩与解压缩实践 32. WML信息查询与后端信息发布系统实现——WML信息查询设计 33. FTP客户端软件的设计与实现 34. 基于Java ME无线网络移动端的俄罗斯方块游戏的实现 35. Java论坛管理系统 36. 离散数学题库管理系统 37. 基于Java3D的网络三维技术的设计与实现 38. 基于Java的在线购物系统的设计与实现 39. J2ME贪吃蛇游戏的设计 40. 在线考试 41. 办公自动化系统 42. Java Applet研究与应用——综合测评系统 43. 打飞机游戏毕业设计
网上去下,再稍稍改一下。我就是这么干的。。
目 录摘要--------------------------------------------------------------------------------------------1ABSTRACT-----------------------------------------------------------------------------------2第1章 绪论引言---------------------------------------------------------------------------------------31.2 背景 B/S模型的优点 JSP技术发展背景--------------------------------------------------------------------5第2章 需求分析 系统的研究意义 小区物业管理系统的需求分析------------------------------------------------------72.3 系统配置 Hardware (硬件) Software (软件)--------------------------------------------------------------------9第3章 系统设计 系统的功能模块设计 系统数据库设计 数据库逻辑设计 系统运行环境及环境变量设置 页面设计---------------------------------------------------------------------------------25第4章 系统实现----------------------------------------------------------------------------274.1系统基本结构 系统的基本结构图 系统的程序目录结构 系统数据库设计----------------------------------------------------------------------294.2 系统公共模块设计与实现 “”文件 “ ”文件 “ ”和“ ”文件 “”文件 建立与数据库相关的JavaBean文件---------------------------------------------334.3系统[小区物业管理]主页面----------------------------------------------------------344.4 系统[管理模块]实现 管理员登陆口“”页面 管理密码验证“”文件 新闻资讯管理页面“” 小区公告信息页面“” 物业信息管理页面“” 小区留言管理功能页面“” -----------------------------------404.5 系统[用户注册模块]实现 用户注册页面“” 用户注册页面“” --------------------------------------------------------424.6 系统其他功能页面实现--------------------------------------------------------------43第5章 软件的测试 什么是软件测试 软件测试的目标与方法---------------------------------------------------------------43第6章 总结----------------------------------------------------------------------------------44第7章 致谢----------------------------------------------------------------------------------45参考文献--------------------------------------------------------------------------------------47
出入口门禁安全管理系统是新型现代化安全管理系统,它集微机自动识别技术和现代安全管理措施为一体。它涉及电子,机械,光学,计算机技术,通讯技术,生物技术等诸多新技术。它是解决重要部门出入口实现安全防范管理的有效措施。适用各种机要部门,如银行、宾馆、机房、军械库、机要室、办公间,智能化小区,工厂等。 在数字技术网络技术飞速发展的今天门禁技术得到了迅猛的发展。门禁系统早已超越了单纯的门道及钥匙管理,它已经逐渐发展成为一套完整的出入管理系统。它在工作环境安全、人事考勤管理等行政管理工作中发挥着巨大的作用。 在该系统的基础上增加相应的辅助设备可以进行电梯控制、车辆进出控制,物业消防监控、保安巡检管理、餐饮收费管理等,真正实现区域内一卡智能管理。 在这篇论文里我对我的毕设作品――实验室门禁系统的设计进行一些概述,这里的设计用到了单片机的许多硬件设计的知识,例如LCD的显示,日历时钟模块的使用,串行通讯以及中断的设计等。关于这些模块与硬件的特性请参考 <<硬件模块参考技术说明书>>, 下位机(单片机)可以独立运行,不需要上位机(PC)永久支持,签到数据保存在下位机自己设计的简单 数据库里。上位机的设计采用的是VB及数据库编程,相对比较简单。上位机的作用是向下位机发送一些命令, 以调整下位机的一些运行状态以及将签到数据从下位机取出, 在上位机进行人员进出考勤的查询。 这个门禁系统稍做修改可用于各种无需联网的门禁控制系统中。 在第一章, 对当前业界的一些门禁系统进行简述, 以对当前门禁系统的发展情况有进一些较为细致的了解。 在第二章, 对毕设题目的需求分析, 以使大家对设计目标有一个整体印象。 在第三章, 对实验及开发环境进行一些简单的介绍。 在第四章, 对各个模块进行一些简单的介绍。 具体的各个模块特性请参考技术说明文档<<模块参考技术说明书>>。 第五章, 是整体设计。
毕业设计(论文)开题报告
专 业: 通信工程
班 级: xx级通信工程一班
姓 名: XXX
指导教师姓名: XXX
指导教师职称: 讲师
20xx 年 xx 月
1 .本课题的研究意义,国内外研究现状、水平和发展趋势
本课题研究的意义
随着企业管理现代化意识的不断增强,普通意识上的门锁系统已经不能满足企业现代管理的要求。电子化门禁系统的出现,极大方便了人们对出入口的管理,并迅速开始普及应用。
近年来,门禁系统由于其本身的优势,已经悄然兴起,包括邮电系统,供电系统,银行系统,住宅小区,公司实体等各种类型的场所都已有使用门禁系统的范例,通过这套系统的使用极大地提高了管理者的工作效率和管理区域内的安全程度。
门禁系统采用个人识别卡的方式工作。给每个有权进入的人发一张个人识别卡,相当于一把钥匙。系统根据该卡的卡号和当前时间等信息,判断该卡持有人是否可以进入(或出去),如果可以,系统自动开门。对于企业、机关等需要考勤的场所,门禁系统还可以记录每个职工是否按时上下班。门禁系统的另一个优点是可以随时增加和删除某一卡而不必担心某一卡丢失后造成什么损失。
国内外研究现状、水平和发展趋势
门禁系统的基本含义就是出入口控制系统。它的作用在于管理人群进出管理区域,限制未经授权者进出特定区域,并使已授权者在进出上更便捷,而且根据实际需要来查询一系列记录。门禁系统是在建筑物内的主要管理区的出入口、电梯厅、主要设备控制中心机房、贵重物品库房等重要的部位的通道口安装磁门、电控锁或读卡器等控制装置,由中心控制器监控,系统采用计算机多重任务的处理,能够对各通道口的位置,通过对象及通行时间进行实时控制或设定程序控制,适应小区、办公楼的安全的管理。
传统的机械门锁仅仅是单纯的机械装置,无论结构设计多么合理,材料多么坚固,人们总能通过各种手段把它打开。在人员变更频繁的场所(如办公室,酒店客房)钥匙的管理很麻烦,在一些大型机关、企业,钥匙的管理成本很高,钥匙丢失或人员更换时往往要把锁和钥匙一起更换。特别是传统机械钥匙容易出现重复,而且出入没有记录,旗安全性非常差。为了弥补上述问题于是出现了电子磁卡锁,电子密码锁,这从一定程度上提高了人们对出入口通道的管理的程度。但他们本身的缺陷就逐渐暴露。磁卡锁的问题是信息容易复制,卡片与读卡机之间磨损大,故障率高,安全系数低。密码锁的问题是密码容易泄露。这个时期的门禁系统和高还停留在早期不成熟阶段,因此当时的门禁系统通常被人称为电子锁,应用也不广泛。
最近几年随着数字技术网络技术飞速进步和感应卡技术,生物识别技术的发展,门禁系统得到了飞跃式的发展,出现了感应式门禁系统,指纹门禁系统,虹膜门禁系统,面部识别门禁系统,乱序键盘门禁系统等各种技术的系统,而且门禁系统早已超越了单纯的门道及钥匙管理科,它已经逐渐发展成为一套完整的出入管理系统。门禁系统的应用领域也越来越广。是人们在公共场所实施进出口管理最有效的工具。它在工作环境安全、人事考勤管理、大规模人员出入等管理工作中发挥着巨大的作用。
随着电子芯片的高度集成化,门禁系统的功能也变得越来越完善和简捷,而且越来越容易操作。门禁系统的发展过程如下:
1、第一代门禁
单一的键盘输入密码方式。常常会有因忘记密码而被拒之门外的尴尬事情发生。
2、第二代门禁
接触式卡门禁系统。所用的接触式卡片有磁码卡和铁码卡。磁码卡是把磁质贴在塑料卡片上制成的。磁片可以改写,应用方便。其缺点是易消磁、易磨损。铁马卡片中间用特殊的金属线排列编码,采用金属磁烧的原理制成,不易被复制、铁码卡可有效的防磁、防水、防尘,是安全性较高的一种卡。这种非门禁系统虽然有些改进,但是如果卡片不小心被消磁或弄脏,进入人员将被拒之门外。
3、第三代门禁
感应卡,即非接触式IC卡一般指无源IC卡,卡片采用了先进的半导体制造技术和信息安全技术,利用电子回路及感应线圈在读卡器本身产生的特殊震荡频率,当卡片进入读卡器能量范围产生共振,感应电流使电子回路发射信号到读卡器,经读卡器将接受的信号转换成卡片资料,送到控制器对比。
4、第四代门禁
生物识别系统。它包括指纹机、掌纹机、视网膜识别机和声音识别装置等。指纹和掌纹识别用于安全性较高的出入口控制系统,视网膜识别机和声音识别装置在正常情况下安全性极高,但若视网膜充血或病变以及感冒等疾病会影响使用。
以上几代门禁系统中,磁码卡价格便宜,仍被使用;铁码卡和感应式保安性能好,现在比较流行;生物辨别技术安全极高,一般应用在军政要害部门或银行金库等场所。
由于磁卡、接触式IC卡对于操作环境的要求较高,磁卡及IC卡本身的工作有一定寿命期,再加之识别过程中操作者的动作和所需时间明显多于非接触式卡,因而,从目前全球门禁系统的前端输入设备的水平及发展方向来看,虽然磁卡、接触式IC卡、读卡器在门禁系统的应用中还有一部分市场,但从发展趋势上看,非接触式智能卡势必将全面取代磁卡、IC卡市场。
2 、本课题的基本内容,预计可能遇到的困难,提出解决问题的方法和措施
基本内容
本课题主要是在现有网站资源基础上,研究并设计出成本经济、安全可靠、方便迅速门禁系统。本课题研究的内容是:
1、研究分析门禁系统的基本组成结构,需要使用的开发工具以及各种参考资料。
2、了解用户的需求,能够快速准确的定位系统需要实现的功能以及系统的操作流程。
3、根据用户提供的需求说明,以及系统要实现的功能,设计出相应的系统功能模块、数据库、系统总体设计图。
4、确定系统开发的任务书,合理分配各阶段的时间。完成相关的技术文档,并给予详细的说明。
5、完成系统的详细设计,设计各个功能模块,以及各个模块之间的关系。
6、研究当前网络上资源和已有系统,为在开发后能结合相关系统做好准备。
可能遇到的困难,提出解决问题的方法和措施
本课题主要是介于struts等开发框架进行设计,结合javascript、oracle、apache进行开发。对于struts等开发框架的了解还不够深入,时常需要在网上查看资料。门禁系统的需求都是根据公司客户要求实现,对于一些特殊的要求需要特别的分析。还有对于一些误操作需要事先考虑到和设置相应的异常处理。
3 .本课题拟采用的研究手段(途径)和可行性分析
对本方案的可行性分析
本次软件项目可行性研究报告是对项目课题的全面通盘考虑,是项目分析员进行进一步工作的前提,是软件开发人员正确成功的开发项目的前提与基础.
写软件项目可行性研究报告可以使软件开发团体尽可能早的估计研制课题的可行性,可以在定义阶段较早的认识到系统方案的缺陷,就可以少花费时间和精力,并且避免了许多专业方面的困难.所以该软件项目可行性研究报告在整个开发过程中是非常重要的。
本系统从技术可行性、经济可行性、操作可行性、方案可行性四个方面分析研究。
1、技术可行性
应用Java技术进行系统开发。Apache是最通用的网络服务器;Oracle是强大的关系数据库;Java是目前最流行的编程语言。
鉴于目前成熟的Java技术,该系统可以完整的完成。
2、经济可行性
本系统使用Oracle数据库管理系统,前端采用eclipse作为应用开发工具,容易购买,价格低廉。开发此系统并投入使用,安装简单,成本低廉,易于维护和升级,开发周期短,经济效益高。
本系统要求的计算机配置不是很高,需要操作系统,应用软件和数据库管理等软件,基础投资建设成本不是很高。支持没有计算机使用经验、计算机使用经验较少及有较多计算机使用经验的用户均能方便地使用本系统。所以,在经济上是可行的。
3、操作可行性
本系统需要一台WEB服务器,配置要求与客户量相关,对于普通公司内使用,一台普通的服务器即可。当前的主流服务器完全可以满足要求。对于客户端,只需要客户端装有浏览器即可,对机器本身没有太高的要求,一般电脑都可满足要求。
4、方案可行性
本系统致力于设计出能够满足大楼管理需求,实现工作环境安全、人事考勤管理、大规模人员出入等管理工作,其带来的经济效益非常好,所以本方案是可行的。
我精心推荐
package test;public class InputEquitTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub }} package test;import sys.*;import user.*;public class AdminTest { /** * @param args */ public static void main(String[] args) { Admin admin = new Admin("王哲"); // 管理员 ControlSys sys = new ControlSys(); // 门禁系统 ("门禁系统---管理员测试"); ("***************************************************"); (sys, "pa", "654321"); while(true){ (sys); (); } }} package test;import sys.*;import user.*;public class EmployeeTest { /** * @param args */ public static void main(String[] args) { Employee employee = new Employee("雇员张三丰"); // 雇员 ControlSys sys = new ControlSys(); // 门禁系统 ("门禁系统---雇员测试"); ("***************************************************"); while(true){ (sys); (); } }} package test;import sys.*;import user.*;public class GuestTest { /** * @param args */ public static void main(String[] args) { Guest guest = new Guest("赵强"); // 访客员 Admin admin = new Admin("王石头"); // 管理员 ControlSys sys = new ControlSys(); // 门禁系统 ("门禁系统---访客测试"); ("***************************************************"); while(true){ (sys); (sys, guest); (); } }}
这个是一个基于SSM框架实现的javaweb毕业管理系统, 作为一个8年的程序员告诉你, 用啥框架其实都差不多, 如果要让老师满意, 一定要注意以下几点
学生公寓管理系统第一章系统分析 开发工具简介及系统运行环境 开发的必要性 系统开发的可行性 数据来源 新系统数据流程图 9第二章 数据库设计 12第三章功能模块设计 新系统功能结构图及运行图如下: 系统设置: 公寓管理 卫生检查 公寓资产 记录查看与记录删除 值班记录 帮助制作 21第四章 程序设计 22主程序流程图 登录界面 程序主界面 系统设置 公寓管理 卫生检查 公寓资产 记录查看 记录删除 值班记录 Help制作 49第五章 系统测试 50总结 51参考文献 52引言随着电脑的普及与应用,现在的管理也需要提升一个档次。即从原来的手工记录管理模式转变为电脑一体化管理。这样会给公寓的管理人员带来很多好处,让他们管理的效率更高、效果更好,管理起来更方便。由此而产生了本管理软件――学生公寓管理软件。学生公寓管理软件是用Microsoft Visual Basic 编写完成。由于Visual Basic率先采用了可视化(VISUAL)的程序设计方法。所以利用系统提供的大量可视化控件,可以方便的以可视化方式直接绘制用户图形界面,并可直观,动态的调整界面的风格和样式,直到满意为止,从而克服了以前必须用大量代码去描述界面元素的外观和位置的传统编程模式。做起来方便,使用起来更为快捷。作为一个学生公寓的管理软件,要十分全面的贴近以及适合大学公寓的管理方法。本软件的参考资料主要有两种来源:一是参考本学校公寓的管理结构,管理方法。如各个公寓的分布特色,以及公寓的各种管理制度。这些资料是本软件的主要依据,也可以说这些资料来源于普通的生活,比较真实一些。二是来源于网络上的各种同类软件,通过这些软件可以看出一个公寓最低需要哪些管理与设置,在这些软件中,有些软件功能比较齐全,但是在管理上显的非常的不方便,使用起来十分麻烦、繁琐,有些虽然简单,但是功能上又不是十分完善,对这些软件首先要进行取其精华,弃其糟粕,从而进行编写。本软件主要包括以下方面:系统设置、公寓管理、卫生检查、公寓资产、记录查看、记录删除、值班记录、帮助制作。学生公寓管理软件目前版本为,为一个测试版本。它目前在功能上,以及操作的简便上有很大的改进。但是还是存在一些不足,在有些功能的实现上还不是十分的理想,这也是本人在时间和精力上留下的遗憾。但是相信这些会在以后的版本中得到完善,使这个软件成为一个功能上最全,使用上最简捷方便的管理软件。 ... ... ... ...... ... ... ...【论文说明】该论文包含数据流程图、数据字典、E—R图、系统功能结构图、程序流程图、运行界面图、程序源代码和程序设计,论文是Word格式,52页,字数万,适用于计算机科学与技术、计算机信息管理和计算机网络等专业!
1. JAVA网络通信系统的研究与开发 2. 本地监听与远程端口扫描的设计与开发 3. 基于Misty1算法的加密软件(Java)的实现 4. 论文格式化系统——后台模块的设计与实现 5. Web音乐搜索软件的设计与实现 6. 基于J2EE酒店管理系统设计与实现 7. 局域网监听软件的设计与开发 8. 网上考试及评析系统的设计与实现 9. 基于J2EE的公交查询系统的设计与实现 10. 面向Internet上的CSCW的共享白板的设计与实现 11. 基于Java的两个通用安全模块的设计与实现 12. 基于J2ME平台的掌上网络商店——客户端的开发 13. 银行帐目管理系统 14. 某百货店POS积分管理系统--积分点更新生成以及通票回收处理 15. 基于j2me平台的掌上网络商店-服务器端开发 16. EIMS系统-OA子系统的设计与开发 17. SMART系统—系统功能管理模块设计与开发 18. J2ME手机游戏的开发-Beckham Goa 19. 手机游戏(堡垒)的设计与开发 20. 一个简单的即时通讯工具的设计与开发 21. 泡泡堂网络游戏的设计与实现 22. 五子棋手机网络对战游戏的设计与实现 23. 机主留言功能在“全时通”系统上的实现 24. 某店POS积分管理系统——积分失效与数据分析模块的实现 25. B/S结构下的邮件系统的设计与开发 26. 在线考试系统的设计与实现 27. 基于JAVA C/S远程监控系统软件的实现 28. Java多线程与线程安全实践——基于Http协议的断点续传 29. 高校学生工作管理系统的设计与开发 30. 基于Java的五子棋游戏的设计 31. 文件压缩与解压缩实践 32. WML信息查询与后端信息发布系统实现——WML信息查询设计 33. FTP客户端软件的设计与实现 34. 基于Java ME无线网络移动端的俄罗斯方块游戏的实现 35. Java论坛管理系统 36. 离散数学题库管理系统 37. 基于Java3D的网络三维技术的设计与实现 38. 基于Java的在线购物系统的设计与实现 39. J2ME贪吃蛇游戏的设计 40. 在线考试 41. 办公自动化系统 42. Java Applet研究与应用——综合测评系统 43. 打飞机游戏毕业设计
1 前言 4 目的 4 范围 4 有关本系统中的定义 4 2 资料引用 4 3 设计思路 4 数据层设计 5 user_book表的触发器 5 用户续借图书的存储过程 6 到期催还表的视图 7 数据链接层设计 8 UserBook Entity Bean设计 9 UserConsumer Entity Bean设计 10 UserLogBook Entity Bean设计 11 数据逻辑层设计 12 TheBook Session Bean设计 13 TheUser Session Bean设计 14 TheLog Session Bean设计 15 网络应用层设计 15 CheckValue bean 16 EnCode bean 16 JDBCBean bean 16 Rank bean 16 SetUp bean 16 SplitPage bean 17 UserLogin bean 17 SearchBook bean 17 SearchDeadline bean 17 ValidateIMG servlet 17 GetDelete servlet servlet 17 GetBookSubmit servlet 18 GetUserSubmit servlet 18 GetRenewBook servlet 18 GetBorrowBook servlet 18 GetReturnBook servlet 18 4 程序架构 18 程序组织结构 18 功能权限划分 20 WEB程序/页面设计 21 本系统实现的功能 22 5 任务分工 22 1 前言 目的 本文档详细描述了图书管理系统的设计,主要是为开发人员提供,使其对本项目的构建和维护有深入的了解。 范围 本文档的描述只针对图书管理系统的版本。 有关本系统中的定义 以下是本说明书中用到的专门术语的定义和外文首字母组词的原词组: 术语或缩写 定义与描述 booksManager 本系统的名称 Reader 系统权限:普通读者 BookAdmin 系统权限:图书管理员 UserAdmin 系统权限:用户管理员 SuperAdmin 系统权限:超级管理员(系统管理员) Undergraduate 系统用户角色:本科生 Graduate 系统用户角色:研究生 Teacher 系统用户角色:教师 2 资料引用 清华大学《应用软件平台与核心技术》讲义 顾明 清华大学《应用软件平台与核心技术》助教文档 张伟业、魏岚、陈勇、林彩荣 《精通EJB(第二版)》 《J2EE应用与BEA Web Logic Server》,刑国庆等译,电子工业出版社 《设计模式——可复用面向对象软件的基础》,Erich Gamma等,机械工业出版社 3 设计思路 本系统严格按照4层结构设计,分为数据层(SQL server),数据链接层(entity bean),数据逻辑层(session bean),网络应用层(java bean, java servlet, java serverpage)。 四层之间完全独立,可以部署在四台服务器上运行,体现了分布式应用的思想。 数据层的功能严格来说是实现基本的数据存储(逻辑处理功能应该全部交给CMP管理),但因为学习原因,在数据库中也用到了一些逻辑处理,如使用了存储过程+系统级临时表处理读者续借图书的功能、使用触发器防止未还书的用户和未归还的图书被注销以及使用视图检测借书记录实现到期催还功能。 数据链接层实现了和数据库的连接,作用在于屏蔽数据库和平台之间的差异,做到底层无关性。本层利用了模糊查找、多表映射、Relationship等技术,通过find,select方法数据的查找功能,抛出聚集对象或远程接口对象给下一层。 数据逻辑层实现了对数据的逻辑处理,例如将远程接口对象转化为值对象、将聚集对象转化为值对象向量、利用日期类完成查找两个特定日期之间的记录等相对复杂的计算。 网络应用层完成页面跳转和页面显示等应用功能,还有一些附加功能如:图片验证,登录验证,等级控制,代码过滤,分页控制,输入值检测、借书日志打印、系统运行日志记录以及系统设置等。(使用了JDBC实现存储过程和模糊查找图书的功能) 数据层设计 数据库表 表名 功能描述 user_consumer 记录了用户的所有信息 user_book 记录了图书的所有信息 user_logBook 记录了用户使用本系统的信息,保留了所有的借书记录,可作为系统日志和报表资料 user_book表的触发器 用到的触发器之一,作用:如果要注销的图书被外借没有归还,则回滚此删除操作。 CREATE TRIGGER bookhavelog ON FOR DELETE AS declare @bookISBN varchar(50) select @bookISBN=book_ISBN from deleted if exists(select * from user_logBook where logb_book_ISBN=@bookISBN and logb_backdate is null) begin rollback return end 用户续借图书的存储过程 利用存储过程实现用户续借图书的逻辑操作,根据用户的当前信息判断其是否有续借的权限,并把处理结果输出到临时表中去。 CREATE PROCEDURE user_renew_book @xxxparm int AS CREATE TABLE ##temp(statement varchar(50)) DECLARE @username varchar(50) SET @username=(select logb_cons_username from user_logBook where ID=@xxxparm) IF @username is null BEGIN INSERT INTO ##temp VALUES ('The ID is not EXIST') RETURN END DECLARE @timelimit int SET @timelimit=(select logb_timelimit from user_logBook where ID=@xxxparm) DECLARE @renewday int SET @renewday=(select cons_maxday from user_consumer where cons_username=@username) DECLARE @maxrenew int SET @maxrenew=(select cons_maxrenew from user_consumer where cons_username=@username) IF (@renewday*@maxrenew)>=@timelimit BEGIN update user_logBook set logb_timelimit=logb_timelimit+@renewday where ID=@xxxparm --update user_consumer set cons_maxrenews=cons_maxrenews-1 where cons_username=@username INSERT INTO ##temp VALUES ('renew successful') RETURN END ELSE BEGIN INSERT INTO ##temp VALUES ('You are not allowed to renew the book') RETURN END GO 到期催还表的视图 利用DATEDIFF,DATEADD,CAST,GETDATE等函数从借书记录表中计算出到期的记录,然后根据此记录找出相应的读者信息,在网页上以email形式催还。 CREATE VIEW AS SELECT TOP 100 PERCENT , , DATEADD([day], , CAST( AS datetime)) AS deadline_date, GETDATE() AS now_date, , , , , , , , , , , , FROM INNER JOIN ON = INNER JOIN ON = WHERE (DATEDIFF([day], DATEADD([day], , CAST( AS datetime)), GETDATE()) >= 0) AND ( IS NULL) ORDER BY DESC 数据链接层设计 entity bean UserBook Entity Bean设计 userbook remotehome接口 方法 描述 findAllBook 得到所有的图书信息 findByISBN 通过图书的书号得到图书的信息 findSearcher 利用关键字模糊查找图书信息 selectUserByBookISBN (userbook remote) 利用select方法实现多表相关的查找 findSearcher实现模糊查找的代码: select object(p) from UserBook as p where like concat(concat('%',?1),'%') or like ?1 or like ?1 or like ?1 or like ?1 or like concat(concat('%',?1),'%') or like ?1 UserConsumer Entity Bean设计 UserConsumer remotehome接口 方法 描述 findAllUser 查找所有的用户信息 findByUsername 通过用户名查找用户信息 findSearcher 利用关键字模糊查找用户信息 selectBookByUsername (userconsumer remote) 利用select方法实现多表相关的查找 findSearcher实现模糊查找的代码: select object(p) from UserConsumer as p where like concat(concat('%',?1),'%') or like ?1 or like concat(concat('%',?1),'%') or like ?1 or like ?1 UserLogBook Entity Bean设计 UserLogBook remotehome接口 方法 描述 findallbybookISBN 查找此书所有的借阅记录 findbybookISBN 查找此书当前的借出记录 findallbyusername 查找此用户所有的借阅记录 findbyusername 查找此用户当前的借出书记录 findbacklog 得到所有已经归还图书的借书记录 findoutlog 得到所有尚未归还图书的借书记录 findbyID 通过记录流水号查找借书记录 findlogbyday 查找某一日期的借书记录 (模糊匹配,例如提交“2004-5”可得到最终记录时间——借阅或归还在2004年5月份的所有借书记录) findallog 得到所有的借书记录 FindLogByDay通过模糊匹配得到一组最终记录时间的代码: select object(p) from UserLogBook as p where ( is null and like concat(concat('%',?1),'%') ) or ( is not null and like concat(concat('%',?1),'%') ) 数据逻辑层设计 session bean TheBook Session Bean设计 TheBook bean 实现图书的增删改查以及模糊搜索、通过书查读者等功能 方法内部实现所有的逻辑处理和转化,返回到远程接口值对象或值对象向量 TheUser Session Bean设计 TheUser bean 实现用户(读者)的增删改查以及模糊搜索、通过读者查书等功能 方法内部实现所有的逻辑处理和转化,返回到远程接口值对象或值对象向量 TheLog Session Bean设计 TheLog bean 主要实现对日志(借书记录)的各项操作,提供多种获得日志的方法(按读者、按图书、按日期、按借还状态等),方法内部实现所有的逻辑处理和转化,返回到远程接口值对象或值对象向量,另外还有如下方法: 方法 功能 public boolean userBorrowBook(String username, String bookISBN) 以一个事务封装读者借书的所有逻辑操作,借书成功返回真值,无法借书返回假值,调用enCode bean对中文进行转码 public boolean userReturnBook(String logbid) 以一个事务封装读者还书的所有逻辑操作,即实现使一笔借书记录销账的功能,调用enCode bean对中文进行转码 public Vector showLogBetweenDays(String dayBegin, String dayEnd) 返回两个日期之间的所有日志,主要利用Calendar类实现 网络应用层设计 本层本着面向对象思想的封装性、数据模糊性、可重用性等原则设计。 本着系统运行错误在系统中打印()、用户输入和误操作错误导向友好的错误处理页并给出友好的提示的错误处理原则。 每次对会话bean的调用写入系统运行日志文件,默认路径是C:\\。 CheckValue bean 封装多个静态方法。 可以用于检测某表中某个字段是否已经存在某个值(可用于检测重名用户、重号图书)、检测用户名合法性、检测密码合法性、检测年龄合法性、检测电子邮件合法性、检测数字合法性、检测日期合法性等。 EnCode bean 封装编码转码工作: html显示转码,例如:将<转为<,将>转为&rt;,将数据库中的换行转为html中的换行等等,这样可以屏蔽用户提交文本中的可执行代码。 可重载的中文转码。 密码的加密和解密编码。 JDBCBean bean 封装所有的数据库操作。包括一个带结果集返回的SQL执行方法和一个不带结果集返回的SQL执行方法。 Rank bean 封装4种权限(普通读者、用户管理员、图书管理员、系统管理员)的页面访问,相当于页面加锁功能。 SetUp bean public static String title="SuperLibrary";//系统名称 public static String dbS="booksManagerDS";//数据库的JNDI名 public static String errorPage="";//友好的错误处理页,用get方法传递出错原因 public static String homePage="";//默认首页 //权限------------------------------------------------------------------------- public static String Reader="Reader";//读者 public static String UserAdmin="UserAdmin";//用户管理员 public static String BookAdmin="BookAdmin";//图书管理员 public static String SuperAdmin="SuperAdmin";//系统管理员 //等级------------------------------------------------------------------------- public static String Undergraduate="Undergraduate";//本科生 public static int UndergraduateRenew=1;//本科生可续借的次数 public static int UndergraduateMaxday=30;//本科生一次可借的天数 public static String Graduate="Graduate";//研究生 public static int GraduateRenew=2;//研究生可续借的次数 public static int GraduateMaxday=45;//研究生一次可借的天数 public static String Teacher="Teacher";//教师 public static int TeacherRenew=3;//教师可续借的次数 public static int TeacherMaxday=60;//教师一次可借的天数 //---------------------------------------------------------------------------- public static int rsPerPage=5;//每页显示记录的数量 public static int minBooks=4;//系统默认的最小借书数 SplitPage bean 将数据记录分页的逻辑实现和页面显示(最简,可在外部由样式表美化)封装在一个bean中,重用时实际只需要传递一个记录集数量的为参数即可,可重用。一般作为session级java bean在页面中被调用,在会话中保存用户对此页面的访问状态,在会话结束之前始终记忆用户访问此页对应的页码。 UserLogin bean 将用户登录的逻辑实现和页面显示(最简,可在外部由样式表美化)封装在一个bean中,包括对用户各种登录情况的处理,可重用。 SearchBook bean 利用JDBC实现模糊查找和按指定类别精确查找图书的功能。 SearchDeadline bean 利用JDBC调用视图实现到期图书的催还功能。 ValidateIMG servlet 动态生成含有随机验证码的图片,在生成图片的同时将验证码写入session中,与用户的登录输入比较。可有效的防止机器人登录。 GetDelete servlet servlet 处理图书、用户、日志的注销操作,根据返回值进行相应页面的跳转。 GetBookSubmit servlet 处理图书的入库和图书信息的修改,根据返回值进行相应页面的跳转。 GetUserSubmit servlet 处理用户的注册和用户信息的修改,根据返回值进行相应页面的跳转。 GetRenewBook servlet 处理用户续借图书的请求(JDBC调用存储过程实现),从系统临时表中读取状态值,根据状态值进行相应页面的跳转。 GetBorrowBook servlet 处理用户的借书请求,将用户借书限额已满、库存为零等错误导向友好的错误页,如果借书成功则跳转到图书信息页面,并给与相应的提示。 GetReturnBook servlet 处理用户的还书请求,如果还书成功则跳转到用户的借书记录页面,并给与相应的提示。 4 程序架构 程序组织结构 说明:图书搜索和用户登录看作系统外部功能,通过JDBC直接调用数据库,其中用户登录模块封装在一个java bean中,可重用。另外,用户续借图书是通过存储过程实现,从而绕过了使用CMP技术管理事务的实体bean。 本系统其余程序的组织结构严格按照下图实现: 程序组织结构图 功能权限划分 站点页面地图 权限名称 系统定义字符 权限 可访问页面 普通读者 Reader 查看自己的信息(还书、续借); 修改自己的信息; 查看图书(借书); userModify userView booklist 图书管理员 BookAdmin 拥有普通读者的权限; 图书的增删改查; 到期催还; userModify userView booklist bookAdder bookModify deadline 用户管理员 UserAdmin 拥有普通读者的权限; 用户的增删改查; userModify userView booklist userRegister userModify userList 系统管理员 SuperAdmin 拥有图书管理员和用户管理员的权限; 查看系统日志; 删除系统日志; 系统设置; 包括(系统设置,利用application级java bean控制整个应用程序)在内的所有页面 WEB程序/页面设计 利用代码关闭客户端的输入法,实现用户名、密码不能出现中文的问题。 利用onfocus=() onmouseover=()代码使文本框自动吸附获得焦点,方便用户输入。 利用WMODE="transparent"参数使flash的背景透明,更好的融入网页。 在每页中,利用代码: 嵌入上下导航条,使网站导航明确,方便用户浏览。 在网页头部加入代码: 使客户端不缓存网页,保证了客户每次浏览该页都从服务器获得最新的版本,以求正确显示。 提供智能搜索(获得尽可能多的匹配)和精确搜索(获得尽可能精确的匹配)图书,服务器端编程都采用模糊查找的方式。 在客户端用javascript对表单提交进行第一次验码,通过后提交到服务器端,再进行第二次验码,验码包括:用户名是否重复、年龄是不是合适的数字,两次密码输入的是否一致、电子邮件是否合法、密码是否太短、用户名是否太短、用户名密码是否为空等等。 利用随机生成JPG图片验证码的方法,防止机器人登录。 在页面中使用session级java bean实现分页,在会话中保存用户对此页面的访问状态,在会话结束之前始终记忆用户访问此页对应的页码。 在页面中使用application级java bean实现安全的系统设置,当服务器启动后,即可对系统运行参数进行应用程序级的设置,只要服务器不关闭,此设置始终有效且作用于所有用户,如果设置不慎造成系统错误或想恢复系统默认设置,则只需重新启动服务器即可。 在对会话bean的调用包ejbClient中,创建系统运行日志,通过包中的writeF类写入web服务器的C:\\中,可做查询用。 本系统实现的功能 确定图书的基本信息,有书名、作者、出版日期、当前借阅状态等属性 系统的使用者包括读者、图书管理员、用户管理员、系统管理员四种 读者可以查询图书;图书管理员可以完成图书管理、借阅管理;读者管理员可以完成读者管理的功能;系统管理员可以使用系统的所有功能 图书管理:新书登记,图书查询,图书注销; 借阅管理:借书,还书,查询到期读者 读者管理:增加读者、删除读者、查询读者、读者类别管理(设置研究生,本科生,教师的可借册数,可借天数,可续借次数等) 系统管理:系统管理员使用,包括用户权限管理(增加用户,删除用户,密码修改等),系统借书日志,系统运行日志,系统设置等功能 页面输入有验码,密码存取有加密 图书到期催还 体现分层设计思想,使用MVC架构 实现了多个Beans,Bean之间实现了对应的关系 使用了EJB QL,事务控制等 使用了jsp->sessionBean->entityBean->数据库模式 数据库使用了触发器和存储过程等一些高级技术
可以借助百度Hi示意我们有机会可以解决你的问题差不多的要求也可以示意我们求一篇计算机应用技术的毕业**,我是学java的,我的邮...ES:\\81048C8AD2E4B0968B0D6E3F550DD915