"景先生毕设|www.jxszl.com

校园助手app设计与实现(附件)【字数:6828】

2024-11-03 15:09编辑: www.jxszl.com景先生毕设
移动互联网技术的成熟发展和便捷性,大大小小的主要软件产品都从PC上搬移到移动设备上。而市面上却缺少一个校园业务相关信息平台让大家能够便于大家在手机平台上处理或获取一些校园相关的事物和信息。校园中经常会出现丢失重要物品的现象,也需要为同学们提供一些其他的校园相关信息,如新闻推送,校园公交站信息查询,校园相关网页导航直达等业务移动端以自己特有的便捷优点,使得同学们是使用的时候能够更加便捷,获取信息的成本和便捷程度会变得更低,将便捷的服务传送给每一位校园师生。因此,开发一个校园小助手APP的软件是一件非常有价值的事情,本文章主要说明了本课题软件开发环境、软件结构、后台服务器、数据库服务器等概念,对软件中涉及到的所有模块和功能设计的描述。软件在设计中,主要以Java编写前端,PHP编写服务器后端,Mysql为数据库支持的技术,采用C/S模式为整体架构,实现客户端,服务器,数据库之前的数据交互。服务器的搭建基于Windows系统,采用宝塔面板快速搭建运行环境。AbstractWith the mature development and convenience of mobile Internet technology, major software products of all sizes have been moved from PCs to mobile devices. However, there is a lack of a campus business-related information platform on the market, so that everyone can easily process or obtain some campus-related things and information on the mobile platform.Important items are often lost on campus, and it is also necessary to provide students with some other campus-related information, such as news feed, campus bus station information query, campus-related  *51今日免费论文网|www.51jrft.com +Q: ¥351916072¥ 
web page navigation, etc.With its unique convenience and advantages, the mobile terminal makes it more convenient for students to use it, the cost and convenience of obtaining information will become lower, and convenient services will be delivered to every campus teacher and student.Therefore, the development of a campus assistant APP software is a very valuable thing. This article mainly explains the concepts of the software development environment, software structure, background server, database server and other concepts of this subject. Description of the functional design.In the design of the software, the front-end is mainly written in Java, the back-end of the server is written in PHP, Mysql is the technology supported by the database, and the C/S mode is used as the overall structure to realize the data interaction between the client, the server and the database. The construction of the server is based on the Windows system, and the pagoda panel is used to quickly build the running environment.一、引言 1(一)开发背景 1(二)选题意义 1(三)开发技术 1二、系统分析与设计 1(一)系统功能需求 1(二)系统功能模块图 2(三)开发及运行环境 2(四)服务器设计 2(五)数据库设计 31. 用户表 32. 失物表 33. 招领表 3三、系统功能设计与实现 4(一)前端实现 41. 注册模块 42. 登陆模块 53. 首页 74. 失物页面 105. 招领页面 126. 失物和招领的详情信息界面 137. 失物和招领信息登记界面 148. 公交站点查询模块 169. 快速导航模块 1710. 我的模块 1711. 缓存清除模块 1812. 新闻模块 20(二)后端实现 231.注册 232. 登录 243. 失物和招领 244.登记 265.新闻 27四、总结 27五、致谢 28六、参考文献 28校园小助手APP一、引言(一)开发背景当前大部分失物招领系统都基于WEB端,由于目前移动手机的普及,因其便利性及Android端的市场占有率分析,本课题采用以JAVA为主要开发语言的Android 端软件。区别于需要以电脑展示的WEB页面,采用移动端的软件开发,更能表现出实时登记,实时信息查询的便利性。(二)选题意义本软件开发主要围绕校园相关的业务展开。解决丢失物品难以登记,招领困难,校园相关信息推送。通过移动端的便捷性,来解决人们物品丢失难以寻找。通过集中性的平台,统一公开公布信息更有利于减少不必要的时间损耗。本软件作为校园小助手,同时附加附近公交路线查询、站点查询、最新新闻头条的推送的支持以增加软件的多样性。(三)开发技术本软件开发主要采用客户端-服务器(C/S)的主要分层架构模式,前端采用Java开发的安卓客户端,后端采用PHP编写的数据处理脚本,而数据储存使用Mysql为数据库。通过前端展示,后端服务器数据处理,服务器数据库储存的方式,减小了客户端的压力。见图1-1 C/S模式结构示意图二、系统分析与设计(一)系统功能需求作为一款校园小助手APP软件,开发目的是为了服务于校园,因此围绕校园展开相关功能开发,本软件共实现失物招领、新闻头条推送、学生常用网站快速导航、公交站点、公交路线查询等服务。(二)系统功能模块图(三)开发及运行环境软件的开发环境是基于Java JDK 1.8,在Google官方开发的Android studio 4.0 上进行开发编写。软件的运行环境基于移动安卓平台,支持在android 6.0以上的任意版本安装和使用。(四)服务器设计服务器是用于为前端客户端提供技术支持的服务,一般指为前端用户计算机页面提供数据服务的设备。服务器采用Windows平台,基于微软官方提供的IIS作为Server支持。服务器域名地址sziep.xyz见图 1-3服务器组成图如下(五)数据库设计1. 用户表用户表(User),祥见表1.1所示,该表主要用于储存用户的注册信息,包括注册手机号、密码、注册人姓名、注册日期、用户头像等基本信息,其中用户手机号为唯一的KEY,可以通过该字段来找到该用户所登记的失物、招领信息便于管理。表1 1用户表用户表(User)列名类型大小是否为空备注PhoneVarchar11N手机号码PassWordVarchar20N密码NameVarchar20Y姓名Date_joinDate0N注册日期Profile_PicVarchar50Y头像2. 失物表失物表,祥见表1.2所示,该表是用户上传登记的丢失物品信息记录表,共记录了丢失人名称、联系电话、物品名称、物品图片、丢失日期、丢失地点、详情备注等字段。表1 2失物表失物表(Lost)列名类型大小是否为空备注LosterVarchar15N丢失人PhoneVarchar11N手机号码ItemVarchar50N物品名称ImageVarchar50Y图片DateDate0Y丢失日期PlaceVarchar200Y丢失地点RemarkVarchar200Y备注3. 招领表招领表,祥见表1.3所示,该表是用户登记的捡到物品信息表的所有信息,共记录了捡到人名称、联系电话、物品名称、物品图片、丢失日期、丢失地点、详情备注等字段。表1 3招领表招领表(Found)列名类型大小是否为空备注FounderVarchar15N发现人PhoneVarchar11N手机号码ItemVarchar50N物品名称ImageVarchar50Y图片DateDate0Y发现日期PlaceVarchar200Y发现地点RemarkVarchar200Y备注三、系统功能设计与实现 (一)前端实现1. 注册模块注册模块见图 2-1,注册是用户使用软件的第一个环节,在后续的用户使用中,用户姓名和手机号是不可缺少的信息,它可以帮助你或者他人能够尽快的联系到你。同时手机号也作为账号的唯一凭证作为管理。能够起到防止用户信息冲突。UI页面布局以LinearLayout(线性布局)的垂直(Vertical)属性为主要布局方式。能够很好的实现从想到下的行视图。其中四个输入框皆采用无边框的EditText输入框,使得页面更加简洁舒适。Java分别使用Input_User、user_phone、input_yzm、user_psw四个变量对用户输入的信息进行数据绑定。从而更好地用Java对数据进行处理。验证码发送调用了android原生的短信发送功能,SmsManager(短信管理器),用Math函数库中的random方法随机生成6位数字发送到指定手机号上。在Android 9因隐私管理变得更加重要,我们的应用权限需要通过动态获取,详细代码如下mRx = new RxPermissions(RegistActivity.this);mRx.requestEach(Manifest.permission.SEND_SMS, Manifest.permission.READ_SMS) .subscribe(new Consumer() { @Override public void accept(Permission per) throws Exception { if (permission.granted) { // 用户已经同意该权限 Log.d(TAG, per.name + " is granted."); } else if (per.shouldShowRequestPermissionRationale) { // 用户拒绝了该权限,弹出提示 showPermissions(); } else { // 用户拒绝了该权限,弹出提示 showPermissions(); } } });完全输入全部信息后,点击注册按钮,即可将信息通过后台服务器进行处理和反馈。API接口https://api.szipe.xyz/api/registServicer.php;请求方式POST;此页面细节任何一个输入框不得为空,或注册信息不符等问题,都会有相应的错误吐司弹窗提醒。2. 登陆模块登录页面见图 2-2所示,经过了注册之后,我们可以通过登录页面进行登录,为了用户发布信息的真实性,所有功能都需要在登录状态下才可以使用。如下图表2的登录页面是我们打开软件看到的第一个界面,从UI上可以直观的看到,分别有注册,账号密码输入框,登录三个主要控件。Sign Up点击此处可以跳转到注册页面。中间白色部分输入框上面输入框为账号(手机号),下面为密码。Login按钮点击后可进行账号密码的识别,进行登录验证。登录页面使用SharedPrefenrences进行登录账号的数据存储,方便下次打开后不在需要重新输入账号密码。SharedPrefenrences是一个轻量级的储存类,将数据保存在XML中,用户来储存一些简单,不影响用户安全性的数据信息。SharedPrefenrences的储存与提取代码如下当用户输入正确的账号和密码信息后,点击Login按钮后,通过Http请求向后台服务器发送登录验证。Api接口https://api.szipe.xyz/api/loginServicer.php;请求方式POST后台详情源码跳转至3. 首页通过登录验证后可以进去软件的首页,首页主要由上方Title标题、中间Banner图片、下方Gridview控件组成的功能导航按钮组成。BannerBanner画报主要用于展示新闻新事,放在软件最明显的位置有利于用户的察觉,Banner可以放置静态图片和GIF图片,并且可以通过点击相应的Banner进行跳转或通知等操作;该控件通过BannerAdapter适配器进行图片的绑定和动态效果设置,。BannerAdapter详情代码如下public static Banner BannerAdapter(Banner banner, ArrayList arrayList) { banner.setImageLoader(new GlideImageLoader()); banner.setBannerStyle(BannerConfig.NUM_INDICATOR); banner.setBannerAnimation(Transformer.DepthPage); banner.setImages(arrayList); banner.setDelayTime(2500); return banner;}如下图 2-3,中间由六个按钮组成的GridView是该页面跳转至其他功能页面的导航区域,其中三个已经使用的分别为实物、招领、公交站点、新闻。失物点击此按钮可以跳转到丢失物品信息的页面。招领点击此按钮可以跳转值招领物品的信息界面。公交站点通过此处可以跳转至附近公交站点列表页面。新闻通过此处跳转至新闻页面。在首页的底部我们可以看到有三个按钮,它们分别代表不同的页面,使用Fragment和ViewPager实现页面切换的效果。Fragment的字面意思就是碎片,他是在Android 3.0之后引入的一个库。他最开始是为了解决Android用在各种不同的大屏的平板电脑上,它如同一个小型的Activity,又被开发者称作为Activity碎片。Fragment 生命周期见上图 2-4.Fragment+ViewPager对页面实现切换的详情代码如下@Overridepublic Fragment getItem(int position) { Fragment fragment = null; switch (position) { case MainActivity.PAGE_ONE: fragment = fragment1; break; case MainActivity.PAGE_TWO: fragment = fragment2; break; case MainActivity.PAGE_THREE: fragment = fragment3; break; } return fragment;}4. 失物页面如下图 2-5实物页面是我们本软件核心模块,从UI页面我们可以看出,它是由一个列表组成,每一项列表中分别又有图片和文字,将他们重要的信息直接展示在列表上,更有利于用户快速的分辨和找到自己的物品,避免了重复打开查看上的时间浪费。用户可以点击列表中的任意一项跳转到该物品的详情信息页面。用户可以通过右下角悬浮按钮进入失物信息登记页面。进入该页面后,Java会自动向服务器后台发送丢失物品全部数据的查询请求。接口APIhttps://api.szipe.xyz/api/lostServicer.php;数据请求代码如下JSONObject jsonObject = new JSONObject();JsonObjectRequest jsonObjectRequest = new JsonObjectRequest( Request.Method.POST, PostUrl, jsonObject, new Response.Listener() { @Override public void onResponse(JSONObject jsonObject) { Gson gson = new Gson(); //Toast.makeText(getApplication(),jsonObject.toString(),Toast.LENGTH_SHORT).show(); LostBean lostBean = gson.fromJson(jsonObject.toString(), LostBean.class); List dataBeanList = lostBean.getData(); Map profileMap; for (int i = 0; i < Integer.parseInt(lostBean.getCount()); i++) { profileMap = new HashMap<>(); LostBean.DataBean dataBean = dataBeanList.get(i); profileMap.put(EuclidListAdapter.KEY_AVATAR, dataBean.getImage()); profileMap.put(EuclidListAdapter.KEY_NAME, dataBean.getItem()); profileMap.put(EuclidListAdapter.KEY_DESCRIPTION_SHORT, Utlis.Remark_SubString(dataBean.getRemark())); profileMap.put(EuclidListAdapter.KEY_DESCRIPTION_FULL, "丢失人" + dataBean.getUsername() + " " + "详细信息" + dataBean.getRemark() + " 地点" + dataBean.getPlace()); profileMap.put(EuclidListAdapter.KEY_TELL_PHONE, "tell:" + dataBean.getPhone()); profileMap.put(EuclidListAdapter.KEY_DATA_TIME, dataBean.getDatetime()); profilesList.add(profileMap); } initList(); try { mListView.setVisibility(View.VISIBLE); loadingView.setVisibility(View.GONE); } catch (Exception e) { } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { Toast.makeText(getApplicationContext(), volleyError.toString(), Toast.LENGTH_SHORT).show(); } });Volley.newRequestQueue(this).add(jsonObjectRequest);5. 招领页面如下图 2-6,因失物招领所需要的页面相同,数据展示类似,同时也为了简约软件的复杂程度,失物和招领页面用的同一个Activity进行展示,通过对首页不同按钮的点击并后台服务器API的转化,实现用一个页面展示不同的信息。因UI完全相同,不再对此进行多次介绍,UI详情请详见1.4 失物页面的介绍。失物与招领的后台API转换是通过对首页中失物和招领按钮的点击值进行记录,在页面跳转后通过记录值用于判断失物和招领页面,并对页面使用的API进行转换,详情代码如下public void ToEuclid(int posi){ Info.Lost_Or_found=posi; startActivity(new Intent(getContext(),EuclidActivity.class));}//获取Euclid页面 Lost / Found 的URL接口(0:LOST 1:FONUD)public static String getItemUrl(int posi) { String url = null; if (posi == 0) { url = Info.LostURI; } else if (posi == 1) { url = Info.FoundURI; } return url;}招领信息的后台API接口https://api.szipe.xyz/api/foundServicer.php;6. 失物和招领的详情信息界面见图 2-7和图 2-8是失物详情页和招领详情页,使用相同的UI结构,在详情页我们可以看到有物品的图片和联系人的详情信息,分别有联系人姓名,电话,物品的详情信息,和丢失时间地点。可以帮助用户确认是否属于自己的物品。页面中有两个圆形按钮,分别别为快速拨打电话和添加丢失、招领信息登记的按钮。快速拨打电话点击按钮可以跳转至拨打联系人留下的电话,方便用户的使用便捷。代码实现// 拨打电话public static void tellPhone(Activity activity, String number) { Uri uri = Uri.parse("tel:" + number); Intent intent = new Intent(Intent.ACTION_DIAL); intent.setData(uri); activity.startActivity(intent);}7. 失物和招领信息登记界面如下图 2-9登记页,该页面依然采用代码的复用性,通过对API的区别,能够实现一套代码,多次复用,这也体现了B/S模式的优越性,使得前端更加简洁、简单。见图 2-10在登记中,我们可以添加物品图片,物品名称,丢失地点和详情信息,而联系人的电话会通过你登陆的账号自动填写提交,同时也能够起到防止虚假信息的登记的作用。失物APIhttps://api.sziep.xyz/Api/lostupload.php招领APIhttps://api.sziep.xyz/Api/lostupload.php图片的上传处理是由图片的bitmap转换为Base64格式的数据惊醒上传,并在后台转化,这样可以减小上传的延迟,并更好地利用了POST的安全性质。图片选择的代码细节Intent intent = new Intent();intent.setType("image/*");intent.setAction(Intent.ACTION_PICK); startActivityForResult(Intent.createChooser(intent, "Select Image"), PICK_IMAGE_REQUEST);图片格式转化的细节if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) { Uri filePath = data.getData(); try { bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath); Glide.with(this).load(bitmap).into(image); base64=UploadUtlis.BitmapToBase64(bitmap); } catch (Exception e) { e.printStackTrace(); }}8. 公交站点查询模块 该模块为软件的扩展模块,主要功能包括附近公交站点的查询,公交站点路线查询,和公交路线的详细信息查询。见图2-11,我们可以看到图中展示了附近所有公交车车站的信息,公交车站的距离和途径公交路线名称。点击任意一项后即可进入上图 2-12的页面,我们又可以看到右上角有个导航按钮,点击可快速进入高德并导航至该公交车站的路线,而下方我们可以看到所有经过该公交站路线的列表,点击任意一项后就进入如图 2-13的界面,该界面展示了公交某路线的所有详情信息,包括始发站、终到站、始发时间、末班时间、途径所有站点的名称。此模块的初衷是为了方便出行,线路查询,模块中的信息通过第三方API进行的开发。使用的API分别为城市IDhttp://api.dwmm136.cn/z_busapi/BusApi.php?optype=city&uname=18531937855附近站点http://api.dwmm136.cn/z_busapi/BusApi.php?optype=ptnear公交路线http://api.dwmm136.cn/z_busapi/BusApi.php?optype=luxian实时位置http://api.dwmm136.cn/z_busapi/BusApi.php?optype=rtbus9. 快速导航模块 如下图 2-14导航页面,图中添加了6个快速导航模块用于增添软件的多样性,通过网站手机针对用户常用的几个网页,用户则可以直接通过本页面直接访问到选中网址,图中主要选择了常用的几个网址,分别为江苏教育考试院、官网、英语等级考试官网、计算机等级考试(NCRE)官网和疫情大数据网址。不仅能让同学们快速的访问相应网址,同时也能够让同学少走弯路,快速直达。本页面通过使用android的页面跳转带参的API实现,具体代码如下Uri uri1 = Uri.parse("https://www.jseea.cn/"); Intent intent1 = new Intent(Intent.ACTION_VIEW, uri1);startActivity(intent1);使用URI实现记录访问的网址,使用Intent进行带参跳转到浏览器。10. 我的模块 如下图 2-15所示,我的模块用于用户可以查看当前登陆账号的信息,展示用户在注册时设置的手机号和头像姓名等信息,通过Imageview和Texitview在LinearLayout中的配合布局使用,在本页面添加了三个主要模块的跳转导航。11. 缓存清除模块 见图 2-16所示,本软件运行过程中,因会缓存大量的数据信息和图片,会导致本机的过时和不必要的缓存增加,为了能够减小软件所占内存,添加了清除缓存模块使得用户可以主动清楚软件使用中产生的缓存。清除缓存页面会清楚该软件的所有保存图片信息,数据信息,账号登陆信息等。代码实现public static String getTotalCacheSize(Context context) throws Exception { long size= getFolderSize(context.getCacheDir()); if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { size += getFoldSize(context.getExternalCacheDir()); } return getFormatSize(size);}public static long getFoldSize(File f) throws Exception { long size = 0; try { File[] fileList = file.listFiles(); for (int i = 0; i < fileList.length; i++) { // if next have Dire if (fileList[i].isDirectory()) { size = size + getFolderSize(fileList[i]); } else { size = size + fileList[i].length(); } } } catch (Exception e) { e.printStackTrace(); } return size;}public static String getImageSize(long size) { long kb = size / 1024; int mbs = (int) kb / 1024; int kbs = (int) (kb % 1024); return m + "." + kbs + "M";}public static void clearAppCache(Context context) { delDir (context.getCacheDir()); if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { delDir (context.getExternalCacheDir()); }}private static boolean delDir(File dir) { if (dir != null && dir.isDirectory()) { String[] child = direc.list(); for (int i = 0; i < children.length; i++) { boolean success = deleteDir(new File(direc, child [i])); if (!success) { return false; } } } return direc.delete();}12. 新闻模块 如下图 2-17新闻模块向用户推送了最新的新闻头条,通过Recyclerview+Glide图片框架以列表的形式向用户展示了新闻的列表,内容包括图片,标题以及推送时间。用户可以通过该页面查看简略内容,并且用可以以点击任意Item,可以跳转至手机自带浏览器中观看原文详细信息。详细新闻内容展示见图 2-18列表及点击事件实现代码如下public interface OnItemClickListener{ void onItemClick(int position);}private OnItemClickListener mItemClickListener;public Context mContext;public ArrayList mBirdsList;@Overridepublic void onClick(View v) { if (mItemClickListener!=null){ mItemClickListener.onItemClick((Integer) v.getTag()); }}public void setItemClickListener(OnItemClickListener itemClickListener) { mItemClickListener = itemClickListener;}public DataAdapter(Context context,ArrayList birdList){ mContext = context; mBirdsList = birdList;}@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.news_list_item,parent,false); view.setOnClickListener(this); return new ViewHolder(view);}@Overridepublic void onBindViewHolder(ViewHolder holder, int position) { holder.textView.setText(mBirdsList.get(position).getName()); Glide.with(mContext) .load(mBirdsList.get(position).getImageUrl()) .into(holder.imageView); holder.itemView.setTag(position);}@Overridepublic int getItemCount() { return mBirdsList.size();}public class ViewHolder extends RecyclerView.ViewHolder { public ImageView imageView; public TextView textView; public TextView times; public ViewHolder(View itemView) { super(itemView); imageView = (ImageView) itemView.findViewById(R.id.bird_image); textView = (TextView) itemView.findViewById(R.id.bird_name); times = (TextView) itemView.findViewById(R.id.bird_time);}跳转至浏览器原文代码如下Uri uri1 = Uri.parse(Urls[position]); Intent intent1 = new Intent(Intent.ACTION_VIEW, uri1);startActivity(intent1);(二)后端实现1.注册 该接口是对新用户进行注册及信息登记的接口。接口地址https://sziep.xyz/api/registServicer.php请求参数“phone“”电话号码“、”username“”用户姓名“、”date_join“”注册日期“、”password“”账户密码“请求回复“code“ ”验证码“,”msg“”回复编号“,”text“”回复内容“详细代码如下 $outData=array( code=>0, msg=>"NO", text=>"用户名已存在" ); $phone=".$_REQUEST[phone]."; $password=".$_REQUEST[password]."; $username=".$_REQUEST[username]."; $datejoined=".$_REQUEST[datejoined]."; $conn = new mysqli("localhost","demo","root","demo"); if ($demo->connect_eroor){ die("连接失败".$demo->connect_eroor); } $sql = "INSERT INTO user_table (phone,password,username,date_joined) VALUES ($phone,$password,$username,$datejoined)"; if (mysqli_query($conn, $sql)){ $outData["code"]=200; $outData["msg"]="OK"; $outData["text"]="用户添加成功"; $outData=json_encode($outData,JSON_UNESCAPED_UNICODE); echo $outData; }else{ $outData=json_encode($outData,JSON_UNESCAPED_UNICODE); echo $outData; }2. 登录 该接口用于对已经注册的用户进行登陆验证的接口。接口地址https://sziep.xyz/api/loginServicer.php请求参数“phone“”电话号码“、”password“”账户密码“请求回复“code“ ”验证码“,”msg“”回复编号“,”text“”回复内容“3. 失物和招领该接口分别为失物和招领两个接口,是客户端和数据库之间对用户上传的所有物品信息的交互处理。失物接口地址https://sziep.xyz/api/LostServicer.php招领接口地址https://sziep.xyz/api/FoundServicer.php请求回复“code“ ”验证码“,”date“”请求数据“,”count“”数量“请求结果(Json)code : 200* data : [{"username":"侯凯尧","phone":"17715501187","item":"手机","image":"http://192.168.3.14/image/a.jpg","datetime":"2021-09-16","place":"苏州市吴中区","remark":"丢失了,找不到了,请联系我的电话"},{"username":"周润泽","phone":"1231321","item":"钱","image":"http://192.168.3.14/image/b.jpg","datetime":"2021-09-22","place":"学校","remark":"没了啊啊啊 "},{"username":"黄璐寒","phone":"18065095727","item":"100W","image":"http://192.168.3.14/image/c.jpg","datetime":"2021-09-22","place":"银行门口路","remark":"啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊"},{"username":"houkayiao","phone":"17715501187","item":"U盘","image":"https://api.sziep.xyz/image/Lost/17715501187/1632983108.jpg","datetime":"2021-09-30","place":"图书馆","remark":"好人一生平安"}]* count : 4详细代码 $outData=array( code=>0, data=>array( data=>[], count=>0 ), ); $demo = new Mysqli("localhost","demo","root","demo"); if ($demo->connect_eroor){ die("连接失败".$demo->connect_eroor); } $sql = "select * from Lost"; $result = $demo->query($sql); $sqlCount = "Select count(*) as Phone from lost"; $resultCount = $demo->query($sqlCount); if($resultCount){ $count =$resultCount->fetch_assoc(); $dataCount = $count[Phone]; } $outData["count"]=$dataCount; if($result->num_rows > 0) { $arr=array(); while($row = $result->fetch_assoc()){ $arr[]=$row; } $outData["code"]=200; $outData["data"]=$arr; $outData=json_encode($outData,JSON_UNESCAPED_UNICODE); echo $outData; }else{ echo $outData; } $demo->close();4.登记该接口是服务于用户发布新物品丢失或招领信息的接口将用户的信息上传至服务器和数据库中。失物接口地址https://sziep.xyz/api/LostUpload.php招领接口地址https://sziep.xyz/api/FoundUpload.php该接口负责接收客户端用户传来的物品照片、联系人、物品信息等数据保存至数据库处理。并同时对前端传来的Base64格式的图片数据进行解析并保存至服务器中。图片解析及保存服务器实现代码如下//获取post传来的base64$base64_image_content ="data:image/jpg;base64,".$basePose;$path= C:wwwrootapi.sziep.xyzimageFound./;//将Base64图片转换为本地图片并保存$image_result = base64_image_content($base64_image_content,$path,$phone_number);$image_adress=strstr($image_result[adress],"Found/");5.新闻新闻接口来自于第三方的信息平台,通过对第三方平台信息的解析,及客户端UI的设计从而展示给用户。新闻接口http://api.tianapi.com/generalnews/index参数key(接口密钥),num(获取新闻数量)key : 461f3cb9d5854ec69b3b5066ed8f76bbnum:0-50POST请求示例http://api.tianapi.com/generalnews/index?key=461f3cb9d5854ec69b3b5066ed8f76bb&num=30四、总结通过一段时间的的独立软件开发体验,使我在本课题的软件开发中对本专业的理论知识、专业基础有了更深的认识,本次课题使得我在大学中学到的专业知识再一次得到提升。让我学到的本领得以在实际用途中得以使用。我课题研究的主要是失物招领的移动端软件,是基于Android系统平台,采用Java为主要开发语言,XML为页面布局的主要界面UI,使得Java的数据处理与UI的数据显示分离。从客户端到服务器到数据库,整体采用C/S的模式,从而使得用户端软件量级更小,配置需求更小。本次设计中由于之间不够充足,在对客户端对不同机型分辨率的UI的适配上没有做到完全统一,虽然不影响正常的使用,但是对于用户来讲,一个简洁,美观的UI是一个非常重要的部分。由于采用服务器与客户端分离的模式,这使得我们在后续对客户端进行修改,或对后台进行维护更加便捷,数据库采用Mysql不仅能节省更多的成本,同时对于数据库操作学习也是一个很好的机会。在开始这次课题之前,我们只是对某一个小的功能和模块进行学习和研讨,而一个完整的软件开发能够锻炼我们不同模块之前的协调,使得我们对软件整体架构有进一步的了解。毕业设计的过程可以体现出我们对在大学专业课程上学到知识的实际应用。是对大学中学到的专业知识的进一步巩固和提高。在毕业设计开发中,对Java、PHP、服务器管理、Mysql的更深度学习和理解,同时也培养了在遇到问题时,如何查到相关资料,对遇到难题时的方法转换,也更加提高了我对代码的编写能力和阅读能力。在设计过程中遇到的许多困难,但是通过指导老师的指导和网上自主学习的方式,顺利完成了自己的毕业课题的设计。“实践是探究真理的唯一标准”,我们只有把可能上的理论,搬移到实际的设计上,通过对理论知识的理解,变成自己想要的设计,动手尝试才能得到真实的答案。在今后的学习中,更要不断地通过实践来完善充实自己,来提升自己的专业本领,提升自身价值。致谢我在毕业设计及编写论文期间,得到了老师严格、细心的指导。指导老师细心且严格的教学作风使我受益良多。指导老师在系统整体架构、功能设计的把控上给予了非常大的援助,同时向我提供了非常前卫的设计思路,并且在软件程序编写,数据库及服务器搭建上给予了非常大的支持,这对我能够顺利完成毕业设计起到了非常关键的作用。同时也要感谢在这次毕业设计过程中给予我支持的同学,让我在软件编写遇到困难的时候,他们及时的帮助使得我收益匪浅,同时也感受到了团队协助的力量。在三年的大学学习生活中,遇见了许许多多的良师益友他们不仅教会我了学习,教会了我如何做人,大学的生活中不仅仅要学会专业知识,更要学会如何面对将来社会上的困难,再此也感谢母校为我提供了一个良好的学习环境。计算机科技的光速发展,改变了我们的生活。作为一名即将进入社会的大学生,我们应该依靠自己的专业知识,回报社会对自己的抚养,保持常态学习的精神,不断提升自己的能力。参考文献 [1] 黑马程序员.PHP+Mysql动态网站开发[M].北京人民邮电出版社.2022,17-23.[2] 傅伟,黄栗,彭光彬网络服务器配置与管理[M].北京人民邮电出版社.2021,74-91.[3] 王中刚,薛志红,项帅求.服务器虚拟化技术与应用[M].北京人民邮电出版社.2021,32-41.[4] 吕云翔.Android程序设计 [M].北京清华大学出版社.2018,91-107.[5] 张伟华.Android项目开发入门教程 [M].北京人民邮电出版社.2015,54-71.
目录

原文链接:http://www.jxszl.com/jsj/rjgc/607763.html