资源描述
兰州理工大学
课程设计报告
(校园一卡通系统分析与设计)
专业名称: 软件工程
班 级: 2班
组 号: 22
小组成员: 12270219 姜海东
12270223 李 琛
12270224 周 宾
指导教师: 张聚礼
二〇一四年六月十二
目录
1.系统分析与设计背景 2
2.系统分析与设计目的 3
2.1分析当前系统的状况 3
2.1.1工作负荷 4
2.1.2费用开支 4
2.1.3人员配备 4
2.1.4系统局限性 4
2.2所建议的系统 4
2.2.1 对所建议系统的说明 4
2.2.2 业务处理流程图 5
2.2.3 系统改进之处 5
2.2.4 技术条件方面的可能性 5
2.3主要功能 6
2.4设计理念 6
2.4.1实现一卡走遍校园,一卡通用、一卡多用 6
2.4.2校园卡的作用 6
2.4.3 校园一卡通应用范围 6
2.4.4总体应用结构 7
3.系统分析与设计过程 7
3.1平台介绍 7
3.2一卡通原理 8
3.2.1卡通 8
3.2.2库通 8
3.2.3网通 8
3.3校园一卡通系统的主要特性 8
3.4校园一卡通功能结构图 10
3.5校园一卡通网络结构示意图 10
3.6校园一卡通平台功能 11
3.6.1门禁管理 11
3.6.2食堂售饭管理 14
4.系统分析与设计总结 16
5.附件(代码) 17
6.成员任务分配表 26
1.系统分析与设计背景
几十年来,计算机在管理领域应用中取得了巨大成就,世界也因此发生了深刻的变化。从信息系统的开发,到当今"信息高速公路","政府上网工程","电子商务"系统的建设,信息化的浪潮一浪高过一浪。信息系统建设的三大支柱,即管理科学,信息技术,系统理论的新成果不断涌现,特别是信息技术,包括信息理论,计算机科学,网络通信技术的发展日新月异。与此同时,教育行业为了满足社会对人才的需求,其信息化建设更是大踏步向前迈进。
建立先进的信息系统是高校现代化的必由之路,而信息安全技术,智能卡技术的推广与运用,则是高校信息化程度的重要标志。近年来,我国高等学校经历了一系列的调整和改革,如扩招,院系合并等。因此,高校在组织,协调,监督,指导各部门的工作中,各类事务越来越复杂,信息量越来越大,涉及的部门越来越多,庞大的数据信息等待分析,处理和存储,繁琐的事务需要简化和提速,如果仍沿用以前的手工操作或人工管理的方式,管理部门将很难有时间集中精力处理一些高层次问题,这无疑不能适应目前的形势需要。
校园一卡通系统在此背景下应运而生。在当前高校信息化建设的进程中,一卡通系统得到了高度的重视和迅速的推广,成为今后校园信息化建设的重要内容和必然趋势。
通过我公司多年的设计施工经验及用户反馈情况,结合西安外国语学院的实际情况及需求,我公司推荐深圳方卡实业公司的校园一卡通系统。
"校园一卡通"的主要的思想是,即通过建设规范的,安全的,可扩展的校园管理系统,实现校园管理信息化,智能化,自助化。其基本的建设过程是,先解决校园货币的电子化问题,然后根据教育行业信息系统建设的标准及校园卡的规范,将信息化的应用与服务全面推广到校园管理的各个方面。
随着计算机技术和网络技术的迅速发展,人类科学正进入信息时代,信息技术本身正对教育的改革产生深远的影响。现代化的学校少不了现代化的教学设施、设备的武装。建设“校园一卡通”,为学校的教师、学生和教学管理人员提供具有开放性、灵活性、面向学校应用服务的管理平台、是教学管理科学化的必要前提和基本途径,所以,“校园一卡通”的建设势在必行。
随着社会的进步与变革,各学校原有的消费和管理模式已不能适应新的发展要求,基于目前现状“一卡通”应运而生。所谓“一卡通”即在学校内,凡有现金、票证或需要识别身份的场合均采用卡来完成。此种管理模式代替了传统的消费管理模式,为学校的管理带来了高效、方便与安全。建立先进的信息管理系统是实现高等教育现代化的必由之路,而智能卡技术的推广运用,则是推进高校信息化管理的重要举措之一。校园智能卡可供学生用于校园内部处理杂务,购买食品、饮料、书本,借阅图书,查资料,洗澡等。学生只需在管理中心开设帐户并存入金额,即可启用其电子钱包功能,可反复充值,“校园一卡通系统”可真正意义地实现“一卡在手,走遍校园”。独具特点的通用查询子系统使其可充当管理学校日常消费、管理的角色,并为领导的决策提供可靠的数据依据,同时也为教职员工和学生提供了方便。
2.系统分析与设计目的
随着我国大学扩招,大学生的人数呈逐渐上升趋势。学生人数的众多使得现今大学校园的管理难度越来越高,学校对一款能够实现科学有效的一体化管理的系统软件的需求越来越紧迫。校园一卡通管理系统采取银行卡的金融功能与校园卡的校务管理功能整合的方式,由银行与学校联合发行校园一卡通,师生可以用银行卡在学校的自主终端实现存取款、消费等金融支付。校园一卡通系统的建设,为学校实现财务统一管理提供科学的、现代化的手段,将提高学校的管理水平,极大提高效率。
2.1分析当前系统的状况
校园卡一卡通管理系统目前在我国各高校的应用还主要处于试点和探索的阶段。在部分已建立一卡通的高校中,由于出发点和着重点的不同,使得系统存在相当大的差异,并无统一、均衡的系统方案可供参考。有些大学以身份认证为出发点建立校园一卡通系统,强调对学生的身份信息认证、门禁等方面的功能比较强大,而电子消费方面则略显不足;有些大学一的校园一卡通系统则以金融消费为重点,强调校园卡的电子货币功能,在需要身份认证的信息管理系统中校园卡的功能不够完善。
2.1.1工作负荷
人工操作频繁加减存款。工作繁琐,枯燥,容易出错,完成工作所需要的时间较长,工作效率比较低。
2.1.2费用开支
由于运行现有系统所引起的费用开支,如人力、设备、空间、支持性服务、材料等项开支以及开支总额。
2.1.3人员配备
由于现有系统的技术性含量比较低,操作不便,工作量大,因此需要较多的人才能完成工作。而新系统将具有较高的技术操作性,但它确使工作变得较为简便,因此只需要少量的高素质人才就可完成。
2.1.4系统局限性
人工处理的主要局限性表现在系统依赖于大量的人力和物质投入,工作效率较低和成本较高,现有系统主要存在如下的局限性:
(1) 信息分散、共享性差
每个人的时间精力是有限的,大量的信息资源分散在不同的收集者手中,难于共享和发挥作用。
(2) 信息的及时性、准确性差
数据的采集和处理部分靠人工,效率低、速度慢、滞后严重、反馈不及时,严重影响信息的反馈速度和质量,不能有效地、及时地提供基层决策需要的定量信息和领导决策需要的宏观定性信息。
2.2所建议的系统
2.2.1 对所建议系统的说明
新的校园一卡通管理系统的设计遵循学校管理的理论和系统工程的方法,利用计算机技术、数据通讯技术、数据库技术,实现以计算机为主要工具的人机交互、信息存储系统。它存储学生的个人信息、图书借阅信息以及消费信息。具体原则如下:
(1) 信息资源共享
(2) 提高信息处理速度
(3) 提高信息存储密度
(4) 减轻管理人员的工作强度,提高管理水平
(5) 疏通信息传输渠道,加强职能部门的横向联系
2.2.2 业务处理流程图
新校园一卡通系统业务的流程图
新校园一卡通业务流程图
2.2.3 系统改进之处
原系统采用分开管理各个功能,较麻烦,使用起来也不方便。用一卡通取代了以前的各种卡证,实现了身份识别一卡通;以前所有卡证的信息管理系统,其身份识别部分都连通一卡通系统,实现校内所有地方,包括食堂、校门、图书馆、超市、机房的身份识别,提高学校的管理水平。
2.2.4 技术条件方面的可能性
在以上限制条件下,利用目前现有的技术条件和开发人员的投入,能够在规定时间内完成系统规定的开发设计任务。
同时,为了高质量完成本软件系统开发工作,还需要遵循如下准则:
好战略数据的规划,建立稳定的信息模型;
(2) 在功能模型的划分上,按组织机构来划分子系统或模块;
(3) 应用软件的开发设计,要充分考虑应用软件的适应性,建立友好的人机界面。
因此,从技术性方面来看是可行的。
2.3主要功能
主要功能是为各前置机提供个人帐户记录、历史流水帐的实时查询服务,提供全部和部分数据库子集、索引的查询服务;实时存储各地交易、充值、扣款流水的服务;中心数据的实时更新、存储备等服务。
2.4设计理念
2.4.1实现一卡走遍校园,一卡通用、一卡多用
用射频卡代替学校目前使用的学生证、借书证、和食堂就餐券、澡票等、证件、计算机房的机时票等,实现学生只要带一张卡即可在校内食堂、洗浴中心、等收费场所消费;也可以去图书馆查阅资料、借阅书籍;去机房上机等。从根本上实现“一卡在手,走遍校园”的设想。实现全校各类数据的统一性和规范性;提高学校的现代化管理水平。
设计上追求先进,注重实用、科学、经济及合理性;力求系统的安全、简捷、功能齐全;充分考虑系统的可扩展、可维护。
2.4.2校园卡的作用
校园卡可代替:学生证、工作证、身份证、借书证、会员证、餐卡、钱包、存折。
2.4.3 校园一卡通应用范围
学生管理:注册、注销
身份识别:图书馆、计算中心。
交费:上机。
用餐:餐厅。
2.4.4总体应用结构
服务器管理端
消费网点N
消费网点3
消费网点2
消费网点1
各消费点通过校园主干网和中心服务器联结,通过校园主干网与中心进行数据交换,主干网的安全是整个校园一卡通系统运行的安全保证。为了确保系统安全,设计上采用了中心服务器与各消费点服务器之间的非实时性及实时性相结合原则,即:主干网通可进行数据交换,便于数据统计,主干网不通各消费点服务器可承担各消费系统运行任务,保证各消费系统正常运行。
3.系统分析与设计过程
3.1平台介绍
系统在一卡通(卡通、库通、网通)平台的基础上用模块化方式搭建了一系列应用子系统,可以让用户单独实施单个应用系统(如考勤或者门禁或者消费系统),也可以同时或分步实施多个应用系统或全方位的一卡通系统。
用户从某个单独的应用系统扩展到多个应用系统或全方位的一卡通系统时,无须更换已投入应用的卡片和设备,只需轻松增加新的应用模块到已经实施的应用平台上即可,极大地缩短了系统实施时间和节约实施成本。
平易近人的多语言Windows软件操作界面,简单实用,功能强大,无需专业知识即刻轻松掌握,安装快捷,培训更加轻松。
3.2一卡通原理
一卡通系统是基于卡片的三通基础上开发的一种稳定可靠、使用简单的同时又是极具扩充能力的智能卡管理系统。
3.2.1卡通
卡片上各应用子系统的数据可以互通互用,但又不失各应用子系统的独立安全要求,各子系统公用数据存放在基础信息区,可被各子系统读取但不可改写,每个子系统专用的数据均存放在指定的一个专用业务数据区,只能被该子系统读写,其它子系统无法访问。
各子系统之间需要交换使用的数据则存放在数据交换区,可以互相调用。通过建立基础信息区、数据交换区和专用业务数据区机制,完美地实现了“卡通”的技术要求。使得1张卡只发行1一次,便可通用于各类应用子系统。
3.2.2库通
采用大型分布式网络数据库,人员信息、卡片与设备信息、控制台信息和帐套信息等4项公共数据库作为分布式数据库的底层群组,可被N个业务子系统所共享。各业务子系统的专用信息(如考勤、门禁、消费、物品领用等)作为独立的第二层数据库群组,既体现了系统数据的统一性,又保证了各业务数据的独立性。使系统具有更方便的功能可扩展性、版本升级平滑性和与第三方管理软件的无缝链接性。
3.2.3网通
一卡通系统的硬件和软件设备都可通过局域网、广域网等连通成一个有机体共同实现一卡通系统的功能。本系统通过设计统一的应用层通讯协议,使用标准的硬件通讯接口,兼容总线、局域网、广域网等多种联网方式,将计算机、智能卡读写终端设备以及各种应用系统集成为一个协调的有机统一体。
3.3校园一卡通系统的主要特性
(1)一卡多用
校园卡既可作为身份卡,在不同的场合证明持卡人的身份,还可以作为储值卡代替现金完成各种交易,交纳各种费用。只用一张智能卡就可以完成以下功能:学生证、借书证,餐卡(食堂、餐厅),交费卡(机房),电子钱包(超市)。
(2) 一体化管理
操作方便,简捷易用。开户补卡等所有操作一对一地就可完成。
(3) 实时联网
实时到账。整个系统通过多种方式互联,所有数据可以实时互传,任何一笔流水都会迅速下发到每一台主机,保证系统准确性、有效性,充分维护用户的利益。
(4)工作可靠
支持恢复还原功能。系统软件、硬件稳定可靠。保证系统连续正常运转据备份,手段多样,软盘、USB硬盘、硬盘。实时备份,系统崩溃可立即恢复。
(5)易维护
系统本身的故障率极低,主要设备有自检功能,系统完全采用了模块化设计,可以迅速排除各种故障。
(6)速度快
数据处理快,实时性高,即使是系统高峰期的大量数据也可应付自如。
3.4校园一卡通功能结构图
发卡
充值
访客
商店
饭堂
控水
会议签到子系统
保安巡更子系统
门禁管理子系统
考勤管理子系统
打印
HR
个性化WEB查询
财务软件
校园一卡通中心
停车场子系统
服 务
身份识别
接口
消费
可扩展模块
可扩展模块
校园一卡通功能结构图
3.5校园一卡通网络结构示意图
校园一卡通网络结构示意图
3.6校园一卡通平台功能
功能强大而操作简单实用便捷,完全符合微软的软件风格和操作习惯,使得培训工作几分钟就可以完成,使用者看看说明书也能轻松掌握,使用者离职,新员工也能轻松上手.免除终端客户在使用上的后顾之忧。我们在界面上尽量避免了抽象化或者专业化的描述,并尽量以通俗易懂和一目了然的方式表现出来。
3.6.1门禁管理
(1)门禁系统
一张校园一卡通,授权可以进入学校所有被允许的门 ,未经授权的持卡者将被拒之门外.当然,您也可以赋予某些感应卡可以出入学校所有大门的权限,也可以规定某些卡持有者只能出入其职责范围内的大门和办公场所,可以规定她的使用期限是某年某月某日到某年某月某日,或者星期几可以使用,或者每天的几点到几点可以使用。您可以持有一张卡就可以出入几十道门或者几百道门,而不必揣着沉甸甸的钥匙,如果您的卡遗失,只需到软件内注销这长卡的权限,这样即使谁捡到这张卡,您也不必当心他可以
进入您的公司学校的大门或者办公室的大门,如果您使用的是钥匙,您就不得不去配钥匙或者更换锁头以保安全。
同时,门禁出入记录被及时保存,可以为调查安全事件提供直接依据。
(2)门禁系统构成
门禁管理主要由校园一卡通、计算机、门禁管理软件、门禁读卡器、门禁控制器和电子门锁等几部分组成。根据具体应用,还可外接开门按钮、门磁开关、报警器、发卡器等辅助装置。
门禁系统构成示意图:
门禁系统构成示意图
(3)门禁系统业务流程
在各主要门禁出入口(如办公室、会议厅、机房、通道门等)安装门禁读卡器、门禁控制器和电子门锁,并通过计算机和门禁管理软件对允许进出各门禁的人员进行授权,包括每个人被允许或禁止在何时出入状态。
流程图如下:
1. 门禁系统管理员流程图:
管 理 员
修改软件登录密码
设置时段、节假日等
登记进出人员档案
登记每扇门
调整人的进出权限
换卡、挂失、解挂等
查询
打印报表
备份或清理数据
发卡
分配权限
发放临时卡
直接无条件开关门
门禁系统管理员流程图
2.持卡人流程图:
工作流程:
管理员在管理软件中设置通道、人员等基本信息。
管理员给每个人发卡,并授权每个人在哪些门哪些时段可以进出。
1、进门时,持卡人用非接触IC卡在门禁前晃一下,门禁机确认身份后,打开电锁开门,人员进入后,门关闭。
2、出门时,持卡人刷卡或按按钮,门打开,人员出去后,门关闭。
当非正常或暴力开门时,门磁开关信号输入到门禁控制器内,门禁控制器输出报警信号给电脑管理系统,同时以声光信号报警。门禁控制器还可接收消防报警联动信号,当出现消防事故时,门禁控制器强行开放门禁,允许人员快速疏散。
(4)门禁管理模块功能
功能模块名称
功能说明
备注
参数设置
将具有某些权限或者时限相同的人员建立一个组,以方便统一设置权限或者时限
时段设置
设置门禁机的控制出入的时间段,并将设置好的时段下载到相应的设备上,主要完成对设备的参数设定。
权限设置
设置人员的进出某些门的权限和时限,可按部门级、组级、人员级,其中人员级的优先级最高,其次是组,部门
见下图
实时监控
本模块完成实时地监视人员的出入情况。启动了实时监视,只要有人刷卡通过,系统就会在系统中显示该人员的详细信息,从而起到一定的监视作用
远程开门
可以通过软件控制某条门的开关
数据采集
设备通讯的模块,完成设备数据的采集,将门禁数据放到数据库相应的位置,以备数据处理用
报表查询
报表可打印输出或输出到Excel、Txt文档等
3.6.2食堂售饭管理
(1)食堂售饭系统
食堂消费管理(子)系统是利用IC卡来实现学校所有学生和员工在食堂进行餐饮消费时的电子支付管理。同时可以延伸到所有需进行支付消费费用的消费点(小卖部等)的电子会付管理。
系统主要由校园一卡通、消费机、发卡器、通讯转换器、消费管理软件等部分组成。
食堂售饭管理系统构成图
(2)食堂售饭功能特点
1、统计每餐、每日、每月、每个承包商的消费额和消费人次数。
2、由于在交易过程中没有现金的交换与流通,保证了货币安全与饮食的卫生。
3、设置了不同的卡片类型管理功能,可根据持卡人的不同身份分配不同的消费卡类。便于对学生情况不同的补贴发放方案。
4、可延伸到用于超市、商店、理发店、复印、澡堂、开水及其它收费项目的收费管理。
5、本系统具备有换卡、转帐、退款和销户等一系列的消费业务功能。能够保证对于任何一个出错都能够有效恢复与纠正,或者隔离。
6、系统中设有针对挂失卡片的处理方法,即可通过到卡片中心挂失等。
(3)食堂售饭管理模块功能
食堂售饭管理模块包括设备参数设置、时段设置、商品编号设置、资金管理、数据采集、报表查询等子功能。
食堂售饭管理模块功能
功能模块名称
功能说明
备注
参数设置
设置消费机和卡类参数
时段设置
定义消费时段,比如早,中,晚,夜宵等
商品编号设置
定义商品编码和单价
资金管理
设置充值计机划和下传到充值;本功能还包括转帐、冲正、结帐、手工增减款功能
数据采集
采集消费机内消费流水
报表查询
报表可打印输出或输出到Excel、Txt文档等
食堂售饭管理模块功能表
4.系统分析与设计总结
通过这次课程设计,使我更进一步地掌握了Visual Basic这门语言,对它的功能以及应用有了更深一步的了解,对它的操纵更熟练了。但是同时很好地重视它,掌握它。通过这次课程设计,虽然比起以前有了很大的进步,但还是了解得不够,学习的不够,今后要更加努力学习好一些基础的知识,以备在需要的时候发挥自身的才能。“书到用时方恨少”这句话在这次毕业设计中表现得淋漓尽致,一开始做毕业设计时,不够重视,认为肯定能行,但做到最后,情况越糟,甚至有一段时间让我觉得有点手足无措了,幸好大家的团结努力,查阅资料翻阅书籍,才避免了不满意结果的发生。
同时,我们也对校园一卡通的设计原理和使用程序有了一定的了解,也对现在许多大学都在朝着这个方向努力表示理解。因为校园一卡通的实现真的对学校管理制度化、对学生的行为规范以及学生的方便都有极大的帮助。我校现在宿舍也装了门镜,希望校园一卡通一体化的进程继续,在不久的将来实现全校信息化管理。
5. 附件(代码)
package db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBC {
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// 鑾峰緱杩炴帴
public static Connection getConnection() {
Connection conn = null;
String url = "jdbc:mysql://localhost:3306/KeShe";
String user = "root";
String password = "root";
try {
conn = DriverManager.getConnection(url, user, password);
System.out.println("connection is successful!");
} catch (SQLException e) {
System.out.println("connection error锛?);
e.printStackTrace();
}
return conn;
}
// 閲婃斁JDBC璧勬簮锛堝叧闂『搴忎笌澹版槑鏃剁殑椤哄簭鐩稿弽锛? public static void release(Connection conn, Statement state, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (state != null) {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void release(Connection conn, Statement state) {
if (state != null) {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
package dba;
import java.nio.channels.SelectableChannel;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.persistence.criteria.From;
import com.sun.jersey.api.representation.Form;
import com.sun.tools.xjc.reader.xmlschema.bindinfo.BIConversion.Static;
import db.JDBC;
public class Mcard {
private static Connection conn;
private static Statement state;
double kmoney;
String num;
double money;
private int flag1 = 0;
private int flag2 = 0;
private int flag3 = 0;
public boolean setState(String num) {
this.num = num;
Connection conn = JDBC.getConnection();
try {
String sql = "update card set state=0 where number='" + num + "'";
ResultSet rs;
state = conn.createStatement();
boolean bool = state.execute(sql);
if (bool)
flag2 = 1;
JDBC.release(conn, state);
} catch (SQLException e) {
System.out.println("query error!");
e.printStackTrace();
}
if (flag1 == 1) {
return true;
} else {
return false;
}
}
public boolean Givemoney(String num, double money) {
this.num = num;
this.money = money;
Connection conn = JDBC.getConnection();
try {
String sql = "update card set money=" + money + " where number='"
+ num + "'";
state = conn.createStatement();
boolean bool = state.executeUpdate(sql) > 0;
if (bool)
flag2 = 1;
JDBC.release(conn, state);
} catch (SQLException e) {
System.out.println("query error!");
e.printStackTrace();
}
if (flag2 == 1) {
return true;
} else {
return false;
}
}
public double getMoney(String num) {
this.num = num;
kmoney = 0;
Connection conn = JDBC.getConnection();
try {
String sql = "select money from card where number='" + num + "'";
state = conn.createStatement();
ResultSet rs = state.executeQuery(sql);
rs.next();
kmoney = rs.getDouble(1);
System.out.println(kmoney);
JDBC.release(conn, state);
return kmoney;
} catch (SQLException e) {
System.out.println("query error!");
e.printStackTrace();
}
return kmoney;
}
public boolean setState1(String num) {
this.num = num;
Connection conn = JDBC.getConnection();
try {
String sql = "update card set state=1 where number='" + num + "'";
ResultSet rs;
state = conn.createStatement();
boolean bool = state.execute(sql);
if (bool)
flag3 = 1;
JDBC.release(conn, state);
} catch (SQLException e) {
System.out.println("query error!");
e.printStackTrace();
}
if (flag3 == 1) {
return true;
} else {
return false;
}
}
}
package dba;
import java.security.interfaces.RSAKey;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javabean.CardHolder;
import org.omg.CORBA.PRIVATE_MEMBER;
import org.omg.CORBA.PUBLIC_MEMBER;
import db.JDBC;
public class Mcardholder {
private static Connection conn;
private static Statement state;
private String num;
private String pwd;
private String id;
private String name;
private int flag1 = 0;
private int flag2 = 0;
private int flag3 = 0;
public boolean checkNum(String num, String pwd) {
this.num = num;
this.pwd = pwd;
Connection conn = JDBC.getConnection();
try {
String sql = "select * from CardHolder where number='" + num + "'";
state = conn.createStatement();
ResultSet rs = state.executeQuery(sql);
System.out.println("Operation is successful!");
System.out.println("鏌ヨ鐨勬暟鎹粨鏋滃涓嬶細");
while (rs.next()) {
String Mpwd = rs.getString(4);
String name = rs.getString(2);
System.out.println(name);
if (pwd.equals(Mpwd)) {
flag1 = 1;
}
}
JDBC.release(conn, state, rs);
} catch (SQLException e) {
System.out.println("query error!");
e.printStackTrace();
}
if (flag1 == 1) {
return true;
} else {
return false;
}
}
public boolean checkId(String num, String id) {
this.id = id;
this.num = num;
Connection conn = JDBC.getConnection();
try {
String sql = "select id from CardHolder where number='" + num + "'";
state = conn.createStatement();
ResultSet rs = state.executeQuery(sql);
System.out.println("Operation is successful!");
rs.next();
String Mid = rs.getString(1);
System.out.println(Mid);
if (Mid.equals(id)) {
flag2 = 1;
}
JDBC.release(conn, state, rs);
} catch (SQLException e) {
System.out.println("query error!");
e.printStackTrace();
}
if (flag2 == 1) {
return true;
} else {
return false;
}
}
public boolean openCount(String num, String name, String pwd, String id) {
this.num = num;
展开阅读全文