目录
学生信息存储系统的设计与实现 1
一、摘要: 1
二、 需求分析 2
2.1可行性分析 2
2.1.1 2
2.1.2 2
2.2 需求分析 2
2.2.1 2
2.2.2 2
三、 总体设计 2
3.1系统功能结构图 3
3.2UI设计图 4
3.3数据库存储 5
3.3.1添加信息(学生信息和账号密码) 5
3.3.2删除信息 6
3.3.3修改信息 6
四、 系统测试 7
4.1登录注册(可存储账号密码) 7
4.2添加信息 8
4.3删除信息 9
4.4修改信息 9
4.5查询信息 11
五、 系统实现 11
5.1代码 11
5.1.1类代码 11
5.1.2布局代码 11
5.1.3类说明 12
5.1.4关键代码 17
六、 心得与体会 23
学生信息存储系统的设计与实现
一、摘要:
随着互联网时代的迅速发展,人们的生活质量越来越高,工作越来越便利,生活方式和思想方式都发生了巨大的变化。
信息技术的飞速发展不仅为人类的生活提供了便利,也为我们的各种日常工作提供了更加快捷、有效的途径。如今,教育成为国家的发展之根本,学校成为了我们生活中的第二个家,随着人口的不断增长和对国家对于教育事业的重视,学生数量与日俱增,使得对学生信息的管理越来越难,也正因为这样,创建一个学生信息存储系统成为了当代学校的必要部分,可以更有效的提高工作效率。本文介绍了一个基于Android自主研发的学生信息系统,该系统可在移动平台上使用,也就是我们的生活必需品——手机,因此更加便捷。
该系统可以存储学生的信息,并对学生的信息进行增加、删除、修改、查寻信息等管理操作,每个学生用户都可以建立自己的账号,非常的便捷、安全和稳定。
二、需求分析
2.1可行性分析
2.1.1技术可行性分析:合理的开发一个学生信息存储系统,对学生信息进行合理的管理操作在技术上是可行的
2.1.2 经济可行性分析:个人研究技术与开发Android平台是免费的,经济可行
2.2 需求分析
2.2.1特性需求分析
1)容易操作,简单便捷
2)功能俱全
3)软件易维护
2.2.2功能需求分析
1)用户可以对对信息进行增加、删除、修改、查询的功能
2)设立自己的账号密码
三、总体设计
3.1系统功能结构图
1)用户通过登录自己的用户名进入学生信息系统,没有的话进去注册页面,注册成功直接进入添加页面。
2)学生用户可以在添加页面,添加自己的名字、性别、年龄、专业、大学和添加信息的时间。
3)添加成功后进去到菜单页面,菜单页面会显示学生的信息,学生的信息可以随时删除,修改,当信息量多的时候,可以根据你输入搜索框的关键字搜索到学生信息,并显示条数
3.2UI设计图
3.3数据库存储
3.3.1添加信息(学生信息和账号密码)
);
3.3.2删除信息
删除了一条信息
3.3.3修改信息
学校全部改成沈阳科技学院
四、系统测试
4.1登录注册(可存储账号密码)
注册了一个用户名为 郭少锋
密码为123456的账号
登录用户名密码直接登陆成功,经过测试注册成功
4.2添加信息
经过测试,可以添加信息
4.3删除信息
4.4修改信息
经过测试,可以修改信息
4.5查询信息
经测试可以查询信息
五、系统实现
5.1代码
5.1.1类代码
5.1.2布局代码
图片在上述UI设计图中
5.1.3类说明
1.第一个类是登录类 定义两个Button和两个EditText,给Button按钮设置监听,利用swich case 实施对两个Button的功能定义,并使用intent使得跳转注册页面。
2.第二个类是注册类,同上定义空间,使用if else进行功能定义,使用intent跳转添加页面。 DBop dBop = new DBop(); dBop.test(zhuce.this);
定义新对象调用text完成注册并存储。
3.这里用user类对用户名和密码进行定义和获取,package com.example.tian;
//获取用户名和密码
public class User {
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
private String userName;
private String passWord;
}
4.添加类,定义学生信息并定义数据库以及对listview的使用,DBop dbop = new DBop();
List<student> studentlist = new ArrayList<student>();//ListView适配器 设置Adapter
SQLite mySQLite = new SQLite(tianjia.this, 1); //定义数据库
并用swich case 定义功能并跳转菜单
5.菜单类 swich case 定义查询跳转类 DBop dbOperate=new DBop();
6.查询类 if else 定义功能跳转返回菜单
7.SQLite类 public class SQLite extends SQLiteOpenHelper {
public SQLite(Context context,int version) {
super(context, "stu2.db", null, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table students(\n"+
"id integer primary key autoincrement,\n"+
"name text,\n"+
"sex text,\n"+
"age integer,\n"+
"academy text,\n"+
"major text\n,"+
"date text\n"+
");");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
//数据库的创建 stu.db
//建表格式 students 名字 性别 年龄 大学 专业 日期
//数
8. student类同user一样定义获取学生信息
//获取学生信息 编号 名字 专业 年龄 大学 日期
public int getId()
{return id;}
public void setId(int id)
{
this.id=id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public String getAge() {
return age;
}
public void setAge(String sex) {
this.age = sex;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAcademy() {
return academy;
}
public void setAcademy(String academy) {
this.academy = academy;
}
public void setDate(String date) {
this.date = date;
}
public String getDate() {
return date;
}
public student(String n, String s, String a, String aca,String m, String t) {
name = n;
major = m;
age = a;
sex = s;
academy = aca;
date = t;
}
public student(int i, String n, String s, String a, String aca,String m, String t) {
id=i;
name = n;
major = m;
age = a;
sex = s;
academy = aca;
date = t;
}
public student(String n, String s, String a) {
name = n;
sex = s;
age = a;
}
}
并对其他类的listview显示提供
- DBop类
数据库操作类,public void insert(student s){
int age=Integer.parseInt(s.getAge());
database.execSQL("insert into students values(?,?,?,?,?,?,?" +
")",new Object[] {null,s.getName(),s.getSex(),age,s.getAcademy(),s.getMajor(),s.getDate()});
System.out.println("插入数据成功");
}
public void insertUser(User user){
String stu_table="create table if not exists user(id integer primary key autoincrement,username text,password text)";
database.execSQL(stu_table);
database.execSQL("insert into user values(?,?,?" +
")",new Object[] {null,user.getUserName(),user.getPassWord()});
System.out.println("插入数据成功");
}//插入学生信息和用户名密码
public Boolean queryUser(User user){
String stu_table="create table if not exists user(id integer primary key autoincrement,username text,password text)";
database.execSQL(stu_table);
Cursor cursor=database.rawQuery("select * from user where username = ? and password= ?",new String[]{user.getUserName(),user.getPassWord()});
return cursor.getCount() > 0?true:false;
}
//判定格式对错
public void update(student s){
Integer I=new Integer(s.getId());
ContentValues values = new ContentValues();
values.put("name",s.getName());
values.put("major",s.getMajor());
values.put("age",s.getAge());
values.put("sex",s.getSex());
values.put("academy", s.getAcademy());
values.put("date",s.getDate());
String whereClause = "id=?";
String[] whereArgs={String.valueOf(I)};
database.update("students",values,whereClause,whereArgs);
}
public void update(student s){
Integer I=new Integer(s.getId());
ContentValues values = new ContentValues();
values.put("name",s.getName());
values.put("major",s.getMajor());
values.put("age",s.getAge());
values.put("sex",s.getSex());
values.put("academy", s.getAcademy());
values.put("date",s.getDate());
String whereClause = "id=?";
String[] whereArgs={String.valueOf(I)};
database.update("students",values,whereClause,whereArgs);
}
//数据库更新
等一系列操作判定
10.修改类 同添加类用swich case完成功能定义
if (altStu != null) {
altStu.setName(name);
altStu.setSex(sex);
altStu.setAge(age);
altStu.setMajor(major);
altStu.setDate(date);
altStu.setAcademy(aca);
dBop.update(altStu);
}
并进行数据更新
5.1.4关键代码
跳转:
Intent intent2 = new Intent(this,zhuce.class);
startActivity(intent2);
break;
//登录界面点击注册按钮实现到注册页面的转换
Toast.makeText(zhuce.this,"注册成功",Toast.LENGTH_SHORT).show();
Intent intent1 = new Intent(zhuce.this, tianjia.class);
startActivity(intent1);
//注册成功跳转添加学生信息页面
intent.putExtra("students", (Serializable) studentlist);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClass(tianjia.this, caidan.class);
startActivity(intent);//跳转到列表页面
intent.setClass(this, chaxun.class);
intent.putExtra("searchKey", search);
startActivity(intent);//跳转到查询类
Intent intent=new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClass(this,caidan.class);
startActivity(intent);//查询到的结果返回到菜单页面
intent.setClass(this, caidan.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();//修改信息跳转菜单
学生信息和用户名账号信息的的定义和获取:
//获取学生信息 编号 名字 专业 年龄 大学 日期
public int getId()
{return id;}
public void setId(int id)
{
this.id=id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public String getAge() {
return age;
}
public void setAge(String sex) {
this.age = sex;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAcademy() {
return academy;
}
public void setAcademy(String academy) {
this.academy = academy;
}
public void setDate(String date) {
this.date = date;
}
public String getDate() {
return date;
}
public class User {
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
SQLite数据库:
public class SQLite extends SQLiteOpenHelper {
public SQLite(Context context,int version) {
super(context, "stu2.db", null, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table students(\n"+
"id integer primary key autoincrement,\n"+
"name text,\n"+
"sex text,\n"+
"age integer,\n"+
"academy text,\n"+
"major text\n,"+
"date text\n"+
");");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
//数据库的创建 stu.db
//建表格式 students 名字 性别 年龄 大学 专业 日期
//数据库更新
DBop dBop = new DBop();
dBop.test(denglu.this);
DBop dBop = new DBop();
dBop.test(zhuce.this);
SQLite mySQLite = new SQLite(tianjia.this, 1); //定义数据库
private void test() {
SQLite mySQLiteAccess = new SQLite(this, 1);
mySQLiteAccess.getReadableDatabase();
}
DBop dbOperate=new DBop();
public class DBop {
private SQLite mySQLiteAccess;
private SQLiteDatabase database;
public void test(Context context){
mySQLiteAccess=new SQLite(context,3);
database=mySQLiteAccess.getReadableDatabase();
}
public void insert(student s){
int age=Integer.parseInt(s.getAge());
database.execSQL("insert into students values(?,?,?,?,?,?,?" +
")",new Object[] {null,s.getName(),s.getSex(),age,s.getAcademy(),s.getMajor(),s.getDate()});
System.out.println("插入数据成功");
}
public void insertUser(User user){
String stu_table="create table if not exists user(id integer primary key autoincrement,username text,password text)";
database.execSQL(stu_table);
database.execSQL("insert into user values(?,?,?" +
")",new Object[] {null,user.getUserName(),user.getPassWord()});
System.out.println("插入数据成功");
}
public Boolean queryUser(User user){
String stu_table="create table if not exists user(id integer primary key autoincrement,username text,password text)";
database.execSQL(stu_table);
Cursor cursor=database.rawQuery("select * from user where username = ? and password= ?",new String[]{user.getUserName(),user.getPassWord()});
return cursor.getCount() > 0?true:false;
}
//用户名和密码
public void update(student s){
Integer I=new Integer(s.getId());
ContentValues values = new ContentValues();
values.put("name",s.getName());
values.put("major",s.getMajor());
values.put("age",s.getAge());
values.put("sex",s.getSex());
values.put("academy", s.getAcademy());
values.put("date",s.getDate());
String whereClause = "id=?";
String[] whereArgs={String.valueOf(I)};
database.update("students",values,whereClause,whereArgs);
}
//建表,插入数据,更新数据库
ListView的使用(适配器的使用):
ListView studentlist;
private List<student> list = new ArrayList<student>();
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ListView list = (ListView) parent;
student s = (student) list.getItemAtPosition(position);
String info = (String) s.getName() + "\n\n" + s.getAcademy();
Toast.makeText(caidan.this, info, Toast.LENGTH_SHORT).show();
}
private void showList(List<student> stus) {
Adapter studentAdapter = new Adapter(this, stus);
studentlist.setAdapter(studentAdapter);
}
}
List<student> searchList= dbOperate.searchByAll(searchKey);
if (!searchList.isEmpty()){
Adapter myAdapter=new Adapter(this,searchList);
lv_searchlist.setAdapter(myAdapter);
}
else
{
Toast.makeText(this,"无结果",Toast.LENGTH_SHORT);
}
}略
六、心得与体会
在本次课程设计的完成中,让我再次复习了一遍所学过的内容,也学会了很多课上忽略掉的一些知识和一些课上没有学到过的。课程设计非常锻炼一个学生的专业能力,可以培养我们的自我动手能力,不管是独立思考能力还是自学能力,总能收获许多。本次课设让我熟悉了SQLite增删改查的使用和ListView绑定适配器等很多知识,也大大提升了我对代码进行改错的能力,学会了有目的的去学习一些将要用到的东西,仔细地考虑工作流程的规律和步骤,充分利用手中的开发工具,利用其所具备的功能,尽量使自己的开发在代码上实现少而精确、让用户能够尽量简单地进行操作,但也发现了一些自己的问题,例如查错效率低等问题都是要在以后需要改进的。
原文地址:https://www.cnblogs.com/gsfwxj1820/p/12079545.html