写日记软件
发布时间:2017-01-18 来源: 日记大全 点击:
写日记软件篇一:基于android的日记本开发
西南科技大学 课程设计报告
课程名称: 软件设计基础设计名称: 基于android的日记本开发姓 名:学 号: 班 级: 通信1003班 指导教师:起止日期: 11.28——12.12
西南科技大学信息工程学院制
方 向 设 计 任 务 书
学生班级: 通信1003班 学生姓名:学号:
设计名称:基于android的日记本开发 起止日期: 11.28——12.12指导教师:
方 向 设 计 学 生 日 志
2
基于android的日记本开发
一、 摘要(150-250字)
伴随着无线移动设备的迅速发展,手机的日益普及成为主流,在这一关键时期,Android系统的推出使手机发展进入了一个新的领域。世界上一些知名移动设备生产厂商对于Android智能机的开发热情日益提高,Android系统的使用人群正在急速提升,Android应用程序的多样化使人们从手机中获得更多乐趣,方便着人们的生活,使Android得到了社会越来越多的认同。本次设计主要描述了基于android开发一个简易日记本的技术方法。
关键字:Android; DbAdapter;Activity;diary 二、 设计目的和意义
在中国,手机已经成为人们日常生活必不可少的一部分,智能手机在高校人群中逐渐得到了普及,Android手机凭借其优秀的系统性能以及良好的用户体验迅速得到了高校师生的青睐。在高校中,上课并不像高中时期有固定的教室和固定的时间,高校课程种类繁多,并且上课地点和时间不固定,一周内极少会出现重复课程,所以要将课程表完整的记忆下来是一项很艰难的事情,很多同学不得不随身携带一张课表来防止遗忘上课,但是还是不能完全避免该问题的发生,同时,作为一个当今高速发展的时代的成员,适应这个社会是必不能少的,在各种社交场合中,记住一些必须的信息很重要,而它们往往又繁琐又多,不易人为记住。基于这些问题,有必要设计一款方便小巧的简易日记本程序,可以让用户自定义文件,记住上课时间和地点,从而避免遗忘上课的事情出现,同时记住那些琐碎却有意义的小信息。而且,由于android系统市场的开放性和服务免费,它的应用程序方面就成了一块非常大的市场,。 三、 设计原理
用户在第一次进入程序时会看到到一个日记本的主界面,可进行日记文件的新建和删除操作,按menu键可以选择“帮助”和“退出”,程序主界面使用course_activity.java展示记录,从Diary_activity, DiaryEditActivity类中可以新建和删除日记信息,并在主界面中显示。程序的配置信息主要存在DbAdapter中,该信息在数据显示时读取必要的配置信息,在按钮监听函数中监听系统时间变化用来实现日记的创建功能。BaseColumns 是一个接口,里边有两个变量,一个是_ID="_id",一个是_COUNT="_ count" 。在Android当中,每一个数据库表至少有一个字段,而且这个字段是_id。所以当我们构造列名的辅助类时,直接实现BaseColumns ,这样我们便默认地拥有了_id字段。在我们的日记本的数据表里,一共有4个字段,分别是:"id"、"title"、"body"、"created"。在Android中鼓励使用内部类,这样不但使用方便,而且执行效率也高是请求数据的类型,例如,在例子当中定义的类型是diary。当然这一部分可以是0个片段或者多个片段构成,如果Content Provider只是暴露出了一种类型的数据,那么这部分可以为空,但是如果暴露出了多种,尤其是包含子类的时候,就不能为空,"1"这部分是允许为空的,如果为空,表示请求全部数据;如果不为空,表示请求特定ID的数据。DatabaseHelper是操作数据库的辅助类,通过这个类我们可以生成数据库,并且维护这个数据库。 在DiaryContentProvider中,我们定义了一些变量和常量,其中这些常量主要是描述数据库的信息。在删除方法中,rowId = uri.getPathSegments().get(1)负责得到rowId的值。 getPathSegments()方法得到一个string的list, db.delete(DIARY_TABLE_NAME, DiaryColumns._ID + "=" + rowId, null)是标准的SQLite删除操作。update()是更新一条数据的方法, 使用ContentProvider时首先得到SQLiteDatabase,然后得到rowId,最后再调用db.update(DIARY_ TABLE_NAME, values, DiaryColumns._ID + "="+ rowId, null)语句执行更新工作。
3
其主要流程图如下:
功能模块:
四、 详细设计步骤
简易日记本应该具有日记本的基本功能,比如新建,编辑,删除,保存等,从这几方面初步想到应该有一个主类负责调用其他负责实现功能的类,这样整个程序会比较清晰,通过流程分析和可行性分析之后我开始查阅资料编写程序,本程序主要由六个类组成,它们分别为Dbadapter,help-activity,lookDiary,MainActivity,diary-activity和DiaryEditActivity ,
1.其中MainActivity类为整个应用的主Activity,其主要方法如下:
? onCreate:Activity主要重写方法之一,实现程序初始化和界面展示; ? find_and_modify_button:寻找并点击按钮; ? onClick(View v):点击当前所选按钮;
? onCreateOptionMenu:实现Option菜单的创建;
? onOptionsItemSelected:实现菜单项的点击事件响应;
界面设计方面通过RelativeLayout实现布局,使用了TextView,ImageButton文件列表通
4
过ListView实现界面展示。该类通过继承ListActivity类,用来显示ListView中的数据并实现对ListView上ImageView控件点击的统一响应。 其主要代码:public class MainActivity extends Activity
{//菜单选项
public static final int HELP = Menu.FIRST; public static final int EXIT = Menu.FIRST + 1; /** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);setTitle("小小日记本");find_and_modify_button();
Toast.makeText(MainActivity.this,
"欢迎使用简易日记本", Toast.LENGTH_SHORT).show(); } private void find_and_modify_button() {// TODO Auto-generated method stubButton btn_diary = (Button) findViewById(R.id.btn_diary);btn_diary.setOnClickListener(diary_listener); } private Button.OnClickListener diary_listener = new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(); intent.setClass(MainActivity.this, diary_activity.class); startActivity(intent);} } /** menu.findItem(EXIT_ID);找到特定的MenuItem* MenuItem.setIcon.可以设置menu按钮的背景*/ public boolean onCreateOptionsMenu(Menu menu) {super.onCreateOptionsMenu(menu);menu.add(0, HELP, 0, "帮助").setIcon(R.drawable.helps);menu.add(0, EXIT, 0, "退出").setIcon(R.drawable.exit);return true; } public boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case HELP:Intent help_intent = new Intent(); help_intent.setClass(MainActivity.this, help_activity.class); sta(转 载于:wWw.zhAoQT.neT 蒲公 英文摘:写日记软件)rtActivity(help_intent);break;case EXIT:
5
写日记软件篇二:软件实习日记_原创手打
软件工程专业
实习笔记
班级: 软件08-3班
姓名: 谭仁龙
辽宁工程技术大学软件学院软件工程系
Day01
毕业分散实习开始,由于某些原因我选择校内实习,这样在没有接触实际实习场所的情况下我对所要研究项目的了解只能通过网络和电话进行了解。毕业设计任务繁重,所以越早开始越好。首先我进行了毕业设计题目的筛选,由于上学习的课程设计我选择了安卓手机平台下的软件编程方向,对其中很多问题有了初步的了解,并经过几周的学习对安卓系统渐渐产生了些兴趣,所以觉得如果继续进行下去是一个不错的选择,所以在那时候我从网上订阅了一本安卓游戏编程方面的指导书籍。书目前还没到,这几天我都在等,手上有些别的安卓编程的资料先看着。因为是想编写游戏软件,所以想了解些游戏制作方面的知识,这几天寝室呆着比较乱,决定去上自习,顺便去图书馆借阅几本关于游戏编程的和制作方面的书籍
Day02
今儿去图书馆借了本书,关于游戏发展、制作流程以及作者在游戏开发方面经验的书,这里边刚开始讲的是游戏发展简史,这书上说第一个视频类游戏是1958年物理学家Willy Higinbothan 发明的,他为了提高人们参观纽约那个国家实验室游客的兴趣,在一台示波器上展示了一款双人网球互式游戏。这个就被
称作是世界上第一款视频游戏。从这件事儿来看,首先人家willy是一个物理学家,好几十岁,在纽约一家国家实验室工作,这说明人家非常的有才识。然后他的目的是为了提高实验室的参观兴趣,在示波器上展示了一款被称作世界上第一款视频游戏的作品,这说明人家成功地运用了所学的知识,解决了生活中的问题,并在游戏发展的历史上走出了里程碑式的一步。这告诉我,首先我要获取知识,丰富的知识, 这样才能在遇到问题的时候有办法去解决,才能推动事物的发展。
Day03
今天继续看昨天的借的那本书,关于游戏发展方面的书,这书从世界上第一款游戏开始一直讲到目前正在制作还未发布的游戏为止。从实验室中同事们消遣的小游戏到风靡一时的街机游戏,再到目前更加流行的PC、手机游戏,简略的介绍了其中的发展过程。这个过程再一次印证了科技在推动社会前进中的重大作用。早起的游戏都是低劣的且昂贵的,随着计算机技术的不断发展,到现在在游戏这方面已经产生了翻天覆地的变革。简直就是科学创造的奇迹。书中还介绍了一些游戏公司的发展概况,还有相关的一些硬件设备升级,面的知识,说了一大串营销类的专业词
汇,很多都看不懂。还介绍了些一个游戏公司如何面对客户群的办法。总体来看这本书介绍的都是关于大型游戏公司方面的,也就是说对于目前我面对的问题并非是关键知识。为了让时间有效的得到利用我对其进行了选择性的阅读。
Day04
订的这本安卓游戏编程书籍终于到了,白天时候去把那本介绍游戏制作的书还了,那天借那本c语言的科学与艺术没还,这几天看着呢。总结下目前有几项任务要完成,第一快速阅读安卓这本书,看看其内容有没有适合做毕业设计的。第二就是研读c语言科学与艺术这本,我发现机械工程出版社出版的外国著作都挺不错的,前两天同学给推荐本深入了解计算机系统那本书也挺不错, 那个书上是根据c语言基础,从更深的角度认识计算机,这本书我也想看看,目前时间还算排的开抓紧看,以后时间紧张了就看不到了。对这本书图书馆还没有也或许是被别人借走了,我在网上下的pdf。
Day05
昨天书下午到的,今儿一天都在自习看那两本书,安卓这书第一章介绍了安卓平台的发展趋势,和应用开发环境的搭建,环境搭建这个我会了,因为之前做
过一个安卓开发的小软件,所以对于这章的内容有多大致的了解,因为现在是快速浏览阶段,看的时候有过了解的内容基本就直接跳过了,第二章介绍了一个最简单的安卓项目代码,以及对安卓开打的基础概念进行了详细的讲解,这部分我花了些时间好好看了一下,因为我上次做那个小软件是直接对代码进行学习的,对整个android project结构没有系统的认识,所以这章的内容我是从头至尾全部看了一遍。对其中的activity生命周期有了系统的了解,当然仅限于他书中写的那个水平。第二章还介绍了一些在开发过程中SDK和Eclipse会遇到的常见问题,我觉得他列出的这些问题,对一个初学者来说很有用,比如我刚开始的时候就不知道怎么讲文件存入到的模拟器建立的sdcard中,书中给出了很好的解释,只不过我用的是第三方软件。对于这些常见的问题,书中给提供了非常的好的解决办法,可见作者用心。下图为Activity生命周期流程图
写日记软件篇三:软件开发实习日志日记
Daily work 1
第一次是来面试,当时感觉不怎么好,面试的人问了一些问题有些没回答上来,这并不奇怪,C#自己学习了2个月,然后就没怎么用,回答不上我觉得可以理解。没想到还能第二次来到公司,由于对环境还比较陌生,所以今天大概熟悉了一点,成都这边有50多个员工,属于研发中心,主要从事无线微波得较大型的设备的再加工,听同事说以前在北京,但由于北京人力资源太贵所以来到成都,这听起来怎么像是在压榨的感觉啊,没关系,只是来实习而已。
对于今天的第一个小任务,要求:界面、数据压入堆栈、简单冒泡排序实现数据有序输出、堆排序输出。让我快速地熟悉了C#,从界面到后台都得到了加强,此外在实现过程中对用到的冒泡排序和堆排序有了更深的理解,并能用C#熟练的实现。
Daily work 2
今天对昨天的实例进行了改进和提高,将堆排序和冒泡排序封装在一个动态链接库中,提供函数调用和事件委托。此外加入XML进行配置,在XML中存入相关配置信息,提供一个单独的XmlClass对其进行操作,加深了对xml的理解。为增加程序的性能,采用简单工厂模式对其客户端和算法操作进行分离,有很好的可扩展性,对于C#的动态链接库和XML配置不怎么熟悉,花了很长一段时间看书和网上查资料,才开始动手写代码,不过感觉还是很快,因为自己有编程的能力,可以说掌握了一种快速编程的方法,所以就能驾轻就熟。
Dailywork 3
今天采用抽象工厂模式对实例进行改进,以达到动态加载算法实例,抽象工厂模式属于设计模式中的内容,自己在学习视频的时候注意到了,所以之前就买了本大话设计模式来学习,可以说了解了大部分设计模式。今天遇到后自己心里也有底,温故一下书就知道怎么做 了,可以说这是我学习的方法。
针对以上,在dll中提供一个接口,两个算法都继承了该接口,对于该dll的操作都通过接口ISort进行,此外,修改工厂为抽象工厂,提供一个接口创建算法,在算法中返回ISort实例,在主函数中使用该实例进行对应的排序算法操作,充分显示了抽象工厂的作用,本例子将反射和抽象工厂模式结合,增加了程序的可扩展性和可维护性。
Dailywork4
由于自己编程能力还算可以吧,所以软件组的老大就叫我加入开始做一些这次项目的东西,说了一句“我可是没把你当实习生哦。”,这话一听当时感觉还好,不过后来一想,我却是吃亏了,他不把我当实习生但给我的却是实习生工资,这点有点想不过去,不过没关系,实习嘛就是学习,有基本工资也不错了,关键的公司提供的条件那是在学校里所得不到的:商业性的问题。
今天将上述实例的方法用到本次项目中,开始项目中的一些任务。仍然使用抽象工厂模式,将自定义窗体封装到类库中,将窗体的控件预留到外部进行实施定义;在XML文件中配置窗体的实际参数,利用反射按从XML中读出的参数动态加载窗体。将上述的实例方法运用到了实际项目中。
Dailywork5
昨天的任务基本已完成,今天温习了一下加深了对知识的理解,可以说掌握得比较牢固了,今天又有新的任务,可以说每天都在进步。
按组长要求编写RankStyle=Group时的窗体排列方式,在XML中配置控件或窗体的参数,利用XML读接口从XML中读出参数,为了使程序具有灵活性,在组长的提示下将窗体的配置按照窗体的Name属性进行配置,之前是利用字段的方式写在XML中,但是组长说这样的话在程序中查找不方便,可我觉得没什么啊,当然了,对于我这个没有工作经验的人来说看什么都是可以的,所以要多学习学习。在FormControl中利用双层循环将控件容器中的控件按
Name与读出的配置进行匹配,如果在XML中配置了该窗体,就设置该窗体的一些属性。个人感觉实现了该功能吧,最后经过组长看了一下审核基本通过。
要求:
根据Group,从XML中读取控件配置信息,动态设置控件在主窗体中的显示。
Dailywork6
每天都有不同的要求,哎,果然和学校是不一样啊,今天将DLL中的控件更换成窗体,方法仍然采用反射+抽象工厂模式。
虽然自己有一定编程经验,但是遇到问题是不可避免的,今天在编写过程中遇到了一个问题,就是当窗体接口和窗体类库放在一起的时候,在工厂中创建的实例无法装换成接口类型,经过多次测试和上网查阅相关资料,发现控件类实现接口,不能将接口放在同一个类库中,针对以上问题在网上查阅相关资料,结果还是没有相同的主题,没办法,只有硬着头皮在网上找,没有主题就找有没有相关的例子,结果还是没有,差点就无语了,突然看到有类似方法的一个例子,真是柳暗花明又一村啊,仔细看了看,发现他和我的结构有些差异,所以调了一下结构,一编译果然痛过了,就是将两个类库分离,再在接口中加入工厂便可创建实例并转换成接口。在主窗体中只需要引用该接口类库便可达到要求,使程序耦合性降低了。
Dailywork7
由于黎甫对DLL的要求发生变化,今天就不断修正DLL程序,并验收,再结合Group的窗口排列方式对DLL中的窗体进行测试。我现在才明白,编写代码是一件很容易的事,但是编写好的代码却是很难的事情,好的代码要有可维护性、可扩展性,这样在修改的话就很简单,可不能像我昨天写得代码,根本谈不上艺术,所以一旦面对客户的要求,改动就很困难,这一点值得我继续学习。
至于可扩展性也是对维护的扩充,因为顾客的要求有可能随时都在改变,我们也得适应客户的要求,如果软件有了可扩展性,那么它的改动就比较小,就能适应顾客的要求。所有上面说的这些都是自己要学习的地方,这样在以后的商业开发中才能游刃有余,应对自如。
Dailywork8
回顾前几天所做的练习,对遇到的问题进行解决,在网上查阅相关资料独立解决,并对之前的一些项目练习做好备份。将这几天练习中所用的编程方法都串联了一遍,形成了固定的模式,以便在今后可以快速的使用。
Dailywork9
今天算是正式开始做公司的项目,上午黎甫和秦阳在会议室给我讲解了项目的一些功能并进行讨论,大致理解了项目后,分配了自己的一部分任务,整理过后在多次与秦阳的沟通请教下明白了自己的任务,下午秦阳建好VSS,我拷贝项目进行框架整合和测试。
在编写代码的过程中也涉及了一些问题,通过看MSDN和上论坛,基本得到解决,同时也了解了一些C#其它的相关知识。
Dailywork10
今天继续昨天的任务,做一个小测试,将现今做的项目所有代码进行整合测试,测试要求是在数据库中配置菜单项,动态添加几项菜单项,在不同点击下动态从DLL中加载窗体读取配置文件进行排列,顺利完成。
要求:
抽象接口,并继承;XML中命名空间和类名不要设置成结点,设置成属性。
封装算法到DLL;在FirstWork中使用XML配置;建立一个XMLclass进行操作;建立一个中间工厂类用反射在类库中查找响应算法;事件和委托。接口.
XML中结点:
程序集名称;命名空间.类名;接口名称;加载的时候转化为接口;
XML中增加一个结点用来存储客户端关于算法的选择,按选择动态改变其值,然后算法中读取该值进行排序选择。
为解决的问题:在一个工具条上配置多个工具,并添加事件,好像数据库不能实现。OK了!
Dailywork 11
同步多线程方式实现Tcp/Ip发送。
Dailywork 12
多线程要解除委托,避免出现异常;设置心跳包,检查客户端是否断开连接;UDP服务器与客户端握手,以及连接,数据报
Dailywork13
Dailywork14
Windows服务项目了解
Dailywork15
解决Udp局域网内广播方式通信。
Dailywork16
数据库导出到XML,填充已设置菜单及工具栏结构,返回上层,在工厂中添加XML配置文件,选择是从数据库还是XML中读取。
1、 首先把数据库转化为XML
2、 研究如何和调用数据库的接口结合
3、 设计XML操作工程
4、 工厂更改与设计
ReadMenuInfo.cs中public MenuItemInfoNode[] ReadInfo( string Site)定义为接口中的函数
可能的Xpath: /Root/Item[@WndId=‘ ’ or tb_MenuID=‘ ’]
选取所有bookstore元素中price元素的值小于9或大于10的book元素. Dailywork17
完成菜单和工具条从数据库转化为XML中导出。
Dailywork18
整理优化从XML中导出的过程,此外还;阅读其他英文原版资料书。 Dailywork19
要求:
封装窗体到DLL;
导出事件;
XML配置窗体参数;
从control继承。动态生成,使用抽象工厂模式;
Group的顺序无序由自己决定(从XML中读取);XML操作类;
相关热词搜索:写日记 软件 好用的写日记软件 学生写日记软件
热点文章阅读