科研信息管理系统第一章、概述1.1项目背景随着社会的发展,在信息社会中,人们越来越多的使用高质量的计算机软件来完成信息的获取和处理工作。
在高等院校中,教职工科研成果的质量,发表论文的多少,以及出版的教材和获得的奖励,也是评价高校科研水平的依据。
这些高校的科研信息在一定的程度上反映出高校在某一学科领域的科研水平。
由于许多高校对科研信息管理都是手工整理和计算机单机工作,不能很方便的对高校的各种科研信息进行高效的管理,而且还花费了大量的人力物力,数据共享性不好,也不利于科研信息部门对该高校的科研信息进行有效的掌握和分析。
因此,为了更好地节省人力和时间,提高高校的科研信息管理效率,研发适合高校信息管理的系统是很有必要的。
1.2 编写目的一、实现使用的高校科研信息管理系统,方便高校对教职工的科研信息进行管理二、完成课程设计通过课程设计达到以下目的1、根据教材上数据库设计部分的原理和方法,结合软件工程相关知识,能针对一些简单的数据库系统设计问题,进行必要的分析和设计。
2、巩固学习的数据库原理、程序设计语言等课程的基础知识,训练学生分析和解决数据库系统的实际问题的能力3、能查阅资料解决数据库技术方面的问题。
1.3 软件定义科研信息管理系统是针对高校能够有效地对教职工的科研信息进行管理。
实现对教职工的科研信息进行数据录入数据库,各种查询功能和实现对信息的统计功能。
按照一定的条件对数据库进行查询,实现数据共享。
1.4 开发环境开发环境:Windows7辅助工具:Myeclipse数据库管理系统:SQL Server 2005运行环境:Windows XP/Vista/7/8第二章、需求分析说明:本系统要解决的基本问题是:对高校教职工的科研信息进行管理。
即将高校教职工科研信息进行录入数据库和各种查询功能,最后对科研信息进行统计汇总。
所有功能实现对用户透明。
2.1 系统流程图2.1.1 系统流程图说明符处理输入输出联机存储2.2 数据流图2.2.1 科研信息管理系统数据流图说明符外部实体处理数据流向数据存储2.2.2 顶层数据流图顶层数据流图2.2.2 二层数据流图二层数据流图P1.1.12.3 数据字典2.3.2 数据文件2.4 性能分析需实现许多性能特性,实用性、灵活性、可扩展性、易维护性、可靠性、安全保密性等等。
1、实用性实用性是衡量一个应用系统好坏的重要指标。
是否与业务紧密结合,是否具有严格的业务针对性,是系统成败的关键。
2、灵活性灵活性可以达到更高效率、更佳界面直观的效果。
3、可扩展性随着系统应用的普及和推广,系统功能的扩展将是不可避免的,因此,提高系统的可扩展性、可维护性是提高整个系统性能的必然要求。
4、易维护性本系统采用多层架构设计,使系统结构更清楚,分工更明确,有利于后期的维护。
5、可靠性社会向信息时代迅速发展的同时也有潜在危机,即对信息技术的依赖程度越高,系统失效可能造成的危害和影响也就越大。
因此,采用良好的操作系统和数据库,确保数据的一致性和完整性,并使系统免受病毒感染,确保系统运行的可靠性具有重要意义。
6、安全保密性整体的系统安全性是本系统中必须考虑的重点要求。
在该系统设计中,安全、可靠将作为第一要素。
同时,利用细分的权限管理,拒绝非法用户进入系统和合法用户的越权操作,避免系统遭到恶意破坏,防止系统数据被窃取和篡改。
此外,还有良好的用户身份认证体制和灵活的密码更改模块;用户权限也可以通过管理员灵活修改。
第三章、概念结构设计3.1 数据抽象—分E—R图设计1、教职工基本信息E—R图2、教师科研项目信息E—R图3、教师发表论文E —R 图教师发表论文信4、教师出版教材E —R图获奖信息E—R图第四章逻辑结构设计逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为选用DBMS产品所支持的数据模型相符合的逻辑结构。
把基本E-R图转换成关系模型4.1 表结构4.2 SQL语句实现基本表1. 用户表create table UserInfo(用户名varchar(10)primary key not null,密码varchar(20)not null);2.教师表create table Teacher(编号varchar(5)primary key not null,姓名varchar(20)unique not null,性别varchar(2)check(性别='男'or性别='女')not null,年龄smallint not null,职称varchar(20)not null,学历varchar(20)not null,所在机构varchar(30)not null);第五章软件功能设计根据高校的科研管理工作共性和实际需要,通过对高校的科研管理分析,高校科研管理信息系统功能需求有如下几个方面。
一、用户登录信息管理:通过正确的用户名和密码进入管理系统二、数据库管理员登录信息管理:管理员有高校指定,用户名和密码是特有的。
三、全校科研信息录入数据库:根据实际情况,将教师的基本信息、已结束和正在进行的科研项目、发表的论文、出版的教材、取得的成果和奖励、等信息录入科研信息管理系统的数据库。
四、全校教师科研信息查询:可以通过该系统对教师的各项科研信息进行查询如:已结束和正在进行的科研项目、发表的论文、出版的教材、取得的成果和奖励等。
五、教师科研信息的更新:可以对教职工的科研信息进行添加和修改操作,只有管理员可以对数据库的内容进行更改。
第六章界面设计1 登陆界面2用户登录界面3 管理员登录界面第七章附录源代码说明:类ConnectDB:连接数据库类Database:将信息录入数据库类Query:实现用户的查询功能类Result:返回结果集类ManegeSen:调用以上类,实现管理package ch01;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class ConnectDB {/************* 加载JDBC驱动************/String DriverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";/******* 连接服务器和数据库shujie *******/String dbURl = "jdbc:sqlserver://ASUS-PC:1433; DatabaseName=KeYan";String usrName = "sa"; // 用户名String usrPwd = "123";Statement stmt = null; // 执行SQL对象Connection dbConn = null;ResultSet rs = null;String userName;String userp;String sqlq="select * from Teacher where 编号='20001'";public ConnectDB() {try {Class.forName(DriverName);dbConn = DriverManager.getConnection(dbURl, usrName, usrPwd);System.out.println("Connection Successful!"); // 连接成功,输出Successfulstmt = dbConn.createStatement();//rs=stmt.executeQuery(sqlq);} catch (Exception e) {e.printStackTrace();}}public Result[] getData() throws SQLException {Result[] r = new Result[100];for (int i = 0; i < 100; i++) {r[i] = new Result();}int i = 0;while (rs.next()) {r[i].setUser(rs.getString(1));r[i].setPass(rs.getString(2));i++;}Result[] rs1 = new Result[i];for (int j = 0; j < i; j++) {rs1[j] = new Result();rs1[j].setUser(r[j].getUser());rs1[j].setPass(r[j].getPass());}return rs1;}public Result[] getDataX() throws SQLException{ Result[] r1 = new Result[100];for (int i = 0; i < 100; i++) {r1[i] = new Result();}int i = 0;while(rs.next()){r1[i].setStr1(rs.getString(1));i++;}Result[] rs3 = new Result[i];for (int j = 0; j < i; j++) {rs3[j] = new Result();rs3[j].setStr1(r1[j].getStr1());}return rs3;}public Result[] getDataJ() throws SQLException{ Result[] r1 = new Result[100];for (int i = 0; i < 100; i++) {r1[i] = new Result();}int i = 0;while(rs.next()){r1[i].setStr1(rs.getString(1));r1[i].setStr2(rs.getString(2));r1[i].setStr3(rs.getString(3));r1[i].setStr4(rs.getString(4));r1[i].setStr5(rs.getString(5));r1[i].setStr6(rs.getString(6));r1[i].setStr7(rs.getString(7));i++;}Result[] rs4 = new Result[i];for (int j = 0; j < i; j++) {rs4[j] = new Result();rs4[j].setStr1(r1[j].getStr1());rs4[j].setStr2(r1[j].getStr2());rs4[j].setStr3(r1[j].getStr3());rs4[j].setStr4(r1[j].getStr4());rs4[j].setStr5(r1[j].getStr5());rs4[j].setStr6(r1[j].getStr6());rs4[j].setStr7(r1[j].getStr7());}return rs4;}}package ch01;import java.awt.Color;import java.awt.FlowLayout;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.SQLException;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JTextField;public class ManegeSen extends JFrame {JFrame ff = new JFrame(); //窗口界面JPanel jp4=new JPanel(); //提示语面板public JTextField jt1 = new JTextField(12);public JPasswordField jpw = new JPasswordField(12);JButton but1 = new JButton("用户登陆");JButton but2 = new JButton("管理员登陆");public static void main(String[] args) {ManegeSen m = new ManegeSen();// UserInfo u1=new UserInfo(); //创建用户对象// new ConnectDB();m.InitUI1();}public void InitUI1() { //用户登录界面ff.setSize(500, 550);ff.setLayout(null);// ff.setDefaultCloseOperation();ff.setVisible(true);JPanel jp1 = new JPanel();JPanel jp2 = new JPanel();JPanel jp3 = new JPanel();jp1.setSize(500, 150);jp1.setLocation(0, 0);jp1.setLayout(null);jp1.setBackground(Color.RED);jp2.setSize(500, 100);jp2.setLocation(0, 150);jp2.setLayout(null);jp2.setBackground(Color.GREEN);jp3.setSize(500, 200);jp3.setLayout(null);jp3.setLocation(0, 250);jp4.setSize(500, 50);jp4.setLocation(0, 450);Font font=new Font("宋体",Font.BOLD,30);Font ft=new Font("宋体",Font.BOLD,20);JLabel jl1 = new JLabel("教师科研信息管理系统");jl1.setFont(font);//jl1.setBackground(Color.GREEN);// jl1.setFont();JLabel jl2 = new JLabel("请输入用户名和密码");jl2.setFont(ft);JLabel jl3 = new JLabel("用户名");JLabel jl4 = new JLabel("密码");jl1.setBounds(60, 30, 500, 100);jl2.setBounds(150, 30, 500, 50);jl3.setBounds(120, 30, 50, 30);jl4.setBounds(120, 80, 50, 30);jt1.setBounds(180,30, 180, 30);jpw.setBounds(180, 80, 180, 30);but1.setBounds(160, 120, 100, 30);but2.setBounds(280, 120, 100, 30);jp1.add(jl1);jp2.add(jl2);jp3.add(jl3);jp3.add(jt1);jp3.add(jl4);jp3.add(jpw);jp3.add(but1);jp3.add(but2);ff.add(jp1);ff.add(jp2);ff.add(jp3);ff.setVisible(true);but1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (e.getSource() == but1) {ConnectDB c = new ConnectDB();String sql = "select * from UserInfo";try {c.rs = c.stmt.executeQuery(sql);} catch (SQLException e2) {// TODO Auto-generated catch blocke2.printStackTrace();}try {Result[] t = c.getData();int count=0;for (int i = 0; i < t.length; i++) {boolean Flag = false;//System.out.println(t[i].getUser()+","+t[i].getPass());//System.out.println(t[i].getPass()+","+t[i].getUser());if ((jt1.getText().equals(t[i].getUser()))&& (jpw.getText().equals(t[i].getPass()))) {System.out.println("登陆成功");InitUI2();Flag=true;if(Flag){JLabel jl5=new JLabel("登陆成功");jl5.setBounds(200, 30, 150, 10);jp4.add(jl5);ff.add(jp4);ff.setVisible(true);}Query q=new Query();q.InitUI4();q.AddMyListener();break;}if(!Flag&&count==t.length-1){JLabel jl6=new JLabel("用户名或密码错误");jl6.setBounds(200, 30, 100, 10);jp4.add(jl6);ff.add(jp4);ff.setVisible(true);System.out.println("登陆失败");}count++;}} catch (SQLException e1) {e1.printStackTrace();}}}});but2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {if(e.getSource()==but2){ConnectDB c = new ConnectDB();String sql = "select * from UserInfo";try {c.rs = c.stmt.executeQuery(sql);} catch (SQLException e2) {// TODO Auto-generated catch blocke2.printStackTrace();}Database d=new Database();try {if((jt1.getText().equals("11111"))&& (jpw.getText().equals("12345"))){System.out.println("登陆成功");d.InitUI3();d.AddListener();//break;}else{JLabel jl6=new JLabel("普通用户禁止以管理员身份登录");jl6.setBounds(200, 30, 100, 10);jp4.add(jl6);ff.add(jp4);ff.setVisible(true);System.out.println("普通用户禁止以管理员身份登录");}} catch (Exception e2) {e2.printStackTrace();}}}});}void InitUI2(){ //查询界面JFrame f1=new JFrame();f1.setSize(500, 500);f1.setDefaultCloseOperation(EXIT_ON_CLOSE);f1.setLayout(null);JPanel jpa1=new JPanel();jpa1.setSize(400, 200);jpa1.setLayout(null);JLabel jla1=new JLabel("作为普通用户,你只有查询权限");Font ft1=new Font("斜体",Font.ITALIC,20);jla1.setFont(ft1);JLabel jla2=new JLabel("教师编号");JTextField jte=new JTextField(15);jla1.setBounds(0, 0, 400, 100);jla2.setLocation(0, 30);jte.setLocation(50, 30);f1.add(jla1);f1.setVisible(true);}}。