1、4支持校园卡的食堂消费信息管理系统数据库设计数据库大作业数据库原理课程设计 题目:支持校园卡的食堂消费信息管理系统 专业: 计算机科学与技术 班级: 学生: 教师: 日期:2014 年 06 月 18 日支持校园卡的食堂消费信息管理系统数据库设计一需求分析阶段1.引言通过对本校区学生日常生活的实地调查以及自己的亲身体验,了解到现在许多高校学生生活消费仍然停留在多种消费分块进行,相对独立的模式。开发出合适的学生消费管理系统,可以有利于提高高校消费管理的工作效率。2目标与任务(1)需求分析阶段的目标:1. 了解目前高校的学生消费管理现状2. 通过平时的观察、思考和亲身体会,加上重点实地调查和记录的
2、方式了解和收集大部分学生所需要的消费管理的工作流程,确定系统的基本开发方向。3. 与小组成员讨论个人想法,共同制定开发方案4与指导老师交流小组的想法,征求意见,改正不合理的地方,确定新系统的边界,为下面的概念设计与逻辑设计奠定基础。3. 需求分析阶段的任务(1)处理对象:系统要处理的对象包括:学生基本信息,发卡部门的基本信息,财务部门的基本信息,校园卡的基本信息,食堂消费的基本信息,各个对象包括信息如下所示(详细的数据见于数据字典)1. 学生的基本信息(Student):包括学生姓名,学生学号,身份证号,学生性别,学生所在院系,学生所在专业等方面的信息2. 校园卡的基本信息:包括持卡人的学生学
3、号,持卡人的身份证号,持卡人的所在院系,校园卡的状态,校园卡内的余额3. 食堂消费基本信息:包括消费(HConsume)金额等基本信息4. 财务部门基本信息:包括办公室基本信息5. 校园卡日常事务管理基本信息:包括办卡部门基本信息,办卡信息(FStudentAdd),挂失信息(FLostInf),充值信息(DRecharge)每个数据结构中的数据项见数据字典(2)处理功能要求:系统主要完成以下几个功能:1.学生基本信息的信息查询与更新2.校园卡日常事务管理情况基本信息查询与更新3.校园卡状态的查询4.学生在食堂的消费金额的查询5.食堂营业额的基本信息的查询和修改,查询所有食堂的营业额以体现食堂
4、总体的收入状况,查询各个食堂的收入为评价食堂的服务质量提供依据(3)安全性和完整性要求安全性是通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过用户授权机制,用用户登录方式来识别用户级别,根据这个级别来分配用户权限,达到数据更高层次的安全保密功能。完整性要求用于描述学生的基本信息,财务部门的基本信息,校园卡日常事务管理的基本信息,校园卡基本信息,食堂消费基本信息中数据项能否为null,以及一些用户自定义完整性(符合实际要求),此处用于触发器实现,详细完整性要求见于系统的逻辑设计阶段和数据库实施阶段。二、概念结构设计阶段学生食堂刷卡机校园卡财务部门发卡部
5、门消费充值包含挂补持有1n1m1mnmn11. E-R图: 学生食堂消费 2.数据字典:编号数据项名称简述类型及宽度取值范围DI-1Studentid学生身份证号Char(18)0-999999999999999999DI-2Studentno学生学号Char(9)0-999999999DI-3Studentna学生姓名Char(10)DI-4Studentsex学生性别Char(4)“男”“女”DI-5Studentbirth学生出生年IntDI-6Studentdept学生所在院系Char(20)DI-7Studentspecial学生所在专业Char(20)DI-8Studentclas
6、s学生所在班级Char(20)DI-9Cardstate校园卡状态“挂失”“未挂失”DI-10Cardmoney校园卡余额FloatDI-11CZmoney充值金额FloatDI-12Dinmoney食堂刷卡金额Float3.数据结构:数据结构编号数据结构名称数据结构别名数据结构含义数据项组成Ds-1学生信息Student记录学生的信息Studentid,Studentno,Studentna,Studentsex, Studentdept,StudentspecialDs-2办卡信息FStudentAdd记录办卡信息Studentno,StudentidDs-3挂失信息FloseInf记录挂
7、失信息Studentno,StudentidDs-4解挂信息FUnlose记录解挂信息Studentno,StudentidDs-5充值信息DRecharge记录充值信息Studentno,CZmoneyDs-6校园卡信息StudentEdit记录校园卡信息Studentno,Studentid,Cardstates,CardmoneyDs-7食堂刷卡信息Hconsume记录食堂刷卡信息Consumemoney4.数据流:编号数据流名称输入信息输出信息1查询学生信息学号学生基本信息2修改学生信息变更信息学生基本信息3查询校园卡信息校园卡号校园卡基本信息4修改校园卡信息变更信息校园卡基本信息5查
8、询食堂消费信息校园卡号食堂消费基本信息6修改食堂消费信息变更信息食堂消费基本信息5.数据存储:数据存储名输入数据流输出数据流学生信息表修改学生信息记录学生信息校园卡信息表修改校园卡信息记录校园卡信息食堂信息表修改食堂信息记录食堂信息处理过程:处理过程名输入数据流输出数据流数据维护各数据表的更新、修改信息更新及修改后的各信息表注册学生信息学生基本信息学生基本信息注册校园卡信息校园卡基本信息校园卡基本信息三、逻辑结构设计阶段:1.将E-R图转化为关系模型通过分析所要实现的功能以及现有的实体和联系,确定要把学生实体,校园卡实体,食堂实体分别转化为单独的关系模式,为了便于查询学生在食堂刷卡消费信息,学
9、生的校园卡信息管理,把消费型刷卡关系转化为独立的关系模式,考虑到学生要往校园卡里充值,再从学生和校园卡的拥有关系中抽取出校园卡的充值关系模式。具体关系模式转化结果如下:学生:Student(Studentid,Studentno,Studentna,Studentsex,Studentdept,Studentspecial)校园卡:Card(Cardno,Studentno,Studentid,Cardstate,Cardmoney)充值信息:DRecharge(Studentno,Czmoney)消费刷卡:Hconsume (Consumemoney)2.系统功能模块图:食堂消费管理系统 系
10、统管理财务部门发卡部门食堂刷卡机学生信息管理用户登录退出校园卡充值挂失与解挂校园卡办理消费四、数据库的物理设计阶段1. 物理设计阶段的目标和任务数据库的物理设计就是根据所用的DBMS和处理需求,进行物理存储安排,建立索引,形成数据库的内模式,为逻辑数据模型选取一个最适合应用要求的物理结构的过程,在这个阶段中要完成两大任务:(1) 确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构(2) 对物理结构进行评价,评价的重点是时间和空间效率。2. 数据存储方面 为数据库中各基本表建立的索引如下:(1) 由于进本表Card,Student的主码Cardno,Studentno经常在查询条件和连
11、接操作的连接条件中出现,且他们的取值唯一,考虑在这两个属性上分别建立唯一性索引;(2) 有的基本表中的属性经常性的发生变化,索引并不是越多越好,而要权衡系统为维护索引付出的代价,因此在其他的表上可考虑不建立索引,也可以适当的建立索引。五、数据库实施阶段1. 程序编码部分源代码:Controller -Mainwindow/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates
12、* and open the template in the editor. */package controller;import java.awt.*;import java.awt.event.*;import javax.swing.*;import view.DRecharge;import view.FLoseInf;import view.SLogin;import view.FStudentAdd;import view.FUnLose;import view.HConsume;import view.SInformation;/* * * author computer */
13、public class MainWindow extends JFrame implements ActionListener JMenuBar menuBar; JMenu menu1,menu2,menu3,menu4; JMenuItem m11,m12,m13; JMenuItem m21; JMenuItem m31,m32,m33,m34; JMenuItem m41; public MainWindow() createMenu(); setTitle(支持校园卡的食堂信息管理系统); setIconImage(new ImageIcon(icon.gif).getImage(
14、); setSize(800, 600); Dimension size = Toolkit.getDefaultToolkit().getScreenSize(); setLocation(size.width - getWidth() / 2,(size.height - getHeight() / 2); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setVisible(true); private void createMenu() menuBar = new JMenuBar(); menu1 = new JMenu(系统管理
15、(S)); menu1.setMnemonic(S); m11 = new JMenuItem(学生信息查询); m12 = new JMenuItem(用户登录); m13 = new JMenuItem(退出(X)); m13.setAccelerator(KeyStroke.getKeyStroke(X,2); menu1.add(m11); menu1.add(m12); menu1.addSeparator(); menu1.add(m13); menu2 = new JMenu(财务部门(D)); menu2.setMnemonic(D); m21 = new JMenuItem(
16、校园卡充值); menu2.add(m21); menu3 = new JMenu(发卡部门(F); menu3.setMnemonic(F); m31 = new JMenuItem(校园卡挂失); m32 = new JMenuItem(校园卡解卦); m33 = new JMenuItem(补办校园卡); m34 = new JMenuItem(办理校园卡); menu3.add(m31); menu3.add(m32); menu3.add(m33); menu3.add(m34); menu4 = new JMenu(食堂刷卡机(H); menu4.setMnemonic(H); m
17、41 = new JMenuItem(消 费); menu4.add(m41); m11.addActionListener(this); m12.addActionListener(this); m13.addActionListener(this); m21.addActionListener(this); m31.addActionListener(this); m32.addActionListener(this); m33.addActionListener(this); m34.addActionListener(this); m41.addActionListener(this)
18、; menuBar.add(menu1); menuBar.add(menu2); menuBar.add(menu3); menuBar.add(menu4); this.setJMenuBar(menuBar); Override public void actionPerformed(ActionEvent e) if(e.getSource()=m34) new FStudentAdd(); if(e.getSource()=m12) new SLogin(); if(e.getSource()=m21) new DRecharge(); if(e.getSource()=m31) n
19、ew FLoseInf(); if(e.getSource()=m32) new FUnLose(); if(e.getSource()=m41) new HConsume(); if(e.getSource()=m11) new SInformation(); / public static void main(String args) / new MainWindow(); /Controller-Start/* * To change this license header, choose License Headers in Project Properties. * To chang
20、e this template file, choose Tools | Templates * and open the template in the editor. */package controller;import java.awt.event.ActionEvent;import javax.swing.JFrame;/* * * author computer */public class Start public void actionPerformed(ActionEvent e) public static void main(String args) JFrame.se
21、tDefaultLookAndFeelDecorated(true); new MainWindow(); Dao-ConnectDB/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */package dao;import java.sql.Connection;import java.sq
22、l.DriverManager;/* * * author computer */public class ConnectDB public static Connection connect() try Class.forName(com.mysql.jdbc.Driver); /加载驱动程序 Connection con = DriverManager.getConnection(jdbc:mysql:/localhost:3306/school?useUnicode=true&characterEncoding=utf8, root, 123456); /连接数据库 return
23、 con; /返回连接对象 catch (Exception e) e.printStackTrace(); return null; Dao-FStudentDao/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */package dao;import idao.IFStudentDao;
24、import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import model.FStudent;/* * * author computer */public class FStudentDao implements IFStudentDao public boolean addFStudent(FStudent fSt
25、udent) Connection con = null;/连接对象 PreparedStatement ps = null;/SQL预处理类接口,能大大提高系统效率 try con = ConnectDB.connect();/连接数据库 String sql = insert into student(StudentId,StudentDe,StudentNa,StudentSex,StudentPo,StudentNo) values(?,?,?,?,?,?); ps = con.prepareStatement(sql); ps.setString(1, fStudent.getStu
26、dentId(); ps.setString(2, fStudent.getStudentDe(); ps.setString(3, fStudent.getStudentNa(); ps.setString(4, fStudent.getStudentSex(); ps.setString(5, fStudent.getStudentPo(); ps.setString(6, fStudent.getStudentNo(); int n = ps.executeUpdate(); return n 0; catch (SQLException e) e.printStackTrace();
27、return false; finally try ps.close(); catch (SQLException ex) Override public boolean editFStudent(FStudent fStudent) throw new UnsupportedOperationException(Not supported yet.); /To change body of generated methods, choose Tools | Templates. Override public boolean deleteFStudent(int fStudentId) th
28、row new UnsupportedOperationException(Not supported yet.); /To change body of generated methods, choose Tools | Templates. Override public FStudent fintFStudent(int fStudentId) throw new UnsupportedOperationException(Not supported yet.); /To change body of generated methods, choose Tools | Templates. Override public List fintAllFStudents() throw new UnsupportedOperationException(Not supported yet.); /To change body of generated methods, choose Tools | Templates. Override public List fintSomeFStudents(String fStudentName, int pageNo, int pageSize) throw new UnsupportedOperationExceptio
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1