项目背景:
虽然现如今科技进步很快,很多证明材料可以直接通过二维码或者电子签名来直接替代,但是很多证明手续,类似于假条、成绩单证明、证书证明、奖状等,尤其还存在有对图书的借阅证明,现在还是需要通过电脑word打字,或者手写稿来编写出来,而这类证明往往会重复很多字。
项目内容:
针对以上问题,研发了一个基于移动终端软件的图书借阅系统,该系统能够在用户借阅好书籍后,直接在移动终端软件上填写自己所借阅过的书籍以及时间,并能够根据填写的信息自动的生成一套证明材料,可直接截图或保存成word形式打印出来。
项目中我用到数据库的地方一个是登录注册,一个是增删查(由于水平有限,删除只能删去所有的数据,并无修改功能)
功能设计:
1.用户登录功能。
2.用户注册功能。
3.数据库建立、删除功能。
4.数据添加、删除、查找功能。
5.生成证明材料功能。
项目产出:
该系统包括了初始化界面、登录界面、注册界面、系统界面以及证明界面,所有界面如下:
当该APP打开并初始化后,用户可通过登录界面以及注册界面以注册登录的方式进入系统界面,并通过系统界面的按钮等控件创建图书借阅数据库,以实现插入或删除借阅信息,也能够从数据库中查找相关信息并输出到显示界面上。最后通过证明生成控件跳转到证明界面生成相应的一套借阅证明材料,可直接截图或保存成word形式打印出来。
其中注册与登录有用到SQLite数据库,数据库的查找方式可以用SQLite Expert Personal这样一个看查数据库的软件,具体下载与运用方式可见AndroidStudio找SQLite数据库文件,在这里不多赘述。
项目中我用到数据库的地方一个是登录注册,一个是增删查(由于水平有限,删除只能删去所有的数据,并无修改功能)
登录注册的具体数据库设计:
证明信息的具体数据库设计:
部分代码:
注册时所用到数据库的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
mOpenHelper= new RegActivity.MyDatabaseHelper(this);
//获取布局中按钮控件对象
Button btn_reg=(Button)findViewById(R.id.btn_reg);
Button btn_cancer=(Button)findViewById(R.id.btn_cancer);
//获取布局中输入框控件对象
et1=findViewById(R.id.et_1);
et2=findViewById(R.id.et_2);
SQLiteDatabase db=mOpenHelper.getWritableDatabase();
String sql="CREATE TABLE "+TABLE_NAME+"("+user+" text not null,"+passord+" text not null"+");";
Log.i("test:createDB=",sql);
try{
db.execSQL("DROP TABLE IF EXISTS diary");
db.execSQL(sql);
setTitle("数据表成功创建");
}catch (SQLException e){
setTitle("数据表重建错误");
};
//点击btn_reg按钮的监听
btn_reg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db =mOpenHelper.getWritableDatabase();
String userName=et1.getText().toString();
String passWord=et2.getText().toString();
String sql1="INSERT INTO " + TABLE_NAME +" values('"+userName+"','"+passWord+"');";
try{
Log.i("test:sql1=",sql1);
db.execSQL(sql1);
setTitle("注册成功");
Intent intent =new Intent(RegActivity.this,LoginActivity.class);
startActivity(intent);
}catch (SQLException e){
setTitle("注册失败");
}
}
});
//点击btn_cancer按钮的监听
btn_cancer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
et1.setText("");
et2.setText("");
}
});
}
登录时对比数据所用到数据库的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//获取登录界面
setContentView(R.layout.activity_login);
//引用注册RegActivity所创建的数据库
mOpenHelper= new RegActivity.MyDatabaseHelper(this);
//获取布局中按钮控件对象
Button btn_ok=(Button)findViewById(R.id.btn_ok);
Button btn_reg=(Button)findViewById(R.id.btn_reg);
//获取布局中输入框控件对象
et1=findViewById(R.id.et_1);
et2=findViewById(R.id.et_2);
//点击OK按钮的监听
btn_ok.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
int i=0;//计数,用来判断是否登录成功
SQLiteDatabase db=mOpenHelper.getReadableDatabase();//创建数据库对象
//获取文本框中的内容
userName = et1.getText().toString();
passWord = et2.getText().toString();
//读取数据库中的密码与账号
String str1="";
String str2="";
try {
String col[] = {user, passord};
Cursor cur = db.query(TABLE_NAME, col, null, null, null, null, null);
//比较文本框所填写的内容是否能在在数据库查找到
while (cur.moveToNext()) {
str1 = cur.getString(cur.getColumnIndex("user"));
str2 = cur.getString(cur.getColumnIndex("passord")) ;
if (userName.equalsIgnoreCase(str1) && passWord.equalsIgnoreCase(str2)) {
Intent intent =new Intent(LoginActivity.this,PageActivity.class);
startActivity(intent);
i=1+i;
}
}
if(i==0){
Toast.makeText(LoginActivity.this, "用户名密码错误", Toast.LENGTH_SHORT).show();
}
}catch (SQLException e){
setTitle("登录失败");
}
}
});
//点击OK按钮的监听 直接跳转到RegActivity来注册
btn_reg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent =new Intent(LoginActivity.this,RegActivity.class);
startActivity(intent);
}
});
}
创建数据表
private void CreateTable(){
SQLiteDatabase db=mOpenHelper.getWritableDatabase();
String sql="CREATE TABLE "+TABLE_NAME+"("+TITLE+" text not null,"+BODY+" text not null"+");";
Log.i("test:createDB=",sql);
try{
db.execSQL("DROP TABLE IF EXISTS diary");
db.execSQL(sql);
setTitle("数据表成功创建");
}catch (SQLException e){
setTitle("数据表重建错误");
};
}
删除数据
private void dropTable(){
SQLiteDatabase db =mOpenHelper.getWritableDatabase();
String sql ="drop Table " + TABLE_NAME;
try{
db.execSQL(sql);
setTitle("数据表成功删除:"+sql);
}catch(SQLException e){
setTitle("数据表删除错误");
}
}
查询数据
private void showltems(){
SQLiteDatabase db=mOpenHelper.getReadableDatabase();
String str="";
try {
String col[] = {TITLE, BODY};
Cursor cur = db.query(TABLE_NAME, col, null, null, null, null, null);
while (cur.moveToNext()) {
str = str + cur.getString(cur.getColumnIndex("title")) + "\n" + cur.getString(cur.getColumnIndex("body")) + "\n";
}
showText.setText(str);
Integer num = cur.getCount();
setTitle(Integer.toString(num) + "条记录");
}catch (SQLException e){
setTitle("查询记录失败");
}
}
插入数据
//插入自义定数据
private void add(){
SQLiteDatabase db =mOpenHelper.getWritableDatabase();
String str1=e1.getText().toString();
String str2=e2.getText().toString();
String sql1="INSERT INTO " + TABLE_NAME +" values('"+str1+"','"+str2+"');";
try{
Log.i("test:sql1=",sql1);
db.execSQL(sql1);
setTitle("插入自定义数据成功");
}catch (SQLException e){
setTitle("插入自定义数据失败");
}
}
}
项目源码:
项目源码资料:
链接:https://pan.baidu.com/s/1CQDXaQvzisFJtqbUKpGaYQ
提取码:t83r