课程设计报告

 

题    目 基于Android的云通讯录

系    别 信息与控制工程系

专    业 计算机科学与技术

班    级 1701

学    号 173230101

姓    名 丁海洋

指导教师 郭丹

目录

基于android的云通讯录系统设计与实现 3

1.1 系统需求分析 3

1.1.1 用例分析 3

1.   用例名称:登录  3

2. 用例名称:注册  4

3.   用例名称:添加 4

4. 用例名称:查询 4

5.   用例名称:搜索 4

6. 用例名称:修改  4

7.   用例名称:删除 4

1.1.2 数据逻辑模型 4

1.2 系统总体设计 5

1.3 系统数据库设计 5

1.4 系统详细设计 5

1.5 系统实现 8

添加模块 9

查询模块 11

修改模块 12

删除模块 14

搜索模块 16

1.6 系统测试 17

(1) 号码输入错误测试 17

(2) 删除数据测试 18

(3)按名称搜索测试 18

2.1技术说明 19

2.2清单文件 19

2.3总结 20

基于android的云通讯录系统设计与实现

1.1 系统需求分析

当今时代,计算机已经成为人们生活中不可或缺的一部分,它打破了地域时间限制,改变了人们的工作和生活方式。人们之间的联系越来越便捷,这就使得要经常与很多人保持着联系,而单纯依靠人脑已经很难记住所有人的联系方式还有其各做附加信息。云通讯录能方便用户的需求,满足用户迅速、准确的查找修改或者删除联系人信息,把各个联系人信息以文件保存。此系统的主要管理的信息由:联系人的姓名、性别、电话号码、地址、邮箱、QQ号码,要求能实现通讯录管理系统中的增加信息,删除信息,显示通讯里的所有信息,按名字查询信息,保存通讯录,退出系统。

1.1.1 用例分析

  1. 用例名称:登录 

 用例描述:用于用户登录

  1. 用例名称:注册 

 用例描述:用于用户注册

  1. 用例名称:添加

 用例描述:用于用户添加联系人

  1. 用例名称:查询

 用例描述:用于用户查询所有联系人

  1. 用例名称:搜索

 用例描述:用于用户搜索特定联系人

  1. 用例名称:修改 

 用例描述:用于用户修改联系人信息

  1. 用例名称:删除

 用例描述:用于用户删除联系人信息

1.1.2 数据逻辑模型

1.2 系统总体设计

本云通讯录具有五个功能:搜索、查询、添加、修改、删除。

搜索:对已录入的联系人进行按名称进行精确查找。

查询:对已录入的联系人进行所有查询。

添加:添加联系人的姓名、号码、地址、其他信息。

修改:对以录入的联系人的姓名、号码、地址、其他信息进行修改。

删除:对以录入的联系人信息进行整体的删除。

1.3 系统数据库设计

根据前面E-R图设计出实现系统功能所需要的数据库表的结构,并以表格的形式列出每一个数据库表的表结构,即字段名、类型、长度、小数位数、是否主键、索引、是否允许为空、说明等。并介绍表与表之间的逻辑关系。如表3.1所示:

表1.3数据库表结构


字段名


数据类型


长度


主键


索引


外键


可空


说明


_qq


Varchar


20





QQ帐号


_name


Char


8





姓名


_number


Varchar


11





号码


_mail


Varchar


20





邮箱


_dizhi


Char


20





地址

1.4 系统详细设计

界面实现

<?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"

android:background="@drawable/android">

<TableLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

>

<TableRow

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:gravity="center"

>

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_marginLeft="60dp"

android:textSize="30sp"

android:text=" 云通讯录"

/>

</TableRow>

<TableRow

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<Button

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:layout_marginLeft="50dp"

android:textSize="24sp"

android:text="添加联系人"

android:id="@+id/addMember"

/>

</TableRow>

<TableRow

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<Button

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:textSize="24sp"

android:layout_marginLeft="50dp"

android:text="查看所有看联系人"

android:id="@+id/queryAllMember"

/>

</TableRow>

<TableRow

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<Button

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:textSize="24sp"

android:layout_marginLeft="50dp"

android:text="搜索联系人"

android:id="@+id/queryMember"

/>

</TableRow>

<TableRow

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<Button

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:textSize="24sp"

android:layout_marginLeft="50dp"

android:text="修改联系人"

android:id="@+id/modifyMember"

/>

</TableRow>

<TableRow

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<Button

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:textSize="24sp"

android:layout_marginLeft="50dp"

android:text="删除联系人"

android:id="@+id/deleteMember"

/>

</TableRow>

</TableLayout>

</LinearLayout>

1.5 系统实现

管理模块

管理模块一个有五个主要的功能:搜索、查询、添加、修改、删除某个联系人所有信息。

添加模块

点击添加按钮,服务器进入一个添加界面,在填写完想要添加的一个联系人的信息后,之后点击添加按钮,访问数据库并输出此联系人所对应的个人信息。

public void onClick(View v) {

nam= name.getText().toString().trim();

addre=address.getText().toString().trim();

phonum=phonenum.getText().toString().trim();

qqnu=qqnum.getText().toString().trim();

emai=email.getText().toString().trim();

// TODO Auto-generated method stub

ContentValues members=new ContentValues();

if(nam.length()>0){

members.put("name",nam);

}

else{

Toast.makeText(AddMember.this, "名字不能为空!", Toast.LENGTH_LONG).show();

flag=false;

}

if(radioMale.isChecked()){

members.put("sex", "男");

}

else{

members.put("sex", "女");

}

members.put("address", addre);

if(phonum.length()>0){

if(isPhoneNumberValid(phonum)){

members.put("phonenum", phonum);

}

else{

Toast.makeText(AddMember.this, "电话号码格式不正确!"+"\n"+"例如:1234-12345678:123-1234-1234", Toast.LENGTH_LONG).show();

flag=false;

}}

else{

Toast.makeText(AddMember.this, "电话号码不能为空!", Toast.LENGTH_LONG).show();

flag=false;

}

if(qqnu.length()>0){

if(!isNum(qqnu)){

Toast.makeText(AddMember.this, "QQ格式不正确!", Toast.LENGTH_LONG).show();

flag=false;

}

}

members.put("qqnum", qqnu);

if(emai.length()>0){

if(!isEmail(emai)){

Toast.makeText(AddMember.this, "Email格式不正确!", Toast.LENGTH_LONG).show();

flag=false;

}

}

members.put("email",emai);

if(flag){

DBHelper dbhelper=new DBHelper(getApplicationContext());

dbhelper.insert(members);

Toast.makeText(AddMember.this, "保存成功!", Toast.LENGTH_LONG).show();

finish();

Intent intent=new Intent(AddMember.this,ContactsActivity.class);

startActivity(intent);}

}

});

查询模块

点击查询按钮,服务器进入一个查询界面,服务器会将在界面显示所有联系人。

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.showmember);

name=(EditText) findViewById(R.id.name);

radioMale=(RadioButton) findViewById(R.id.radioMale);

radioFemale=(RadioButton) findViewById(R.id.radioFemale);

address=(EditText) findViewById(R.id.address);

phonenum=(EditText) findViewById(R.id.phonenum);

qqnum=(EditText) findViewById(R.id.qqnum);

email=(EditText) findViewById(R.id.email);

Intent intent=getIntent();

Bundle data=intent.getExtras();

List<Map<String, String>> list = (List<Map<String, String>>)data.getSerializable("data");

name.setText(list.get(0).get("name"));

String sexs=list.get(0).get("sex");

修改模块

点击修改按钮,服务器进入一个修改界面,点击想要修改的联系人,修改联系人信息,之后点击修改按钮,服务器会将数据插入到数据库中,如果插入成功会在界面显示修改成功!

public void onClick(View arg0) {

// TODO Auto-generated method stub

nam= name.getText().toString().trim();

addre=address.getText().toString().trim();

phonum=phonenum.getText().toString().trim();

qqnu=qqnum.getText().toString().trim();

emai=email.getText().toString().trim();

DBHelper dbhelper=new DBHelper(getApplicationContext());

ContentValues members=new ContentValues();String whereClause;String[] whereArgs={id};

whereClause="_id=?";

if(nam.length()>0){

members.put("name",nam);

}

else{

Toast.makeText(AfterModifyMember.this, "名字不能为空!", Toast.LENGTH_LONG).show();

flag=false;

}

if(radioMale.isChecked()){

members.put("sex", "男");

}

else{

members.put("sex", "女");

}

members.put("address", addre);

if(phonum.length()>0){

if(isPhoneNumberValid(phonum)){

members.put("phonenum", phonum);

}

else{

Toast.makeText(AfterModifyMember.this, "电话号码格式不正确!"+"\n"+"例如:1234-12345678:123-1234-1234", Toast.LENGTH_LONG).show();

flag=false;

}}

else{

Toast.makeText(AfterModifyMember.this, "电话号码不能为空!", Toast.LENGTH_LONG).show();

flag=false;

}

if(qqnu.length()>0){

if(!isNum(qqnu)){

Toast.makeText(AfterModifyMember.this, "QQ格式不正确!", Toast.LENGTH_LONG).show();

flag=false;

}

}

members.put("qqnum", qqnu);

if(emai.length()>0){

if(!isEmail(emai)){

Toast.makeText(AfterModifyMember.this, "Email格式不正确!", Toast.LENGTH_LONG).show();

flag=false;

}

}

members.put("email",emai);

if(flag){

dbhelper.update(members, whereClause, whereArgs);

Toast.makeText(AfterModifyMember.this, "修改成功!", Toast.LENGTH_LONG).show();

finish();

Intent intent=new Intent(AfterModifyMember.this,ContactsActivity.class);

startActivity(intent);}

}

});

 

删除模块

 

点击删除按钮,服务器进入一个删除界面,点击想要删除的联系人信息之后点击删除按钮,服务器会将数据从数据库中删除。

public void onItemClick(AdapterView<?> arg0, View view,

int position, long arg3) {

HashMap<String,String> map=(HashMap<String,String>)listView.getItemAtPosition(position);

id=map.get("id");

String name=map.get("name");

String sexs=map.get("sex");

String address=map.get("address");

String phonenum=map.get("phonenum");

String qqnum=map.get("qqnum");

String emails=map.get("email");

String message="";

message="姓名:"+name+","+"性别:"+sexs+"\n"+"地址:"+address+"\n"+"电话:"+phonenum+","+"\n"+""+"QQ:"+qqnum+","+"\n"+"Email:"+emails;

// TODO Auto-generated method stub

new AlertDialog.Builder(DeleteMember.this)

.setTitle("确认删除")

.setMessage(message)

.setPositiveButton("是", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

DBHelper dbHelper=new DBHelper(DeleteMember.this);

dbHelper.delete(Integer.parseInt(id));

Toast.makeText(DeleteMember.this, "删除成功!",Toast.LENGTH_LONG).show();

finish();

Intent intent=new Intent(DeleteMember.this,DeleteMember.class);

startActivity(intent);

//listView.postInvalidate();

}

})

.setNegativeButton("否",null)

.show();

}

});

 

搜索模块

 

点击搜索按钮,服务器会按照姓名在数据库中进行查找,点击后,想要搜索的联系人会弹出点击姓名可查看联系人信息。

public class DBHelper extends SQLiteOpenHelper{

private static final String DBName="contacts.db";

private static final String TALNmae="member";

private static final String CreateTAL="create table member(_id integer primary key autoincrement,name varchar(50),sex varchar(2),address varchar(200),phonenum varchar(200),qqnum varchar(20),email varchar(50))";

private SQLiteDatabase db;

public DBHelper(Context context) {

super(context, DBName, null, 1);

// TODO Auto-generated constructor stub

}

@Override

public void onCreate(SQLiteDatabase db) {

// TODO Auto-generated method stub

this.db=db;

db.execSQL(CreateTAL);

}

public void insert(ContentValues contentvalues){

db=getWritableDatabase();

db.insert(TALNmae, null, contentvalues);

db.close();

}

public Cursor query(){

db=getReadableDatabase();

Cursor cursor=db.query(TALNmae, null, null, null, null, null, null);

return cursor;

 

1.6 系统测试

(1)号码输入错误测试

(2)删除数据测试

(3)按名称搜索测试

2.1技术说明


主要使用技术


使用地方


ListView


联系人列表


SQLite数据库


联系人信息


Activity组件的应用


主要界面


拨号权限


拨打电话

2.2清单文件

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="contacts.contacts"

android:versionCode="1"

android:versionName="1.0" >

<uses-sdk android:minSdkVersion="7" />

<application

android:icon="@drawable/ic_launcher"

android:label="@string/app_name" >

<activity

android:name=".ContactsActivity"

android:icon="@drawable/icon"

android:label="@string/app_name" >

</activity>

<activity android:name=".AddMember"></activity>

<activity android:name=".queryMember"></activity>

<activity android:name=".ShowMember"></activity>

<activity android:name=".QueryAllMember"></activity>

<activity android:name=".DeleteMember"></activity>

<activity android:name=".ModifyMember"></activity>

<activity android:name=".AfterModifyMember"></activity>

<activity android:name=".regist"></activity>

<activity android:name=".home">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application>

<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>

</manifest>

2.3总结

通过这一阶段的学习,我对这个通讯录管理系统有了一定的了解。我的项目设计主要是面向云通讯录,首先我们做的是通讯录的登录界面,其次还有添加信息、修改信息、修改、注册等界面。在课程设计中,程序设计主要的是采用Android,数据的存储采用连接数据库的方式.程序设计后通过运行调试,基本上可以实现解决通讯管理问题.在项目实施的过程中,首先对项目进行了整体规划。然后进行完成项目规划,然后进行整合。在老师的细心教导和积极指导下,首先是将所有的界面做好,然后就是开始编写代码。在整个项目实施过程中。积极处理各种在项目中遇到的问题,自己解决不了的就寻求帮助,整个项目完成。

原文地址:https://www.cnblogs.com/DOCEAN/p/11993239.html

时间: 2024-08-29 10:00:02

课程设计报告的相关文章

计算机组成原理 课程设计报告

        计算机组成原理 课程设计报告      成员:许恺   2014011329          胡强勇  2014011315     时间:2016.12.20                 一.简要总结计算机组成原理实验 计算机组成原理实验总共五个实验,首先我们熟悉了教学机的使用方法,后面的实验我们分为运算器.存储器.控制器,控制器分为两次实验.紧接的第二次实验我们就进行了运算器的实验,对运算器的内部构造极其原理进行了验证理解,在这里我们学习了运算器ALU的8种运算功能,以

Java实验-课程设计报告一:个人银行账户管理系统SavingAccountManageSystem-具体文档+源码

课程设计报告一:个人银行账户管理系统 此文档及源码仅供参考 不得直接复制使用 author: [xxxxxxxxx xx xxxx] date: "2019-04-12" 作 者:31415926535x 出 处:https://www.cnblogs.com/31415926535x/p/10697659.html 版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本. 不建议直接复制文档.源码,没意义,这东西还是自己手敲一下才能涨经验 项目所有的内容都已上

2019春 第三次课程设计报告

2019春 第三次课程设计报告 一,实验项目名称 利用easyX插件完成的时钟 二,实验项目功能描述 实现将时间显示为时钟 三,项目模块结构介绍 只有一个游戏主题,即时钟.cpp 四,实现界面展示 五,代码托管链接 https://gitee.com/zhuwanxing/zwxc 六,实验总结 这次是使用vs,用easyX插件来完成图像显示,在使用vs的时候出现了不少问题,但是都用百度搞定了,vs无法直接使用,要在调试-属性-c/c++-预处理器 输入 _CRT_SECURE_NO_WARNI

校园宿舍管理系统课程设计报告

课程设计报告 学    号   201610411418  /  2016104114122 姓    名   吴帝勇 /谢志良 班    级   16计科4班 题    目   校园宿舍管理系统 授课老师    袁飞 目录 第一章系统概述..............................................................................................................................1 1.

软件课程设计报告

南 京 理 工 大 学 课程设计说明书 组员 : 刘雨薇 学 号: 914106840606   张钰 914106840310   张欢欢 914106840509   彭姿容 914106840501 学院(系): 计算机科学与工程学院 专业 计算机科学与技术专业 题目 计算机网络课程测试系统       2016 年   11 月 目录 一.概述 ·················································3 二.需求分析···············

南理工14级第4组软件课程设计报告

南 京 理 工 大 学 课程设计说明书 作  者: 高明 学 号: 914106840518   刘建平   914106840526   王金   914106840234   王琪栋   914106840235   雷杨   914106840618 学院(系): 计算机科学与技术学院 专  业: 计算机科学与技术 题  目: 离散课程练习测验系统   2016年    10月 目录 一.概述 ················································

.NET课程设计报告

一.设计题目: 公司员工管理系统 二.设计意义: 通过此次课程设计,让我们进一步了解c#应用程序开发的过程,同时也让我们对前面所学的知识付出实践,达到熟练掌握.综合性应用的目的. 三.设计内容: 1.项目分析: 1) 员工信息管理 2) 员工考勤管理 2.项目设计 首先,我们必须建立一个登录系统和八个子系统. 登录系统:用户在登陆后可以进行权限操作管理. 员工信息管理系统:对员工信息进行查询.修改.添加.删除. 员工考勤管理系统:对员工考勤信息进行查询.修改.添加.删除. 使用SQL SERVE

在线抢购平台_课程设计报告

第1章 概述 1.1 课程设计的核心任务 需求分析.可行性分析.E-R图.关系图.系统架构图等的编写 总体设计.详细设计.代码实现 项目测试 本系统: 后端采用SSM(Spring+SpringMVC+MyBatis)的架构,实现RESTful API 接口,前端采用react进行前后端分离设计,完成商品在线系统. 1.2 课程设计工作进程 已经完成,用户登录注册,商品的添加,活动促销的添加,商品的查看与秒杀. 后续继续完成,订单页面的优化与完成,针对高并发下单任务的处理,针对用户重复秒杀商品的

智能菜谱课程设计报告

一.系统需求分析 3 1.概述 随着智能手机的普及,基于Android平台的应用软件需求也越来越多.针对传统订餐模式中餐馆工作人员重复劳动量大.消费者在不熟悉地区难以寻找适合自己的餐馆.必须要进入到餐馆内才可以浏览菜单开始点餐以及物理菜单不能及时更新更不能反映菜品的评价等缺点,提出基于Android平台的智能菜谱系统的设计和实现解决方案.阐述了系统的设计思想.开发模型.主要功能模块以及关键技术的设计与实现. 2.需求用例图  3.用例分析 (1)用例名称:今日推荐 说明:每进一次首页都会推荐 不