欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    《网络程序设计》课程设计基于android平台的网络注册登录器.doc

    • 资源ID:9919407       资源大小:842KB        全文页数:22页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《网络程序设计》课程设计基于android平台的网络注册登录器.doc

    课 程 设 计 报 告课程名称 网络程序设计课程设计 课题名称 网络注册登录器 专 业 网络工程 班 级 1102 学 号 01 姓 名 指导教师 2014年 9 月 12 日湖南工程学院课 程 设 计 任 务 书课程名称 网络程序设计 课 题 网络注册登录器 专业班级 网络工程1102 学生姓名 学 号 01 指导老师 审 批 任务书下达日期 2014 年 9 月 1 日任务完成日期 2014 年 9 月 12 日一、课程设计概述 1.1 课程设计题目 一个基于Android平台的网络程序实现注册,登录 1.2 课程设计要求 (1)能正确连接外部网络 (2) 能实现注册 (3) 能实现正确登录 (4) 能够在手机上使用该系统二、硬件平台搭建2.1 JDK安装 JDK是Java语言的原创者推出的原始开发环境。采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。在Windows上安装JDK非常简单,访问Oracle官方网站下载页面,网址为http:/www.oracle.com/technetwork/indexes/downloads/index.html,也可从其他网站下载。下载完成后,双击运行JDK安装程序并根据提示设定环境变量。2.2 Android SDK安装以及系统设置 下载好SDK包后,将zip文件解压缩至合适的地方。在下文中,默认SDK安装目录为$SDK_ROOT 。l Linux下,打开文件/.bash_profile或者/.bashrc,找到设定PATH环境变量的一行,将$SDK_ROOT/tools的完整路径加入其中。如果没有找到设定PATH变量的行,可以自己添加一行: export PATH=$PATH:<$SDK_ROOT/tools的完全路径>l Mac下,在home目录中找到文件.bash_profile,和Linux的一样处理。如果还没有在机器上设定这个文件,可以创建一个.bash_profile文件。l Windows下,右键点击【我的电脑】,选择【属性】,在【高级】页中,点击【环境变量】按键,在弹出的对话框中双击“系统变量”中的变量“Path”,将$SDK/tools的完全路径加入其中。通过将$SDK/tools加入系统路径,在运行adb和其它一些命令行工具时就不需要键入完全路径名了。需要注意到是,当升级了SDK后,如果安装路径有变动的话,不要忘记了更新PATH变量的设置,将其指向变动后的路径。配置SDK有两种方法:第一种,通过SDK下载器自动下载和配置。适合网络好,下载速度快的情况;第二种,借助工具下载SDK文件,手工配置。适合网络不是很好,下载速度慢的情况下。2.3Eclipse安装以及ADT工具的安装 下载Eclipse安装包后,无需安装,只需解压缩,点击“eclipse.exe”文件即可运行。 Android为Eclipse定制了一个插件,即Android Develpoment Tools(ADT),目的是为用户提供一个强大的综合环境用于开发Android应用程序。ADT扩展了Eclipse的功能,可以让用户快速建立Android项目,创建应用程序界面,在基于Android框架API的基础上添加组件,以及用SDK工具集调试应用程序,甚至导出签名(或未签名)的APKs以便发行应用程序。安装ADT:启动Eclipse,选择Help>Install New Software,在出现的对话框里,点击Add按钮,在对话框的name一栏输入"ADT",然后点击Archive.,浏览和选择已经下载的ADT插件压缩文件,点击OK。返回可用软件的视图,你会看到这个插件,然后选择Developmer Tools,点击Next,最后重启Eclipse。硬件平台搭建好后,便可以开始创建项目了。三、软件设计 3.1 软件总体设计此软件为一款网络软件,采用CS模式工作,服务器端用C语言编写,客户端为Android应用程序,相互间用socket通信。 3.2服务器端设计先安装好mysql数据库,建立好相关数据库jsb,以及表userinfo( name char10,password char10)。再用C编程连接好数据库,然后在4000端口监听,等待连接,相关逻辑代码如下:while(1)int i=1,j=0,k=0;int tf=1;sockConn=accept(sockSrv,(SOCKADDR *)&addrClient,&len);memset(recvBuf,0,200);recv(sockConn,recvBuf,200,0);while(recvBufi)if(recvBufi=+)tf=0;i+;elseif(tf)usernamej=recvBufi;i+;j+;elseuserpaORmek=recvBufi;i+;k+;switch(recvBuf0)case 1:char mysqlzl 200;memset(mysqlzl,0,200);sprintf(mysqlzl,"insert into userinfo values(%s,%s);",username,userpaORme);printf("%s",mysqlzl);res = mysql_query(my_con,mysqlzl);/用户注册break;case 2:char mysqlzl 200;memset(mysqlzl,0,200);sprintf(mysqlzl,"select * from userinfo where name=%s and password=%s",username,userpaORme);mysql_query(my_con,mysqlzl); /登陆查询 my_res = mysql_store_result(my_con);my_row = mysql_fetch_row(my_res); if( my_row!=NULL )send(sockConn,"sucessn",strlen("sucessn")+1,0);elsesend(sockConn,"failedn",strlen("failedn")+1,0);break;closesocket(sockConn); 服务器截图3.3 Android客户端设计 次软件包含三个界面,3界面的视图设计分别如下:主界面注册界面登陆成功跳转界面在主界面点击登陆,登陆按钮回调函数首先获取用户名和密码输入框的值,然后用事先规定好的格式将数据传给服务器,再接收服务器的返回信息,如返回sucess,则进入登陆成功跳转界面,否则提示用户名或密码错误。点击注册按钮进入注册界面后,在完成相关用户名和密码输入之后,点击注册按钮,注册按钮回调函数获取用户名和密码,比较两次输入的密码是否相同,相同的话,按事先规定好的格式将数据传给服务器,注册成功,不相同的话,提示两次密码不同。 四、总结与改进展望 在此次课程设计中,不仅了解到了android以及网络编程的有关知识,而且学习了Java语言以及eclipse等编程环境。有几点需要特别注意:(1) 要明确课程设计的要求,想好系统应该包含哪些功能模块。否则,在软件设计的后期,再想添加新的功能就需要花费大量的时间。(2) 要对android系统有一定的了解。在软件设计过程中,大量的用到了android系统的四大组件:Activity(提供可视化的界面)、Service(运行在后台的服务程序)、Broadcast Receiver(广播事件处理机制)、Content Provider(使应用程序相互访问数据)。只有对这些组件熟练掌握后,才能够真正设计出稳健搞笑的多媒体播放器。(3) 要对Java语言熟练掌握。Android软件开发都是用Java语言写的,而Java又是由类组成的。而Java语言本身又含有众多机制,只有深刻理解这些机制后,才能轻松地实现自己想要的功能。(4) 要对界面设计有一定的了解。Android所有的布局都放在了res/layout中,而所有的菜单选项都放在了res/menu中。合理的布局对人性化的界面也是至关重要的。 (5)要具备快速上网查资料的能力。面对从没接触过的知识,要有信心才是最重要的。另外,网上的很多现成的资料都可借鉴、学习。在熟练理解了别人的应用程序的基础上,再做二次开发。个人收获:1. 现学现做的能力。从图书馆借一些参考光盘,对某项内容的原理大致了解后,直接运行它的源代码,先观察效果,给大脑直接的印象,然后再去理解程序。2.上网查资料的能力。网络是一个十分强大的信息工具。网上有大量的Android参考资料以及很多著名的Android论坛,这上面为我提供了大量的有用信息。尤其是碰到错误时,上网搜一搜,能很快找到解决办法。3.英语阅读能力。因为很多资料都是起源于国外,而很多参考书也是英文的。此外,Android官网以及著名的Android论坛都是英文版,此外,具备一定的英语阅读能力也是非常重要的。4.与同学间的交流探讨。大家经常交流,有助于开拓自己的思维,取长补短,共同解决碰到的问题,这正是一个相互学习的过程。6、 附录v 服务器C源码:#include <stdio.h> #include <stdlib.h> #include <windows.h> #include <mysql.h> #include<winsock.h> /发生错误时,输出错误信息,关闭连接,退出程序 void error_quit(const char *str, MYSQL *connection) fprintf(stderr, "%s : %d: %sn", str, mysql_errno(connection), mysql_error(connection); if( connection != NULL ) mysql_close(connection); exit(1); int main(int argc, char *argv) MYSQL *my_con; MYSQL_RES *my_res; MYSQL_FIELD *my_field; MYSQL_ROW my_row; int rows, i; int res; WORD wVersionRequested;WSADATA wsaData;SOCKET sockSrv,sockConn;SOCKADDR_IN addrSrv;SOCKADDR_IN addrClient;char sendBuf200,recvBuf200;int error,len;char username 10;char userpaORme 20;memset(username,0,10);memset(userpaORme,0,20);my_con = malloc( sizeof(MYSQL) );memset(recvBuf,0,200); /连接数据库 mysql_init(my_con); my_con = mysql_real_connect(my_con, "localhost", "root", "abc123", "jsb", 0, NULL, CLIENT_FOUND_ROWS); if( NULL = my_con ) error_quit("Mysql Connection fail", my_con); printf("Mysql Connection successn"); wVersionRequested=MAKEWORD(1,1);error=WSAStartup(wVersionRequested,&wsaData);if(error!=0)printf("启动套接字失败");return 0;if(LOBYTE(wsaData.wVersion)!=1|HIBYTE(wsaData.wVersion)!=1)WSACleanup();return 0;sockSrv=socket(AF_INET,SOCK_STREAM,0);addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(4000);bind(sockSrv,(SOCKADDR *)&addrSrv,sizeof(SOCKADDR);printf("开始监听n");listen(sockSrv,5);len=sizeof(SOCKADDR);while(1)int i=1,j=0,k=0;int tf=1;sockConn=accept(sockSrv,(SOCKADDR *)&addrClient,&len);memset(recvBuf,0,200);recv(sockConn,recvBuf,200,0);while(recvBufi)if(recvBufi=+)tf=0;i+;elseif(tf)usernamej=recvBufi;i+;j+;elseuserpaORmek=recvBufi;i+;k+;switch(recvBuf0)case 1:char mysqlzl 200;memset(mysqlzl,0,200);sprintf(mysqlzl,"insert into userinfo values(%s,%s);",username,userpaORme);printf("%s",mysqlzl);res = mysql_query(my_con,mysqlzl);/用户注册break;case 2:char mysqlzl 200;memset(mysqlzl,0,200);sprintf(mysqlzl,"select * from userinfo where name=%s and password=%s",username,userpaORme);mysql_query(my_con,mysqlzl); /登陆查询 my_res = mysql_store_result(my_con);my_row = mysql_fetch_row(my_res); if( my_row!=NULL )send(sockConn,"sucessn",strlen("sucessn")+1,0);elsesend(sockConn,"failedn",strlen("failedn")+1,0);break;/printf("Client says:%sn",recvBuf);closesocket(sockConn);/释放空间,关闭连接mysql_free_result(my_res); mysql_close(my_con); free(my_con); return 0; v Android客户端界面源代码:v Activity_main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http:/schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="用户名" /> <EditText android:layout_width="fill_parent"android:layout_height="wrap_content"android:id="+id/username"/> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="密码" /> <EditText android:layout_width="fill_parent"android:layout_height="wrap_content"android:id="+id/userpass"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登陆" android:id="+id/dlButton" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="注册" android:id="+id/zcButton" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="+id/ztlview" /> </LinearLayout>v zhucei.xml:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http:/schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="用户名" /> <EditText android:layout_width="fill_parent"android:layout_height="wrap_content"android:id="+id/zcusername"/> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="密码" /> <EditText android:layout_width="fill_parent"android:layout_height="wrap_content"android:id="+id/zcuserpass"/> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="再次输入密码" /> <EditText android:layout_width="fill_parent"android:layout_height="wrap_content"android:id="+id/zcaguserpass"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="注册" android:id="+id/zhuceiButton" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="返回" android:id="+id/BackButton" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="+id/zhuceiynview" /></LinearLayout>v dlcg.xml:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http:/schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="登陆成功" /></LinearLayout>v MainActivity.java:package com.example1.jsb;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.Socket;import java.net.UnknownHostException;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;import android.widget.*;public class MainActivity extends Activity public Button button1;public Button button2;public BufferedReader in;public PrintWriter out;public Socket socket; Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1=(Button) this.findViewById(R.id.dlButton); button1.setOnClickListener(new ButtonClickListener(); button2=(Button) this.findViewById(R.id.zcButton); button2.setOnClickListener(new ButtonClickListener(); private final class ButtonClickListener implements View.OnClickListener public void onClick(View v) if(button1=(Button)v) EditText User=(EditText)findViewById(R.id.username); String Username=User.getText().toString(); EditText Pass=(EditText)findViewById(R.id.userpass); String Userpass=Pass.getText().toString(); TextView ztl=(TextView)findViewById(R.id.ztlview); try socket= new Socket("58.45.180.145", 4000);in = new BufferedReader(new InputStreamReader(socket.getInputStream();out =new PrintWriter(new BufferedWriter(new OutputStreamWriter( socket.getOutputStream(), true); String sendmsg="2"+Username+"+"+Userpass;out.println(sendmsg);String fwq=in.readLine();if(fwq.equals("sucess")Intent intent = new Intent(); / 设置Intent的源地址和目标地址 intent.setClass(MainActivity.this, dlcg.class); startActivity(intent); MainActivity.this.finish();else if(fwq.equals("failed")ztl.setText("用户名或密码不对!");elseztl.setText(fwq);/socket.close(); catch (UnknownHostException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace(); else if(button2=(Button)v) Intent intent = new Intent(); / 设置Intent的源地址和目标地址 intent.setClass(MainActivity.this, zhucei.class); startActivity(intent); Override public boolean onCreateOptionsMenu(Menu menu) / Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; v Zhucei.javapackage com.example1.jsb;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.Socket;import java.net.UnknownHostException;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import

    注意事项

    本文(《网络程序设计》课程设计基于android平台的网络注册登录器.doc)为本站会员(rrsccc)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开