关于日记APP的设计方案毕业设计论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
日记是一种用来记录的载体,作为一种文体,属于记叙文性质的应用文。
日记的内容,来源于我们对生活的观察,因此,可以记事可以写人,可以状物,可以写景,也可以记述活动,凡是自己在一天中做过的,或者看到的听到的,或者想到的都可以是日记的内容。
前两章是对APP设计背景概述和需求分析进行随后从第三章以及第四章详细给出了日记APP的总体设计、详细设计与实现的各个环节。
最后对本APP作了客观的评价,指明了系统的现实意义与优缺点.
关键词:Android,个人记事,日记APP
第一章、设计背景概述 (4)
1、App研究背景 (4)
2、制作这款日记App的意义 (4)
第二章、APP的需求分析 (4)
2.1 APP的可行性分析 (4)
2.1.1APP可行性分析 (5)
2.1.2APP技术性分析 (5)
2.2APP的需求分析 (5)
第三章、App设计的详细内容 (5)
3.1总体设计 (5)
3.2登录注册模块 (6)
3.3数据库的设计 (6)
3.4主页面 (8)
3.5UI设计 (8)
第四章、总结以及展望 (23)
4.1总结 (23)
4.2展望 (25)
第五章、系统测试 (25)
5.1测试作用 (25)
5.2测试目的 (26)
致谢 (26)
参考文献 (27)
第一章、设计背景概述
1、App研究背景
现在已经进入了科技的时代,生活中很多的功能都已经被app所替代了。
现在地球上的树木已经越来越少,环境越来越差,人类生存的环境也越来越糟糕。
所以应当尽量减少树木的砍伐,尽可能的避免使用纸张,所以使用app来实现日记的功能也是大势所趋,而且更加的快捷方便,保密性更好,也不怕弄丢,所以本日记app的前景还是较为可观的。
2、制作这款日记App的意义
方便人们能随时随地的记录自己的心情,遇到的事情,并且能自动生成记录当时的时间。
还可以当做备忘录使用,将自己准备做的事记录下来,不用像日记本一样必须得准备纸张和笔才能记录自己想写的东西,只要有手机,就能完成这些操作,还不怕由于时间的原因,自己所写的日记会损坏掉。
这大大提高了人们的生活效率和生活舒适度。
第二章、APP的需求分析
2.1APP的可行性分析
需求分析在软件开发过程中起到决定性的作用,那是因为需求分析本身的特点就是为软件开发指明方向和策略的,本文是根据市场对APP需求的特点,对被开发的APP的主要功能、性能进行完成的描述和需求分析为后续的软件开发提供了详细的设计和编程基础,同时也
是系统最终测试和验收的标准。
2.1.1APP可行性分析
现在个人智能手机几乎是人手一只,其中,安卓智能手机的价格可以说已经在智能手机中算是最便宜的一种,而性能却是越来越好好,本款APP的开发可以方便在人们在日常生活中记录身边的事物提供了非常便捷的条件,节省手机的存储资源提高个人文件管理的效率。
同时本款APP所消耗的内存资源较少,每个人的安卓智能手机都能满足,所以本款APP在理论上是可行的。
2.1.2APP技术性分析
目前在手机系统方面,Android系统的开发使用的是Java,本款APP依靠当前的技术水平是完全能够实现。
2.2APP的需求分析
作为一款APP最主要的是从用户的需求为依据来进行设计制作的,本款APP与其他同类产品不同的是能够节省用户的时间,快速的进行读写日记,标示出记录日记的时间日期,并很方便的修改日记和删除日记。
第三章、App设计的详细内容
3.1总体设计
软件打开首先进入引导页,然后自动跳转至登陆注册页面。
登陆后进入主页面,主页面就是显示每条日记的标题和日期,并有添加日
记的功能。
主页面里点击每条日记的标题就可进入日记的内容页面,在这里可以具体的填写日记的标题和内容,并能修改日记。
设计分析:登陆和注册主要采用最常见的用户名加密码的方式登陆。
为什么不使用手机验证码的登陆方式,是因为短信验证平台都是外包的,费用高,而且还不是很稳定信号拥挤的时候注册量上来的时候就会出现拥挤。
设计要求:
1.设计界面友好、美观、数据存储安全、可靠。
2.强大的查询功能,保证数据查询的灵活性。
3.对数据库的增删改查灵活多变。
4.对列表显示的优化性能比较好。
3.2登录注册模块
用户先注册,注册填写用户名和密码。
用软件通过http协议将数据写入到服务器的数据库。
如果写入成功则注册成功。
用户登录的时候输入用户名和密码。
通过get或者post请求发送给服务器,服务器会根据相应的字段在数据库进行查找,比对后返回给android客户端,如果数据正常就进入主页。
3.3数据库的设计
做这个设计深刻的体会到,如果想要设计一款APP就先要规划全面不然做到一半发现要修改。
该APP的数据库我将其命名为:MyData.db,public final static String DATABASE_NAME="MyData.db〃;
其中创建了一张表,其中表名叫diary,public final static String TABLE_NAME="diary”,该表里面的字段有日记的id,日期date,星期week,H记的标题title,日记的内容contento
我使用的是sql语句创建的表,如下:
〃创建表
©Override
public void onCreate(SQLiteDatabase db){
String sql="CREATE TABLE IF NOT EXISTS"+TABLE_NAME+
+DIARY ID+"INTEGER primary key autoincrement,”
+DIARY_DATE+〃text,"+DIARY_WEEK+"text,〃+ DIARY_TITLE
+"text,"+DIARY_CONTENT+"text);”;
db.execSQL(sql);
}
且数据库在升级时,要删除数据库中原有的表,并重新创建新表public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
String sql="DROP TABLE IF EXISTS"+TABLE_NAME;
db.execSQL(sql);
onCreate(db);
}
3.4主页面
使用列表显示显示了每条日记的标题和日期,在主页面的下方有一个按钮,是用来添加日记的。
本App我创建了一张表,其中表名叫diary,该表里面的字段有日记的id,日期date,星期week,日记的标题title,日记的内容content□3.5UI设计
整个APP包括引导页GuideActivity,登录页面LoginActivity,注册页面RegisterActivity,日记主页面MainActivity,每个日记的内容页面ContentActivity。
其中注册页面之所以没有用发送短信形式,是因为这需要签约给钱才行,所以省略了发送短信这功能,但是在服务器后台里添加了Phone字段,并且在输入手机号的时候我使用了正则表达式来检验手机号码的正确性。
在吐司的时候我使用了自定义的吐司背景,这样出来的效果图比系统给的吐司好看多了。
/**
*显示自定义背景的吐司通知
*/
public static void showCustomBgToast(String msg){
Layoutlnflater inflater=(Layoutlnflater)
MyApplication.getContextO.getSystemService(YOUT_ INFLATER_SERVICE);
View view=inflater.inflate(yout,toast custom,null);
TextView message=(TextView)
view,f indViewByld(R.id.toast_tv);
message.setText(msg);
if(toast==null){
toast=new Toast(MyApplication.ge-Context。
);
toast.setDuration(Toast.LENGTH SHORT);
toast.setGravity(Gravity.BOTTOM,0,200);
}
toast.setView(view);
toast,show();
}
〃登录失败
ToastUtils.showCustomBgToast^登录失败");
在整个APP中,我通过使用SystemBarTintManager和SystemBarUtils 这两个类我添加了应用的状态栏的颜色渐变,使其上端不再是单调的系统默认黑色了,也增添其美观性,使人看起来更加舒服。
一、日记的功能实现
在主页面中,首先在上面我运用RelativeLayout布局添加了主页面的标题“我的日记”,在下面我使用了listview,listview的每个item都是一个日记,item的布局如下:
<ImageView
android:id="@+id/img_item_icon"
android:layout_width="wrap_content”
android:1ayoutheigh t="wrap_con t en t”
android:layout_centerVertical="true”
android:layout_alignParentLeft=z,true z,
android:background=/z@drawable/list_item_icon z,/>
<TextView
android:id="@+id/list_diary_title”
cmdroid:layout width=,v wrap content*
android:layout_height="wrap_content"
cmdroid:layout_marginTop="5dp”
android:lay out_marginLeft="10dp"
android:layout_marginStart="5dp”
android:layout_toRightOf=z,@id/img item icon”
android:text=""
android:texts ize="22sp”/>
<TextView
android:id="@+id/list_diary_date”
android:layout_width=z,wrap_content z,
android:layout_height="wrap_content"
android:layout_below="@id/list_diary_title"
android:layout_marginLeft="50dp”
android:text=""
android:textSize="18sp"/>
</RelativeLayout>
由于考虑屏幕的适配性,我使用的单位是dp。
在主页面的下方,有一个按钮,我用了一张图片设置成该按钮的背景,使其更加好看清新。
其中我为了不使主页面的代码过多,看起来太繁杂,我将适配器MyAdapter单独放在一个package里面了。
在点击每个item的时候可以直接跳至日记的内容页面,进行日记的修改和保存。
点击item的方法是:
〃点击查看详细内容
mListView.setOnltemClickListener(new
AdapterView.OnltemClickListener(){
©Override
public void onltemClick(AdapterView<?>parent,View view,
int position,long line){
String id=items,get(position).getldQ:
String date=items,get(position).getDate();
String week=items,get(position).getWeekO:
String title=items,get(position).getTitleO: String content=items,get(position).getContent(); //Log.i("my。
id+":"+ti tle+":"+con ten t);
flag=T;
Diaryitem mDiary=new Diaryitem();
mDiary.setld(id);
mDiary.setDate(date);
mDiary.setWeek(week);
mDiary.setTitle(title);
mDiary.setContent(content);
Intent intent=new Intent(MainActivity.this,
ContentActivity.class);
Bundle mBundle=new Bundle();
mBundle.putSerializable{SER KEY,mDiary);
intent.putExtras(mBundle);
intent.putExtra("flag”,flag);
startActivity(intent);
});
当想要删除一条日记的时候,只要长按该日记的item时候,就会弹出一个菜单栏,里面有是否删除的提示来确认是否删除。
进行删除操作时,是根据每条日记的id,通过id在数据库里删除该条日记的信息,并且同时要刷新listview,避免日记删除后其信息还停留在主页面上。
//长按弹出删除提示
mListView.setOnCreateContextMenuListener(new
View.OnCreateContextMenuListener(){
©Override
public void onCreateContextMenu(ContextMenu argO,
View argl, ContextMenu.ContextMenuInfo arg2){
argO.setHeaderTitle("是否删除");
argO.add(0,0,0,”删除”);
argO.add(0,1,0,”取消”);
}
});
//提示菜单响应函数
©Override
public boolean onContextltemSelected(Menultem item){ //i tern,ge tltemld():点击了菜单栏里面的第几个项目”);
if(item.getltemldO==0){
int selectedPosition=
((AdapterView.AdapterContextMenuInfo)
item.getMenuInfo()).position;〃获取点击了第几行
String id=items,get(selectedPosition).getld():
〃删除日记
util,delete(id);
items,remove(items,get(selectedPosition));
myAdapter.not i fyDataSe tChanged();
}
return super.onContextltemSelected(item);
}
在想要添加一条日记的时候,通过点击下方的按钮,运用
〃跳转至添加新日记
private void addBtnOnClick(){
mBtnAdd.setOnClickListener(new View.OnClickListener(){
©Override
public void onClick(View v){
flag=
Intent intent=new Intent();
intent.setClass(MainActivity.this, ContentActivity.class);
intent.putExtra("flag”,flag);
startActivity(intent);
finish();
}
});
}
方法可以跳转至日记的内容页面进行添加日记的标题和内容,然后通过点击保存按钮,就会将该条日记的信息保存至数据库,并且在listview显示出来(注:通过对TextView内容的获取进行了非空判断,如果未填写标题或者内容时会进行提示,并且无法保存日记信息)
〃保存日记
private void saveOnClick(){
mSaveBtn.setOnClickListener(new
View.OnClickListener(){
©Override
public void onClick(View v){
DbUtil db=new DbUtil(ContentActivity.this);
String title=
mTextTitle.getText().toString();
String content=
mTextContent.getText().toString();
if(title,equals("")||content,equals("")){
ToastUtils.showCustomBgToastC标题和内容都不能为空");
}else{
if(flag,equals("0”)){
db.insert(title,content);
ToastUtils.showCustomBgToastt'保存成功〃);
}else{
db.update(mid,title,content);
ToastUtils.showCustomBgToast^更新成功!”);
});
并且通过flag值来表明进入日记内容页面时,是来修改日记还是添加日记的。
在页面上方也清晰显示了进入该页面时的功能作用(修改日记或者写日记)。
在想要退出该日记的时候,我重写了返回键的方法,提示使用者在按返回键的时候确定是否是要退出该日记,并且弹出了一个对话框。
//复写返回键功能
©Override
public boolean onKeyDown(int keyCode,KeyEvent event){
if(keyCode==KeyEvent.KEYCODE_BACK&&
event.getRepeatCount()==0){
showCon f i rmD i al og();
return true;
}
return false:
/**
*显示自定义对话框
*
*@param context
*©param message
*显示的消息
*©param listener
*按钮的点击事件
*/
©SuppressLint("NewApi")
public static void showDialog(final Context context,String message,
final lAlertDialogButtonListener listener){ View dialogView=null;
AlertDialog.Builder builder=new
AlertDialog.Builder(context,
R.style.Theme_Transparen f);
dialogView=getView(context,yout,dialog view):
Button btnOkView=(Button)
dialogView.f indViewByld(R.id.btn dialog oli);
Button btnCancelView=(Button)dialogView
.findViewById(R.id.btn_dialog cancel);
TextView txtMessageView=(TextView)dialogView
.findViewById(R.id.text_dialog message);
txtMessageView.setText(message);
〃是
btnOkView.setOnClickListener(new View.OnClickListener(){
©Override
public void onClick(View v){
〃关闭对话框
if{mAlertDialog!=null){
mAler tDi a l og.cancel();
}
〃事件回调
if(listener!-null){
listener.onClickO;
});
〃否
btnCancelView.setOnClickListener(new View.OnClickListener(){
㈣Override
public void onClick(View v){
〃关闭对话框
if(mAlertDialog!=null){
mAlertDialog.cancel();
});
〃为dialog设置view
builder.setView(dialogView);
mAlertDialog-builder,create();
〃显示对话框
mAlertDialog.show();
在对话框按钮进行点击时,我调用了自定义的接口来进行点击事件。
〃弹出提示
private void showConfirmDialogO{
Util.showDialoge^is,"是否退出?”,mBtnOkQuitClickListener);
}
//结束进程时调用该接口
private lAlertDialogButtonListener mBtnOkQuitClickListener= new lAlertDialogButtonListener(){
©Override
public void onClick(){
〃关闭所有ac tivi ty
MyApplication.getlnstance().exit();
int id=android,os.Process.myPidO;
if(id!=0){
android,os.Process.killProcess^i^);
};
〃自定义接口
public interface lAlertDialogButtonListener{ public void onClick();
截图如下:
3-1
登陆界面
3-2
注册界面
3-3主界面
3-4
编辑界面
扫描下面二维码,可以下载本app
第四章、总结以及展望
4.1总结
经过这次毕业设计,让我不仅把之前所学习到的知识温习并加以使用,在搜集资料的同时也学习到了许多新的知识,开阔了自己对的眼界,并对将来自己毕业后的发展方向有了一定的规划,使自己对所学的专业知识运用方面有了很大的变化。
这次的毕业设计是我作为一名学生即将踏入社会前的最后一次
作业,本次的作业既是对我在校期间所学到知识的全方面回顾和综合运用,又为我今后迈入社会工作学习打下了一个良好开端,毕业设计是我对所接触到的知识理论的检验与总结,能够培养我在今后工作中拥有独立分析和解决问题的能力;在校生活的时间一天一天的逝去,毕业设计也开始接近了尾声。
在不断的努力下和老师同学的帮助下我的毕业设计终于顺利完成了o在刚刚进入大学时听学长学姐们说起毕业设计时觉得毕业设计只是对在校期间所学到知识的大概总结,但当我真正面临毕业时才发现自己的想法和现实的偏差。
毕业设计不仅是对我这三年来所学知识的一种考验,也是对个人能力的一种体现。
完成这次的设计后让我明白了自己对原来所学的知识犹如纸上谈兵,真正当自己一个人去面对选择的课题时所感受到的那种迷茫感。
让我觉得自己应该要去学习的东西还有很多很多,以前老是觉得学习是一件简单的事情,觉得自己什么知识都懂,什么知识都会,有点不自量力感觉。
这次毕业设计完成之后,让我明白学习跟酿酒是一样的年份越久酒味越香,希望自己在将来的工作生活中都能随时随地的汲取新的知识,努力提升自己见识和视野。
总之,不管是学的会的还是学不会都确实是觉得困惑比较多,真的是饮水方知开源不易,不知道该怎么样入手。
最后在完成此次作业后有种如释重负的感觉。
此外,还得出一个结论:知识不是死板的要看你怎样去通过应用实现它的价值!书到用时才发现是两回事,所以我认为知识只有到体现出他的价值的时候才是真正的学会了。
4.2展望
安卓系统发布到至今来说安卓的市场的发展前景还是不错,移动互联时代带动很多的行业手机行业就是其中之一,安卓系统的手机在同类型几款系统手机中所占的市场份额接近一半。
未来发展趋势也有很好的兆头。
在安卓系统正式发布一年后,HTC CEO周永明(Peter Chou)在接受媒体采访时就称,"本公司基于Google Android平台的T-MobileGl手机有望在08年底达到100万部的出货量,而此前预计的数量只有60万部”。
与此同时,他还预计到今年底Touch Diamond的出货量会突破300万部,比此前预计的多出50%。
Android手机尽管没有做过过多的宣传,但实际卖得还不错,前景也被人看好。
其原因有:
1.开放性。
Android平台首先就是其源代码是面向所有用户和开发者开放让其免费试用。
2.方便开发,Android系统是通过Java来实现的,就Java和C语言来说Java还是比较简便的。
3.对网络友好,有着丰富的功能选择。
第五章、系统测试
5.1测试作用
对手机软件的测试就是为了在开发阶段及时发现错误并加以改正错误的过程。
是为了能够让软件在真正投入市场时以前,尽力可能较多的排除和解决掉,在投放到市场后让有用户更好的体验。
5.2测试目的
测试的目的第一是确保软件的质量,第二通过测试来给开发人员提供反馈的消息让其在后续的修改能够更好地对软件加以完善,第三就是保证软件的开发过程是高质量的。
致谢
在此要感谢我的指导老师杨莉老师对我悉心的指导,不管是选题、框架的设计,还是修改定稿都给予了我很多帮助和建议。
在完成毕业设计的过程中,我通过查找阅读大量相关资料,以及跟同学相互之间交流经验,并向老师请教一些相关的专业知识等方式,使自己从中学到了不少自己之前从未涉及到的知识,风雨过后总能见到不一样的自己,经历了艰难险阻,之后的收获也是意想不到的。
在整个的毕业设计完成后我懂得了许多东西,培养了我对新鲜事物的自主学习能力,强化了自己的动手能力,相信我会在将来的工作生活中更加努力。
完成此次的毕业设计让我的动手能力有一定的提升,而且使我知道了自己的不足之处。
虽然这次的毕业设计完成的不是很好,但是依旧让我收获良多。
最后,感谢在完成此次毕业设计过程中对我默默支持与帮助的老师和同学们,正是有你们的帮助我才能各种困难和疑惑,在此我也衷
心的的向那些关心我帮助我的人表示感谢!
参考文献
[1].左菲.爱旅游APP策划方案[J].百度文库,20“年6月.
[2].《Android4.X从入门到精通》,李波,清华大学出版社,2012
[3].任海鹏.高校移动校园APP的设计与分析[J].中国知网,2015年12月
[4].《Android内核剖析》,柯元旦,电子工业出版社,2011
[5].《Android应用开发实战》,李宁,机械工业出版社,2012
[6],“高谷兰,爱社团”手机APP交互设计叮中国知网,2014年10月
[7]《android开发入门指南》(第2版)索盖林著
[S]《Beginning Android》MarkL.Murphy著。