1、课程设计实验报告南 京 晓 庄 学 院【移动开发应用框架】课程设计报告课程表的设计与实现所在院(系):信息工程学院学 号 :13139173学生姓名 :陈倡年级专业 :软件工程指导教师 : 李青 提交日期 : 2015 年 12 月课程设计实验报告班级 13软工4姓名 陈倡学号 13139173任课教师李青实验日期 2015。12成绩一、 目的(本次课程设计的概要以及所涉及的知识点。)1。课程表课程的添加与实现2. 记录笔记并可以查看设计知识点:数据库的数据的新增,查询,删除等,辅助类,上下文菜单的使用;二、使用环境 (本次实践所使用的平台和相关软件. )SDK:(software devel
2、opment kit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。因此,Android SDK 指的是Android专属的软件开发工具包.使用Eclipse进行android应用开发需要给Eclipse装ADT插件,这样Eclipse就可以和android ADT建立连接,可以在Eclipse中启动android模拟器进行程序调试等.三、内容与设计思想 (1 设计思路 2 主要功能说明 3 主要的模块结构 4 主要代码分析 . )1。课程与笔记是私有的,所以设置用户名与密码登陆,在课程表中应有一个显示界面,用于显示已添加的课程
3、,点击新增按钮进入新增界面,用于增加新的课程,需添加上课的星期和课的节次,并检查当前是否有课,并提示。保存后进入课表显示界面,查看课表.笔记中有一笔记列表,显示创建笔记的时间和标题.点开笔记可以查看详细内容。也可以进行笔记的新增。若长按笔记。则可以进行删除操作。2。登录进入菜单,若无用户,可以注册.课程表,查看已经有课程,新增课程并保存。笔记,查看已有笔记,查看详细笔记,新增笔记,删除笔记。3。整个程序包含两个大的模块:课程表模块和笔记模块;课程表中包含显示和新增两个模块;笔记中有显示列表模块,新增模块,和查看模块4。(1)用户登录时,根据用户名与密码进入数据库中查询,若有返回值为1,表示有该
4、用户,进行界面的跳转,进去菜单界面。若返回值为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。getCoun
5、t();if(m=0)String tips = ”你输入的用户名或密码有误;Toast toast = Toast。makeText(getApplicationContext(), tips,20000);toast。show();elseIntent intent = new Intent(MainActivity.this,MenuActivity。class);intent。putExtra(”name, putname);MainActivity.this.startActivity(intent););(2)新增课程时,查询这一天的所有课程,若已有的课程和添加的课程节次相同则冲突
6、,则提示这节已经有课,若无可进行添加,并跳转会课程表界面查看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(getApplicatio
7、nContext(), 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响应菜单
8、,并获得所选择的菜单.通过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
9、 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);/通知更新显示ListVcs = db。query(”notes”,
10、 new String”_id,”writetime”,”notesname”, null, null, null, null, null, null);adapter = newSimpleCursorAdapter(this, R.layout。notes_layout, cs,new Stringwritetime”,”notesname,newintR。id。tv_showwritetime,R.id.tv_shownotesname);lv_notes。setAdapter(adapter);/adapter。notifyDataSetChanged();returnfalse;(4
11、) 新建了一个DBHelper辅助类继承SQLiteOpenHelper,新建数据库,新建表格,并对数据进行增删改查。onCreate()方法是建立表格,只进行一次.还可以根据版本号进行数据库的更新,在其他类中调用查询方法,并返回所查询的值。publicclass DBHelper extends SQLiteOpenHelperprivatestaticfinalintVersion = 1 ;privatestaticfinal String DBNAME = cc;privatestaticfinal String sql_createschedule = ”create table s
12、chedule(_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
13、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
14、);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 p
15、assword =”+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。ex
16、ecSQL(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。getReadableData
17、base();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(couese
18、name,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,
19、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. 若无用户点击注册,进行注册,注册界面需要输入两次密码,进行
20、密码确认。2。注册后进入登录界面,经过用户名和密码验证过后进行登录进去菜单界面3。进入菜单界面,选择相应的功能4。选择课表后,进去课表界面,可以查看已有的课程,课程表可以滑动,点击新增,进入新增界面进行增加5. 进入新增后输入课程名教室等,若无冲突,点击勾就保存进入课表界面,查看课表6。进入笔记列表界面,若点击笔记,则可以查看该篇详细笔记,若长按,通过上下文菜单的方法进行删除,点击笔记按钮,则可进入写笔记界面7。进入新增笔记界面,获取当前的时间,并记录,方便查询。8.点击笔记查看详细的笔记.五、总结 1 设计中遇到的问题及解决过程 遇到了一些方法使用错误,通过网上的查找和询问高手解决的.2 设计中产生的错误及原因分析 界面跳转是出现问题,经过排查后发现传递的参数有错。3 设计体会和收获。深深的感觉自己的知识经验匮乏。虽然经常会报错,但是要慢慢的细心的排查,而且每天都要坚持写下去。要不断的学习,遇到难题,不会的,要咬着牙把它啃下了。六、附录 1、原代码节略 2、参考文献第 页 共 页