学生管理系统的学习

经过一天的学习,终于对数据库的操作有了一定成度的了解,但是期间出现了几次bug,真心体会到bug销魂,让人醉生梦死啊,不多说了上代码

涉及的主要内容

1 创建 数据库的帮助类sqliteophelper,并重写其构造方法

package com.djf.salary.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * 创建一个数据库打开的帮助类,实现默认的构造方法,名称 游标工厂 数据库的版本 在oncreate方法中执行sql语句,创建一张表格
 *
 *
 */
public class SalaryInfoDBOpenHelper extends SQLiteOpenHelper {

    public SalaryInfoDBOpenHelper(Context context, String name,
            CursorFactory factory, int version) {
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub
    }

    // 实现一些默认的构造方法

    // 数据库被创建的的时候开始调用,用于数据表结构的初始化
    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL("create table salaryinfo(_id integer primary key autoincrement,name varchar(10),company varchar(20),salary integer)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }

}

2 创建数据库

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		helper = new SalaryInfoDBOpenHelper(MainActivity.this, "student.db",
				null, 1);
		dao = new StudentInfoDao(this);
		tv = (TextView) findViewById(R.id.tv);

	}

3 创建学生信息对象,并写出get set 方法

package com.djf.salary.domain;

public class StudentInfo {
	private int id;
	private String name;
	private String company;
	private int salary;

	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 getCompany() {
		return company;
	}

	public void setCompany(String company) {
		this.company = company;
	}

	public int getSalary() {
		return salary;
	}

	public void setSalary(int salary) {
		this.salary = salary;
	}

	@Override
	public String toString() {
		return "StudentInfo [id=" + id + ", name=" + name + ", company="
				+ company + ", salary=" + salary + "]";
	}
}

4 创建数据库增删改查的方法

package com.djf.salary.db.dao;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.djf.salary.db.SalaryInfoDBOpenHelper;
import com.djf.salary.domain.StudentInfo;

public class StudentInfoDao {
 private Context context;
 private SalaryInfoDBOpenHelper helper;

 public StudentInfoDao(Context context) {
  this.context = context;
  helper = new SalaryInfoDBOpenHelper(context, "student.db", null, 1);
  // TODO Auto-generated constructor stub
 }

 public void insert(String name, String company, int salary) {

  SQLiteDatabase db = helper.getWritableDatabase();
  db.execSQL(
    "insert into salaryinfo (name,company,salary) values (? ,? ,?)",
    new Object[] { name, company, salary });
  db.close();
 }

 public void delete(int id) {

  SQLiteDatabase db = helper.getWritableDatabase();
  db.execSQL("delete from salaryinfo where _id=?", new Object[] { id });
  db.close();
 }

 public void upgreadsalary(int salary, int id) {
  SQLiteDatabase db = helper.getWritableDatabase();
  db.execSQL("update salaryinfo set salary=? where _id=?", new Object[] {
    salary, id });
  db.close();
 }

 public StudentInfo find(int id) {

  SQLiteDatabase db = helper.getReadableDatabase();
  // 得到结果的游标集
  Cursor cursor = db.rawQuery("select * from salaryinfo where _id= ? ",
    new String[] { String.valueOf(id) });

  boolean result = cursor.moveToNext();
  StudentInfo studentInfo = null;
  if (result) {
   String name = cursor.getString(cursor.getColumnIndex("name"));
   String company = cursor.getString(cursor.getColumnIndex("company"));
   int salary = cursor.getInt(cursor.getColumnIndex("salary"));
   studentInfo = new StudentInfo();
   studentInfo.setCompany(company);
   studentInfo.setName(name);
   studentInfo.setSalary(salary);
   studentInfo.setId(id);

  }
  cursor.close();
  db.close();
  return studentInfo;
 }
}

5 对数据库进行操作

public void add(View view) {
  dao.insert("张三", "小米科技", 10000);
 }

 public void delete(View view) {
  dao.delete(32);
 }

 public void update(View view) {
  dao.upgreadsalary(9999, 2);

 }

 public void query(View view) {
  StudentInfo info = dao.find(3);
   int id =info.getId();
   String name = info.getName();
   String company = info.getCompany();
   int salary = info.getSalary();
   tv.setText("id=" + id + "\n" + "name=" + name + "\n" + "company="
   + company + "\n" + "salary=" + salary);
   System.out.println("学生信息:"+info.toString()
     );
  // if (info==null) {
  // tv.setText("duanjiefei");
  // }
  // else{
  // tv.setText("liudandan");
  // }
  // db = helper.getReadableDatabase();
  // Cursor cursor = db.query("salaryinfo", new String[] { "_id", "name",
  // "company" }, null, null, null, null, null);
  // while (cursor.moveToNext()) {
  // int id = cursor.getInt(cursor.getColumnIndex("_id"));
  // String name = cursor.getString(cursor.getColumnIndex("name"));
  // String company = cursor.getString(cursor.getColumnIndex("company"));
  // String result = id+" "+name+" "+company+" \n";
  // tv.setText(result);
  // }
//  if (info == null) {
//   tv.setText("duanjiefi");
//  } else {
//   // tv.setText("liudandan");
//   String name = info.getName();
//   String company =info.getCompany();
//   int id = info.getId();
//   int salary = info.getSalary();
//   tv.setText("姓名:"+name+"\n"+"公司:"+company+"\n"+"薪水:"+salary);
//  }
//  String name = info.getName();
//  String company =info.getCompany();
// int id = info.getId();
// int salary = info.getSalary();
// tv.setText("姓名:"+name+"\n"+"公司:"+company+"\n"+"薪水:"+salary);

 }

期间出现了空指针异常,改了一下午,迷迷糊糊的bug竟然消失了,一直感觉没有操作新的东西,希望在后续的学习中的能够解决类似的问题~~~~~~~

时间: 2024-10-21 17:08:40

学生管理系统的学习的相关文章

学生管理系统(list)

学生管理系统:学习了一点文件指针的操作和链表操作,以前总想搞下子,刚好碰到同学要做这个,自己瞎搞了一通. 实现功能:数据添加,查找,删除,插入,修改只是在查找加几句就没写. #include <cstdio> #include <iostream> #include <cstdlib> #include <algorithm> #include <ctime> #include <cmath> #include <string&

jsp学习之基于mvc学生管理系统的编写

mvc开发模式:分别是 model层 view层 Control层 在学生管理系统中,model层有学生实体类,数据访问的dao层,view层主要是用于显示信息的界面,Control层主要是servlet处理用户请求 在学生管理系统中,我的分包如下 cn.entity包下有学生的实体类,该类有学生的各种属性 cn.dao包是数据访问层,里面写了一个studeDao的接口该接口里面有抽象方法分别是增删该查 cn.dao.impl包中是studenDao的实现类 cn.service业务逻辑层在se

C#学生管理系统/学习

题目: 实现一个菜单,针对Student.txt与Class.txt文件进行操作 描述: I 输入学生信息:输入学生学号.姓名.性别.出生日期.班级名称.联系电话,跟已经存在的学生信息同样格式保存在文件中.如果学号重复,则提示“学号重复,无法插入” L 显示所有学生:每个学生的信息占一行:每个学生的信息项包括学号.姓名.性别.出生日期.班级名称.联系电话,各项以Tab分隔 C 按班级查询:输入班级名称,显示学生详细信息,包括学号.姓名.性别.联系电话,各项以Tab分隔.多人分行显示. N 按姓名

Java 图形界面开发--图文并茂建立学生管理系统

图形用户界面(Graphics User Interface,GUI)是用户与程序交互的窗口,比命令行的界面更加直观并且更好操作. 这是本人在学习java图形界面开发阶段一步一步实现的超级简易的学生管理系统.虽然说不入大神法眼,但这确实是费了自己不少心血.对于我这样的菜鸟来说,考虑不周到,一不小心就Exception,然后就是自己调呀调.在此分享出来希望对和我一样的菜鸟有帮助. 程序完整代码下载地址见: https://github.com/chaohuangtianjie994/The-Sys

【IOS开发笔记02】学生管理系统

端到端的机会 虽然现在身处大公司,但是因为是内部创业团队,产品.native.前端.服务器端全部坐在一起开发,大家很容易做零距离交流,也因为最近内部有一个前端要转岗过来,于是手里的前端任务好像可以抛一大坨出去了,这个时候立刻想到了切入IOS开发!!! 事实上,前端开发做到一定时间,要进步很难了,最近几个月扑到业务上便感觉突破不了目前的瓶颈,自身的前端瓶颈主要在两方面:技术深度.技术广度 其实不论深度或者广度来说都不是简单前端能说清楚的事情,不能说了解了angularJS.react等框架技术深度

结对实验——学生管理系统

一.题目简介 1 程序设计说明 1.1 程序实现的大体思路: 将学生信息存放在一个记事本中,让该记事本模拟数据库.通过用户输入的命令,对该记事本内的信息进行操作. 1.2 程序主界面 主页面分为4个,从控制台进行操作(主界面) 用户登陆 用户注册 信息查询 退出系统 1.2.1 主界面功能介绍 提示用户输入功能对应的序号,来执行相应的功能. 根据用户输入的数字,进行相应的操作,如:用户输入1后,进入用户登陆界面.当用户输入不符合要求时,提示用户重新输入. 1.3 用户登陆 1.3.1 用户登陆功

【IOS开发笔记01】学生管理系统(上)

端到端的机会 虽然现在身处大公司,但是因为是内部创业团队,产品.native.前端.服务器端全部坐在一起开发,大家很容易做零距离交流,也因为最近内部有一个前端要转岗过来,于是手里的前端任务好像可以抛一大坨出去了,这个时候立刻想到了切入IOS开发!!! 事实上,前端开发做到一定时间,要进步很难了,最近几个月扑到业务上便感觉突破不了目前的瓶颈,自身的前端瓶颈主要在两方面:技术深度.技术广度 其实不论深度或者广度来说都不是简单前端能说清楚的事情,不能说了解了angularJS.react等框架技术深度

使用C++实现学生管理系统

我在前面的博客中分别使用C语言的动态数组和链表实现了学生成绩管理系统,最近正好在学习C++,于是我便使用C++实现了学生成绩管理系统,算法和前面的C语言的动态数组实现的学生成绩管理系统差不多,只是在动态内存分配上使用了C++的New,而C语言中使用的是malloc,在排序中使用了插入排序 我的使用C语言实现的学生成绩管理系统:http://blog.csdn.net/u010105970/article/details/17752193 使用链表实现的学生成绩管理系统:http://blog.c

学生管理系统(分层开发)

Model层:(实体层) 主要是与数据库里面的表做对应,一个实体对应一张表,这样在于数据库进行交互时就可以一一对应,对数据库才可以进行操作. DAL层:(数据访问层) 主要与数据库进行交互,进行数据处理,依赖于Model层. BLL层:(业务逻辑层) 主要是进行数据的业务逻辑处理,进行逻辑处理,依赖于Model层和DAL层. UI层:(表示层) 主要把客户需要的信息通过三层,展示出来.依赖于BLL层,Model层. 实现窗体效果图: Model层:(实体层) DAL层:(数据访问层) 首先在DA