操作系统实验报告-1-湖南师范大学工程与设计学院操作系统实验报告姓名:钟智君年级:2013级专业:计算机科学与技术(师范)学号:2013180502任课教师:付松龄开课时间:2014~2015学年第二学期操作系统实验报告-2-操作系统实验实验时间2015年6月11日~2015年6月25日实验地点湖南师范大学工程与设计学院前栋403实验要求1、需结合本学期所学的操作系统课程知识,2、可以多人组队做一个大实验3、每个人交一份报告和相关源代码本实验概况实验题目基于Android的聊天通讯软件---乐聊实验环境开发环境:硬件环境:X84PC机软件环境:Windows7(32位)、eclipse4.2.0、jdk-6u22-windows-i586,android-sdk_r23.0.2-windows、ADT-23.0.0;运行环境:硬件环境:Android智能手机;软件环境:Android4.4及4.4以上实验简介本实验通过完成基于Android的聊天通讯工具的开发,进一步理解了操作系统课程中的进程控制、进程通信、存储器的管理以及文件管理、操作系统接口尤其是数据保护和安全等相关知识。在实验中,首先我们进行了市场需求分析,调查了目前市场上几款主打的聊天软件,并认真分析其优点和不足,并展开讨论;然后,本小组展开了对相关理论知识的学习,为后续的代码实现奠定基础,主要学习了操作系统、java编程语言、HTTP网络编程、数据库的增删改查、Android环境、代码书写规范和实时交互等相关理论的学习;准备就绪之后,最后我们进行了代码编写和相关数据信息的整合:产品图标设计、主界面和子功能界面的色彩与排版设计、完成基本的文字传输功能、简单一对一或一对多聊天、相关数据的上传和查看、代码整合、测试、完善。从实验结果来看,聊天软件的设计其实是是图形界面,线程,流与文件系统等技术的综合应用。线程能够减少程序在并发执行时所付出的时空开销,使OS具有更好地并发性,在本次实验过程中,我们充分利用了HTTP网络通信技术与多线程调度技术。操作系统实验报告-3-一、实验目标本次实验的目标是通过开发一款基于Android的聊天通讯应用,进一步理解操作系统中的进程控制、进程通信、存储器的管理以及文件管理、操作系统接口尤其是数据保护和安全等相关知识。它的主要功能包括提供用户信息和数据的存储、一对一或一对多的聊天、文字的传输等等。它的特色在于通过接入第三方接口,用户可以和第三方机器人聊天。我在本次实验中主要负责的是聊天模块。主要包括连接服务器、向服务器发送数据流、接收服务器的数据流、适配器显示、语音提示、判断收发信息正确显示收发控件。二、实验背景随着网络的普及,人类生活越来越依赖网络,人与人之间的交流更多的是在网络上进行,由于交流的实时性,即时通讯系统也被越来越多的人所使用。虽然目前市场上有不少的通讯软件,但是几乎所有的通讯都是建立在用户与用户之间的,而现代社会,人们在生活工作中压力巨大,能够宣泄的场合和机会却很少。在这种情况下,本小组设计的此款聊天软件占据了很大的市场优势。此款软件主要特色在于通过接入第三方接口,用户可以和第三方机器人聊天,并且聊天数据具有高度安全性。三、实验基本思路3.1整体流程:(1)市场需求分析:调查了目前市场上几款主打的聊天软件,并认真分析其优点和不足,并展开讨论,进行产品定位。(2)相关理论知识的学习:操作系统、java编程语言、HTTP网络编程、数据库的增删改查、Android环境、代码书写规范和实时交互等相关理论的学习(3)实验流程:1,产品图标设计2,主界面和子功能界面的色彩与排版设计3,完成基本的文字传输功能4,简单一对一或一对多聊天5,相关数据的上传和查看6,代码整合、测试、完善3.2采用技术:Android的HTTP网络通信技术与多线程调度技术。3.3实现方法:采用java语言,利用多线程机制和封装好的API实现基本通讯功能。操作系统实验报告-4-四、概要设计4.1总体模块图4-1-1系统模块结构图4.2主界面模块主要用于显示好友、最近联系情况以及动态等,其中包括最近联系人,用于显示最近和好友联系的情况;好友列表用于添加好友及联系好友;朋友圈发表动态并实时评论。用ViewPager滑动组件,使得好友列表、朋友圈及最近联系人可滑动切换,并对好友列表、朋友圈及最近联系人进行监听,及时响应监听事件。4.3聊天模块显示聊天内容,并收发信息,对方回信是声音提示。用户所发送的信息及接收好友的信息将由Listview实时显示给用户,以方便用户聊天的感受。连接服务器是使用第三方后台,实现发送接收数据流。4.4数据库模块帐号的增删改查,确定用户是否被允许登录。其主要分为访问数据库操作、及注册登录时用以验证是否在数据库中含有该帐号,并是否正确。利用数据库SQLite的增删改查进行操作,包含创建数据库,增添数据库,查询数据库等等,从而达到用户要求。4.5登录注册模块开启聊天之旅,使得用户可以登录注册,注册帐号是应验证帐号是否存在,登录是帐号和密码是否正确。对登录、注册按钮进行监听事件响应,满足条件,及时跳入相应流程,从聊天系统创建链接CLIENT模块SERVER模块界面模块主界面模块子功能界面模块文字传输模块操作系统实验报告-5-而登录。4.6创建链接连接服务器,以便能够发送接收数据流,实现实时交互。向第三方程序进行连接,在第三方中传送数据。4.7文字传输模块连接数据库后,向服务器发送数据流以便数据到达目的方,以及接收从服务器传送来的数据流,向聊天界面显示。五、详细设计聊天模块实时聊天,向用户显示聊天信息,收发信息并提醒。用户所发送的信息及接收到的好友发送的信息将由Listview实时显示给用户,以方便用户聊天的感受。使用线程实时提醒,使用户及时收到并知道有好友发来信息。操作系统实验报告-6-数据定义ListViewlist;//定义一个ListView放置聊天记录intscrollState;intlastItem;intvisibleItemCount;Stringstr;EditTextet,et1;//文本输入框ButtonfooterButton,footerButton1;//发送按钮Viewview;ListAdapterlistAdapter=newListAdapter();//定义适配器ListStringdata=newArrayListString();//定义List集合,存放聊天数据ListStringdata1=newArrayListString();//存放事接受还是发送的信息Stringstring;StringURL=服务器地址StringObjectInfo=;//接收发送来的数据view1_listiview_adapterview1_adapter;MusicMSImusicmsi;//用来播放声音操作系统实验报告-7-连接服务器并传送接收数据流AjaxParamsparams=newAjaxParams();//连接服务器params.put(key,6826a393b67fea4c4aba2c28e0287300);//通过密码连接params.put(info,str);//用户发送的数据FinalHttpfh=newFinalHttp();//建立通道fh.get(URL,params,newAjaxCallBackString(){//发送数据publicvoidonFailure(Throwablet,interrorNo,StringstrMsg){super.onFailure(t,errorNo,strMsg);}publicvoidonSuccess(Stringt){//接收对方数据try{JSONObjectjsonObjec=newJSONObject(t);//接收数据流ObjectInfo=jsonObjec.getString(text);//得到信息data.add(ObjectInfo);//加入集合类,发便适配器显示listAdapter.count+=1;//提示数据增加data1.add(1);//标记是接收到的数据,以方便正确显示listAdapter.notifyDataSetChanged();//刷新适配器}catch(JSONExceptione){oast.makeText(ChatUI.this,出错了,oast.LENGTH_SHORT).show();}}添加适配器显示聊天信息并语音提示//显示收发内容publicViewgetView(intposition,ViewconvertView,ViewGroupparent){LayoutInflaterinflater=LayoutInflater.from(ChatUI.this);inttype=getItemViewType(position);if(type==1){//来消息后显示并声音提醒convertView=inflater.inflate(R.layout.item,null);TextViewtv1=(TextView)convertView.findViewById(R.id.tv);tv1.setTextSize(20);tv1.setText(data.get(position));newThread(){//线程来信提醒publicvoidrun(){try{sleep(100);musicmsi.getBgPlayer().start();//播放声音musicmsi.getBgPlayer().setLooping(false);}catch(InterruptedExceptione){e.printStackTrace();}}}.start();操作系统实验报告-8-}elseif(type==0){//发送消息convertView=inflater.inflate(R.layout.item1,null);TextViewtv=(TextView)convertView.findViewById(R.id.tv);tv.setTextSize(20);tv.setText(data.get(position));}returnconvertView;}具体信息请见附录:六、实验结果本次实验最终实现了用户的注册、登录,通讯录存储,一对一或一对多聊天,第三方机器人的自动回复,文字传输以及个人空间动态的展示与互动等功能。具体图形界面如下:操作系统实验报告-9-七、实验总结通过本次操作系统的实验,我对于开发聊天软件的整体流程有了比较清楚的认识,明白了要想真正开发出一款好的软件,首先需要调查市场需求分析及可行性分析,吸其精华,去其糟粕。通过调查进行产品定位。其次,还应该进行大量的知识储备,学习相关的理论知识,这对于之后的实验编程有重大意义。最后进行程序编写时,应该要注意相关书写规范,交互性等等。这次实验更加激起了我对操作系统学习的深厚兴趣,在实验过程中,我遇到过许多错误,但是通过同学的帮助和查阅相关资料都解决了。这次实验加深了我对进程控制、进程同步、进程通信、存储器的管理、以及文件管理的理解尤其是对于用户接口,数据的保护和安全方面的学习有重大意义。对网络编程技术的实现有了真实的认识,不再停留在书本上的讲解,通过对HTTP通信的使用,了解了客户端与服务器之间通信的机制,对以后的编程实践铺垫了基础。同时还巩固了JavaGUI界面设计的知识,之前的java过多的注重了前几章的知识,而图形化界面编程一直感觉有些欠缺,但是这次的程序让我重新认真学习了这部分知识,心中觉得很充实。实验过程中我存在的不足是解决问题的能力还有待提高,对开项目的创意还需加强。我们项目组由于开发经验不足,导致后面重重考验等待我们,首先,我们对软件工程设计思想严重缺失,导致我们在此出现较大的困难,项目