上一篇讲解了制作图书管理系统的初衷与要求,和app首页的代码。

下面来介绍图书管理系统的服务对象:学生

学生类的设计:

个人信息:账号、密码、姓名、学号、邮箱、年龄。

借阅信息:借阅总数(不超过十本)、借阅书籍的ID(数组)、借阅书籍的日期(数组)。

源码在此:

  1 package com.example.administrator.library1;
2
3 import org.litepal.LitePal;
4 import org.litepal.crud.DataSupport;
5 import org.litepal.crud.LitePalSupport;
6
7 import java.util.ArrayList;
8 import java.util.List;
9
10 public class Student extends LitePalSupport{
11 private int id;
12 private String account,name,password,student_ID,mailBox;
13 private int age,bookAmount;
14 private int bookList[]=new int[10];
15 private int bookyear[]=new int[10];
16 private int bookday[]=new int[10];
17
18 public Student(String account, String password, String name, String student_ID, String mailBox, int age)
19 {
20 this.account=account;
21 this.password=password;
22 this.name=name;
23 this.student_ID=student_ID;
24 this.mailBox=mailBox;
25 this.age=age;
26 bookAmount=0;
27 for(int i=0;i<10;++i)
28 {
29 bookList[i]=0;
30 bookyear[i]=0;
31 bookday[i]=0;
32 }
33 }
34 public int getId() {
35 return id;
36 }
37 public void setId(int id) {
38 this.id = id;
39 }
40 public void setName(String name) {
41 this.name = name;
42 }
43 public void setAccount(String account) {
44 this.account = account;
45 }
46 public void setAge(int age) {
47 this.age = age;
48 }
49 public void setPassword(String password) {
50 this.password = password;
51 }
52 public void setMailBox(String mailBox) {
53 this.mailBox = mailBox;
54 }
55 public void setStudent_ID(String student_ID) {
56 this.student_ID = student_ID;
57 }
58 public String getName() {
59 return name;
60 }
61 public int getAge() {
62 return age;
63 }
64 public String getAccount() {
65 return account;
66 }
67 public String getPassword() {
68 return password;
69 }
70 public String getStudent_ID() {
71 return student_ID;
72 }
73 public String getMailBox() {
74 return mailBox;
75 }
76 public void setBookList(int[] bookList) {
77 this.bookList = bookList;
78 }
79 public void setBookList(int number,int book_id)
80 {
81 this.bookList[number]=book_id;
82 }
83 public int[] getBookList() {
84 return bookList;
85 }
86 public int getBookAmount() {
87 return bookAmount;
88 }
89 public void setBookAmount(int bookAmount) {
90 this.bookAmount = bookAmount;
91 }
92 public int getBookList(int number)
93 {
94 return bookList[number];
95 }
96 public int getBookyear(int number){return bookyear[number];}
97 public int getBookday(int number){return bookday[number];}
98 public void setBookyear(int number,int year){this.bookyear[number]=year;}
99 public void setBookday(int number,int day){this.bookday[number]=day;}
100
101 }

Student

学生的注册:

注册有个人信息的填写:账号、密码(重复输入)、学号、姓名、邮箱、年龄。

代码如下:

主逻辑:

 1 package com.example.administrator.library1;
2
3 import android.content.Intent;
4 import android.support.v7.app.AppCompatActivity;
5 import android.os.Bundle;
6 import android.view.View;
7 import android.widget.Button;
8 import android.widget.EditText;
9 import android.widget.Toast;
10
11 import org.litepal.LitePal;
12
13 import java.util.List;
14
15 public class Register_student extends AppCompatActivity {
16 private EditText editAccount,editPassword1,editPassword2,editName,editMailbox,editAge,editStudentID;
17 private Button button_commit;
18 @Override
19 protected void onCreate(Bundle savedInstanceState) {
20 super.onCreate(savedInstanceState);
21 setContentView(R.layout.activity_register_student);
22 editAccount=findViewById(R.id.reg_st_acc_id);
23 editPassword1=findViewById(R.id.reg_st_pass1_id);
24 editPassword2=findViewById(R.id.reg_st_pass2_id);
25 editName=findViewById(R.id.reg_st_name_id);
26 editAge=findViewById(R.id.reg_st_age_id);
27 editMailbox=findViewById(R.id.reg_st_mail_id);
28 editStudentID=findViewById(R.id.reg_st_ID_id);
29 button_commit=findViewById(R.id.reg_st_commit_id);
30 button_commit.setOnClickListener(new View.OnClickListener() {
31 @Override
32 public void onClick(View view) {
33 if(editAccount.getText().toString().equals("")||editPassword1.getText().toString().equals("")||editPassword2.getText().toString().equals("")||editName.getText().toString().equals("")||editAge.getText().toString().equals("")||editMailbox.getText().toString().equals("")||editStudentID.getText().toString().equals(""))
34 {
35 Toast.makeText(Register_student.this,"注册信息不能为空",Toast.LENGTH_SHORT);
36 }
37 else
38 {
39 if(editAccount.getText().toString().length()>=6&&editAccount.getText().toString().length()<=12)
40 {
41 List<Student> students_account= LitePal.findAll(Student.class);
42 boolean differ=true;
43 for(int i=0;i<students_account.size();++i)
44 {
45 if(editAccount.getText().toString().equals(students_account.get(i).getAccount()))
46 {
47 Toast.makeText(Register_student.this,"账号已存在",Toast.LENGTH_SHORT).show();
48 differ=false;
49 }
50 }
51 if(differ==true)
52 {
53 if(editPassword2.getText().toString().equals(editPassword1.getText().toString()))
54 {
55 int reg_age=Integer.parseInt(editAge.getText().toString());
56 Student student=new Student(editAccount.getText().toString(),editPassword1.getText().toString(),editName.getText().toString(),editStudentID.getText().toString(),editMailbox.getText().toString(),reg_age);
57 student.save();
58 Intent intent=new Intent(Register_student.this,MainActivity.class);
59 startActivity(intent);
60 //Toast.makeText(Register_student.this,"注册成功",Toast.LENGTH_SHORT).show();
61 }
62 else
63 {
64 Toast.makeText(Register_student.this,"两次密码不相同",Toast.LENGTH_SHORT).show();
65 }
66 }
67 }
68 else
69 {
70 Toast.makeText(Register_student.this,"账号大小需要在6-12位数之间",Toast.LENGTH_SHORT).show();
71 }
72 }
73
74 }
75 });
76 }
77
78 @Override
79 protected void onPause() {
80 Intent intent=new Intent(Register_student.this,MainActivity.class);
81 startActivity(intent);
82 super.onPause();
83 }
84 }

Student_Register

界面:

  1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:app="http://schemas.android.com/apk/res-auto"
4 xmlns:tools="http://schemas.android.com/tools"
5 android:orientation="vertical"
6 android:layout_width="match_parent"
7 android:layout_height="match_parent"
8 tools:context=".Register_student">
9 <LinearLayout
10 android:layout_marginTop="20dp"
11 android:orientation="horizontal"
12 android:layout_width="match_parent"
13 android:layout_height="wrap_content">
14 <TextView
15 android:layout_width="0dp"
16 android:layout_height="match_parent"
17 android:layout_weight="1"
18 android:text="账号 :"
19 android:textSize="21sp"/>
20 <EditText
21 android:id="@+id/reg_st_acc_id"
22 android:layout_width="0dp"
23 android:layout_height="match_parent"
24 android:inputType="number"
25 android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890*/@#$%^"
26 android:layout_weight="3"/>
27 </LinearLayout>
28 <LinearLayout
29 android:orientation="horizontal"
30 android:layout_width="match_parent"
31 android:layout_height="wrap_content">
32 <TextView
33 android:layout_width="0dp"
34 android:layout_height="match_parent"
35 android:layout_weight="1"
36 android:text="输入密码"
37 android:textSize="18sp"/>
38 <EditText
39 android:id="@+id/reg_st_pass1_id"
40 android:layout_width="0dp"
41 android:layout_height="match_parent"
42 android:inputType="textPassword"
43 android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890*/@#$%^"
44 android:layout_weight="3"/>
45 </LinearLayout>
46 <LinearLayout
47 android:orientation="horizontal"
48 android:layout_width="match_parent"
49 android:layout_height="wrap_content">
50 <TextView
51 android:layout_width="0dp"
52 android:layout_height="match_parent"
53 android:layout_weight="1"
54 android:text="再输入密码"
55 android:textSize="18sp"/>
56 <EditText
57 android:id="@+id/reg_st_pass2_id"
58 android:layout_width="0dp"
59 android:layout_height="match_parent"
60 android:inputType="textPassword"
61 android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890*/@#$%^"
62 android:layout_weight="3"/>
63 </LinearLayout>
64 <LinearLayout
65 android:orientation="horizontal"
66 android:layout_width="match_parent"
67 android:layout_height="wrap_content">
68 <TextView
69 android:layout_width="0dp"
70 android:layout_height="match_parent"
71 android:layout_weight="1"
72 android:text="姓名 :"
73 android:textSize="21sp"/>
74 <EditText
75 android:id="@+id/reg_st_name_id"
76 android:layout_width="0dp"
77 android:layout_height="match_parent"
78 android:layout_weight="3"/>
79 </LinearLayout>
80 <LinearLayout
81 android:orientation="horizontal"
82 android:layout_width="match_parent"
83 android:layout_height="wrap_content">
84 <TextView
85 android:layout_width="0dp"
86 android:layout_height="match_parent"
87 android:layout_weight="1"
88 android:text="学号 :"
89 android:textSize="21sp"/>
90 <EditText
91 android:id="@+id/reg_st_ID_id"
92 android:inputType="number"
93 android:digits="1234567890"
94 android:layout_width="0dp"
95 android:layout_height="match_parent"
96 android:layout_weight="3"/>
97 </LinearLayout>
98 <LinearLayout
99 android:orientation="horizontal"
100 android:layout_width="match_parent"
101 android:layout_height="wrap_content">
102 <TextView
103 android:layout_width="0dp"
104 android:layout_height="match_parent"
105 android:layout_weight="1"
106 android:text="邮箱 :"
107 android:textSize="21sp"/>
108 <EditText
109 android:id="@+id/reg_st_mail_id"
110 android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890@."
111 android:layout_width="0dp"
112 android:inputType="number"
113 android:layout_height="match_parent"
114 android:layout_weight="3"/>
115 </LinearLayout>
116 <LinearLayout
117 android:orientation="horizontal"
118 android:layout_width="match_parent"
119 android:layout_height="wrap_content">
120 <TextView
121 android:layout_width="0dp"
122 android:layout_height="match_parent"
123 android:layout_weight="1"
124 android:text="年龄 :"
125 android:textSize="21sp"/>
126 <EditText
127 android:id="@+id/reg_st_age_id"
128 android:layout_width="0dp"
129 android:layout_height="match_parent"
130 android:layout_weight="3"
131 android:inputType="number"/>
132 </LinearLayout>
133 <Button
134 android:id="@+id/reg_st_commit_id"
135 android:layout_width="150dp"
136 android:layout_height="wrap_content"
137 android:textSize="24sp"
138 android:layout_gravity="center"
139 android:gravity="center"
140 android:text="注册提交"/>
141 </LinearLayout>

Studnet_register_xml

界面很丑,截图如下:

注册成功之后,将会使用开源项目Litepal将Edittext里的内容储存至本地数据库。Intent将活动带回MainActivity。

学生的登录:

使用账号密码登录,记住密码自动开启,并将账号和密码通过Simple类储存至Library数据库Simple表的第一列,登录开始时,会自动先访问Simple表ID为1的simple获得数据,登陆成功后进入Student homepage。

逻辑代码:

 1 package com.example.administrator.library1;
2
3 import android.content.Intent;
4 import android.support.v7.app.AppCompatActivity;
5 import android.os.Bundle;
6 import android.util.Log;
7 import android.view.View;
8 import android.widget.Button;
9 import android.widget.CheckBox;
10 import android.widget.EditText;
11 import android.widget.Toast;
12
13 import org.litepal.LitePal;
14 import org.litepal.crud.LitePalSupport;
15
16 import java.util.List;
17
18 public class Login_student extends AppCompatActivity {
19
20 private EditText editAccount,editPassword;
21 private CheckBox checkBox;
22 private Button button_commit;
23 @Override
24 protected void onCreate(Bundle savedInstanceState) {
25 super.onCreate(savedInstanceState);
26 setContentView(R.layout.activity_login_student);
27 editAccount=findViewById(R.id.accountStudent_id);
28 editPassword=findViewById(R.id.passwordStudent_id);
29 checkBox=findViewById(R.id.rememberPassStudent_id);
30 button_commit=findViewById(R.id.commitStudent_id);
31
32 //自动登录功能
33 final Simple simple=LitePal.find(Simple.class,1);
34 editAccount.setText(simple.getAccount());
35 editPassword.setText(simple.getPassword());
36
37 button_commit.setOnClickListener(new View.OnClickListener() {
38 @Override
39 public void onClick(View view) { //在这里之前已经出错
40 List<Student> students_account= LitePal.findAll(Student.class);
41 boolean is_account_available=false;
42 String st_account,st_password;
43 st_account=editAccount.getText().toString();
44 st_password=editPassword.getText().toString();
45 for(int i=0;i<students_account.size();++i)
46 {
47 if(st_account.equals(students_account.get(i).getAccount()))
48 {
49 is_account_available=true;
50 if(st_password.equals(students_account.get(i).getPassword()))
51 {
52 if(checkBox.isChecked())
53 {
54 Simple simple= LitePal.find(Simple.class,1);
55 simple.setAccount(editAccount.getText().toString());
56 simple.setPassword(editPassword.getText().toString());
57 simple.save();
58 }
59 else
60 {
61 Simple simple1=LitePal.find(Simple.class,1);
62 simple1.setAccount("");
63 simple1.setPassword("");
64 simple1.save();
65 }
66 Intent intent=new Intent(Login_student.this,Student_homepage.class);
67 intent.putExtra("extra_data",i+1);
68 startActivity(intent);
69 finish();
70 }
71 else
72 {
73 Toast.makeText(Login_student.this,"密码错误",Toast.LENGTH_SHORT).show();
74 break; //记住密码还没有用上
75 }
76 }
77 }
78 if(is_account_available==false)
79 {
80 Toast.makeText(Login_student.this,"账号不存在",Toast.LENGTH_SHORT).show();
81 }
82 }
83
84 });
85 }
86 }

Login Student

界面代码:

 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:app="http://schemas.android.com/apk/res-auto"
4 android:orientation="vertical"
5 xmlns:tools="http://schemas.android.com/tools"
6 android:layout_width="match_parent"
7 android:layout_height="match_parent"
8 tools:context=".Login_student">
9
10 <ImageView
11 android:layout_width="match_parent"
12 android:layout_height="211dp"
13 android:src="@drawable/img_login" />
14 <LinearLayout
15 android:layout_width="match_parent"
16 android:layout_height="wrap_content"
17 android:layout_marginTop="20dp"
18 android:layout_marginLeft="20dp"
19 android:layout_marginRight="20dp"
20 android:orientation="horizontal">
21 <TextView
22 android:layout_width="0dp"
23 android:layout_height="match_parent"
24 android:layout_weight="1"
25 android:textSize="21sp"
26 android:text="账号: "/>
27 <EditText
28 android:id="@+id/accountStudent_id"
29 android:layout_width="0dp"
30 android:layout_height="match_parent"
31 android:layout_weight="5"
32 android:hint="type here"/>
33 </LinearLayout>
34 <LinearLayout
35 android:orientation="horizontal"
36 android:layout_width="match_parent"
37 android:layout_marginLeft="20dp"
38 android:layout_marginRight="20dp"
39 android:layout_height="wrap_content">
40 <TextView
41 android:layout_width="0dp"
42 android:layout_height="match_parent"
43 android:layout_weight="1"
44 android:textSize="21sp"
45 android:text="密码 :"/>
46 <EditText
47 android:id="@+id/passwordStudent_id"
48 android:layout_width="0dp"
49 android:layout_height="match_parent"
50 android:layout_weight="5"
51 android:hint="type here"/>
52 </LinearLayout>
53 <LinearLayout
54 android:layout_marginLeft="20dp"
55 android:layout_marginRight="20dp"
56 android:layout_width="match_parent"
57 android:layout_height="wrap_content">
58 <CheckBox
59 android:id="@+id/rememberPassStudent_id"
60 android:checked="true"
61 android:layout_width="wrap_content"
62 android:layout_height="wrap_content" />
63 <TextView
64 android:layout_width="wrap_content"
65 android:layout_height="wrap_content"
66 android:textSize="18sp"
67 android:text="自动登录"/>
68 </LinearLayout>
69 <Button
70 android:id="@+id/commitStudent_id"
71 android:layout_width="150dp"
72 android:layout_height="wrap_content"
73 android:layout_gravity="center"
74 android:textSize="20sp"
75 android:text="登录"/>
76 </LinearLayout>

Login_student.xml

学生空间:

学生空间包含的功能有:查询书籍、借书和还书。通过在数据库Book表中查询用户输入的书籍名称达到查询目的,查询成功后书籍出现,此时用户点击借阅即可借走该书,学生空间下面有listview控件,用来展示学生已经借阅未归还的书籍。用户点击listview里的书籍后,该书从listview中消失,用户账号里的bookamount-1,id[],data[],中关于该书的信息消失。

界面源码:

 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:app="http://schemas.android.com/apk/res-auto"
4 xmlns:tools="http://schemas.android.com/tools"
5 android:layout_width="match_parent"
6 android:layout_height="match_parent"
7 android:orientation="vertical"
8 tools:context=".Student_homepage">
9
10 <ImageView
11 android:layout_width="match_parent"
12 android:layout_height="160dp"
13 android:src="@drawable/img_1" />
14 <TextView
15 android:id="@+id/stu_home_infor_id"
16 android:layout_width="match_parent"
17 android:layout_height="wrap_content"
18 android:textSize="20sp"/>
19 <LinearLayout
20 android:layout_marginTop="20dp"
21 android:layout_width="match_parent"
22 android:layout_height="wrap_content"
23 android:orientation="horizontal">
24 <Button
25 android:id="@+id/stu_home_ser_id"
26 android:layout_width="wrap_content"
27 android:layout_height="wrap_content"
28 android:text="搜索"
29 android:textSize="18sp"/>
30 <EditText
31 android:id="@+id/stu_home_ser_content_id"
32 android:layout_width="0dp"
33 android:layout_height="wrap_content"
34 android:layout_weight="1"
35 android:hint="输入书名或者作者"/>
36 </LinearLayout>
37 <LinearLayout
38 android:id="@+id/stu_linear_id"
39 android:visibility="invisible"
40 android:orientation="horizontal"
41 android:layout_width="match_parent"
42 android:layout_height="wrap_content">
43 <TextView
44 android:id="@+id/stu_home_book_id"
45 android:layout_width="0dp"
46 android:layout_height="wrap_content"
47 android:layout_weight="4"/>
48 <Button
49 android:id="@+id/stu_home_borrow_id"
50 android:layout_width="0dp"
51 android:layout_height="wrap_content"
52 android:layout_weight="1"
53 android:text="借阅"
54 android:textSize="20sp"/>
55 </LinearLayout>
56 <ListView
57 android:id="@+id/st_home_list_id"
58 android:layout_width="match_parent"
59 android:layout_height="match_parent">
60 </ListView>
61
62
63 </LinearLayout>

Student_homepage_xml

逻辑代码:

  1 package com.example.administrator.library1;
2
3 import android.content.Intent;
4 import android.support.v7.app.AppCompatActivity;
5 import android.os.Bundle;
6 import android.support.v7.widget.LinearLayoutManager;
7 import android.support.v7.widget.RecyclerView;
8 import android.view.View;
9 import android.widget.Adapter;
10 import android.widget.AdapterView;
11 import android.widget.ArrayAdapter;
12 import android.widget.Button;
13 import android.widget.EditText;
14 import android.widget.LinearLayout;
15 import android.widget.ListView;
16 import android.widget.TextView;
17 import android.widget.Toast;
18
19 import org.litepal.LitePal;
20
21 import java.sql.Time;
22 import java.util.ArrayList;
23 import java.util.Calendar;
24 import java.util.List;
25
26 import static android.media.CamcorderProfile.get;//
27 //应该是书的数据没有存进去。
28
29 public class Student_homepage extends AppCompatActivity {
30 private int book_id[]=new int[10];
31 Student student_local;
32 private List<String> bookList=new ArrayList<>();
33 private Book book_in_search,book_in_delete;
34 int student_id;
35 boolean key=false;
36 private TextView text_student_infor,text_book_infor;
37 private Button search,borrow;
38 private EditText search_content;
39 private LinearLayout linearLayout;
40 @Override
41 protected void onCreate(Bundle savedInstanceState) {
42 super.onCreate(savedInstanceState);
43 setContentView(R.layout.activity_student_homepage);
44
45 for(int i=0;i<10;++i)
46 {
47 book_id[i]=0;
48 }
49
50 linearLayout=(LinearLayout)findViewById(R.id.stu_linear_id);
51 text_student_infor=(TextView)findViewById(R.id.stu_home_infor_id);
52 search_content=(EditText) findViewById(R.id.stu_home_ser_content_id);
53 text_book_infor=(TextView)findViewById(R.id.stu_home_book_id);
54 borrow=(Button)findViewById(R.id.stu_home_borrow_id);
55 search=(Button)findViewById(R.id.stu_home_ser_id); //注册控件
56
57 Intent intent=getIntent(); //获得上一个活动的数据
58 student_id=intent.getIntExtra("extra_data",1);
59 student_local=LitePal.find(Student.class,student_id);
60 text_student_infor.setText("学号:"+student_local.getStudent_ID()+" "+"姓名:"+student_local.getName());
61
62 for(int i=0;i<student_local.getBookAmount();++i)
63 {
64 bookList.add(LitePal.find(Book.class,student_local.getBookList(i)).getName());
65 book_id[i]=student_local.getBookList(i);
66 }
67
68 final ListView listView=(ListView) findViewById(R.id.st_home_list_id);
69 final ArrayAdapter<String> adapter=new ArrayAdapter<String>(Student_homepage.this,android.R.layout.simple_list_item_1,bookList);
70 listView.setAdapter(adapter); //制作listview滚动
71
72 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
73 @Override
74 public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
75 String string = bookList.get(i);
76 Toast.makeText(Student_homepage.this, string+"归还成功", Toast.LENGTH_SHORT).show();
77 bookList.remove(i);
78 for (int key = i; key < student_local.getBookAmount() - 1; ++key) {
79 book_id[key] = book_id[key + 1];
80 }
81 student_local.setBookAmount(student_local.getBookAmount() - 1);
82 student_local.setBookList(book_id);
83 student_local.save();
84 //List<Book> books = LitePal.where("name like ?", string).find(Book.class);
85 book_in_delete=LitePal.find(Book.class,book_id[i]);
86 int current_book = book_in_delete.getIn_shelf();
87 book_in_delete.setIn_shelf(current_book + 1);
88 book_in_delete.save();
89
90 listView.setAdapter(adapter);
91 }
92 });
93
94 search.setOnClickListener(new View.OnClickListener() {
95 @Override
96 public void onClick(View view) {
97 String sear_book_name;
98 sear_book_name=search_content.getText().toString();
99 List<Book> books=LitePal.where("name like ?",sear_book_name).find(Book.class);
100 if(books.size()>0) {
101 book_in_search = books.get(0);
102 text_book_infor.setText("书名:" + book_in_search.getName() + " " + "作者:" + book_in_search.getWriter());
103 linearLayout.setVisibility(View.VISIBLE);
104 key=true;
105 }
106 }
107 });
108 borrow.setOnClickListener(new View.OnClickListener() {
109 @Override
110 public void onClick(View view) {
111 if (book_in_search.getIn_shelf() > 0&&key==true) {
112 key=false;
113 if (student_local.getBookAmount() < 10) {
114 book_in_search.setIn_shelf(book_in_search.getIn_shelf() - 1);
115 book_in_search.save();
116 book_id[student_local.getBookAmount()] = book_in_search.getId();
117 bookList.add(book_in_search.getName());
118
119 Calendar calendar=Calendar.getInstance();
120 int year=calendar.get(Calendar.YEAR);
121 int day=calendar.get(Calendar.DAY_OF_YEAR); //获得当前的时间
122
123 student_local.setBookList(student_local.getBookAmount(),book_in_search.getId());
124 student_local.setBookyear(student_local.getBookAmount(),year);
125 student_local.setBookday(student_local.getBookAmount(),day);
126 student_local.setBookAmount(student_local.getBookAmount()+1);
127 student_local.save();
128 listView.setAdapter(adapter);
129 Toast.makeText(Student_homepage.this, "借书成功", Toast.LENGTH_SHORT).show();
130 } else {
131 Toast.makeText(Student_homepage.this, "借书数目已达到上限,请还书后再借", Toast.LENGTH_SHORT).show();
132 }
133 } else {
134 Toast.makeText(Student_homepage.this, "该书已经全部被借出", Toast.LENGTH_SHORT).show();
135 }
136 }
137 });
138
139 }
140 }

Student_Homepage

截图如下:

下一篇再来讲述Book与staff(工作人员)这两部分的实现。

基于Android平台的图书管理系统的制作(2)的更多相关文章

  1. 基于Android平台的图书管理系统的制作(1)

    在学习了郭神的第一行代码前半段之后,想通过一次实践来完成对已学知识的巩固.于是码下了这个图书管理系统客户端. IDE Android studio,语言 JAVA.XML: 在刚开始设计的时候对于这个 ...

  2. 基于Android平台的图书管理系统的制作(3)

    前两篇介绍了主页面和Student,这一篇来讲Book类和工作人员. Book是图书管理系统的核心,查书,借书,还书,增加书都与Book类息息相关.Book类的设计很简单:包含信息:名称.作者.页数. ...

  3. 基于Android平台的图书管理系统的制作(4)

    讲解完学生.职员.书籍这些基础层之后,我们可以来了解一些应用层的活动. 新书上架.借阅排行.黑名单.图书馆介绍.图书馆新闻. 新书上架是查询数据库里的Book表,将最近注册的五本书的基本信息(若图书馆 ...

  4. 基于Android平台的会议室管理系统具体设计说明书

    会议室管理系统具体设计说明书 第一部分  引言 1.编写目的 本说明对会议室管理系统项目的各模块.页面.脚本分别进行了实现层面上的要求和说明. 软件开发小组的产品实现成员应该阅读和參考本说明进行代码的 ...

  5. 基于android平台的斗地主AI

    本软件是基于android平台的斗地主AI,我们在源代码的基础之上,旨在改进AI的算法,使玩家具有更丰富的体验感,让NPC可以更为智能. (一)玩法解析: (1)发牌和叫牌:一副扑克54张,先为每个人 ...

  6. 基于Android 平台简易即时通讯的研究与设计[转]

    摘要:论文简单介绍Android 平台的特性,主要阐述了基于Android 平台简易即时通讯(IM)的作用和功能以及实现方法.(复杂的通讯如引入视频音频等可以考虑AnyChat SDK~)关键词:An ...

  7. 基于Android平台的简易人脸检测库

    代码地址如下:http://www.demodashi.com/demo/12135.html ViseFace 简易人脸检测库,不依赖三方库,可快速接入人脸检测功能. 项目依赖:compile 'c ...

  8. 基于ANDROID平台,U3D对蓝牙手柄键值的获取

    对于ANDROID平台,物理蓝牙手柄已被封装,上层应用不可见,也就是说对于上层应用,不区分蓝牙手柄还是其它手柄: 完成蓝牙手柄和ANDROID手机的蓝牙连接后,即可以UNITY3D中获取其键值: 在U ...

  9. 结对编程--基于android平台的黄金点游戏

    游戏内容: 阿超的课都是下午两点钟,这时班上不少的同学都昏昏欲睡,为了让大家兴奋起来,阿超让同学玩一个叫“黄金点”的游戏: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或1 ...

随机推荐

  1. 【Android Jetpack高手日志】DataBinding 从入门到精通

    前言 DataBinding 数据绑定库是 Android Jetpack 的一部分,借助该库可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源.我个人觉得,使用 DataBin ...

  2. Day007 递归

    递归 定义 ​ A方法调A方法!就是自己调自己 作用 ​ 利用递归可以用简单的程序来解决一些复杂的问题.它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程 ...

  3. Day003 巧妙验证短路运算

    &&的短路运算 条件1&&条件2...&&条件n,程序会先判断条件1,如果条件1为false,则不判断后面的条件,直接返回false 怎么判断程序到底有 ...

  4. java.lang.ClassNotFoundException的解决方案

    举一个特定的例子 java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource 到Maven中央仓库下载 当我们看 ...

  5. Servlet三大域对象

    Servlet三大域对象的应用 request.session.application(ServletContext) ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器 ...

  6. Python数模笔记-Sklearn(4)线性回归

    1.什么是线性回归? 回归分析(Regression analysis)是一种统计分析方法,研究自变量和因变量之间的定量关系.回归分析不仅包括建立数学模型并估计模型参数,检验数学模型的可信度,也包括利 ...

  7. 并查集板子+kruskal

    最近在学最小生成树得时候又用到了并查集,一起来整理一下 1.并查集 并查集就是字面意思,将两个单独得集合合并成一个大的集合. 并查集关键在于两个操作:合并和查找 先要完成查找操作(合并操作在查找的基础 ...

  8. [Linux] Linux命令行与Shell脚本编程大全 Part.1

    终端 tty(teletypewriters):控制台,早期计算机通过电传打字机作为输入设备 Console:控制台终端,即显示器 Ctrl+Alt+T:图形界面终端 Ctrl+Alt+F2:tty2 ...

  9. Linux下ftp搭建

    FTP服务器搭建教程: https://blog.csdn.net/plssmile/article/details/17061271 https://blog.csdn.net/guofengdid ...

  10. 面向对象——python核心编程第二版

    类与实例 类与实例相互关联着:类是对象的定义,而实例是"真正的实物",它存放了类中所定义的对象的具体信息. class MyData(object): pass >>& ...