校史馆讲解预约系统
一、需求分析
(一)应用背景
校史馆讲解管理是校史馆发展的重要保障,过去我们都是通过聊天消息发布讲解信息,利用文本管理讲解的信息,这样做既不方便,效率也很低。如何更快更好的管理讲解信息一直是我们关心的问题。上学期学到了数据库,利用计算机强大功能进行管理已经比较成熟了,不仅可以提高讲解员和管理者的信息管理效率,而且可以提高我们的综合管理能力。
(二)项目目标
校史馆讲解管理软件主要实现了讲解员信息、参观者信息和讲解信息的录入、查找、删除和修改。同时针对不同的讲解员,可以看到操作信息不同。讲解员可以自行选择讲解,并查看自己的讲解信息。根据实际分析,该校史馆讲解系统主要满足以下功能:
1.系统管理功能
管理员使用,讲解员信息,参观者信息和讲解信息的数据管理(增删改查)
2.讲解员信息管理功能
讲解员使用,查看讲解和参观信息。并选择讲解后可查看自己的讲解信息。
二、解决方案设计
(一)功能设计
该系统是一个半开放系统,在管理员和讲解员输入用户名和密码后,系统验证是否正确。如果正确显示系统功能界面,否则不给予显示。在登入以后管理员可以进行查询、删除、添加等操作。根据以上分析,按照实际要求,得到以下的功能模块图。
(二)E-R图分析
该系统是只要涉及三个实体类,分别是讲解员,参观者和讲解类型。同时该系统涉及登入界面、管理员主界面、讲解员主界面和各种信息管理等二十多个界面。
如图所示,各个表的主键是ID号,讲解员可选择多场讲解,选择的过程就是将讲解表的信息插入我的讲解表。参观者也可多次参观,每次参观录入的讲解ID号不同。
三、逻辑结构设计
本数据库的设计包括四张表。以下是主要表的信息和各表之间的关系图。
(一)讲解员信息表
(二)参观者信息表
(三)讲解信息表/我的讲解表
四、具体实现
(一)创建数据库
为了实现数据的保存,需要用到数据库,本系统采用SQLite数据库,在创建数据库时,是在DBHelper类里创建onCreate()方法来实现创建数据库和数据表,其中使用execSQL()方法实现数据表的创建。具体代码如下:
/*
* 创建tab_stu【学生表】
*/
String createTableStu = "create table tab_stu (stu_id int , stu_name varchar(10), "
+ "stu_gender varchar(10), stu_telephone varchar(20),"
+ " stu_password varchar(10), stu_academy varchar(20), "
+ "stu_profession varchar(20), stu_grade int,primary key('stu_id')) ";
db.execSQL(createTableStu);
/*
* 创建tab_visitor【参观者表】
*/
String createTabVisitor = "create table tab_visitor (vis_id int, vis_grade varchar(10) ,"
+ "people_number int , xueyuan varchar(25) ,"
+ "phonenumber varchar(20) , primary key('vis_id') )";
db.execSQL(createTabVisitor);
/*
* 创建tab_work【讲解表】
*/
String createTabMeet = "create table tab_meet (meet_id int, meetTime varchar(25) ,"
+ "meet_academy varchar(20),meet_people int ,"
+ "meet_grade varchar(20), primary key('meet_id') )";
db.execSQL(createTabMeet);
/*
* 创建tab_mywork【我的讲解表】
*/
String createTabMyMeet = "create table tab_mymeet (meet_id int, meet_grade varchar(25) ,"
+ "meetTime varchar(25) , meet_academy varchar(20) ,"
+ "meet_people int , primary key('meet_id') )";
db.execSQL(createTabMyMeet);
(二)编写数据库实体类
创建student、meet和visitor文件夹用来存放类和他们对应的操作,数据模型是对数据表中所有字段的封装,主要通过getXXX()和setXXX()方法实现获取数据和存放数据。创建数据表所对应的数据库实体类代码如下:
public class Stu {
private Integer id;
private String name;
private String gender;
private String password;
private String telephone;
private String academy;
private String profession;
private Integer grade;
public Stu(Integer id, String name, String gender, String password, String telephone, String academy, String profession, Integer grade) {
super();
this.id = id;
this.name = name;
this.gender = gender;
this.password = password;
this.telephone