课程设计报告课程名称企业资源计划课题名称高校学生成绩管理信息系统专业信息管理与信息系统班级信管1101学号201103115238姓名狐離指导教师张益星唐志航余新宇2014年6 月19 日湖南工程学院课程设计任务书课程名称企业资源计划课题高校学生成绩管理信息系统专业班级信息管理与信息系统学生姓名狐離学号201103115238指导老师张益星唐志航余新宇审批任务书下达日期2014 年6 月19 日任务完成日期2014 年7 月7 日一、设计内容与设计要求1.设计内容:高校学生成绩管理信息系统信管1101班:1~7号:学生表、系部表、专业表、班级表、课程代码表、教师代码表等基础数据的增、删、改。
8~14号:正常成绩录入。
15~21号:查询某学生某学期成绩,查询某学生全部学期成绩。
22~30号:打印班级花名册、班级成绩综合表。
图书馆管理系统信管1102班:1~6号:图书编目、借阅证管理:对图书信息、读者信息进行增加、删除、修改、查询等维护操作,可以使用excel表批量导入读者信息。
7~13号:借还管理:实现图书的流通,包括借还、还书、续借、损失归还、丢失处理等操作,对于异常情况自动弹出罚款窗口,登记图书损坏、丢失等异常情况及罚款金额;借还中输入读者借阅证可查询到读者所在部门、可借阅图书、借阅期限、当前所借图书等信息。
14~19号:图书查询:根据isbn、条形码、姓名、读者证号、ic卡号、正题名、馆藏地、状态等查询当前图书馆所有图书的外借、在库、丢失、损坏等信息,如果是外借的图书可现实读者的信息以及借出时间和归还时间。
结果可导出excel表。
20~26号:读者借阅统计:按部门、条形码、借阅证、ic卡号、姓名、正题名、索书号、借书日期、馆藏地等条件查询读者的历史借阅情况,可导出excel 表。
27~30号:图书借阅统计:按条形码、分类号、正题名、借书日期、馆藏地等查询图书的借阅情况,包括每册书的借阅次数、每种书的借阅次数以及每个分类号的借阅次数,可导出excel表。
2.设计要求:(1)本系统可采用C/S、B/S模式进行开发,采用powerbuilder 、C#、JA V A 等语言进行界面及程序设计,后端采用SQL Server 2000数据库系统。
(2)论述课题的性质、内容以及本次课程设计的目的和要求。
说明系统对计算机软、硬件环境的基本要求,对所采用的语言和SQL Server数据库管理系统和C/S模式简要的说明。
(3)总体设计方案的分析、比较和论证。
(4)数据库的建立,数据库中表的结构,各表中关键字的设置,表与表之间的关系。
(5)应用程序各功能模块和报表的设计。
(6)编写代码、上机输入、调试、修改并运行通过。
(7)编写课程设计说明书。
说明书是总结性的技术文件,应全面叙述整个设计的内容及过程(可参考上述6条),发现的问题及解决方法等。
(9)说明书应采用A4纸张,文字说明不少于5000字。
二、进度安排第一周:星期三下午2:30——6:30,星期五下午2:30——6:30 第二周:星期一上午8:00——12:00,星期二上午8:00——12:00 星期四下午2:30——6:30,星期五上午8:00——12:00附:课程设计报告装订顺序:封面、任务书、目录、正文、评分。
正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;目录1 系统需求分析 (1)1.1设计思想 (1)1.2实现方法 (1)2 总体设计 (3)2.1总体设计图 (3)2.2 E-R图 (4)2.2.1专业E-R图 (4)2.2.1系部E-R图 (4)2.3数据库的设计与数据库连接的实现 (4)2.3.1:department表的创建 (4)2.3.2:major表的创建 (4)2.3.3:数据库的连接 (5)3 详细设计 (7)3.1系部插入模块 (7)3.2系部删除模块 (8)4 系统运行结果 (11)4.1系部添加 (11)4.2系部修改 (11)4.3系部删除 (12)4.4系部所有专业查询 (13)4.5专业添加 (13)4.6专业修改 (14)4.7专业删除 (14)4.8专业所在系部查询 (15)5 调试分析 (16)6 心得体会 (17)7 附录 (19)7.1源程序代码 (19)7.2 参考文献 (34)8 评分表 (35)1 系统需求分析1.1设计思想本文论述某学校学生成绩管理系统专业系部两个模块的开发过程。
全文分课程任务及要求、需求分析、设计思路、详细设计、运行调试与分析讨论设计体与小结及参考文献共七部份内容。
本系统以Java Eclipse为开发平台,选择了易学易用可java图形界面开发编程语言,主要用到了swing、awt、sql三个类包,结合单位实际,利用软件工程化思想和方法,总体上用结构化生命周期法进行系统分析和设计,采用快速原型法来实现系统。
在程序设计与调试上采用了自上而下、逐步细化,逐步完善的原则。
采用结构化的功能模块设计系统功能,可读性好,易于扩充。
系部模块由“系部插入”、“系部修改”、“系部删除”、“系部所有专业查询”等功能模块组成,专业模块由“专业插入”、“专业修改”、“专业删除”和“专业所在系部查询”等功能模块组成。
基本功能较全面。
本系统用户界面友好、清晰、操作简便,易学易用;系统可读性好,易于维护、更新,安全性较好。
本系统采用传统下拉菜单功能选择,方便、快捷、一目了然,并且在一个窗体中进行操作,每个功能界面颜色不同,这样可使系统可视化性比较强。
对学生的基本信息进行简单操作,可按名称进行查询、修改、删除操作。
本系统采用链入数据库进行存储,可动态进行查看、操作,这样的系统可修改性较强。
1.2实现方法①学生学籍管理系统主界面模块:采用Frame窗体来设置欢迎界面包括背景图片及字幕(可以设计成滚动字幕效果),左上方的菜单条设计成下拉式。
包括“系部插入”、“系部修改”、“系部删除”、“系部所有专业查询”“专业插入”、“专业修改”、“专业删除”和“专业所在系部查询”八项菜单项。
②系部插入基本信息模块:由于我们在数据库department表中的id采用的是自增,所以在界面当中只要输入系部名称就可以了。
所以我们直接在Frame窗体中加入一个输入框,用来填写系部名字,再加上添加按钮和取消两个按钮进行监听。
③修改系部基本信息模板:这个功能我们采用了下拉框的形式,我们下拉框里面的内容是系部的id,然后下面的输出框就显示出了这个系部的名称,你可以在这个输出输入框中修改内容,再加上添加按钮和取消两个按钮进行监听。
④系部所有专业查询基本信息模板:这个功能我们采用了一个二维表来显示查询到的结果,然后加上一个输入框,里面输入你想要查询的系部的名称,再加上一个添加的按钮来进行监听并触动事件,就能在二维表中显示出你所查询出来的所有专业。
⑤系部删除基本信息模板:这个主要是采用了下拉框的方式,下拉框中的内容是从数据库中提取出来的,选中你所要删除的系部,然后点击“删除”按钮来实现监听。
专业的插入查询删除修改的Frame窗体和系部是差不多的,所以我就不在这里一一介绍咯额,以下有图片与代码详解。
综上,我们小组的模块就是由以上六部分组成,并将所有内容信息在同一窗体中实现,这样可使系统可视化性提高。
2 总体设计2.1总体设计图图1运行程序到系统界面,接着系统界面就会出现让你能选择的功能: 【1】 系部插入【2】系部修改【3】系部所有专业查询 【4】系部删除【5】数据库相关功能设定图2运行程序到系统界面,接着系统界面就会出现让你能选择的功能: 【1】专业插入【2】专业修改【3】专业所在系部查询 【4】专业删除【5】数据库相关功能设定系部模块系部名称插入 系部名称修改系部专业查询系部删除SqlHelpr.java专业模块专业名称插入专业名称修改专业所在系部专业删除SqlHelpr.java2.2 E-R图2.2.1专业E-R图专业名专业id 所属系部专业图32.2.1系部E-R图图42.3数据库的设计与数据库连接的实现2.3.1:department表的创建create table department(id int primary key identity(1,1),name varchar(50) not null)图52.3.2:major表的创建create table major(id int primary key identity(1,1),name varchar(50) not null,did int foreign key (did) references department(id))图62.3.3:数据库的连接新建名为student的数据源打开控制面板,找到数据源新建一个student的数据源。
图7单击添加,选择SQL,并在服务器内添加(local)图8注意修改默认的数据库,选中自己的数据库student图9进行数据库的链接测试图10图11在数据源管理器中会看到自己添加的数据源student。
3 详细设计(因为专业这个模块的功能与系部这个差不多,所里我这里就只举例了系部这个模块而已,剩下的看最后的源代码)3.1系部插入模块1.首先导入该程序中所需要用到的java包如下:import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;import java.sql.*;import javax.swing.JOptionPane;2.设计系部插入这一模块的框架public class DepartmentAdd extends JFrame implements ActionListener{ //组件的实例化放在类JLabel lblClassName=new JLabel("系部名称:");//构造方法JTextField txtName=new JTextField(20);JButton btnAdd=new JButton("添加");JButton btnCancel=new JButton("取消");public DepartmentAdd(){//set framethis.setSize(300,200); //设置窗体的大小this.setTitle("添加系部");//设置窗体的标题this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//设置关闭this.setResizable(false);//设置窗体的大小不可变this.setLocationRelativeTo(null); //设置居中this.btnCancel.addActionListener(new ActionListener(){//实现动作事件并链接数据库将文本框内信息存储到数据库中:public void actionPerformed(ActionEvent arg0) {// TODO自动生成方法存根DepartmentAdd.this.setVisible(false);DepartmentAdd.this.dispose();} });this.setLayout(null);//将内容面板的布局设置为空布局l blClassName.setBounds(30,40, 80, 20);t xtName.setBounds(120,40,150,20);b tnAdd.setBounds(50,80,80,20); //alt+/:自动完成功能b tnCancel.setBounds(150,80,80,20);this.add(lblClassName);this.add(txtName);this.add(btnAdd);this.add(btnCancel);btnAdd.addActionListener(this);btnCancel.addActionListener(this);}public static void main(String []args){DepartmentAdd caf=new DepartmentAdd();caf.setVisible(true); }public void actionPerformed(ActionEvent e) {if(e.getSource()==btnAdd){//判断文本框的值是否为空if(this.txtName.getText().equals("")){JOptionPane.showMessageDialog(null, "系部名不能为空!","提示",JOptionPane.ERROR_MESSAGE,null); }else{try {// step1:查找驱动Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//step2:创建连接对象Connectionconn=DriverManager.getConnection("jdbc:odbc:studb");//System.out.println("数据库已连接!");//step3:操作数据库的对象Statement st=conn.createStatement();//step4:准备需要执行的sql 语句String sql="insert into department values('"+txtName.getText()+"')";//System.out.println(sql);//step5: 执行insert的操作int count= st.executeUpdate(sql);//step 6:关闭对象st.close();conn.close();JOptionPane.showMessageDialog(null, "系部添加成功!","提示",RMATION_MESSAGE,null);} catch (ClassNotFoundException e1) {// TODO自动生成 catch 块System.out.println("未找到驱动!");e1.printStackTrace();} catch (SQLException e2) {// TODO自动生成 catch 块e2.printStackTrace();}}}else{this.txtName.setText("");}}}3.2系部删除模块1.首先导入该程序中所需要用到的java包如下:import java.awt.*;import java.awt.event.*;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.*;2.设计系部插入这一模块的框架public class DepartmentDelete1 {private JComboBox departmentList = null;private JTextField pMajoyResult = null;private JFrame jf = null ;public static void main(String[] args) {new DepartmentDelete1().function();}public void bindDepartmentList(){departmentList.removeAllItems();String sql="select name from department;";ResultSet rs =SqlHelper.executeQuery(sql);try {while(rs.next()){this.departmentList.addItem(rs.getString(1)); }Statement st=rs.getStatement();Connection conn=st.getConnection();rs.close();st.close();conn.close();} catch (SQLException e) {e.printStackTrace();}}//实现动作事件并链接数据库将文本框内信息存储到数据库中:public void actionPerformed(ActionEvent e) {if(e.getSource()==btnModify){if(txtName.getText().length()==0){JOptionPane.showMessageDialog(null,"系部名不能为空!");return; }String sql="update department set name='"+txtName.getText()+"' where id="+cboId.getSelectedItem();int count=SqlHelper.executeUpdate(sql);if(count>0){ JOptionPane.showMessageDialog(null,"系部名更新成功!"); }else{JOptionPane.showMessageDialog(null,"系部名更新失败!"); } } if(e.getSource()==btnCancel){ dispose();}}public void itemStateChanged(ItemEvent e) {if(e.getStateChange()==ItemEvent.SELECTED){String did= cboId.getSelectedItem()+"";String sql="select name from department where id="+did;ResultSet rs =SqlHelper.executeQuery(sql);try {rs.next();txtName.setText(rs.getString(1));Statement st =rs.getStatement();Connection conn= st.getConnection();rs.close();st.close();conn.close();} catch (SQLException e1) {// TODO自动生成 catch 块e1.printStackTrace();}}}}//step3:操作数据库的对象Statement st=conn.createStatement();//step4:准备需要执行的sql 语句String sql="insert into department values('"+txtName.getText()+"')";//System.out.println(sql);//step5: 执行insert的操作int count= st.executeUpdate(sql);//step 6:关闭对象st.close();conn.close(); JOptionPane.showMessageDialog(null, "系部添加成功!","提示",RMATION_MESSAGE,null);} catch (ClassNotFoundException e1) {System.out.println("未找到驱动!");e1.printStackTrace();} catch (SQLException e2) {// TODO自动生成 catch 块e2.printStackTrace();}}}else{ this.txtName.setText("");}}4 系统运行结果4.1系部添加图12 数据库里面就有这条内容9图134.2系部修改图14数据库里面的内容修改就如下:图15 4.3系部删除图16 数据库里面的内容如下:图174.4系部所有专业查询图18 4.5专业添加图19 数据库里面的内容如下:图204.6专业修改图21 数据库里面的内容如下:图224.7专业删除图23数据库的内容如下:图24 4.8专业所在系部查询图255 调试分析1.遇到数据库连接的问题,在配置ODBC数据源的时候,找不到服务器,即使是配置本地的服务器也是不可以的,最后才发现我安装的SQL Server2005是一个快速版本的,与常规配置不同,最后要输入本机的计算机名字加上一个后缀才可以。