1、-_Android 学生信息管理系统 APP1、需求分析为了方便的进行对学生数据库的操作,本 app 可在 android 设备上进行对学生信息数据库的信息管理功能,具体功能如下:1.对数据库中所有学生姓名进行显示,对各个条目进行点击可展开具体信息2.查询数据:查询数据是根据姓名与学号两个条件进行查询,两者满足任一条件则进行模糊查询,两个条件同时满足则进行精确查询,查询结果界面与功能一中相同,以姓名排列,点击展开所有信息3.增加数据:在数据库中增添条目,包括姓名(字符串),学号(数字,主键),性别(单选框),年龄(数字),专业(字符串)。每个条目均有误输入设定,且主键可检查重复性,所有数据可检
2、查完整性,若插入成功则会显示一条消息提示成功,若失败则会提示检查主键重复或者数据不完整4.修改数据:根据姓名学号进行精确查找,查找成功后转入修改界面,为了防止漏填与便捷修改界面会默认填充之前的数据(除学号),修改完毕即可更新,同样会检查数据完整性-_5.删除数据:根据姓名学号进行精确查找,查找成功则会进行删除,并显示一条删除成功的提示,若失败,也会进行提示2、概念结构设计ER 图:3、逻辑结构设计学生:姓名(字符串)学号(数字,主码)-_性别(单选框)年龄(数字)专业(字符串)create table student(name TEXT,NO TEXT Primary Key,sex TEXT
3、,profession TEXT,age TEXT)4、 具体实现1.主界面:-_主界面显示所有功能,每个按钮点击后,跳转进入相应功能核心代码:public class Main extends Activity SQLiteDatabase db;Button btn_search;Button btn_modify;Button btn_add;Button btn_delete;Button btn_quit;Button btn_show;Overrideprotected void onCreate(Bundle savedInstanceState) requestWindowFe
4、ature(Window.FEATURE_NO_TITLE);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);super.onCreate(savedInstanceState);setContentView(R.layout.layout_main);/打开数据库,若不存在,则创建db = SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString()+“/
5、Student.db3“, null);btn_search = (Button) findViewById(R.id.btn_search);btn_modify = (Button) findViewById(R.id.btn_modify);btn_add = (Button) findViewById(R.id.btn_add);btn_delete = (Button) findViewById(R.id.btn_delete);btn_quit = (Button) findViewById(R.id.btn_quit);btn_show = (Button) findViewBy
6、Id(R.id.Btn_show);tryCursor cursor = db.rawQuery(“select * from student“, null);cursor.close();catch(SQLiteException e)-_db.execSQL(“create table student“+ “(“+ “ name TEXT,“+ “ NO TEXT Primary Key,“+ “ sex TEXT,“+ “ profession TEXT,“+ “ age TEXT“+ “)“);/显示所有数据按钮的功能实现btn_show.setOnClickListener(new
7、OnClickListener()public void onClick(View source) /获取指针Cursor cursor = db.rawQuery(“select * from student“, null);/判断数据库是否不存在任何数据if(cursor.moveToFirst() = false)Toast.makeText(Main.this, “不存在记录“, Toast.LENGTH_SHORT).show();elseList p = new ArrayList();List re_name = new ArrayList();List info = new A
8、rrayList();/保存搜索出的所有数据for(cursor.moveToFirst() ; !cursor.isAfterLast() ; cursor.moveToNext()int nameColume = cursor.getColumnIndex(“name“);int NOColume = cursor.getColumnIndex(“NO“);int proColume = cursor.getColumnIndex(“profession“);int sexColume = cursor.getColumnIndex(“sex“);int ageColume = curso
9、r.getColumnIndex(“age“);Student student = new Student();student.name = “姓名:“+cursor.getString(nameColume);student.NO = “学号:“+cursor.getString(NOColume);-_student.sex = “性别:“+cursor.getString(sexColume);student.profession = “专业:“+cursor.getString(proColume);student.age = “年龄:“+cursor.getString(ageCol
10、ume);p.add(student);String temp = student.MakeString();info.add(temp);String newname = cursor.getString(nameColume);re_name.add(newname);/对保存的数据进行封装String Cur_name = new Stringre_name.size();Cur_name = re_name.toArray(Cur_name);String Cur_info = new Stringinfo.size();Cur_info = info.toArray(Cur_info
11、);Bundle bundle = new Bundle();bundle.putStringArray(“name“, Cur_name);Student data = new Student();data.info = Cur_info;/将封装的数据传递给结果界面的 activityIntent intent = new Intent(Main.this,SearchResult.class);intent.putExtras(bundle);intent.putExtra(“data“, data);startActivity(intent);cursor.close(););/为剩下
12、的按钮绑定监听器实现跳转功能btn_search.setOnClickListener(new OnClickListener()public void onClick(View source) Intent intent = new Intent(Main.this,Search.class);startActivity(intent);-_);btn_modify.setOnClickListener(new OnClickListener()public void onClick(View source) Intent intent = new Intent(Main.this,Modi
13、fy.class);startActivity(intent););btn_add.setOnClickListener(new OnClickListener()public void onClick(View source) Intent intent = new Intent(Main.this,Add.class);startActivity(intent););btn_delete.setOnClickListener(new OnClickListener()public void onClick(View source) Intent intent = new Intent(Ma
14、in.this,Delete.class);startActivity(intent););btn_quit.setOnClickListener(new OnClickListener()public void onClick(View source) db.close();finish(););-_2.数据显示界面:按姓名排列,点击条目展开具体信息核心代码:public class SearchResult extends ActivitySuppressLint(“RtlHardcoded“)public void onCreate(Bundle savedInstanceState)r
15、equestWindowFeature(Window.FEATURE_NO_TITLE);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);/获取传送来的数据super.onCreate(savedInstanceState);setContentView(R.layout.layout_result);final Intent intent = getIntent();-_BaseExpandableListAdapter a
16、dapter = new BaseExpandableListAdapter()/提取数据Bundle bundle = intent.getExtras();Student mem_data = (Student) getIntent().getExtras().get(“data“);String people = (String) bundle.getSerializable(“name“);String data = mem_data.info;public Object getChild(int groupPosition,int childPosition)return datag
17、roupPositionchildPosition;public long getChildId(int groupPosition,int childPosition)return childPosition;public int getChildrenCount(int groupPosition)return datagroupPosition.length;/设定每个子选项每行的显示方式private TextView getTextView()AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.La
18、youtParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);TextView textView = new TextView(SearchResult.this);textView.setLayoutParams(lp);textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);textView.setPadding(36, 0, 0, 0);textView.setTextSize(20);return textView;/设定每个子选项显示内容public View
19、 getChildView(int groupPosition , int childPosition,boolean isLastChild,View convertView,ViewGroup Parent)-_TextView textView = getTextView();textView.setText(“ “+getChild(groupPosition,childPosition).toString();return textView;public Object getGroup(int groupPosition)return peoplegroupPosition;publ
20、ic int getGroupCount()return people.length;public long getGroupId(int groupPosition)return groupPosition;/设定每个组选项显示内容public View getGroupView(int groupPosition, boolean isExpanded ,View convertView , ViewGroup parnet)LinearLayout ll = new LinearLayout(SearchResult.this);ll.setOrientation(0);TextView textView = getTextView();textView.setText(“ “+getGroup(groupPosition).toString();ll.addView(textView);return ll;ExpandableListView expandListView = (ExpandableListView) findViewById(R.id.list);expandListView.setAdapter(adapter);