
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年的程序员告诉你, 用啥框架其实都差不多, 如果要让老师满意, 一定要注意以下几点
毕业设计(论文)是学生毕业前最后一个重要学习环节,是学习深化与升华的重要过程。它既是学生学习、研究与实践成果的全面总结,又是对学生素质与能力的一次全面检验,而且还是对学生的毕业资格及学位资格认证的重要依据。为了保证我校本科生毕业设计(论文)质量,特制定“同济大学本科生毕业设计(论文)撰写规范”。一、毕业设计(论文)资料的组成A.毕业设计(论文)任务书;B.毕业设计(论文)成绩评定书;C.毕业论文或毕业设计说明书(包括:封面、中外文摘要或设计总说明(包括关键词)、目录、正文、谢辞、参考文献、附录);D.译文及原文复印件;E.图纸、软盘等。二、毕业设计(论文)资料的填写及有关资料的装订毕业设计(论文)统一使用学校印制的毕业设计(论文)资料袋、毕业设计(论文)任务书、毕业设计(论文)成绩评定书、毕业设计(论文)封面、稿纸(在教务处网上下载用,学校统一纸面格式,使用A4打印纸)。毕业设计(论文)资料按要求认真填写,字体要工整,卷面要整洁,手写一律用黑或蓝黑墨水;任务书由指导教师填写并签字,经院长(系主任)签字后发出。毕业论文或设计说明书要按顺序装订:封面、中外文摘要或设计总说明(包括关键词)、目录、正文、谢辞、参考文献、附录装订在一起,然后与毕业设计(论文)任务书、毕业设计(论文)成绩评定书、译文及原文复印件(订在一起)、工程图纸(按国家标准折叠装订)、软盘等一起放入填写好的资料袋内交指导教师查收,经审阅评定后归档。三、毕业设计说明书(论文)撰写的内容与要求一份完整的毕业设计(论文)应包括以下几个方面:1.标题标题应该简短、明确、有概括性。标题字数要适当,不宜超过20个字,如果有些细节必须放进标题,可以分成主标题和副标题。2.论文摘要或设计总说明论文摘要以浓缩的形式概括研究课题的内容,中文摘要在300字左右,外文摘要以250个左右实词为宜,关键词一般以3~5个为妥。设计总说明主要介绍设计任务来源、设计标准、设计原则及主要技术资料,中文字数要在1500~2000字以内,外文字数以1000个左右实词为宜,关键词一般以5个左右为妥。3.目录目录按三级标题编写(即:1……、……、……),要求标题层次清晰。目录中的标题应与正文中的标题一致,附录也应依次列入目录。4.正文毕业设计说明书(论文)正文包括绪论、正文主体与结论,其内容分别如下:绪论应说明本课题的意义、目的、研究范围及要达到的技术要求;简述本课题在国内外的发展概况及存在的问题;说明本课题的指导思想;阐述本课题应解决的主要问题,在文字量上要比摘要多。正文主体是对研究工作的详细表述,其内容包括:问题的提出,研究工作的基本前提、假设和条件;模型的建立,实验方案的拟定;基本概念和理论基础;设计计算的主要方法和内容;实验方法、内容及其分析;理论论证,理论在课题中的应用,课题得出的结果,以及对结果的讨论等。学生根据毕业设计(论文)课题的性质,一般仅涉及上述一部分内容。结论是对整个研究工作进行归纳和综合而得出的总结,对所得结果与已有结果的比较和课题尚存在的问题,以及进一步开展研究的见解与建议。结论要写得概括、简短。5.谢辞谢辞应以简短的文字对在课题研究和设计说明书(论文)撰写过程中曾直接给予帮助的人员(例如指导教师、答疑教师及其他人员)表示自己的谢意,这不仅是一种礼貌,也是对他人劳动的尊重,是治学者应有的思想作风。6.参考文献与附录参考文献是毕业设计(论文)不可缺少的组成部分,它反映毕业设计(论文)的取材来源、材料的广博程度和材料的可靠程度,也是作者对他人知识成果的承认和尊重。一份完整的参考文献可向读者提供一份有价值的信息资料。一般做毕业设计(论文)的参考文献不宜过多,但应列入主要的文献可10篇以上,其中外文文献在2篇以上。附录是对于一些不宜放在正文中,但有参考价值的内容,可编入毕业设计(论文)的附录中,例如公式的推演、编写的程序等;如果文章中引用的符号较多时,便于读者查阅,可以编写一个符号说明,注明符号代表的意义。一般附录的篇幅不宜过大,若附录篇幅超过正文,会让人产生头轻脚重的感觉。四、毕业设计(论文)要求我校毕业设计(论文)大致有设计类、理论研究类(理科)、实验研究类、计算机软件设计类、经济、管理及文科类、综合类等,具体要求如下:1.设计类(包括机械、建筑、土建工程等):学生必须独立绘制完成一定数量的图纸,工程图除了用计算机绘图外必须要有1~2张(2号以上含2号图)是手工绘图;一份15000字以上的设计说明书(包括计算书、调研报告);参考文献不低于10篇,其中外文文献要在2篇以上。2.理论研究类(理科):对该类课题工科学生一般不提倡,各院系要慎重选题,除非题目确实有实际意义。该毕业设计报告或论文字数要在20000字以上;根据课题提出问题、分析问题,提出方案、并进行建模、仿真和设计计算等;参考文献不低于15篇,其中外文文献要在4篇以上。3.实验研究类:学生要独立完成一个完整的实验,取得足够的实验数据,实验要有探索性,而不是简单重复已有的工作;要完成15000字以上的论文,其包括文献综述,实验部分的讨论与结论等内容;参考文献不少于10篇,包括2篇以上外文文献。4.计算机软件类:学生要独立完成一个软件或较大软件中的一个模块,要有足够的工作量;要写出10000字以上的软件说明书和论文;毕业设计(论文)中如涉及到有关电路方面的内容时,必须完成调试工作,要有完整的测试结果和给出各种参数指标;当涉及到有关计算机软件方面的内容时,要进行计算机演示程序运行和给出运行结果。5.经济、管理及文科类:学生在教师的指导下完成开题报告;撰写一篇20000字以上的有一定水平的专题论文(外国语专业论文篇幅为5000个词以上。);参考文献不少于10篇,包括1-2篇外文文献。6.综合类:综合类毕业设计(论文)要求至少包括以上三类内容,如有工程设计内容时,在图纸工作量上可酌情减少,完成10000字以上的论文,参考文献不少于10篇,包括2篇以上外文文献。每位学生在完成毕业设计(论文)的同时要求:(1)翻译2万外文印刷字符或译出5000汉字以上的有关技术资料或专业文献(外语专业学生翻译6000~8000字符的专业外文文献或写出10000字符的外文文献的中文读书报告),内容要尽量结合课题(译文连同原文单独装订成册)。(2)使用计算机进行绘图,或进行数据采集、数据处理、数据分析,或进行文献检索、论文编辑等。绘图是工程设计的基本训练,毕业设计中学生应用计算机绘图,但作为绘图基本训练可要求一定量的墨线和铅笔线图。毕业设计图纸应符合制图标准,学生应参照教务处2004年3月印制的《毕业设计制图规范》进行绘图。五、毕业设计(论文)的写作细则1.书写毕业设计(论文)要用学校规定的文稿纸书写或打印(手写时必须用黑或蓝墨水),文稿纸背面不得书写正文和图表,正文中的任何部分不得写到文稿纸边框以外,文稿纸不得随意接长或截短。汉字必须使用国家公布的规范字。2.标点符号毕业设计(论文)中的标点符号应按新闻出版署公布的"标点符号用法"使用。3.名词、名称科学技术名词术语尽量采用全国自然科学名词审定委员会公布的规范词或国家标准、部标准中规定的名称,尚未统一规定或叫法有争议的名称术语,可采用惯用的名称。使用外文缩写代替某一名词术语时,首次出现时应在括号内注明其含义。外国人名一般采用英文原名,按名前姓后的原则书写。一般很熟知的外国人名(如牛顿、达尔文、马克思等)可按通常标准译法写译名。4.量和单位量和单位必须采用中华人民共和国的国家标准GB3100~GB3102-93,它是以国际单位制(SI)为基础的。非物理量的单位,如件、台、人、元等,可用汉字与符号构成组合形式的单位,例如件/台、元/km。5.数字毕业设计(论文)中的测量统计数据一律用阿拉伯数字,但在叙述不很大的数目时,一般不用阿拉伯数字,如"他发现两颗小行星"、"三力作用于一点",不宜写成"他发现2颗小行星"、"3力作用于1点"。大约的数字可以用中文数字,也可以用阿拉伯数字,如"约一百五十人",也可写成"约150人"。6.标题层次毕业设计(论文)的全部标题层次应有条不紊,整齐清晰。相同的层次应采用统一的表示体例,正文中各级标题下的内容应同各自的标题对应,不应有与标题无关的内容。章节编号方法应采用分级阿拉伯数字编号方法,第一级为"1"、"2"、"3"等,第二级为""、""、""等,第三级为""、""、""等,但分级阿拉伯数字的编号一般不超过四级,两级之间用下角圆点隔开,每一级的末尾不加标点。各层标题均单独占行书写。第一级标题居中书写;第二级标题序数顶格书写,后空一格接写标题,末尾不加标点;第三级和第四级标题均空两格书写序数,后空一格书写标题。第四级以下单独占行的标题顺序采用.…和.两层,标题均空两格书写序数,后空一格写标题。正文中对总项包括的分项采用⑴、⑵、⑶…单独序号,对分项中的小项采用①、②、③…的序号或数字加半括号,括号后不再加其他标点。7.注释毕业设计(论文)中有个别名词或情况需要解释时,可加注说明,注释可用页末注(将注文放在加注页的下端)或篇末注(将全部注文集中在文章末尾),而不可行中注(夹在正文中的注)。注释只限于写在注释符号出现的同页,不得隔页。8.公式公式应居中书写,公式的编号用圆括号括起放在公式右边行末,公式和编号之间不加虚线。9.表格每个表格应有表序和表题,表序和表题应写在表格上放正中,表序后空一格书写表题。表格允许下页接写,表题可省略,表头应重复写,并在右上方写"续表××"。10.插图毕业设计的插图必须精心制作,线条粗细要合适,图面要整洁美观。每幅插图应有图序和图题,图序和图题应放在图位下方居中处。图应在描图纸或在白纸上用墨线绘成,也可以用计算机绘图。11.参考文献参考文献一律放在文后,参考文献的书写格式要按国家标准GB7714-87规定。参考文献按文中出现的先后统一用阿拉伯数字进行自然编号,一般序码宜用方括号括起,不用园括号括起。
338 浏览 4 回答
257 浏览 2 回答
276 浏览 7 回答
355 浏览 6 回答
153 浏览 8 回答
257 浏览 6 回答
157 浏览 4 回答
127 浏览 4 回答
104 浏览 4 回答
93 浏览 6 回答
351 浏览 5 回答
310 浏览 4 回答
159 浏览 4 回答
127 浏览 5 回答
109 浏览 3 回答