这是一个高校饮用水配送项目,是一个毕业设计,去年的,包括了服务端和客户端,是一个不错的项目,分享一下:

  

  随着通讯行业的迅猛发展,我国的手机用户也在不断的增加。据信息部的统计数据显示,我国已有接近7.4亿手机用户。随着手机群体的日益壮大,Android系统的出现,给移动互联网时代带来了新的发展。为了适应现代信息时代的需求,采用新信息技术,研究设计了一个基于Android平台的高校饮用水配送管理系统。

  基于Android平台的高校饮用水配送管理系统是手机的一款网络应用软件,目的在于为高校广大学生提供便利,通过手机支付宝或微信进行支付,管理端接收订单,安排派送。这样大大便利了学生的生活。

前面这些废话不多说,直接进入系统开发环节:

一、 系统设计

本节将详细介绍系统的整体设计。

下面是的整体系统架构图

饮水宝主要设计采用滚雪球的开发模式,不多说了。

1 . 用户模块

用户模块的设计思路主要是为了方便用户在线订水而设计,该模块又划分为6个子模块,分别是在线订水、订单查询、信息管理、在线支付、服务评价、查询评论,下面对这几个模块具体介绍:

(1)     在线订水

在线订水主要是为了满足在校大学生可以足不出户就可以完成订水的需求,可以大大方便学生的生活。

(2)     订单查询

订单查询模块,主要是满足用户在线查询自己订单情况,及时掌握预定的桶装水的位置及送达的时间

(3)     信息管理

信息管理模块主要是满足用户修改自己的信息,包括宿舍号,电话号码,密码等等

(4)     在线支付

在线支付模块用于支付订单信息,可以实现交易无纸化,该模块预期完成微信和支付宝两种主流在线支付模式的接口对接

(5)     服务评价

服务评价模块主要是为了方便用户对饮水公司的服务情况进行反馈,一是方便广大用户满足自己发声的需求,另一方面也可以方便饮水公司改进自己的服务质量

(6)     查询评论

查询评论这一模块主要是为了方便用户查看其他用户对饮水公司的评价,以实现消费前货比三家的消费习惯,帮助自己决策是否购买该饮水公司的饮用水。

2. 管理员模块

管理员模块实际上提供给饮水公司使用的模块,通过这个模块,饮水公司可以在线管理订单,及时发水给学生。方便快捷,还可以对库存进行管理。特别方便实用。该模块主要分为管理订单,查看评论,库存管理三个模块,下面分别进行介绍:

(1)     管理订单

管理订单模块主要是为了方便饮水公司在线管理自己的订单,通过管理订单可以做到及时发货,以满足学生们的饮水需求

(2)     查看评论

查看评论模块主要是为了方便饮水公司搜集用户满意度,以给自己做出服务方式转变的决策提供依据,不断提高服务水平。

(3)     库存管理

库存管理模块可以方便饮水公司对自己的库存量进行管理,以满足科学管理,平衡供求关系的目的。

二、系统实现

在系统设计的基础上,下面具体讲解每一个模块的详细实现过程。

  1. 数据库设计与实现

数据库是整个系统的最基础的部分,包括用户信息,订单信息,库存信息,评论信

息等都包含在数据库里面,所以这里首先讲解数据库的设计与实现。

首先是,数据库表的设计:

表1 : User

说明:User表存放的是用户有关信息

列名

类型

是否主键

说明

Id

Int

主键,自动增长

Name

Text

用户登录账户

Pwd

Text

密码

address

Text

地址

Tel

Text

电话

表2 : Dingdan

说明:Dingdan表存放的是订单的信息

列名

类型

是否主键

说明

Id

Int

主键,自动增长

Name

Text

客户

Num

Int

数量

address

Text

地址

Tel

Text

电话

表3 : KuCun

说明:KuCun表放的是有关库存的信息

列名

类型

是否主键

说明

Num

Int

总量

Ok

Int

完好的库存

Old

Int

损坏的库存

表4 : Commnet

说明:Comment存放的是用户评论信息

列名

类型

是否主键

说明

Id

Int

编号

Name

Text

发布评论的人

Content

Text

评论的内容

以上便是数据库的设计,下面介绍一下实现过程,数据库的实现代码位于工程文件的”com.ysb.dao”包下的MyDBHelper.java文件,这里的数据库主要采用Sqlile数据库,是一个轻量级的数据库,使用极为方便,下面简要介绍主要实现代码:

数据库的创建,建立数据库,创建表:

public void onCreate(SQLiteDatabase db) {

//   TODO Auto-generated method stub

db.execSQL("CREATE
  TABLE IF NOT EXISTS COMMENT  (_ID   INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT,CONTENT TEXT,TI TEXT)");

db.execSQL("CREATE   TABLE IF NOT EXISTS USER     (_ID   INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT,PWD TEXT,ADDRESS TEXT,TELEPHONE   TEXT)");

db.execSQL("CREATE   TABLE IF NOT EXISTS DINGDAN  (_ID   INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT,TEL TEXT,ADDRESS TEXT,NUM   TEXT,THETIME TEXT)");

db.execSQL("CREATE   TABLE IF NOT EXISTS YUANGONG (_ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME   TEXT,SEX TEXT,TELEPHONE TEXT)");

}

插入数据,以插入用户数据为例:

public void insertUser(ContentValues   values){

SQLiteDatabase   db=getWritableDatabase();

db.insert("USER",   null, values);

db.close();

}

查询数据,以查询评论信息为例:

public Cursor queryComment(){

SQLiteDatabase   db=getWritableDatabase();

Cursor   c=db.query("COMMENT",null,null,null,null,null,null);

return   c;

}

有了数据库的基础,在接着继续完成其他功能。

  1. 登陆模块实现

登陆模块没有在在整体设计里面体现,因为这个模块式独立于整体,和管理员和用户都有关系,所以在这里单独拿出来进行分析。登陆模块主要是完成登陆的判定,判断用户类型,判断用户密码,用户名是否正确,和数据库的查询链接紧密。下面详细讲解登陆模块的设计,主要分为UI设计和逻辑功能设计

(1)       UI界面设计

设计采用XML分离布局技术,UI设计和逻辑设计分离开来,使得代码更加可控,

下面简要介绍一下界面的代码,以一个按钮为例,由于代码较多,故在后面的模块分析中就不一一展示代码了:

以登陆按钮的控制代码为例:

<LinearLayout

android:id="@+id/btnLayout"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_below="@+id/layout06"

android:layout_marginLeft="10dip"

android:layout_marginRight="10dip"

android:layout_marginTop="10dip"

android:orientation="horizontal" >

<Button

android:id="@+id/loginBtn"

android:layout_width="fill_parent"

android:layout_height="45dip"

android:background="@drawable/button_selector_btn"

android:text="@string/login"

android:textColor="@color/white"

android:textSize="18sp" />

</LinearLayout>

下面是UI设计的效果图:

逻辑设计,

首先判断用户类型,在通过数据库查询是否是合法用户,确保其通过。下面是实现代码:

@Override

public   void onClick(View arg0) {

//   TODO Auto-generated method stub

String   mStr_name =    userName.getText().toString();

String   mStr_pwd  =  userPwd.getText().toString();

User   user        =    User.getInstance(mStr_name,mStr_pwd);

//查询是否有这个用户

//MyDBHelper   helper=new MyDBHelper(this);

if(mStr_name.equals("admin")   && mStr_pwd.equals("admin")){

Intent   intent=new Intent(getApplicationContext(),AdminMainActivity.class);

user.setName("管理员");

startActivity(intent);

}else{

Cursor   c = helper.queryUser();

if(c.moveToFirst()){

for(int   i=0;i<c.getCount();++i){

c.move(i);

String   name=c.getString(1);

String   pwd=c.getString(2);

if(mStr_name.equals(name)&&mStr_pwd.equals(pwd)){

//登陆成功

//写入用户信息

user.setName(name);

user.setAddress(c.getString(3));

user.setTelephone(c.getString(4));

Toast.makeText(getApplicationContext(),   "登陆成功", Toast.LENGTH_SHORT).show();

Intent   intent=new Intent(getApplicationContext(), UserActivity.class);

startActivity(intent);

finish();

return;

}else{

//Toast.makeText(getApplicationContext(),   "登陆失败", Toast.LENGTH_SHORT).show();

}

}

}

Toast.makeText(getApplicationContext(),   "登陆失败,用户名或密码错误", Toast.LENGTH_SHORT).show();

}

//Toast.makeText(getApplicationContext(),   "登陆失败", Toast.LENGTH_SHORT).show();

}

2 . 用户模块

用户模块的设计思路主要是为了方便用户在线订水而设计,该模块又划分为6个子模块,分别是在线订水、订单查询、信息管理、在线支付、服务评价、查询评论,下面对这几个模块具体介绍:

(1)     在线订水

在线订水主要是为了满足在校大学生可以足不出户就可以完成订水的需求,可以大大方便学生的生活。

UI设计:

逻辑设计:

将订单存放到数据库之中:

ublic class ApplyWaterActivity   extends AbActivity {

private   EditText userName = null;

private   EditText waterNum = null;

private   EditText userAddress=null;

private   EditText userTel=null;

private   EditText userTime=null;

private   Button btnYD=null;

private   MyDBHelper helper=null;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setAbContentView(R.layout.applywater);

//application =   (MyApplication)abApplication;

this.setTitleText("当前用户:"+User.getInstance().getName());

this.setLogo(R.drawable.button_selector_back);

this.setTitleLayoutBackground(R.drawable.top_bg);

this.setTitleTextMargin(10,   0, 0, 0);

this.setLogoLine(R.drawable.line);

helper=new   MyDBHelper(getApplicationContext());

userName=(EditText)findViewById(R.id.userNameapply);

userTel=(EditText)findViewById(R.id.userTelapply);

userAddress=(EditText)findViewById(R.id.userAddressapply);

waterNum=(EditText)findViewById(R.id.userNumapply);

userTime=(EditText)findViewById(R.id.userNumapplytime);

btnYD=(Button)findViewById(R.id.Btnapply);

btnYD.setOnClickListener(new   View.OnClickListener() {

@Override

public   void onClick(View arg0) {

//   TODO Auto-generated method stub

ContentValues   cv=new ContentValues();

cv.put("name",   userName.getText().toString());

cv.put("tel",   userTel.getText().toString());

cv.put("address",   userAddress.getText().toString());

cv.put("num",   waterNum.getText().toString());

cv.put("thetime",   userTime.getText().toString());

helper.insertDingdan(cv);

Toast.makeText(getApplicationContext(),   "预定成功,请支付", Toast.LENGTH_SHORT).show();

finish();

}

});

}

}

(2)     订单查询

订单查询模块,主要是满足用户在线查询自己订单情况,及时掌握预定的桶装水的位置及送达的时间

UI设计:

订单查询模块在UI设计上采用白班,在逻辑代码中动态加载,因为订单可以有,也可以没有,故直接介绍逻辑设计

逻辑设计:

订单查询这一项是将数据从数据库中取出来,展示到界面中,供用户查询,采用了List链表的数据结构,所以看到的结果是一个列表,主要实现代码如下:

//查看所有订单

public class LookDDActivity   extends AbActivity{

private   MyDBHelper helper=null;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setAbContentView(R.layout.main);

this.setTitleText("当前用户:"+User.getInstance().getName());

this.setLogo(R.drawable.button_selector_back);

this.setTitleLayoutBackground(R.drawable.top_bg);

this.setTitleTextMargin(10,   0, 0, 0);

this.setLogoLine(R.drawable.line);

helper=new   MyDBHelper(getApplicationContext());

//获取ListView对象

ListView mListView =   (ListView)this.findViewById(R.id.mListView);

//ListView数据

List<Map<String,   Object>> list = new ArrayList<Map<String, Object>>();

Map<String,   Object> map = new HashMap<String, Object>();

Cursor c =   helper.queryDingdan();

if(c.moveToFirst()){

for(int   i=0;i<c.getCount();++i){

c.move(i);

int   id=c.getInt(0);

String   name=c.getString(1);

String   tel=c.getString(2);

String   address=c.getString(3);

int   num=c.getInt(4);

String   time=c.getString(5);

map   = new HashMap<String, Object>();

map.put("itemsIcon",R.drawable.tong);

map.put("itemsTitle",   "订单"+id);

map.put("itemsText",   "订单者:"+name+"\n电话:"+tel+"\n地址:"+address+"\n数量:"+num+"桶"+"\n送水时间:"+time);

list.add(map);

}

}

//使用自定义的Adapter

MyListViewAdapter   myListViewAdapter = new MyListViewAdapter(this, list,R.layout.list_items,

new   String[] { "itemsIcon",   "itemsTitle","itemsText" }, new int[] { R.id.itemsIcon,

R.id.itemsTitle,R.id.itemsText   });

mListView.setAdapter(myListViewAdapter);

}

}

(3)     信息管理

信息管理模块主要是满足用户修改自己的信息,包括宿舍号,电话号码,密码等等,

UI设计:

信息修改由于和注册界面有很大的相似度,故直接沿用注册界面的UI代码,做到了代码复用,大大提高了开发效率。

逻辑设计:

在信息管理模块中,将用户信息从数据库中取出,展示到界面中,然后用户修改之,点击确认修改,即可将更新的数据放入数据库,主要代码如下:

public class ModifyInfoActivity   extends AbActivity{

private   EditText userName = null;

private   EditText userPwd = null;

private   EditText userAddress=null;

private   EditText userTel=null;

private   Button btnRegister=null;

private   MyDBHelper helper=null;

private   TextView textView=null;

private   User user;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setAbContentView(R.layout.register);

this.setTitleText("当前用户:"+User.getInstance().getName());

this.setLogo(R.drawable.button_selector_back);

this.setTitleLayoutBackground(R.drawable.top_bg);

this.setTitleTextMargin(10,   0, 0, 0);

this.setLogoLine(R.drawable.line);

helper=new MyDBHelper(this);

user=User.getInstance();

userName=(EditText)findViewById(R.id.userNameRegister);

userPwd=(EditText)findViewById(R.id.userPwdRegister);

userAddress=(EditText)findViewById(R.id.userAddressRegister);

userTel=(EditText)findViewById(R.id.userTelRegister);

btnRegister=(Button)findViewById(R.id.BtnRegister);

textView=(TextView)findViewById(R.id.registerTitle);

textView.setText("用户信息修改");

btnRegister.setText("确认修改");

userName.setText(user.getName());

userPwd.setText(user.getPassword());

userAddress.setText(user.getAddress());

userTel.setText(user.getTelephone());

//

btnRegister.setOnClickListener(new   View.OnClickListener() {

@Override

public   void onClick(View arg0) {

//   TODO Auto-generated method stub

ContentValues   cv=new ContentValues();

cv.put("name",   userName.getText().toString());

cv.put("pwd",   userPwd.getText().toString());

cv.put("address",   userAddress.getText().toString());

cv.put("telephone",   userTel.getText().toString());

helper.updateUser(cv);

Toast.makeText(getApplicationContext(),   "信息修改成功", Toast.LENGTH_SHORT).show();

finish();

}

});

}

}

(7)     在线支付

在线支付模块用于支付订单信息,可以实现交易无纸化,该模块预期完成微信和支付宝两种主流在线支付模式的接口对接,这里调用的是支付宝盒微信的接口,直接利用现有接口,大大减轻了开发难度,下面是效果:

(8)     服务评价

服务评价模块主要是为了方便用户对饮水公司的服务情况进行反馈,一是方便广大用户满足自己发声的需求,另一方面也可以方便饮水公司改进自己的服务质量,在这一章中,和之前的设计思路相似,这里只展示部分逻辑代码:

ListView mListView =   (ListView)this.findViewById(R.id.mListView);

//ListView数据

List<Map<String,   Object>> list = new ArrayList<Map<String, Object>>();

Map<String,   Object> map = new HashMap<String, Object>();

Cursor c =   helper.queryComment();

if(c.moveToFirst()){

for(int   i=0;i<c.getCount();++i){

c.move(i);

String   name=c.getString(1);

String   content=c.getString(2);

map   = new HashMap<String, Object>();

map.put("itemsIcon",R.drawable.image_bg);

map.put("itemsTitle",   "评论人"+name);

map.put("itemsText",   "内容:"+content);

list.add(map);

}

}

//使用自定义的Adapter

MyListViewAdapter   myListViewAdapter = new MyListViewAdapter(this, list,R.layout.list_items,

new   String[] { "itemsIcon",   "itemsTitle","itemsText" }, new int[] { R.id.itemsIcon,

R.id.itemsTitle,R.id.itemsText   });

mListView.setAdapter(myListViewAdapter);

(9)     查询评论

查询评论这一模块主要是为了方便用户查看其他用户对饮水公司的评价,以实现消费前货比三家的消费习惯,帮助自己决策是否购买该饮水公司的饮用水。在这一个模块里面和订单查询的设计思路基本一致,不在做过多介绍

2. 管理员模块

管理员模块实际上提供给饮水公司使用的模块,通过这个模块,饮水公司可以在线管理订单,及时发水给学生。方便快捷,还可以对库存进行管理。特别方便实用。该模块主要分为管理订单,查看评论,库存管理三个模块,由于管理员模块和用户模块有很多相似的地方,故这里就只做简要介绍,不再展示代码了。

(4)     管理订单

管理订单模块主要是为了方便饮水公司在线管理自己的订单,通过管理订单可以做到及时发货,以满足学生们的饮水需求

(5)     查看评论

查看评论模块主要是为了方便饮水公司搜集用户满意度,以给自己做出服务方式转变的决策提供依据,不断提高服务水平。

(6)     库存管理

库存管理模块可以方便饮水公司对自己的库存量进行管理,以满足科学管理,平衡供求关系的目的。

系统测试

软件测试的目的主要是测试软件的界面是否与设计的效果吻合、运行效果是否良好、功能是否完善、性能是否稳定。软件的测试内容主要包括功能测试、兼容性测试两项。

测试环境如表所示。

测试环境表

软件环境(相关软件、操作系统等)

操作平台:Windows 7

JDK:1.7

Android   SDK:2.3

编程软件:Eclipse KEPLER

硬件环境(网络、设备等)

手机:HTC g14

内存:512M

系统:Android 2.3.2

驱动:HTC g14手机驱动

硬件:带有USB2.0接口的台式一台、装有Android4.0系统的魅族M9手机一部、USB线一根,手机USB接口与电脑的USB接口通过USB保持线相连并处于同步状态。

软件:Eclipse KEPLER、Android ADT 17集成开发环境、Android 2.3 SDK、HTC g14手机驱动。

在电脑系统调试状态,可以使电脑与HTC g14手机连接后保持同步。通过Eclipse中DDMS的Device可以对软件的运行画面截屏,通过集成环境的LogCat可以对软件的运行情况进行分析。

功能测试

功能测试也叫黑盒测试或数据驱动测试,只需考虑各个功能,不需要考虑整个软件程序的内部结构及代码,一般从软件的界面、架构出发,编写测试用例进行操作,在预期结果和实际结果之间进行评测,进而提出更改策略,使产品达到软件说明书定义的要求。

软件的功能测试需要测试软件的功能是否完整、各项功能是否与预期相符等。功能测试如表所示

测试目标

通过测试达到以下目标:

测试软件是否达到设计的要求,包括各功能模块是否已实现,业务流程是否正确。

系统运行是否稳定,性能是否在可接受范围。

测试范围

在需求中明确给出的功能模块。

技术

通过设计测试用例,采用黑盒测试执行各个用例来进行测试。

开始标准

用户开启高校饮用水配送管理系统主界面,正常进行使用

完成标准

功能流程及操作使用达到预期设计标准。

测试重点和优先级

测试重点:软件兼容性和数据库数据。

优先级:软件兼容性>数据库数据>其他功能

需考虑的特殊事项

运行时是否出现异常退出情况

主要对软件的运行环境和功能进行了测试,通过测试,证明软件运行良好,与预期基本相符。

以上是论文截取部分比较关键内容:

勤拂拭软件出品,必属精品

软件开发,毕业设计,程序作业,请访问勤拂拭毕业设计:

勤拂拭软件

我的qq(1215714557 加好友请注明:勤拂拭)

qq群(439261058 加群请注明:勤拂拭)

基于Android的高校饮水宝app的更多相关文章

  1. 开发一个基于 Android系统车载智能APP

    很久之前就想做一个车载相关的app.需要实现如下功能: (1)每0.2秒更新一次当前车辆的最新速度值. (2)可控制性记录行驶里程. (3)不连接网络情况下获取当前车辆位置.如(北京市X区X路X号) ...

  2. 基于Android开发的天气预报app(源码下载)

    原文:基于Android开发的天气预报app(源码下载) 基于AndroidStudio环境开发的天气app -系统总体介绍:本天气app使用AndroidStudio这个IDE工具在Windows1 ...

  3. 如何获取应用宝APP ID

    二百二维码支持绑定应用宝ID后,android 扫码下载后,微信直接下载APP,不打开应用宝页面,非常方便APP进行推广 那如何获取应用宝APP ID呢, 请参考下面的教程    一, 打开http: ...

  4. 基于Android Studio搭建hello world工程

    基于Android Studio搭建hello world工程 版本:ANDROID STUDIO V0.4.6 This download includes: ·        Android St ...

  5. 基于Android 4.4 开发的多窗体系统 开放源代码

    Hi, 这是我基于Android 4.4开发的多窗体系统,还有非常多不足,还请多多不吝赐教啊,代码已经所有开源. 视频地址 源代码地址 Done: 1. APP以窗体化显示 在 PhoneWindow ...

  6. Android开发自学笔记(基于Android Studio1.3.1)—1.环境搭建(转)

    一.引言    本套学习笔记的开发环境是Windows 10 专业版和Android Studio 的最新版1.3.1. Android Studio 是一个Android开发环境,基于Intelli ...

  7. 【毕业设计】基于Android的家校互动平台开发(内含完整代码和所有文档)——爱吖校推(你关注的,我们才推)

    ☆ 写在前面 之前答应大家的毕业答辩之后把所有文档贡献出来,现在答辩已过,LZ信守承诺,把所有文档开源到了GitHub(这个地址包含所有的代码和文档以及PPT,外层为简单的代码).还望喜欢的朋友们,不 ...

  8. 基于Android的模拟点击探索

    前言 压力测试中,一般会用到自动化测试.准备写一个APP,可以记录屏幕上的点击事件,然后通过shell命令来模拟自动执行.shell指令,比较容易实现.那么,关键的一步是获取点击的坐标.对于Andro ...

  9. 基于android的天气预报的设计与实现

    目录 应用开发技术及开发平台介绍 应用需求分析 应用功能设计及其描述 应用UI展示 ①开发技术: 本系统是采用面向对象的软件开发方法,基于Android studio开发平台,以Android作为本系 ...

随机推荐

  1. Linux下关闭Tomcat残留线程

    ps -ef | grep tomcat kill -9 {pid}

  2. Java 多线程 从无到有

    个人总结:望对屏幕对面的您有所帮助 一. 线程概述 进程: 有独立的内存控件和系统资源 应用程序的执行实例 启动当前电脑任务管理器:taskmgr 进程是程序(任务)的执行过程,它持有资源(共享内存, ...

  3. RAID 损坏后如何对物理硬盘做完整镜像

    "磁盘阵列是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能.利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上." ...

  4. 腾讯云服务器上安装phstudy和lnmp

    phpstudy的安装:wget -c http://lamp.phpstudy.net/phpstudy.bin chmod +x phpstudy.bin #权限设置./phpstudy.bin ...

  5. C语言学习(二)

    今天在程序员面试题中,碰到一个有意思的题目:数组a[N],存放了1至N-1个数,其中某个数重复一次,现在要求找出重复的数字且程序时间复杂度必须为O(N).乍一看,如果不计时间复杂度和空间复杂度程序比较 ...

  6. 新概念英语(1-105)Full Of Mistakes

    Lesson 105 Full of mistakes 错误百出 Listen to the tape then answer this question. What was Sandra's pre ...

  7. redux的使用过程

    1.redux是react的状态管理工具,可以用来存放公共数据,因此也可用来作为组件间参数传递的方法.   2.组件传参,需要有一个公共的父组件.在父组件中引入Provider.通过Provider将 ...

  8. My97设置开始、结束 时间区间及输入框不能输入只能选择的方法

    时间区间开始: <input type="text" id = "first_time" name="first_time" valu ...

  9. 证明二叉查找树所有节点的平均深度为O(logN)

    数据结构与算法分析(c语言描述)第4章 P78 概念一:一棵树所有节点的深度和称为内部路径长 令D(N)为一棵有N节点的树的内部路径长么,即有D(1)=0, 设一棵树的左子树的内部路径长为D(i),则 ...

  10. window7下配置python2.7+tornado3.3开发环境

    发现之前写太繁琐..这里分享下同学的方法 1,安装 Python 2.7.x 版本地址:https://www.python.org/downloads/release/python-278/2,安装 ...