1、学 号: 课 程 设 计题 目学生信息管理系统学 院计算机科学与信息工程学院专 业金融信息化服务外包班 级学生姓名指导教师2015年12月28日课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 题 目: 学生信息管理系统已知技术参数和设计要求:a) 时间要求为14周18周。b) 开发工具java。c) 开发平台JCreator 4.50 Pro。d) 所用文本Txt。e) 说明文档要求符合学校课程设计文档规范。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)设计一个学生信息管理系统,应用软件的开发环境的简要说明,需求分析,数据设计,功能设计,程序的
2、主要界面、代码实现,设计结果的总结,附录或参考资料a) 登录、查询、增加、删除、修改本系统中的各个表信息时间安排:1、需求分析,联系实际,历时2天。2、各种设计简要说明需求分析,数据设计,功能设计,历时4天。3、编码,使用Java语言在JCreator 4.50 Pro集成开发环境中实现本系统的添加、删除、查询、读取txt文档,历时4天。4、界面设计与软件测试。使用可视化界面设计,完成系统各界面功能的设计与实现。完成本系统的初步测试与试运行,历时5天。5、java课程设计文档的最后检查与修订,历时1天指导教师签名: 年 月 日第 40 页 共 40 页目录一应用软件的开发环境的简要说明6(一)
3、开发环境:6(二)运行环境:6二需求分析6(一)系统目标6(二)系统功能分析61.功能需求:62.非功能约束需求:73.数据需求:74.系统需求7三数据设计7(一)数据流图7(二)数据字典8数据项8数据结构9数据流9数据存储9处理过程10四功能设计11(一)本系统的主要功能11(二)Java源文件及其功能11(三)详细设计121. 主类StudentManager122.类Add123.类Cha134.类Shan13(四)结构图及流程图151.学生信息系统结构图152.添加学生信息163.删除学生信息164.修改学生信息175.查询学生信息186.登录18五程序的主要界面、代码实现19(一)登
4、录界面19(二)主界面21(三)添加学生信息界面25(四)删除学生信息界面30(五)修改学生信息界面33(六)查询学生信息界面38六设计结果的总结41七附录或参考资料41一应用软件的开发环境的简要说明(一)开发环境:开发环境的选择会影响到java的设计,所以在这里给出学生信息管理系统的开发与运行环境如下:开发环境:Windows XP开发工具:JCreator 4.50 Pro文本文件管理系统:txt(二)运行环境:为了保证系统运行的效率和可靠性。 其运行要求如下:运行环境:JCreator 4.50 Pro以上 客户端: Windows98/NT/XP等 硬件环境: 服务器 CPU:PIII
5、 500以上 ,内存:256M以上 客户机 CPU:P200MMX以上,内存:32M以上二需求分析(一)系统目标 本系统的用户主要不是学生。通过一个学生信息管理系统,使学生的信息管理工作系统化、规范化、自动化,从而达到提高管理效率的目的。(二)系统功能分析1.功能需求:(1)验证用户输入的登录信息。用户只有输入正确的登录信息后,才能进入信息管理系统。 (2)查询学生信息功能。选择该功能后,可以查询学生基本信息。(3)添加学生信息功能。选择该功能后,可以添加学生的学生基本信息。(4)修改学生信息功能。选择该功能后,可以修改学生的学生基本信息。(5)删除学生信息功能。选择该功能后,可以删除学生的学
6、生基本信息。(6)退出。可以退出本信息管理系统。2.非功能约束需求:(1) 安全性:权限管理,身份检验。(2) 可靠性:基本能够运行,不会系统崩溃。(3) 时间响应速度:查询,更新。3.数据需求:(1)学生信息的添加和删除都需要管理人员来执行。(2)输入学生信息时,要求学生信息完整。(3)登录时要求输入用户名和匹配的密码。4.系统需求(1)本系统只有输入正确的用户名和密码,才能进入系统。(2)但凡进入系统的人,都可以执行各种操作。三数据设计(一)数据流图图2.1 学生信息管理系统的顶层数据流图根据基本系统模型,对其逐步细化,得到描述逻辑系统细化后的数据流图,如图2.2所示。图2.2学生信息管理
7、系统的0层数据流图 (二)数据字典数据项有了系统的数据流图后,还有相当多的数据信息如学生具体信息需要进一步描述,这就是需要定义数据字典,才能把现有的系统描述清楚。图2.3列出了系统的主要数据字1. 数据项:学号含义说明:唯一识别学生的号码别名:学生证号类型:字符型长度:10取值范围:00000000009999999999取值含义:前四位表示班级号、中间四位表示专业代码、后两位表示学生编号与其他数据项的逻辑关系:标识项2. 数据项:姓名含义说明:学生的名称类型:字符型长度:10 取值范围:所有汉字3. 数据项:性别含义说明:识别学生性别类型:字符型长度:2取值范围:男、女4. 数据项:专业含义
8、说明:表示该生所学的专业类型:字符型长度:305. 数据项:年级含义说明:该表该生所在的年级类型:字符型长度:206. 数据项:出生含义说明:该表该生出生年月类型:字符型长度:4取值范围:无(eg:1994.03.24) 7. 数据项:用户含义说明:是否有登录的权限类型:字符型长度:10数据结构1 .数据结构:学生含义说明:是学生信息管理系统的主要数据,定义了一个学生的有关信息组成:姓名、学号、性别、专业、年级、出生2 .数据结构:用户含义说明:是学生信息管理系统的数据,定义了有关用户的信息组成:用户名、密码 数据流1.数据流:登录信息说明:用户用来登录学籍系统的用户学生信息数据流来源:用户
9、数据流去向:用户信息认证组成:用户名2.数据流:学生信息查询结果说明:用户查看学生信息后得到的结果数据流来源:查询学生信息数据流去向:用户组成:姓名、学号、性别、专业、年级、出生数据存储1.数据存储:学生信息数据说明:记录所有学生的学生信息资料库流入数据流:相关人员输入流出数据流:学生查询学生信息数据量:由信息详细情况而定存取方式:随机存取5.数据存储:用户登录信息数据说明:用户的登录信息流入数据流:管理员输入或用户输入流出数据流:验证用户信息数据量:由用户登录多少决定存取方式:随机存取处理过程1.处理过程:查询学生信息说明:用户获得所查学生信息输入:选择查询学生信息功能输出:查询结果处理:用
10、户进入系统后,选择查询学生信息功能,获得相应信息2.处理过程:添加学生信息说明:用户添加学生信息输入:选择添加学生信息功能输出:添加成功处理:用户进入系统后,选择添加学生信息功能3.处理过程:删除所查学生信息说明:用户删除学生信息输入:选择删除学生信息功能输出:删除结果处理:用户进入系统后,选择删除学生信息功能4.处理过程:修改学生信息说明:学生修改学生信息输入:选择修改学生信息功能输出:修改结果处理:用户进入系统后,选择修改学生信息功能学生基本信息表(Student)数据类型特殊属性描述String不为空姓名String不为空学号String不为空性别String不为空专业String不为空
11、年级String不为空出生表3.1学生信息基本表四功能设计(一)本系统的主要功能运行该系统成功后,会出现一个登录的界面,输入正确的用户名后,会出现一个主界面,上面有 5个子菜单分别是添加、修改、查询、删除和退出。点击它们会出现不同的界面,分别有不同的功能:1. StudentMessage.java 该类负责创建学生信息管理系统的主窗口,该类还有main方法,程序从该类开始执行。 2.Add.java 该类创建的对象是StudentManager类的重要成员之一,负责提供添加学生基本信息的界面。 3.Xiu.java 该类创建的对象是StudentManager类的重要成员之一,负责提供查询和
12、修改学生基本信息的界面。4.Shan.java该类创建的对象是StudentManager类的重要成员之一,负责提供删除学生基本信息的界面。5.Cha.java创建的对象是StudentManager类的重要成员之一,该类负责提供查询学生基本信息的界面。6.Login1.java该类创建的对象是StudentManager类的重要成员之一,该类负责用户登录时的检验。本系统是基于数据库的学生信息管理系统,实现了连接数据库,录入、修改、查询、删除学生信息的功能。(二)Java源文件及其功能1.admin.txt该文件为登录提供登录的用户名,Login1调用该文件。 2.student.txt该文件
13、为添加、修改、查询、删除操作提供学生信息,Add,Shan,Cha和Xiu调用该文件。(三)详细设计 1. 主类StudentManager成员变量描述变量类型名称按钮JButtonb1(添加)按钮JButton b2(删除)按钮JButtonb3(修改)按钮JButtonb4(查询)按钮JButtonb5(退出)面板容器JPanelJp表4.1主要成员变量(属性)方法名称返回类型功能备注Studentmessage无类型创建窗口构造方法main无类型执行程序程序的主函数表4.2主要方法2.类Add成员变量描述变量类型名称ArrayListArrayLista单行文本JTextField学号、
14、姓名、专业、年级、出生、性别标题JLable学号、姓名、专业、年级面板容器JPanelJp按钮JButton确定、清空、返回表4.3主要成员变量(属性)方法名称返回类型功能备注Add无类型创建添加学生信息界面构造方法表4.4主要方法3.类Cha成员变量描述变量类型名称ArrayList对象类型ArrayLista面板容器JPanelJp按钮JButton确定、清空、返回标题JLable请输入内容:单行文本JTextFieldNULL多行文本框JTextAreaNULL滚动条JScrollPaneNULL表4.5主要成员变量(属性)方法名称返回类型功能备注Cha无类型创建查找学生信息界面构造方法
15、readDate无类型读取studen.txt中的数据无Js无类型执行查找无表4.6主要方法4.类Shan成员变量描述变量类型名称ArrayList对象类型ArrayList a面板容器JPanelJp按钮JButton确定、清空全部数据、返回标题JLable请输入要删除的单行文本JTextFieldNULL表4.7主要成员变量(属性)方法名称返回类型功能备注Shan无类型创建删除学生信息界面构造方法readDate无类型读取studen.txt中的数据无Delete无类型执行删除无表4.8主要方法5.类Xiu成员变量描述变量类型名称ArrayList对象类型ArrayList a面板容器JP
16、anelJp按钮JButton查找、修改、返回标题JLable学号、姓名、专业、年级单行文本JTextField学号、姓名、专业、年级表4.9主要成员变量(属性)方法名称返回类型功能备注Xiu无类型创建修改学生信息界面构造方法readDate无类型读取studen.txt中的数据无Pc无类型执行修改后保存无Cx无类型执行查询并显示在框中无表4.10主要方法6.类Login1成员变量描述变量类型名称ArrayList对象类型ArrayList a面板容器JPanelJp按钮JButton确定标题JLable请输入用户名:单行文本JTextFieldNULL密码框JPasswordFieldpas
17、sWord表4.11主要成员变量(属性)方法名称返回类型功能备注Login1无类型创建登录学生信息界面构造方法readDate无类型读取studen.txt中的数据无Log无类型执行查询是否有该用户无表4.12主要方法(四)结构图及流程图1.学生信息系统结构图图4.1学生信息系统结构图2.添加学生信息图4.2添加学生信息流程图3.删除学生信息图4.3删除学生信息流程图4.修改学生信息 图4.4删除学生信息流程图5.查询学生信息图4.5删除学生信息流程图6.登录图4.6登录学生信息系统流程图五程序的主要界面、代码实现(一)登录界面图5.1登录界面源代码:class Login1 extends
18、JFrameJLabel l1= new JLabel(用户名:);JLabel l3= new JLabel(欢迎登录学生信息管理系统!);JLabel l2= new JLabel(密码:);JPasswordField passWord=new JPasswordField(); JButton b1 =new JButton(确定);JTextField jtf=new JTextField(150);ArrayList a=new ArrayList();JPanel jp=new JPanel();public Login1() Font f=new Font(黑体,Font.BO
19、LD,15);/修改字体 l3.setFont(f);/修改字体 jp.add(l3); jp.add(l1); jp.add(jtf); jp.add(l2); jp.add(passWord); jp.add(b1); getContentPane().add(jp); jp.setLayout(null); int x=0,y=0; l3.setBounds(x+60,y+10,350,30); l1.setBounds(x+70,y+50,200,30); jtf.setBounds(x+130,y+60,80,25); l2.setBounds(x+70,y+100,200,40);
20、 passWord.setBounds(x+130,y+105,80,25); b1.setBounds(x+100,y+170,70,25); setSize(300,300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle(学生信息管理系统登录); setVisible(true); b1.addActionListener( new ActionListener() public void actionPerformed(ActionEvent ae) log(); );/查询是否有该用户 void readDate()
21、 try Scanner sc=new Scanner(new File(admin.txt); while(sc.hasNextLine()/一行一行的读取 String temp=sc.nextLine(); a.add(temp);/txt中的所有数据,逐行将数据加载到ArrayList中 catch (Exception ex) public void log() a.clear(); readDate(); boolean flag=true; if (jtf.getText().equals() JOptionPane.showMessageDialog(null, 用户名不能为空
22、!); else if (passWord.getText().equals() JOptionPane.showMessageDialog(null, 密码不能为空!); else String sh=jtf.getText(); String sh2=passWord.getText(); for(int i=0;i=0 & str.indexOf(sh2)=0) flag=false; dispose(); StudentMessage s = new StudentMessage(); if(flag) JOptionPane.showMessageDialog(null, 密码错误)
23、; jtf.setText(null); passWord.setText(null); (二)主界面图5.2主界面源代码:import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class StudentMessage extends JFrame CInstead c1=new CInstead();Container c; JButton b1;JButton b2;JButton b3;JButton b4;JButton b5;
24、JLabel tail; public StudentMessage() setContentPane(c1); c=getContentPane(); Font f=new Font(隶书,Font.BOLD,20);/修改字体 b1 =new JButton(添加); b2 =new JButton(删除); b3 =new JButton(修改); b4 =new JButton(查询); b5 =new JButton(退出); tail=new JLabel(学生信息管理系统); tail.setFont(f);/修改字体 JPanel jp=new JPanel(); c.add(
25、tail);c.add(b1);c.add(b2);c.add(b3);c.add(b4);c.add(b5);c.setLayout(null);int x=0,y=0;tail.setBounds(x+80,y+30,200,40);b1.setBounds(x+120,y+90,70,25);b2.setBounds(x+120,y+140,70,25);b3.setBounds(x+120,y+190,70,25);b4.setBounds(x+120,y+240,70,25);b5.setBounds(x+120,y+290,70,25);setSize(330,450);show(
26、);setTitle(学生信息管理系统);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);b5.addActionListener( new ActionListener() public void actionPerformed(ActionEvent ae) System.exit(0); );/关闭b4.addActionListener( new ActionListener() public void actionPerformed(ActionEvent ae) Cha c=new Cha(); );/查询b1.addActionLis
27、tener( new ActionListener() public void actionPerformed(ActionEvent ae) Add c=new Add(); );/添加 b2.addActionListener( new ActionListener() public void actionPerformed(ActionEvent ae) Shan c=new Shan(); );/删除 b3.addActionListener( new ActionListener() public void actionPerformed(ActionEvent ae) Xiu c=
28、new Xiu(); );/修改setVisible(true); public static void main (String args) Login1 n=new Login1(); class CInstead extends JPanel ImageIcon icon; Image img; public CInstead() icon=new ImageIcon(StudentMessage.class.getResource(12.jpg ); img=icon.getImage(); public void paintComponent(Graphics g) super.pa
29、intComponent(g); g.drawImage(img,0,0,null ); (三)添加学生信息界面图5.3添加学生信息界面源代码:class Add extends JFrameJLabel l1= new JLabel(添加学生信息);JLabel l2= new JLabel(姓名:);JLabel l3= new JLabel(性别);JLabel l4= new JLabel(学号:);JLabel l5= new JLabel(专业:);JLabel l6= new JLabel(年级:);JLabel l7= new JLabel(出生:);JButton b1 =n
30、ew JButton(确定);JButton b2 =new JButton(清空);JButton b3 =new JButton(返回);JTextField jtf1=new JTextField(15); JTextField jtf2=new JTextField(15); JTextField jtf3=new JTextField(15); JTextField jtf4=new JTextField(15); JTextField jtf5=new JTextField(15); JTextField jtf6=new JTextField(15); JPanel jp=new
31、 JPanel(); ArrayList a=new ArrayList();File file = new File(student.txt);public Add()Font f=new Font(黑体,Font.BOLD,20);/修改字体 l1.setFont(f);/修改字体jp.add(l1); jp.add(l2); jp.add(jtf1); jp.add(l3); jp.add(jtf2); jp.add(l4); jp.add(jtf3); jp.add(l5); jp.add(jtf4); jp.add(l6); jp.add(jtf5); jp.add(l7); jp.
32、add(jtf6); jp.add(b1); jp.add(b2); jp.add(b3); getContentPane().add(jp); jp.setLayout(null);int x=0,y=0;l1.setBounds(x+130,y+30,200,40);l2.setBounds(x+80,y+90,70,25);l3.setBounds(x+80,y+130,70,25);l4.setBounds(x+80,y+170,70,25);l5.setBounds(x+80,y+210,70,25);l6.setBounds(x+80,y+250,70,25);l7.setBoun
33、ds(x+80,y+290,70,25);jtf1.setBounds(x+120,y+90,150,25);jtf2.setBounds(x+120,y+130,150,25);jtf3.setBounds(x+120,y+170,150,25);jtf4.setBounds(x+120,y+210,150,25);jtf5.setBounds(x+120,y+250,150,25);jtf6.setBounds(x+120,y+290,150,25);b1.setBounds(x+60,y+340,70,25);b2.setBounds(x+140,y+340,70,25);b3.setB
34、ounds(x+230,y+340,70,25); setSize(350,500); setTitle(添加); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); b3.addActionListener( new ActionListener() public void actionPerformed(ActionEvent ae) dispose(); );/关闭当前页面 b2.addActionListener( new ActionListener() public void actionPerform
35、ed(ActionEvent ae) jtf1.setText(null); jtf2.setText(null); jtf3.setText(null); jtf4.setText(null); jtf5.setText(null); jtf6.setText(null); );/清空当前页面 b1.addActionListener( new ActionListener() public void actionPerformed(ActionEvent ae) try if(jtf1.getText().equals() | jtf2.getText().equals() |jtf3.g
36、etText().equals() |jtf4.getText().equals() |jtf5.getText().equals() |jtf6.getText().equals() ) JOptionPane.showMessageDialog(null, 不可以有空,请输入完整信息!); else FileOutputStream fos = new FileOutputStream(file,true); OutputStreamWriter osw = new OutputStreamWriter(fos); BufferedWriter bw = new BufferedWrite
37、r(osw);String str1=jtf1.getText(); String str2=jtf2.getText(); String str3=jtf3.getText(); String str4=jtf4.getText(); String str5=jtf5.getText(); String str6=jtf6.getText(); String s1 = new String(str1+ +str2+ +str3+ +str4+ +str5+ +str6);bw.write(s1); bw.newLine(); bw.flush(); bw.close(); osw.close
38、(); fos.close(); catch (FileNotFoundException e1) e1.printStackTrace(); catch (IOException e2) e2.printStackTrace(); );/写入文档中 (四)删除学生信息界面图5.4删除学生信息界面源代码:class Shan extends JFrameJLabel l1= new JLabel(请输入要删除的学生的姓名或学号);JTextField jtf=new JTextField(20);JButton b1 =new JButton(确定);JButton b2 =new JButton(清空全部数据);JButton b3 =new JButton(返回);JPanel j