校园一卡通系统胥东东杜鹏程 闫欢欢 肖旋Word格式文档下载.docx
《校园一卡通系统胥东东杜鹏程 闫欢欢 肖旋Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《校园一卡通系统胥东东杜鹏程 闫欢欢 肖旋Word格式文档下载.docx(86页珍藏版)》请在冰点文库上搜索。
进
度
第1周(2012.9.10~2012.9.16):
我们进行了需求分析,以及制作出流程图并勾勒出E-R图的框架。
为今后代码的编制提供一个较为完善的前期准备。
第2周(2012.9.17~2012.9.23):
分配完任务,对自己所负责的那一部分进行编制与完善。
并最终实现了代码流程。
第3周(2012.9.24~2012.9.28):
主要对所完成任务进行一个编制与总结,将这几周的经历与历程总结出来。
原主
始要
资参
料考
与文
献
[01]Y.DanielLiang(美).Java语言程序设计基础篇[M]:
北京:
机械工业出版社.2011.5
[02]谭浩强C程序设计(第四版)[M]:
清华大学出版社。
2010.6
[03]曲培新、庞永庆、林树泽、许小荣等著JAVA项目开发案例精粹[M]:
电子工业出版社2010.6
指导教师签字:
年月日
学生一卡通管理系统
摘要
一卡通系统在现代社会已经深入到各个学校,随着学校规模的不断扩大,学生数量不断增加,一卡通对学校进行各项工作的开展非常重要,其管理水平的高低将直接影响到人才的培养质量。
面对庞大的信息量,如何有效的提高学生管理是一个学校急需解决的问题。
因此开发适合学校需要的一卡通系统,通过这样的系统,可以减少管理方面的工作量。
在一卡通系统中,我们用到了类,还用到了循环等,这个系统可以省去原来借阅、饮食等一系列麻烦事。
一卡通系统就是一个典型的管理信息系统,它可以让学生的生活问题变的更轻松。
本系统的主要功能就是解决学生的日常问题。
包括存钱、饮食、借阅等问题。
本系统的开发工具使用的是Eclipse3。
参考资料使用的是《Java语言程序设计教程(第八版)》,《C程序设计(第四版)》,《JAVA项目开发案例精粹》。
关键词:
Eclipse、MySQL、数据库
目录
第1章项目分析1
1.1问题描述1
1.2技术分析1
第2章数据库分析与设计2
2.1E-R图2
2.2表设计3
第3章实现4
3.1消费系统模块4
3.1.1流程图4
3.1.2界面及代码5
3.2图书管理系统模块14
3.2.1流程图14
3.2.2界面及代码15
3.3圈存管理系统模块23
3.3.1流程图23
3.3.2界面及代码24
第4章结束语33
附录代码:
36
第1章项目分析
学生日常接触高新技术,能够形成一个良好的氛围,培养学生对科技的兴趣,对学生学习先进的科学文化知识起到积极的促进作用。
培养学生的用卡意识,对提高全民素质也会起到积极的作用。
校园一卡通管理系统综合了消费、节能控水管理、账务管理、结算等多方面的业务需要,有效的保证了卡在学校内的快速、安全、有效的使用。
系统整个业务系统主要分为四个部分:
1消费系统模块(输入学号就能查询此学生的信息及卡内余额,再输入商品号显示商品信息及金额,然后消费扣除卡内金额。
)
2图书管理系统模块(输入学号查询学生信息及此学生已借图书,再输入图书号显示图书信息,然后借阅存储刚刚被借的图书。
3.圈存管理系统模块(输入学号查询此学生的信息,再输入要圈存的金额,圈存成功。
1.1问题描述
在做课题时像做界面连数据库我们都没学过,需要我们自己去查资料。
在实现时就会遇到许多的问题。
(1)程序只能录入,不能再追加。
(2)数据库连接不能实现。
(3)在写程序的时候总是在链表处出错,因为弄不清到底知道那儿。
1.2技术分析
(1)要求利用面向对象的方法以及Java的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)功能用菜单实现(添加、查找、删除等)
(4)数据的输入输出可根据用户选择,从文件或键盘输入。
第2章数据库分析与设计
2.1E-R图
图2—1.1
2.2表设计
表2—2.1一卡通数据表
序号
数据项
类型
长度
1
卡号Cno
String
12
2
学号Csno
3
姓名Cname
20
4
余额Cmoney
Float
6
5
上次充值Clast
表2—2.2图书数据表
书号Bno
书名Bname
作者Bauthor
出版社Bchu
表2—2.3商品数据表
商品号Gno
商品名Gname
价格Gprice
表2—2.4银行卡数据表
卡号Bkno
余额Bkmoney
8
转账金额Bkmove
Flota
第3章实现
3.1消费系统模块
消费系统模块执行的是学生进行消费时的流程情况,通过消费系统模块可以直观的观察到学生本次的消费,扣费情况,并将最终数据存放于数据库中
3.1.1流程图
图3-1消费模块流程图
3.1.2界面及代码
图3-2
这是一卡通系统登录的主界面。
packagecons;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.sql.*;
publicclassfindextendsJFrameimplementsActionListener{
privatestaticfinalString[][]String=null;
publicJTextFieldId1,Id,name,remain,class1,money;
StringId2;
JButtonb1,b2,b3;
//定义三个按钮b1、b2、b3
Stringname1,remain1,class2,money1;
//定义四个字符串
图3-3
publicfind(){
Containerc=this.getContentPane();
c.setLayout(newGridLayout(3,1));
//创建布局管理器,指定行列数
JPanelcenter=newJPanel(newGridLayout(5,2));
JPanellow=newJPanel(newFlowLayout());
JLabellabel1=newJLabel("
消费服务信息"
SwingConstants.CENTER);
label1.setFont(newFont("
TRUE"
Font.TRUETYPE_FONT,25));
//设置组件的字体
c.add(label1);
//将label1追加到c中
Id1=newJTextField();
Id=newJTextField();
name=newJTextField();
remain=newJTextField();
class1=newJTextField();
center.add(newJLabel("
请输入卡号"
SwingConstants.CENTER));
//将信息添加到模板的中间
center.add(Id1);
学号"
center.add(Id);
姓名"
center.add(name);
余额"
center.add(remain);
班级"
center.add(class1);
c.add(center);
b1=newJButton("
消费"
);
//定义消费按钮
b2=newJButton("
确定"
//定义确定按钮
low.add(b1);
low.add(b2);
c.add(low);
b1.addActionListener(this);
b2.addActionListener(this);
this.setBounds(200,200,600,400);
this.setVisible(true);
//显示框架给用户
}
图3-4
这是消费系统的登录界面,在本界面中需输入学生的卡号,而卡号是在数据库已经有所存取的。
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==b1){
gconsc=newgcons();
}
if(e.getSource()==b2){
addFI();
//System.exit(0);
}
publicvoidaddFI(){
String[]s=newString[5];
Id2=Id1.getText();
/*if(name1.length()==0||remain1.length()==0)
JOptionPane.showMessageDialog(this,"
请输入"
//向用户展示出信息文本框
else*/try{
Class.forName("
com.mysql.jdbc.Driver"
Stringurl="
jdbc:
mysql:
//localhost:
3306/hehe?
useUnicode=true&
characterEncoding=utf-8"
;
//数据库地址
Stringuser="
root"
StringuserPwd="
"
Connectioncon=DriverManager.getConnection(url,user,userPwd);
if(!
con.isClosed())
System.out.println("
连接数据库成功!
Statementstatement=con.createStatement();
//Stringsql="
selectId,name,remainfromcreditwhereId=20110709"
//从credit中查询ID是20110709的学生的基本信息
Stringsql="
selectId1,Id,name,remain,class1fromcreditwhereId1="
+Id2;
System.out.println(sql);
ResultSetrs=statement.executeQuery(sql);
//System.out.println(rs);
while(rs.next()){
s[0]=rs.getString
(1);
s[1]=rs.getString
(2);
s[2]=rs.getString(3);
s[3]=rs.getString(4);
s[4]=rs.getString(5);
//System.out.println(s[0]);
Id1.setText(s[0]);
Id.setText(s[1]);
name.setText(s[2]);
remain.setText(s[3]);
class1.setText(s[4]);
}
}catch(SQLExceptionee){
System.out.println(ee);
}catch(ClassNotFoundExceptionee){
//String[]s=null;
//returns;
图3-5
输入商品序号将出现商品和商品的价格,输入学号后点击消费。
publicstaticvoidmain(String[]args){
newfind();
publicclassgconsextendsJFrameimplementsActionListener{
/**
*
*/
privatestaticfinallongserialVersionUID=1L;
privatestaticfinalStringInterger=null;
publicJTextFieldid,money,Gid,Gname,name,price;
//定义三个按钮b1、b2、b3
Stringname1;
intprice1;
intid1;
Strings;
publicgcons(){
//将排列顺序定义为三行一列
JPanelcenter=newJPanel(newGridLayout(4,2));
//将信息在框架中居中
Gid=newJTextField();
Gname=newJTextField();
money=newJTextField();
id=newJTextField();
商品序号"
center.add(Gid);
商品名称"
center.add(Gname);
商品价格"
center.add(money);
学号"
center.add(id);
c.add(center);
//定义按钮的信息数据
b3=newJButton("
退出"
low.add(b3);
b3.addActionListener(this);
//组件能够可见
图3-6
点击消费后,若卡上金额多于商品价格将会提示消费成功,并从卡上扣除相应的金额。
若卡上的金额小于商品价格将提示消费失败,请充值。
publicvoidactionPerformed(ActionEvente){
add();
if(e.getSource()==b3){
this.dispose();
privatevoidaddFI(){
id1=Integer.parseInt(Gid.getText());
name1=Gname.getText();
//price1=money.getText();
price1=Integer.parseInt(Gid.getText());
try{
selectGid,Gname,moneyfromgoods1whereGid="
+id1;
String[]s=newString[10];
Gid.setText(s[0]);
Gname.setText(s[1]);
money.setText(s[2]);
}
catch(SQLExceptionee){//与哪一个匹配就输出哪一个
System.out.println(ee);
}
catch(ClassNotFoundExceptioneee)
{
System.out.println(eee);
privatevoidadd(){
intid2;
id2=Integer.parseInt(id.getText());
//将字符串型转化成整型
Class.forName("
Stringurl="
//数据库的地址
StringuserName="
StringuserPwd="
Connectioncn=DriverManager.getConnection(url,userName,
userPwd);
Stringstr="
INSERtINTOchongvalue(?
?
)"
System.out.println(str);
PreparedStatementps=cn.prepareStatement(str);
ps.setInt(1,price1);
ps.setInt(2,id2);
ps.executeUpdate();
//进行更新
cn.close();
//Stringsql="
Connectioncn1=DriverManager.getConnection(url,userName,
Stringstr1="
UPDATEcreditSETremain=remain-?
whereid=?
System