作品说明书
姓 名
学 号
目 录
前言44
第1章 系统分析55
1.1系统目标55
1.2 功能需求55
第2章 总体设计66
2.1 教师管理模块66
第3章 数据库设计88
3.1 数据库总体ER图88
3.2 各个实体属性图88
第4章 系统实现1818
4.1 登录界面1818
4.2 注册界面2323
4.3 运行界面3030
4.4 成绩录入1818
4.5 查看成绩2323
4.6 编辑删除操作3030
4.7 查找学生1818
前言
学生成绩管理APP是一个对学生随着信息技术在管理上越来越深入而广泛的应用,成绩管理系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。这个学生信息管理系统用Android studio来设计界面,采用java语言编程,实现对学生成绩的基本管理,包括学生学号、姓名、课程、成绩等信息的添加、查询以及删除等功能。该系统充分考虑用户的操作简便性,实现快捷操作。如何调试程序也非常重要,通过这个程序可以学习到以前调试短程序没有的经验。
该软件是专为教师设计的一款用来管理学生各科成绩的移动程序,可以帮助教师进行数据的收录和查询,并对数据进行查看、修改、删除,适合多课程老师进行学生成绩录入,操作简单,界面美观大方。
第1章 系统分析
1.1 系统目标
随着时代的不断发展,高校的管理越来越依赖于移动信息技术,而目前来说移动端的办公已经成为了一种趋势,本次项目就是针对高校教师对学生成绩进行移动化管理的问题做出的一种尝试,设计和实现了一款基于移动安卓平台的手机APP,经过测试,取得了良好的效果。
1.2功能需求
该学生成绩管理系统应该具有以下功能:
登录系统:可以注册新用户,将数据存储到数据库中,进行用户登录;
学生成绩管理:可以通过平台录入学生的课程、成绩,支持增删改查。
1.3系统相关技术介绍
1.3.1 Android语言
安卓是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。Android系统平台的手机功能强大,此系统开源、应用程序无界限,随着Android手机的普及,Android 应用的需求势必会越来越大,这是一个潜力巨大的市场,会吸引无数软件开发厂商和开发者投身其中。Android 应用程序一般使用 Android 软件开发工具包,采用 Java 语言来开发。
1.3.2 java语言
Java 语言的语法与 C 语言和 C++ 语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java 丢弃了 C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java 语言不使用指针,而是引用。并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧。
Java 语言提供类、接口和继承等面向对象的特性,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为 implements)。Java 语言全面支持动态绑定,而 C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。
Java 语言支持 Internet 应用的开发,在基本的 Java 应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括 URL、URLConnection、Socket、ServerSocket 等。Java 的 RMI(远程方法激活)机制也是开发分布式应用的重要手段。
1.3.3数据库(SQL)
SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。
第2章 总体设计
可以通过学生管理系统对各个学生的课程、成绩等进行管理。通过信息的规范管理、科学统计和快速的查询,从而减少管理方面的工作量,实现学生成绩管理的自动化。
主要功能包括:添加学生成绩、查改学生成绩。
2.1 教师登录模块
通过新用户注册按钮,输入账号密码,可以进行教师的用户注册,即可登录账号,记录并查看学生的各科成绩。
2.2 教师管理模块
教师通过用户名和密码进行用户登录,可以进入管理平台。
添加学生成绩:可以通过该功能录入学生的学号、姓名、课程、成绩。
查看学生成绩:可以展示所有添加的学生课程及成绩,也可以进行数据修改,根据学号,可以搜索指定学生的成绩。
第3章 数据库设计
3.1 数据库总体ER图
3.2各个实体属性图
表3-1教师表
序号 | 字段 | 说明 | 数据类型 | 允许为空 | 主键 | 备注 |
---|---|---|---|---|---|---|
1 | _id | 教师工号 | int | No | Yes | |
2 | password | 登录密码 | Varchar | No |
表3-2成绩表
序号 | 字段 | 说明 | 数据类型 | 允许为空 | 主键 | 备注 |
---|---|---|---|---|---|---|
1 | _id | 学生学号 | int | No | Yes | |
2 | name | 学生姓名 | Varchar | No | ||
3 | clas | 课程 | Varchar | No | ||
4 | score | 成绩 | Varchar | No |
第4章 系统实现
4.1登录界面:
实现代码:
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
db=helper.getReadableDatabase();
String Id=ETuserid.getText().toString();
String Pass = ETpassword.getText().toString();
Cursor cursor = db.rawQuery("select * from teacher where _id=?", new String[]{Id});
while(cursor.moveToNext()){
String mpass = cursor.getString(cursor.getColumnIndex("password"));
if(Pass.equals(mpass)){
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
Toast.makeText(LoginActivity.this, "您已登录到教师端平台!", Toast.LENGTH_SHORT).show();
}
}
}
});
4.2注册界面:
代码实现:
btnReg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
db = helper.getReadableDatabase();
String Id = ETuserid.getText().toString();
String Pass = ETpassword.getText().toString();
Cursor cursor = db.rawQuery("select * from teacher where _id=?", new String[]{Id});
while(cursor.moveToNext()){
Toast.makeText(RegisterActivity.this, "用户已存在!", Toast.LENGTH_SHORT).show();
return;
}
db.execSQL("Insert into teacher(_id,password) values(?,?)", new String[]{Id, Pass});
Toast.makeText(RegisterActivity.this, "注册成功!", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);
startActivity(intent);
}
});
4.3运行界面:
代码实现:
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent= new Intent(MainActivity.this,AddActivity.class);
startActivity(intent);
}
});
btnShow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent= new Intent(MainActivity.this,CursorActivity.class);
startActivity(intent);
}
});
btnClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent= new Intent(MainActivity.this,LoginActivity.class);
startActivity(intent);
}
});
4.4成绩录入:
代码实现:
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
db=helper.getReadableDatabase();
String Id=etId.getText().toString();
String Name = etName.getText().toString();
String Class=etClass.getText().toString();
String Score = etScore.getText().toString();
db.execSQL("Insert into users(_id,name,clas,score) values(?,?,?,?)",new String[]{Id,Name,Class,Score});
Intent intent = new Intent(AddActivity.this,MainActivity.class);
startActivity(intent);
}
});
4.5查看成绩:
代码实现:
@Override
protected void onResume() {
super.onResume();
list = new ArrayList<Map<String, Object>>();
GetData();
adapter=new SimpleAdapter(this,list,R.layout.curroritem,new String[]{"_id","name","clas","score"},
new int[]{R.id.mid,R.id.mname,R.id.mclass,R.id.mscore});
lvCursor.setAdapter(adapter);
this.registerForContextMenu(lvCursor);
}
public void GetData()
{
db = helper.getReadableDatabase();
list.clear();
Cursor cursor = db.rawQuery("select * from users",null);
Map<String,Object> map =null;
if(cursor!=null&&cursor.getCount()>0)
{
while(cursor.moveToNext())
{
map = new HashMap<String,Object>();
String mid = cursor.getString(cursor.getColumnIndex("_id"));
String mname = cursor.getString(cursor.getColumnIndex("name"));
String mclass = cursor.getString(cursor.getColumnIndex("clas"));
String mscore=cursor.getString(cursor.getColumnIndex("score"));
//将值放到map中
map.put("_id",mid);
map.put("name",mname);
map.put("clas",mclass);
map.put("score",mscore);
list.add(map);
}
}
cursor.close();
db.close();
}
4.6编辑删除操作:
代码实现:
@Override
public boolean onContextItemSelected(MenuItem item){
AdapterView.AdapterContextMenuInfo menuInfo=(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
helper = new MyOpenHelper(this);
db = helper.getReadableDatabase();
int position = menuInfo.position;
Map<String,Object>map = list.get(position);
String id = map.get("_id").toString();
String name = map.get("name").toString();
String clas = map.get("clas").toString();
String score= map.get("score").toString();
switch (item.getItemId())
{
case 1:
Intent intent = new Intent(CursorActivity.this, RcordActivity.class);
intent.putExtra("_id",id);
intent.putExtra("name",name);
intent.putExtra("clas",clas);
intent.putExtra("score",score);
startActivity(intent);
break;
case 2:
list.remove(position);
db= helper.getReadableDatabase();
AlertDialog dialog=new AlertDialog.Builder(this)
.setTitle("删除提示")
.setMessage("确定要删除该学生吗?")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
db.execSQL("delete from users where _id="+id);
onResume();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
.create();
dialog.show();
//db.execSQL("delete from users where _id="+id);
adapter.notifyDataSetChanged();
break;
}
return super.onContextItemSelected(item);
}
@Override
public void onCreateContextMenu(ContextMenu menu , View v, ContextMenu.ContextMenuInfo menuInfo){
super.onCreateContextMenu(menu,v,menuInfo);
menu.add(1,1,1,"编辑");
menu.add(2,2,2,"删除");
}
}
4.7查找学生:
代码实现:
btnSear.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
String ID= etSearId.getText().toString();
onResume();
db = helper.getReadableDatabase();
list.clear();
Cursor cursor = db.rawQuery("select * from users where _id=?",new String[]{ID});
Map<String,Object> map =null;
while(cursor.moveToNext())
{
map = new HashMap<String,Object>();
String mid = cursor.getString(cursor.getColumnIndex("_id"));
String mname = cursor.getString(cursor.getColumnIndex("name"));
String mclass = cursor.getString(cursor.getColumnIndex("clas"));
String mscore=cursor.getString(cursor.getColumnIndex("score"));
map.put("_id",mid);
map.put("name",mname);
map.put("clas",mclass);
map.put("score",mscore);
list.add(map);
}
if(cursor.getCount()==0)
{
Toast.makeText(SearchActivity.this, "未找到该生成绩!", Toast.LENGTH_SHORT).show();
}
}
});