资源描述
课程设计实验报告
南 京 晓 庄 学 院
【移动开发应用框架】
课程设计报告
《课程表的设计与实现》
所在院(系):信息工程学院
学 号 :13139173
学生姓名 :陈倡
年级专业 :软件工程
指导教师 : 李青
提交日期 : 2015 年 12 月
课程设计实验报告
班级
13软工4
姓名
陈倡
学号
13139173
任课教师
李青
实验日期
2015。12
成绩
一、 目的(本次课程设计的概要以及所涉及的知识点。)
1。课程表课程的添加与实现
2. 记录笔记并可以查看
设计知识点:数据库的数据的新增,查询,删除等,辅助类,上下文菜单的使用;
二、使用环境 (本次实践所使用的平台和相关软件. )
SDK:(software development kit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。因此,Android SDK 指的是Android专属的软件开发工具包.
使用Eclipse进行android应用开发需要给Eclipse装ADT插件,这样Eclipse就可以和android ADT建立连接,可以在Eclipse中启动android模拟器进行程序调试等.
三、内容与设计思想
(1 .设计思路 2 .主要功能说明 3 .主要的模块结构 4 .主要代码分析 . )
1。课程与笔记是私有的,所以设置用户名与密码登陆,在课程表中应有一个显示界面,用于显示已添加的课程,点击新增按钮进入新增界面,用于增加新的课程,需添加上课的星期和课的节次,并检查当前是否有课,并提示。保存后进入课表显示界面,查看课表.笔记中有一笔记列表,显示创建笔记的时间和标题.点开笔记可以查看详细内容。也可以进行笔记的新增。若长按笔记。则可以进行删除操作。
2。登录进入菜单,若无用户,可以注册.
课程表,查看已经有课程,新增课程并保存。
笔记,查看已有笔记,查看详细笔记,新增笔记,删除笔记。
3。整个程序包含两个大的模块:课程表模块和笔记模块;课程表中包含显示和新增两个模块;笔记中有显示列表模块,新增模块,和查看模块
4。(1)用户登录时,根据用户名与密码进入数据库中查询,若有返回值为1,表示有该用户,进行界面的跳转,进去菜单界面。若返回值为0 ,则表示用户名或密码错误,并提示.
but_login.setOnClickListener(new OnClickListener() {
publicvoid onClick(View arg0) {
String putname = edit_putname.getText().toString();
String putpassword = edit_putpassword.getText()。toString();
Cursor cs = dbhelper。login(putname, putpassword);
int m = cs。getCount();
if(m==0){
String tips = ”你输入的用户名或密码有误";
Toast toast = Toast。makeText(getApplicationContext(), tips,20000);
toast。show();
}else{
Intent intent = new Intent(MainActivity.this,MenuActivity。class);
intent。putExtra(”name", putname);
MainActivity.this.startActivity(intent);
}
}
});
(2)新增课程时,查询这一天的所有课程,若已有的课程和添加的课程节次相同则冲突,则提示这节已经有课,若无可进行添加,并跳转会课程表界面查看
Cursor cs = db.query("schedule”, new String[]{”time"}, ”day=’"+day+”’", null, null, null, null);
cs。moveToFirst();
while(!cs.isAfterLast()){
String check = cs。getString(cs。getColumnIndex("time"));
if(check。equals(timeclass)){
String tips = ”这节已经有课”;
Toast toast = Toast。makeText(getApplicationContext(), tips, 20000);
toast.show();
return;
}
cs。moveToNext();
}
cs。close();
String sql = ”insert into schedule(’couesename’,’room’,’week’,’day’,'time',’teachername’)" +
" values(’"+couesename+”’,'”+room+"’,'"+week+"',’"+day+"’,’”+timeclass+”’,'”+teachername+”')";
db.execSQL(sql);
(3)通过上下文菜单的方法,长按笔记列表,会出现设置好删除菜单,通过onContextItemSelected响应菜单,并获得所选择的菜单.通过info。targetView
查找到长按的视图,并获得TextView里的时间字符串,根据字符串进入数据库进行查找并删除,再跟新listView;
this。registerForContextMenu(lv_notes);
publicvoid onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu。add(0, 1,0, "删除”);
}
publicboolean onContextItemSelected(MenuItem item){
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item。getMenuInfo();
if(item。getItemId()==1){
//获取当前的视图
TextView tv = (TextView)info。targetView.findViewById(R.id.tv_showwritetime);
String str = tv.getText()。toString();
String sql = ”delete from notes where writetime=’"+str+"’”;
db.execSQL(sql);
//通知更新显示ListV
cs = db。query(”notes”, new String[]{”_id",”writetime”,”notesname”}, null, null, null, null, null, null);
adapter = newSimpleCursorAdapter(this, R.layout。notes_layout, cs,
new String[]{"writetime”,”notesname"},
newint[]{R。id。tv_showwritetime,R.id.tv_shownotesname});
lv_notes。setAdapter(adapter);
//adapter。notifyDataSetChanged();
}
returnfalse;
}
(4) 新建了一个DBHelper辅助类继承SQLiteOpenHelper,新建数据库,新建表格,并对数据进行增删改查。onCreate()方法是建立表格,只进行一次.
还可以根据版本号进行数据库的更新,在其他类中调用查询方法,并返回所查询的值。
publicclass DBHelper extends SQLiteOpenHelper{
privatestaticfinalintVersion = 1 ;
privatestaticfinal String DBNAME = "cc";
privatestaticfinal String sql_createschedule = ”create table schedule(_id integer primary key autoincrement,”+” couesename text,”+” room text,”+”week text," +
”day text,"+”time text,"+”teachername text)”;
privatestaticfinal String sql_createuserinformation = ”create table userinformation(_id integer primary key autoincrement,”+” name text,"+" password text,"+”imageid integer)”;
privatestaticfinal String sql_createnotes = ”create table notes(_id integer primary key autoincrement,"+"writetime text,”+”notesname text,"+”notes text)”;
public DBHelper(Context context) {
super(context, DBNAME, null, Version);
}
publicvoid onCreate(SQLiteDatabase db) {
db。execSQL(sql_createschedule);
db.execSQL(sql_createuserinformation);
db。execSQL(sql_createnotes);
}
publicvoid onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
}
public Cursor login(String putname,String putpassword){
SQLiteDatabase db = this。getReadableDatabase();
Cursor cslogin = db.query(”userinformation",null,”name='"+putname+"' and password ='”+putpassword+"’”,null,null,null,null,null);
return cslogin;
}
publicvoid aegister(String newname,String newpassword,int imageid){
SQLiteDatabase db = this。getReadableDatabase();
String sql = ”insert into userinformation(’name’,'password’,’imageid')” +
” values(’”+newname+"’,’”+newpassword+"','”+imageid+”’)”;
db。execSQL(sql);
}
public Cursor checkname(String newname){
SQLiteDatabase db = this。getReadableDatabase();
Cursor cscheckname = db.query(”userinformation”, new String[]{”name"}, "name = '"+newname+”'”, null, null, null, null, null);
return cscheckname;
}
public Cursor queryschedule(){
SQLiteDatabase db = this。getReadableDatabase();
Cursor csschedule = db。query(”schedule”, null, null, null, null, null, null);
return csschedule;
}
publicvoid addcosuses(String couesename,String room,String week,String day,String timeclass,String teachername){
SQLiteDatabase db = this.getReadableDatabase();
String sql = "insert into schedule(’couesename’,'room’,’week’,’day','time',’teachername')” +” values(’”+couesename+”’,’"+room+”’,'”+week+”’,’”+day+”','"+timeclass+"','"+teachername+”')";
db。execSQL(sql);
}
publicvoid writenotes(String writetime,String notesname,String notes){
SQLiteDatabase db = this.getReadableDatabase();
String sql = ”insert into notes(writetime,notesname,notes) values(’"+writetime+"',’"+notesname+"',’”+notes+"')";
db。execSQL(sql);
}
public Cursor querynotes(){
SQLiteDatabase db = this.getReadableDatabase();
Cursor cs = db。query(”notes", new String[]{”_id",”writetime”,"notesname”}, null, null, null, null, null, null);
return cs;
}
}
四、 调试过程 (测试结果分析 )
1. 若无用户点击注册,进行注册,注册界面需要输入两次密码,进行密码确认。
2。注册后进入登录界面,经过用户名和密码验证过后进行登录进去菜单界面
3。进入菜单界面,选择相应的功能
4。选择课表后,进去课表界面,可以查看已有的课程,课程表可以滑动,点击新增,进入新增界面进行增加
5. 进入新增后输入课程名教室等,若无冲突,点击勾就保存进入课表界面,查看课表
6。进入笔记列表界面,若点击笔记,则可以查看该篇详细笔记,若长按,通过上下文菜单的方法进行删除,点击笔记按钮,则可进入写笔记界面
7。进入新增笔记界面,获取当前的时间,并记录,方便查询。
8.点击笔记查看详细的笔记.
五、总结
1 .设计中遇到的问题及解决过程
遇到了一些方法使用错误,通过网上的查找和询问高手解决的.
2 .设计中产生的错误及原因分析
界面跳转是出现问题,经过排查后发现传递的参数有错。
3 .设计体会和收获。
深深的感觉自己的知识经验匮乏。虽然经常会报错,但是要慢慢的细心的排查,而且每天都要坚持写下去。要不断的学习,遇到难题,不会的,要咬着牙把它啃下了。
六、附录
1、原代码节略
2、参考文献
第 页 共 页
展开阅读全文