通讯录管理

课程设计报告

基于JavaEE的个人通信录管理系统开发学号:

姓名:

专业:

日期:年月日

报告目录

1. 课程设计内容与要求(P2)

2. 程序设计报告

2.1 总体设计(P3-P5)

2.2 数据库设计(P6)

2.3 详细设计(P7-P9)

3. 测试报告(P10)

4. 结论(P11)

5. 源程序附录(P12-28)

1.课程设计内容与要求

采用JavaEE技术开发实现一个简单的个人通信录管理系统软件。该软件工作于B/S方式,可为多个用户提供个人通信录管理服务。

系统主要功能包括:

(1)用户登录及退出登录;

(2)登录用户编辑个人通信录(增、删、改);

(3)登录用户查询通信录(输入姓名或姓名的单字拼音首字母查询)。

系统性能要求:

(1)操作界面美观;

(2)编辑通信录时,要求以5个记录为一组分页实现显示;

(3)查询失败、登录成功、退出登录、未登录访问等应有相应提示信息;

(4)个人通信录应至少包含姓名、性别、手机号三个信息;

(5)安全性:登录要求输入验证码;登录密码要求采用MD5加密传输及数据

库存储;个人通信录编辑与查询功能仅成功登录用户可访问。

基本数据量要求:

(1)用户数不少于3人(采用数据库预置用户名和登录密码方式初始化);

(2)平均每个用户的通信录记录数不少于10条(至少有一个用户的通信录记

录数不少于20条)。

开发平台与技术要求:

(1)数据库采用SQL-Server或MySQL;

(2)采用HTML/JavaScript/JSP;

(3)可选用Ajax/Struts2/Hibernate。

2.程序设计报告

2.1总体设计

在明确了系统与数据库结构的前提下,设计该系统主要功能:系统登录,数据的输入与修改,数据的删除,联系人和群管理等。

主要功能包括:

(1)用户登录及退出登录;

(2)登录用户编辑个人通信录(增、删、改);

(3)登录用户查询通信录(输入姓名或姓名的单字拼音首字母查询)。

分流程示意图

1.系统登录:

姓名设计流程图

2

3

5用户修查询程:

信息不 存在

(2)记录信息数据表,如表2

LoginAction类,封装的信息由密码和账户名,以及登录失败时抛出的异常方法。String execute()函数继承了Exception类,如果登录密码不匹配,则会抛出异常,提示Error登录失败。在登录模块中有管理员用户和普通用户,管理员可以对系统中的信息添加,修改,删除等功能,普通用户只进行查找操.

用户添加:

LoginAction类继承ActionSuporrt类,封装有name,sex,birthday,email,tel属性,封装有成员函数set_name(),set_sex(),set_birthday(),set_email(),set_tel()用来添加各个属性值,提示操作失败信息用String execute()函数抛出异常。

用询查询:

FindAction类继承ActionSuporrt类的属性及方法,setInput()方法将输入的信息传递给FindAction类内的相应属性,getInput()方法用于返回输入值,封装的成员函数包括getlist()用于返回查询到的元组列表。图5显示可以通过姓名,性别,出生日期,email地址对联系人进行查询。

用户修改:

ModAction类继承ActionListenerde同名方法,完成MyFirstFrame中类的所有方法进行修改直到成功,并且将修改后的信息通过ModAction String()导入数据库。

用户删除:

DeleAction类继承ActionSuporrt类,get_name()方法用于得到所要删除的信息的主码。封装的数据成员包括name,封装有isSuccess()函数,用于判断删除成功与否。删除模块中,用户可以根据某一关键字或多个关键字进行删除,删除信息后会自动提示。

用户导出:

根据ActionlistenrWindows窗口提示,联系人已经成功导出。其结构体经初始化后已经完成,

导出的数据将成功存入数据库中,此时数据库可以随时进行查询等一切可行性操作。

3.测试报告

通过这次课程设计我加深了对于java语言应用与实践之间的连接,能更好的使用java语言!

在老师及同学们的引导下配合下,我完成了题目。只有通过合作,才能更高效率的完成任务。实践非常的重要。很多东西在理论层面是行的通的,但到实际中就行不通了。所以要多实践,在不断的修改调试过程中巩固知识。程序设计基本符合了我预期的要求,运行效果良好,无明显的大的bug。

在完成作业的过程中,我遇到了不少困难,其中有的是经过自己苦思冥想想出来的,也有的是询问比较厉害的同学得以解决的,还剩下的一些疑难问题当然就是求助网络了。譬如说照片上传管理预览功能的实现,以及最小化到系统托盘的功能实现等。

其实不光是在网络上查询解决问题的方法,我也从网络上得到了不少编程的灵感和好的思想。比如说我的程序中并没有运用网络编程,基本是一个单机版的程序,这其中基本上没有能够应用到多线程的地方。但是经过我在网络上的查询,有人建议我可以在相片加载预览时候运用多线程,从而提高速度。于是我就这样做了,从而使我的程序更完善了。善于利用网络,对于我们的学习是大有裨益的。

通过两周的努力,我顺利的完成了通讯录系统的开发。基于基本设计要求,我查阅了相关自资料,进行了需求分析,概要设计,详细设计,编码,调试运行等软件开发步骤。无论在理论上还是在实践上都有较大幅度的提高,独立分析问题解决问题和他人交流的能力明显提高。

通过这次课程设设计,我对JAVA语言有了基本的认识。JAVA 是完全面向对象的语言,使用方便,界面友好,编译较难,能极大的节约运行时间,提高响应速度。其次软件工程的思想有了深入了解:完善需求,最大的满足客户需求,充分做好风险分析。为了保证项目的速度,定期对项目进行评估工作。本次项目随小,我却悟出了个简单的道理:学习就像软件开发,拿到一本书后看看,提出自己未知的问题,进而分析问题,解决问题。

通过课程设计,我深刻的认识到在当今激烈的社会竞争中只有学到本领才能有立足之地,同时也感到软件开发的辛苦。首先要有耐心,要忍着密密麻麻的代码,无数遍的修改,无数遍的调试,但是当你调试成功时,你会感受到努力的幸福。

1package tongxun;

public class UseSystem {

/**

* @param args

*/

public static void main(String[] args) {

new MySystem().validate();

}

}

2package tongxun;

import java.awt.*;

import java.awt.*;

import java.awt.event.*;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.util.*;

import javax.swing.*;

public class MySystem extends JFrame implements ActionListener, ItemListener {

UserService uService = new UserService();

User u = new User();

Choice choice = new Choice();

JTextField t1 = new JTextField(15);

JButton b1 = new JButton("查询");

java.awt.List list = new java.awt.List(6, true);

JButton b2 = new JButton("增加");

JButton b3 = new JButton("删除");

JButton b4 = new JButton("修改");

JButton b5 = new JButton("导出");

Container con = getContentPane();

java.util.List uList = new ArrayList();

// static Vector uv = new Vector(100);

int flag = 0;

MySystem() {

super("通讯录管理程序");

setSize(400, 400);

con.setLayout(new BorderLayout());

choice.add("姓名");

choice.add("类别");

choice.add("手机号码");

choice.add("查询全部记录");

choice.add("qq");

Panel p1 = new Panel();

// Panel p2=new Panel();

Panel p3 = new Panel();

p1.setBackground(Color.red);

p1.setSize(300, 10);

// p2.setBackground(Color.cyan);

// p2.setSize(380, 300);

p3.setBackground(Color.yellow);

list.setSize(300, 300);

p1.add(choice);

p1.add(t1);

p1.add(b1);

p3.add(b2);

p3.add(b4);

p3.add(b3);

p3.add(b5);

con.add("North", p1);

con.add("Center", list);

con.add("South", p3);

setVisible(true);

validate();

addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { setVisible(false);

System.exit(0);

}

});

b1.addActionListener(this);

b2.addActionListener(this);

b3.addActionListener(this);

b4.addActionListener(this);

b5.addActionListener(this);

list.addItemListener(this);

}

public void actionPerformed(ActionEvent e) {

if (e.getSource() == b2) {// 通过产生外部窗体,来实现添加功能final JFrame newf = new JFrame("添加联系人");

newf.setSize(400, 400);

newf.setVisible(false);

newf.setLayout(new GridLayout(10, 2));

JLabel jb1 = new JLabel("联系人姓名:");

final JTextField jtf1 = new JTextField(15);

Panel pp1 = new Panel();

pp1.add(jb1);

pp1.add(jtf1);

newf.getContentPane().add(pp1);

JLabel jb2 = new JLabel("联系人电话:");

final JTextField jtf2 = new JTextField(15);

Panel pp2 = new Panel();

pp2.add(jb2);

pp2.add(jtf2);

newf.getContentPane().add(pp2);

JLabel jb3 = new JLabel("固定电话:");

final JTextField jtf3 = new JTextField(15);

Panel pp3 = new Panel();

pp3.add(jb3);

pp3.add(jtf3);

newf.getContentPane().add(pp3);

JLabel jb4 = new JLabel("联系人QQ :");

final JTextField jtf4 = new JTextField(15);

Panel pp4 = new Panel();

pp4.add(jb4);

pp4.add(jtf4);

newf.getContentPane().add(pp4);

JLabel jb7 = new JLabel("联系人email:");

final JTextField jtf7 = new JTextField(15);

Panel pp7 = new Panel();

pp7.add(jb7);

pp7.add(jtf7);

newf.getContentPane().add(pp7);

JLabel jb8 = new JLabel("联系类别:");

final JTextField jtf8 = new JTextField(15);

Panel pp8 = new Panel();

pp8.add(jb8);

pp8.add(jtf8);

newf.getContentPane().add(pp8);

JLabel jb5 = new JLabel("联系人工作:");

final JTextField jtf5 = new JTextField(15);

Panel pp5 = new Panel();

pp5.add(jb5);

pp5.add(jtf5);

newf.getContentPane().add(pp5);

JLabel jb6 = new JLabel("现居住地地址:");

final JTextField jtf6 = new JTextField(15);

Panel pp6 = new Panel();

pp6.add(jb6);

pp6.add(jtf6);

newf.getContentPane().add(pp6);

JButton bb1 = new JButton("提交");

JButton bb2 = new JButton("关闭");

Panel pp9 = new Panel();

pp9.add(bb1);

pp9.add(bb2);

newf.getContentPane().add(pp9);

// JTextArea jta=new JTextArea();Panel pp10=new

// Panel();pp10.add(jta);newf.getContentPane().add(); bb1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent ee) {

User u = new User();

u.setName(jtf1.getText());

u.setTel(jtf2.getText());

u.setPhone(jtf3.getText());

u.setQq(jtf4.getText());

u.setWork(jtf5.getText());

u.setAddress(jtf6.getText());

u.setEmail(jtf7.getText());

u.setCategory(jtf8.getText());

if (uService.add(u)) {

JOptionPane.showMessageDialog(null, "添加成功!!!");

} else

JOptionPane.showMessageDialog(null, "添加失败!!!");

}

});

bb2.addMouseListener(new MouseAdapter() {

public void mouseClicked(MouseEvent ee) {

newf.setVisible(true);

}

});

newf.setVisible(true);

}

if (b1 == e.getSource()) {// 通过调用select();实现模糊查询

list.removeAll();

select();

}

if (b3 == e.getSource()) {// 通过获得联系人在list中的索引号,来实现对联系人的删除

if (flag == 0) {

JOptionPane.showMessageDialog(null, "不能删除该行!");

}

u = uList.get(flag - 1);

if (uService.delById(u.getId())) {

JOptionPane.showMessageDialog(null, "删除成功!");

uList.remove(flag - 1);

list.removeAll();

list.add("编号" + " " + "姓名" + " " + "电话");

for (User u1 : uList) {

list.add(u1.getId() + ": " + u1.getName()

+ " " + u1.getTel());

}

} else

JOptionPane.showMessageDialog(null, "删除失败!");

}

if (b4 == e.getSource()) {// 通过获得联系人在list中的索引号,同弹出一个外部窗体其中

// 有联系人的信息,用户可以修改.并在将其存入数据库

if (flag == 0) {

JOptionPane.showMessageDialog(null, "不能修改首行!");

return;

}

u = uList.get(flag - 1);

final JFrame newf = new JFrame("添加联系人");

newf.setSize(400, 400);

newf.setVisible(true);

newf.setLayout(new GridLayout(10, 2));

JLabel jb1 = new JLabel("联系人姓名:");

final JTextField jtf1 = new JTextField(u.getName(), 15);

Panel pp1 = new Panel();

pp1.add(jb1);

pp1.add(jtf1);

newf.getContentPane().add(pp1);

JLabel jb2 = new JLabel("联系人电话:");

final JTextField jtf2 = new JTextField(u.getTel(), 15);

Panel pp2 = new Panel();

pp2.add(jb2);

pp2.add(jtf2);

newf.getContentPane().add(pp2);

JLabel jb3 = new JLabel("固定电话:");

final JTextField jtf3 = new JTextField(u.getPhone(), 15);

Panel pp3 = new Panel();

pp3.add(jb3);

pp3.add(jtf3);

newf.getContentPane().add(pp3);

JLabel jb4 = new JLabel("联系人QQ :");

final JTextField jtf4 = new JTextField(u.getQq(), 15); Panel pp4 = new Panel();

pp4.add(jb4);

pp4.add(jtf4);

newf.getContentPane().add(pp4);

JLabel jb7 = new JLabel("联系人email:");

final JTextField jtf7 = new JTextField(u.getEmail(), 15); Panel pp7 = new Panel();

pp7.add(jb7);

pp7.add(jtf7);

newf.getContentPane().add(pp7);

JLabel jb8 = new JLabel("联系类别:");

final JTextField jtf8 = new JTextField(u.getCategory(), 15); Panel pp8 = new Panel();

pp8.add(jb8);

pp8.add(jtf8);

newf.getContentPane().add(pp8);

JLabel jb5 = new JLabel("联系人工作:");

final JTextField jtf5 = new JTextField(u.getWork(), 15); Panel pp5 = new Panel();

pp5.add(jb5);

pp5.add(jtf5);

newf.getContentPane().add(pp5);

JLabel jb6 = new JLabel("现居住地地址:");

final JTextField jtf6 = new JTextField(u.getAddress(), 15); Panel pp6 = new Panel();

pp6.add(jb6);

pp6.add(jtf6);

newf.getContentPane().add(pp6);

JButton bb1 = new JButton("提交");

JButton bb2 = new JButton("关闭");

Panel pp9 = new Panel();

pp9.add(bb1);

pp9.add(bb2);

newf.getContentPane().add(pp9);

bb1.addMouseListener(new MouseAdapter() {

public void mouseClicked(MouseEvent ee) {

u.setName(jtf1.getText());

u.setTel(jtf2.getText());

u.setPhone(jtf3.getText());

u.setQq(jtf4.getText());

u.setWork(jtf5.getText());

u.setAddress(jtf6.getText());

u.setEmail(jtf7.getText());

u.setCategory(jtf8.getText());

if (uService.update(u)) {

JOptionPane.showMessageDialog(null, "修改成功!");

select();

} else

JOptionPane.showMessageDialog(null, "修改失败!");

}

});

bb2.addMouseListener(new MouseAdapter() {

public void mouseClicked(MouseEvent ee) {

newf.setVisible(false);

}

});

}

if (b5 == e.getSource()) {// 实现全部联系人的导出

File f = new File("user_information.txt");

try {

FileWriter w_file = new FileWriter(f);

BufferedWriter b_file = new BufferedWriter(w_file);

b_file

.write("联系人编号\t姓名\t手机号码\t固定电话\tqq号码\temail\t类别\t工作\t现居住地地址\t");

b_file.flush();

for (User u : uService.getAllUser()) {

b_file.write(u.getId() + "\t" + u.getName() + "\t"

+ u.getTel() + "\t" + u.getPhone() + "\t"

+ u.getQq() + "\t" + u.getEmail() + "\t"

+ u.getCategory() + "\t" + u.getWork() + "\t"

+ u.getAddress() + "\n");

b_file.flush();

}

JOptionPane.showMessageDialog(null, "导出成功!");

} catch (IOException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

}

}

public void itemStateChanged(ItemEvent a) {

int sum = Integer.parseInt(a.getItem().toString());

flag = sum;

}

public void select() {

if (choice.getSelectedItem().equals("姓名")) {// 对姓名进行模糊查询uList.clear();

for (User u : uService.getUser("name", t1.getText())) {

uList.add(u);

}

list.removeAll();

list.add("编号" + " " + "姓名" + " " + "电话");

for (User u : uList) {

list.add(u.getId() + ": " + u.getName() + " "

+ u.getTel());

}

}

if (choice.getSelectedItem().equals("类别")) {// 对类别进行模糊查询uList.clear();

for (User u : uService.getUser("category", t1.getText())) {

个人通讯录管理系统c语言源程序优秀版)

#include /*头文件*/ #include //包含最常用的系统函数 #include //关于字符数组的函数定义的头文件#include //控制台输入输出 //定义结构体 struct tongxunlu /*定义通讯录结构体变量*/ { char xingming[20]; /*定义输入名字的数组*/ char dianhua[20]; /*定义输入电话号码的数组*/ char dizhi[40]; /*定义输入地址的数组*/ } txl[100]; //默认100个数据 int n=0;//记录数据联系人数量 FILE *fp; /*定义文件*/ //程序用到的所有函数 void zhucaidan(); /*主菜单函数*/ void zengjia(); /*增加联系人函数*/ void readfile(); /*文件中读入函数*/ void writefile(); /*文件中写入函数*/ void xiugai(); /*修改联系人函数*/ void xiugai_xingming(); /*姓名修改*/ void xiugai_dianhua(); /*电话号码修改*/ void chazhao(); /*查找联系人函数*/

void chazhao_xingming(); /*按姓名查找*/ void chazhao_dianhua(); /*按号码查找*/ void shanchu(); /*删除联系人函数*/ void shanchu_quanbu(); /*全部删除*/ void shanchu_dange(); /*单个删除*/ void xianshi(); /*号码显示*/ //程序主函数模块六 void main() /*主函数main*/ { readfile(); /*读入文件*/ while(1) /* 循环(永远进行)*/ { zhucaidan(); /*调用主菜单函数*/ } } //读取文件函数部分开始模块七 void readfile() { if((fp=fopen("c:\\通讯录.txt","r"))==NULL) /*以只读方式打开判定文件是否为空*/ { printf("\n\t\t\t 通讯录文件不存在"); /*判断结论*/ if ((fp=fopen("同通讯录.txt","w"))==NULL) /*只写方式判断*/

通讯录管理系统

通讯录管理系统说明书 一、使用的技术和开发平台: 基于https://www.360docs.net/doc/6a2532502.html,技术开发的数据库应用程序。开发平台为windows,使用的语言为C#2008,数据库为:MSSQL SERVER2008 二、系统功能模块 本系统是使用c#2008和MSSQL SERVER2008开发的一个数据库应用程序,其主要功能是实现对不同组别的联系人信息进行管理,具体来说分如下几个功能模块: 1、后台管理模块 对系统管理员账户的添加、删除、修改等操作 2、登录验证系统 系统启动时,将出现登录窗口,要求用户输入正确的用户名和密码,否则无法进入系统。 2、联系人管理系统 登录成功后将进入系统的主窗口(FormMain.cs),如下图所示: 其中组别是对联系人分的类,根据添加到数据库中的所有联系人的组别确定,是可以更改的。主窗口第一次显示时,默认显示第一个组别的所有联系人。可以在左边树形列表中选择不同的组别,同时右边的ListView自动显示不同组别的所有联系人。在联系人菜单下可以实现新增联系人、删除联系人、修改或查看联系人以及搜索,不论是新增、删除还是修改联系人完毕后,下面的ListView会同时更新显示联系人及组别。状态栏显示登录账户名和选中组别包含的联系人个数。 当用户单击新增联系人菜单项时,弹出如下窗体(FrmAdd.cs),以实现新增:

其中组别是根据数据库中已有的组别自动加载到组合框中的。当用户在ListView中选择某个联系人后再单击删除联系人菜单项,可将该联系人删除。当用户在ListView中双击某个联系人或单击修改或查看联系人菜单项,会弹出如下窗体(FrmMod.cs),以实现修改或查看联系人:不论是添加还是修改联系人时,组别都是可以修改的,注意姓名和组别不能为空。

学生通讯录管理系统的设计与实现

学生通讯录管理系统的设计与实现

学生通讯录管理系统的设计与实现 问题描述: 纸质的通讯录已经不能满足实际需求,容易丢失,查找困难等问题是纸质通讯录所不能克服的缺点。“学生通讯录管理系统”是为了帮助老师、同学,或者其它一些需要使用的通讯录的人员进行管理和应用的一种应用程序。 需求分析: 1)输入数据建立通讯录。 2)查询通讯录中满足要求的信息。 3)插入新的通讯录信息。 4)删除不需要的通讯录信息。 5)查看所有的通讯录信息。 主界面设计要求: 1)通讯录的建立 2)插入通讯录记录 3)查询通讯录记录 4)删除通讯录记录 5)显示通讯录记录 6)退出系统 设计要求: A.建立通讯录时,每个学生的信息包括:学号,姓名,电话。

B.查找时,学号、姓名、电话均能够作为查询字段。 C.查看所有的通讯录信息时,所有记录需要时有序的(按学号排序,按姓名排序(字典序),按电话号码排序)。 D.存储结构:要求使用顺序存储结构。 E.数据使用:使用本班级的具体信息。 需求分析: 本次设计目的是学生信息管理系统,可存入每个学生的基本信息,所有学生信息都可根据名字、学号、电话、邮箱进行查询,也都能够根据这四个基本信息检索到一个学生并删除其数据。输入形式:student.txt,以文件形式进行输入。 输出形式:根据不同的输入进行不同的操作。 达到功能:能插入一个学生的信息,能删除一个学生的信息,能查询一个学生的信息。 测试数据:班上70个同学的基本数据。 概要设计: 数据类型:顺序链表 ArrayList类 学生数据结构:StuData类包含name、id、phone、email四个String基本类型。 所有操作写在Structure中,包含insert、remove、query、printAll。 Main函数用Java标准输入,循环输入,用switch判断输入进行

软件体系结构 个人通讯录管理系统

课程实验报告 软件系统结构 专业 软件工程 学生姓名 张伯虎 班级 B 软件121 学 号 1210701128 指导老师 孙莉

实验一 C/S结构应用设计 一、实验目的 设计并实现一个基于多层C/S结构的数据库应用,熟悉多层C/S体系结构及其基本处理流程,了解多层结构表现层、业务逻辑层(功能层)、数据访问层所完成的功能,掌握多层C/S结构的数据库应用设计方法,对这三层进行明确分割,并在逻辑上使其独立。学生通过本实验的训练能够熟练掌握对小型数据库应用系统三层结构层次划分方法及系统实现技术。 二、实验原理 1、C/S软件体系结构是基于资源不对等,且为实现共享而提出来的,是20世纪90年代成熟起来的技术,C/S体系结构定义了工作站如何与服务器相连,以实现数据和应用分布到多个处理机上。 2、C/S体系结构有三个主要组成部分:数据库服务器、客户应用程序和网络。 (1)二层客户/服务器风格 (2

三、主要仪器及耗材 每人一台计算机 四、实验步骤及内容 需要实际设计开发出一个简单的基于二层C/S结构的应用系统——个人通讯录管理系统,主要步骤和内容如下: 1、在 SQL Server 2000中建立数据库Contact,建立表friend。 建立数据库Contact: create database Contact use contact go 建立表friend: Create table friend( Fid int identity(1,1) not null,--编号信息 Fname varchar(8) not null,--姓名信息 Fphone varchar(12) ,--电话信息 Faddress varchar(100) –地址信息 ) go 2、在Visual Studio 2000中用C#语言建立用户界面层(UI)程序:Contact 项目,主要呈现用户操作界面。

个人通讯录管理系统

C语言程序设计 课程设计报告 个人通讯录管理系统设计 专业__网络工程___ _____ 班级___(3)班___________ 学号__3148119322 姓名__吴道金 _ 学号_ 3148119319 _姓名_ 林东垚 ___ 学号_ 3148119359 _姓名__ 林家勇 __ 学号__3149119349__________姓名___上官景铨_____ ______ 福建工程学院软件学院 2015年月日 (正文部分)

一、需求分析 建立一通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。功能要求(1) 通讯录的每一条信息包括姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ等。 (2) 输入功能:可以一次完成若干条信息的输入。 (3) 显示功能:完成全部通讯录信息的显示(一屏最多显示10条,超过十条应能够自动分屏显示) (4) 查找功能:可以按姓名等多种方式查找通讯信息 (5) 增加、删除、修改功能:完成通讯录信息的多种更新 二、总体设计

三、详细设计 void menu(); /*菜单*/ void Add(); /*添加记录*/ void print(); /*输出记录*/ void Find(); /*查找记录(按姓名)*/

void Delete(); /*删除记录*/ void SaveFree(); /*保存到文件*/ void Creat(); /*打开文件*/

四、程序源代码 #include #include #include

通讯录管理系统需求分析

通讯录管理系统需求分析 项目编号:S1-BS-HTML-001 l项目概述 1.引言 1.1编写目的 在完成了针对通讯录管理系统的前期调查,同时与多位软件使用者进行了全面深入地探讨和分析的基础上,提出了这份软件需求规格说明书。 此需求规格说明书对《通讯录管理系统》软件做了通讯录管理系统的用户需求分析,明确所要开发的软件应具有的功能、性能与界面,使系统分析人员及软件开发人员能清楚地了解用户的需求,并在此基础上进一步提出概要设计说明书和完成后续设计与开发工作。本说明书的预期读者为客户、业务或需求分析人员、测试人员、用户文档编写者、项目管理人员。 本说明书是整个软件开发的依据,它对以后阶段的工作起指导作用。本文也是项目完成后系统验收的依据。

1.2项目背景 本通讯录信息管理系统用计算机管理电子通讯录的一种计算机应用技术的创新,在计算机还未普及之前通讯管理都是由联系人采用名片,笔录手工记帐的方式来操作的.现在一般的通讯录管理都是采用计算机作为工具的实用的计算机通讯录管理程序来帮助人们进行更有效的通讯录信息管理。通讯录管理系统是典型的信息管理系统(mis),要求应用程序功能完备,易使用等特点。 1.3定义 需求:用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足合同、标准,规范或其它正式规定文档所需具有的条件或权能。 2.任务概述 2.1目标 实现通讯录管理系统的基本功能,可以实现电话用户的查询、电话号码的查询、电话号码所在地的查询、电话号码的添加及删除等功能,以方便人们的记录和通讯。 2.2运行环境 2.2.2.1服务端 A. 操作系统:Windows 2003 Server 2.2.2.2客户端 A. Windows 95/98/me/Xp/2000/2003, Unix, Linux,Vista,Mac OS各版 2.3条件与限制 本通讯录信息管理系统用计算机管理电子通讯录的一种计算机应用技术的创新,在计算机还未普及之前通讯管理都是由联系人采用名片,笔录手工记帐的方式来操作的.现在一般的通讯录管理都是采用计算机作为工具的实用的计算机通讯录管理程序来帮助人们进行更有效的通讯录信息管理。通讯录管理系统是典型的信息管理系统(mis),要求应用程序功能完备,易使用等特点。 3.数据描述 开始 3.1数据流图 以可读写的方式打开一个数据文件 将此文件的内容读出,并存入一个新的结构体类型的数组中。 调用menu()菜单函数

个人通讯录管理(c语言课程设计)

安徽工业大学 《C语言课程设计》实习综合报告课题名称:个人通讯录管理系统 实习成员:王刚 学号: 109074372 专业班级: 网络工程103班 指导教师: 郑啸老师

目录 一.问题描述 (2) 二. 各功能流程图与设计思路 (3) 2.1显示模块 (3) 2.2查找模块……………………………………………4.. 2.3添加模块 (6) 2.4删除模块 (8) 2.5修改模块 (9) 三、文件的读取与保存 (11) 四、程序源代码 (12) 五、调试与运行结果 (18) 六、计算机学院课程设计评定意见 (24) 一.问题描述

设计通讯录包含以下功能: (1)通讯录的每一条信息包括姓名、单位、固定电话、移动手 机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ 等。 (2)输入功能:可以一次完成若干条信息的输入。 (3)显示功能:完成全部通讯录信息的显示。 (4)查找功能:可以按姓名等多种方式查找通讯信息。 (5)增加、删除、修改功能:完成通讯录信息的多种更新。 二.各功能流程图与设计思路 Menu菜单:

运用switch()进行操作: case'1': 显示功能,list()函数 说明:利用for循环,逐个输出已保存的内容 代码如下: //*****************显示通讯录中的内容************* void list() { printf("编号姓名电话 \t手机 \t工作单位\tEMAIL \t\tQQ\n"); for(i=0;i

个人通讯录管理系统C语言源程序优秀版

个人通讯录管理系统C语言源程序优秀版 Last revision date: 13 December 2020.

#i n c l u d e/*头文件*/ #include //包含最常用的系统函数 #include //关于字符数组的函数定义的头文件 #include //控制台输入输出 //定义结构体 struct tongxunlu /*定义通讯录结构体变量*/ { char xingming[20]; /*定义输入名字的数组*/ char dianhua[20]; /*定义输入电话号码的数组*/ char dizhi[40]; /*定义输入地址的数组*/ } txl[100]; //默认100个数据 int n=0;//记录数据联系人数量 FILE *fp; /*定义文件*/ //程序用到的所有函数 void zhucaidan(); /*主菜单函数*/ void zengjia(); /*增加联系人函数*/ void readfile(); /*文件中读入函数*/ void writefile(); /*文件中写入函数*/ void xiugai(); /*修改联系人函数*/ void xiugai_xingming(); /*姓名修改*/ void xiugai_dianhua(); /*电话号码修改*/ void chazhao(); /*查找联系人函数*/ void chazhao_xingming(); /*按姓名查找*/ void chazhao_dianhua(); /*按号码查找*/ void shanchu(); /*删除联系人函数*/ void shanchu_quanbu(); /*全部删除*/ void shanchu_dange(); /*单个删除*/ void xianshi(); /*号码显示*/ //程序主函数模块六 void main() /*主函数main*/ { readfile(); /*读入文件*/ while(1) /* 循环(永远进行)*/ { zhucaidan(); /*调用主菜单函数*/ } } //读取文件函数部分开始模块七 void readfile() { if((fp=fopen("c:\\通讯录.txt","r"))==NULL) /*以只读方式打开判定文件是否为空*/ { printf("\n\t\t\t 通讯录文件不存在"); /*判断结论*/

个人通讯录管理系统java源代码

package cn pab import java.util.List; import java.util.Scanner; import cn.pab.dao.PersonDao; import cn.pab.dao.TypeDao; import https://www.360docs.net/doc/6a2532502.html,erDao; import cn.pab.dao.impl.PersonDaoImpl; import cn.pab.dao.impl.TypeDaoImpl; import https://www.360docs.net/doc/6a2532502.html,erDaoImpl; import cn.pab.entity.Person; import cn.pab.entity.Type; /** * 业务类 */ public class PABmanager { /** * 系统启动 */ public static void main(String[] args) { Scanner input = new Scanner(System.in); UserDao userDao = new UserDaoImpl(); TypeDao typeDao = new TypeDaoImpl(); PersonDao personDao = new PersonDaoImpl(); System.out.println( " System.out.print("\ n 欢迎使用个人通讯录管理系统**********"); 请选择操作(1. 系统登录 2. 密码修改 3. 取消):"); String in = input.next(); if ("1".equals(in)) { boolean islogin = userDao.login(); if(islogin){ System.out.println("******** *** 成功登录个人通讯录管理系统 nm\、\ ? //System.out.print(" \n 退出系统):"); }else{ System.out.println(" System.exit(-1); } }else if ("2".equals(in)) { 请选择操作(1. 类别管理 2. 联系人管理 3. 用户名或密码错误,不能登录!");

学校通讯录管理系统数据库设计

数据库设计 在本实例中使用的是SQLServer 2000数据库管理系统。数据库服务器安装的位置为本机,数据库名称为commu ni catio nserver 。下面将介绍数据库分析和设计、数据表的创建、数据表关系图和创建存储过程的内容。 4.2.1 数据库分析和设计 在本节中,将根据上一节系统功能的设计分析创建各数据表的实体E-R关系图,它是数 据库设计非常重要的一步,下面用E-R图的形式表示出各实体的属性。 1. 用户E-R实体图 用户的实体具有用户ID、密码、姓名、性别、电话、E-mail、用户权限7个属性,ER图如图4-5所示。 图4-5 用户E-R实体图 2. 地区E-R实体图 地区的实体具有地区编号、地区名称2个属性,E-R图如图4-6所示。 图4-6 地区E-R实体图 3. 职务E-R实体图 职务的实体具有职务编号、职务名称2个属性,E-R图如图4-7所示。 图4-7 职务E-R实体图 姓名用户权限性别 1 用户E-mail 地区 职务职务名称

4. 学校E-R 实体图 学校的实体具有学校名称、学校所在地区、在校学生人数3个属性,可用 E-R 图表示, 如图4-8所示。 (学校名称X 学校一(在校学生人数 图4-8 学校E-R 实体图 5. 通讯录E-R 实体图 通讯录的实体具有联系人姓名、地址、联系电话、所属职务、所在学校、所在单位、所 属地区7个属性,E-R 图如图4-9所示。 图4-9 通讯录E-R 实体图 4.2.2 数据表的创建 在上面一节中讲解了实体的 E-R 图,本节中将根据E-R 图的内容,创建企业信息管理系 统中的各数据表,在此系统中共涉及到 5个数据表的应用,分别为如下。 1、 字段采用camel 风格定义 2、 用不同颜色区分字段 主键:蓝色 外键:白色 既是主键又是外键:淡蓝色 普通字段:青绿 学校编号 学校所在地区 联系电话 通讯录 所在单位 * 所在学校 彳所属职务

个人通讯录管理系统课程设计报告示例

个人股权转让协议书 转让方: 受让方: ____________________________________ 公司(以下简称合营公司),于______年____月_____日成立,由甲方与________________合资经营,注册资金为_____币_________万元,投资总额_______币_________万元,实际已投资_____币________万元。甲方愿将其占合营公司____ %的股权转让给乙方;经公司董事会通过,并征得他方股东的同意,现甲乙双方协商,就转让股权一事,达成协议如下: 一、股权转让的价格、期限及方式 1、甲方占有公司____%的股权,根据原合营公司合同书规定,甲方应投资____币______万元。现甲方将其占公司____%的股权以____币______万元转让给乙方。 2、乙方应于本协议生效之日起____天内按第一条第一款规定的货币和金额以银行转帐方式分____次付清给甲方。 二、甲方保证对其拟转让给乙方的股权拥有完全、有效的处分权,保证该股权没有质押,并免遭第三人追索,否则应由甲方承担由此引起的一切经济和法律责任。 三、有关公司盈亏(含债权债务)的分担(任选一款)。 1、本协议生效后,乙方按股份比例分享利润和分担风险及亏损(含转让前该股份应享有和分担公司的债权债务)。

2、股权转让前,聘请在中国注册的会计师(或其他方式)对公司进行审计,乙方按双方认可的审计报告表的范围承担甲方应分担的风险、亏损和享有权益。股权转让生效后,若发现属转让前,审计报告表以外的合营公司的债务,由乙方按股权比例代为承担,但应由甲方负责偿还。股权转让生效后,乙方取得股东地位,并按股份比例享有其股东权利和承担义务。 3、股权转让前,聘请在中国注册的会计师(或公司董事会组织)对公司进行审计,甲方按审计报告表的范围承担应分担的风险、亏损和享有权益,甲方应分担的债权债务,应在其股权款中扣除。本协议生效后,尚未清结的以及审计报告以外属甲方应分担的债权债务,均由乙方按股权比例享有和承担(或由乙方先行承担,然后由乙方向甲方追偿)。 四、违约责任 如乙方不能按期支付股权价款,每逾期一天,应支付逾期部分总价款千分之______的逾期违约金。如因违约给甲方造成经济损失,违约金不能补偿的部分,还应支付赔偿金。 五、纠纷的解决(任选一款) 凡因履行本协议所发生的争议,甲乙双方应友好协商解决如协商不成: 1、向_______人民法院起诉; 2、提请仲裁委员会仲裁; 六、有关费用负担

个人通讯录管理系统设计说明书

个人通讯录管理系统系统设计说明书 班级 07软工A2 组号第 1 组 拟制人张超 审核人郁盈盈 2010年10月25日

目录 1 引言 (1) 1.1编写目的 (1) 1.2项目背景 (1) 1.3预期读者 (1) 1.4参考文献 (1) 2任务概述 (2) 2.1目标 (2) 2.2运行环境 (2) 2.3需求概述 (2) 2.4条件与限制 (3) 3总体设计 (3) 3.1功能模块分析 (3) 3.1.1功能分配 (3) 3.1.2模块设计 (5) 3.2总体结构及模块结构 (5) 4数据结构设计 (8) 4.1逻辑模型设计 (8) 4.2物理模型设计 (9) 4.3数据库设计 (9) 5接口设计 (10) 5.1外部接口设计 (10) 5.1.1界面设计及说明 (10) 5.1.2软件接口 (17) 5.1.3硬件接口 (17) 5.2内部接口设计 (18) 6运行设计 (18) 6.1运行模块的组合 (18) 6.2运行控制 (18) 6.3运行时间 (18) 7出错处理设计 (18) 7.1出错输出信息 (18) 7.2出错处理对策 (18) 8安全保密设计 (19) 9维护设计 (19)

1 引言 1.1编写目的 本说明是个人通讯录管理系统软件产品的总体设计和实现说明,记录了系统整体实现上技术层面上的考虑,并且以需求说明作为依据,同时该文档将作为产品实现、特性要求和控制的依据。 软件开发小组的每一位参与开发成员应该阅读本说明,以清楚产品技术方面和实现策略,本手册将进行技术评审和技术的可行性检查,同时个人通讯录管理系统软件的开发途径和应用方法,以求在最短的时间高效开发个人通讯录管理系统。 1.2项目背景 本项目的名称:个人通讯录管理系统 本项目的任务提出者及开发者是07软工A2第一小组 用户是一般个人。 本产品是针对为能本地化无网络的获得通讯录信息的需求而设计的,主要功能包括,对联系人的信息管理,实现各种搜索方式及排序,实现联系人分组及组管理等功能。 1.3预期读者 本说明书的预期读者是项目的开发人员,测试人员和维护人员。 1.4参考文献 [1]. 《https://www.360docs.net/doc/6a2532502.html, 2.0网络编程从基础到实践》马颖华苏贵洋袁艺苏桂涛编著 [2]. 《UML基础与Rose建模教程》蔡敏徐惠惠黄炳强编著 [3]. 《C#数据库系统开发完全手册》明日科技张跃延许文武王小科编著

通讯录管理系统

测试与光电工程学院 课程设计任务书 测控技术与仪器系 100814 班学号 100814415 姓名邓志扬 课题名称:通讯录管理系统的设计 课题要求: 使用C语言设计一个班级通讯录,通迅录数据信息构成内容可自行设计(如:姓名、邮政编码、电话号码等等),通信录数据类型定义为结构体类型或用数组实现。要求实现存取、显示、删除记录、查询记录等功能。 (1)查看功能,选择此功能是列出下列三类选择 A、办公类 B、个人类 C、商务类当选中某类时,显示出此类中所有数据中的姓名和电话号码 (2)增加功能能录入新数据(一个节点包括姓名,电话号码,分类(可选项有:A、办公类,B、个人类,C、商务类)、电子邮件) 例如:杨春商务类 当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入,当通讯录中超过15条信息时,存储空间已满,不能自录入新数据了。 (3)拨号功能能显示出通讯录中所有人的姓名,当选中某个人的姓名时,屏幕中模拟打字机的效果依次显示出此人的电话号码中的各个数字,并伴随相应的拨号声音 (4)修改功能选中某个人的姓名时,可对此人的数据进行相应修改 (5)删除功能选中某个人的姓名时可对此人的相应数据进行删除并自动调整后续条目的编号 课题进程: 1)回顾C语言设计及数据结构设计的相关知识。2周 2)设计基本架构。4周 3)调试、完善、撰写报告。3周 主要参考资料: [1] 谭浩强主编. C语言程序设计(第二版).清华大学出版社, 2005. [2] 谭浩强.C程序设计题解与上机指导(第三版)[M]北京:清华大学出版社,2005年7月 指导教师:付跃文

目录 一、设计目的 (4) 二、设计要求与功能描述 (4) 1.设计要求 (4) 2.功能描述 (5) 三、系统分析与设计 (6) 1、功能模块的设计分析 (6) 2、数据结构设计分析 (9) 3、函数功能描述 (9) 四、系统调试与运行 (11) 五、总结 (18) 六、源程序清单: (19)

个人通讯录管理软件功能设计说明书

个人通讯录管理软件功能 设计说明书 一.系统名称 个人通讯录管理 二.系统分析 2.1系统需求分析 个人通讯录模型可以参考流行的腾讯QQ聊天软件,同时结合手机里面的通讯录进行设计。在此阶段初步确定系统的要实现的基本功能即联系人和分组的增删改、联系人信息的多种查询以及数据库设计构型即采用哪种数据库、大致由哪些基本表组成。 2.2概念结构设计 采用E—R图的设计方法进行数据库的概念结构 由图可得:数据库主要是联系人表,表的基本结构如下: 联系人表(、职务、职称、工作单位、通讯地址、邮政编码、单

位、住宅、分编特征) 联系人表中,主键是分编特征; 2.3逻辑结构设计 在完成以上分析后,要对数据库进行表结构的设计,这里仅以表字段数据结构的为重点。 各表列出对应子段名,各字段长度,是否Null、默认值见其下图,根据数据库基础知识分析,各表设计都达到了第三式,符合数据库的设计规。 联系人表:,xm;职务,zw;职称,zc;工作单位,gzdw;通讯地址,xxdz;邮政编码,yzbm;单位,dwdh;住宅,zzdh;分编特征,fbtz; 表的索引,主键,外键关系约束如下: 三.系统主要功能及界面设计 3.1功能简介: 1、该软件应具有对通讯录信息的增加、删除、保存、查询、排序、

打印等功能。 2、以单文档界面和多文档界面两种形式实现。 3、该软件应包括数据窗口技术、用回车键实现TAB键功能、多条件查询、多文档界面的实现、窗口之间的参数传递、结构的应用、图片的使用等主要技术 3.1.2信息查询模块: 1该功能模块包含查找方式是:按照查找,按照分编特征查找,按照地址查找。只要输入,分编特征,地址,就可以立马找到联系人的信息。 2查找的优势:在查找的下方可以清晰的看到查找的联系人的信息在通讯录中的具体位置,包括其所在的行和列。 3.1.3.系统管理模块:该功能模块包含: 1新增联系人信息,包括,职务,职称,工作单位,通讯地址,邮政编码等。 2打印:打印联系人相关信息包括,职务,职称,工作单位,通讯地址,邮政编码等。 3删除:删除联系人相关信息包括,职务,职称,工作单位,通讯地址,邮政编码等。 4设置:设置联系人信息即更改其信息包括,职务,职称,工作单位,通讯地址,邮政编码等。 5保存通讯录信息包括,职务,职称,工作单位,通讯地址,邮政编码等。

通讯录管理制度

1.目的 为增强对公司通讯录发放、更新等管理,特制定此制度。 2.适用范围 公司通讯录。 3.职责 3.1行政人事部负责本制度拟定、完善、更新及下发。 3.2行政人事助理负责定期更新、发放通讯录。 3.3各部门负责人负责本部门工作联系更新信息传递至行政人事助理。 3.4各员工负责自身联系更新信息传递至行政人事助理。 4.工作程序 4.1通讯录版本及内容 4.1.1公司通讯录分为“内部”和“外部”二个版本。“内部”通讯录记录公司所有人员的通讯信息,仅发放于公司总部相关部门;“外部”通讯录记录部门负责人、部门助理,及经常与办事处沟通人员的通讯信息,发放于办事处。 4.1.2公司通讯录按照部门顺序记录以下内容:大部名称、部门名称、姓名、岗位、分机、手机、固定电话、传真、邮箱等信息。 4.2通讯录更新 4.2.1行政人事助理依据上周发生的人员入职、离职、调岗等信息更新通讯录,于每周一下班前以邮件方式发放最新通讯录。 4.2.2公司各员工在自身通讯方式发生变更三个工作日内,把更新通讯信息传递至行政人事助理处。 4.2.3各部门对外工作联系信息,包括但不限于办公地址、办公电话、传真等发生变化时,由部门负责人或部门助理在变更后三个工作日内传递更新信息至行政人事助理处。

4.2.4公司部门架构、公司对外工作联系信息等发生变化时,经CEO审批后,由行政人事助理直接更新。 4.3通讯录发放接收人员 4.3.1《通讯录(内部)》发放接受人员为:CEO、CTO、COO;各大部总监;部门经理;需与外部经常联系的部门助理、岗位人员。 4.3.2《通讯录(外部)》发放接受人员为:大区经理、办事处经理、办事处文秘。 4.4通讯录管理 4.4.1公司通讯录为公司受控文件,严禁接受人员随意转发。如发现转发的,处于200元/次经济处罚。 4.4.2如因正常工作需要,需取得通讯录的,由行政人事部总监审批。 4.4.3工作之外,要求取得通讯录的,由行政人事部总监审核后,由CEO审批。 5.相关记录 通讯录(内部) 通讯录(外部)

通讯录管理系统数据库设计说明

通讯录管理系统数据库设计与实现 1 需求简介() 1.1功能概述 1.2数据要求 功能中涉及的数据项说明。 1.用分组基本信息(Admin):包括分组号、分组名; 2.用户基本信息(Dormitory):包括账号、密码、昵称、个性签名,这样可以 方便分清用户记录的联系人;

3.联系人基本信息(linkman):包括、性别、关系、手机号、座机号、QQ、E-mail、 生日、工作单位、地址、所属用户、所属分组; 1.3数据字典 数据项列表 数据项编号数据项名数据项含义与其它数据项的关系存储结构别名TXL-1 G_number 分组号CHAR(10) TXL-2 G_name 分组名CHAR(20) TXL-3 ID 所属用户等同于账号ID CHAR(10) TXL-4 ID 账号CHAR(10) TXL-5 Nickname 昵称CHAR(20) TXL-6 Password 密码CHAR(20) TXL-7 Qianming 签名CHAR(50) TXL-8 L_number 联系人号CHAR(100) TXL-9 Name CHAR(20) TXL-10 Sex 性别CHAR(2) TXL-11 Concern 关系CHAR(10) TXL-12 Phone 手机号CHAR(11) TXL-13 Landline 座机号CHAR(10) TXL-14 QQ QQ号CHAR(10) TXL-15 Email E-mail CHAR(20) TXL-16 Work 工作单位CHAR(30) TXL-17 Address 地址CHAR(30) TXL-18 Birthday 生日Date 数据结构列表 数据结构编号数据结构名 数据结构 含义 组成 DS-1 Grouping 分组G_number,G_name,ID, DS-2 Worker 用户ID,Nickname,Password,Qianming DS-3 Linkman 联系人L_number,Name,Sex,Concern,Phone,Landline,QQ,Email,Work,Address,Birthday,ID,G_number

个人通讯录管理系统,java源代码

package cn.pab.manager; import java.util.List; import java.util.Scanner; import cn.pab.dao.PersonDao; import cn.pab.dao.TypeDao; import https://www.360docs.net/doc/6a2532502.html,erDao; import cn.pab.dao.impl.PersonDaoImpl; import cn.pab.dao.impl.TypeDaoImpl; import https://www.360docs.net/doc/6a2532502.html,erDaoImpl; import cn.pab.entity.Person; import cn.pab.entity.Type; /** * 业务类 */ public class PABmanager { /** * 系统启动 */ public static void main(String[] args) { Scanner input = new Scanner(System.in); UserDao userDao = new UserDaoImpl(); TypeDao typeDao = new TypeDaoImpl(); PersonDao personDao = new PersonDaoImpl(); System.out.println("***********欢迎使用个人通讯录管理系统**********"); System.out.print("\n请选择操作(1.系统登录 2.密码修改 3.取消):"); String in = input.next(); if ("1".equals(in)) { boolean islogin = userDao.login(); if(islogin){ System.out.println("***********成功登录个人通讯录管理系统**********"); //System.out.print("\n请选择操作(1.类别管理 2.联系人管理 3.退出系统):"); }else{ System.out.println("用户名或密码错误,不能登录!"); System.exit(-1); } }else if ("2".equals(in)) { boolean modiFlag = userDao.modify();

个人通讯录管理系统的设计与实现

科技信息 SCIENCE &TECHNOLOGY INFORMATION 2010年第11期个人通讯录管理系统的设计与实现 马达灵马文婷 (集宁师范学院内蒙古乌兰察布012000) 【摘要】通讯录是当前每个人不可缺少的信息系统,利用vfp6.0制作个人通讯录,从根本上改变纸介质基础通讯录的弊端,从而提高信息管理效率。在对系统进行分析和设计的基础上,创建各种项目组件,连编成通讯录应用系统。 【关键词】通讯录;设计;制作 0前言 通讯录、联系本是每个人不可缺少的工具,目前以纸介质的通讯 录最为普遍。手工的信息管理存在许多弊端,如信息容易丢失、查找费 时、存储量有限等。随着科技的发展与人民生活水平的提高,计算机进 入了千家万户。作为计算机应用的一部分,使用计算机对通讯录进行 管理,具有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可 靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地 提高通讯录管理的效率。因此,开发一套通讯录信息管理软件是很有 必要的,并且意义重大。 Visual FoxPro 是一个在我国有着庞大用户群的数据库管理系统 软件,它将过程化程序设计与面向对象程序设计结合在一起,帮助用 户创建出功能强大,灵活多变的应用程序。VFP 还支持对象的链接与 嵌入和动态数据变换技术,丰富了设计效果,界面令人耳目一新。 利用VFP 6.0制作个人通讯录可以便于用户添加、删除和查找通 讯信息,使信息管理工作系统化、规范化、自动化,从而提高通讯录管 理效率。 1系统的设计 系统的设计决定了系统的开发方向和总体目标。因此,它是系统 开发的关键步骤之一。个人通讯录是以处理为中心的数据库应用系 统,具体设计过程分为需求分析、数据库设计、应用程序设计等流程。 1.1需求分析系统应满足个人通讯工作需要,并达到操作过程直 观、方便、实用、安全的要求;它采用模块化程序设计方法,既便于系统 功能的各种组合和修改,又便于进行补充、维护。系统应具备数据库维 护功能,及时根据用户需求进行数据的添加、删除、修改,备份等操作。 同时可在Windows xp\Windows NT 或Windows2000环境下独立运行。 1.2数据库设计在VFP 应用程序开发中,首先需要考虑数据库中 包括什么表,以及表的结构。个人通讯录中只需要一个通讯表,包括姓 名,私人电话,办公电话,电子邮箱,qq 号,联系地址,邮编等7个字 段。为了安全保密,可设置用户授权表,包括用户名和密码字段。 1.3应用程序设计数据库设计奠定了数据源的基础,要自如使用 需设计以下功能,包括:系统功能(浏览通讯录,关闭通讯录,打印通讯 录);编辑功能(增加记录,删除记录,恢复记录);查询功能(查询记录, 查询私人电话,查询办公电话,查看QQ ,查询通讯地址)。这些功能需 设计菜单程序。同时设置程序运行方案:输入安全保护密码,进入操作 窗口,通过下拉菜单完成指定任务。 2系统的实现 2.1系统实现的软硬件硬件系统:奔腾100以上CPU 、64M 以上内 存、1G 以上硬盘、光驱。 软件系统:Windows 9x 或更高版本、Visual Foxpro6.0中文版。 2.2创建数据库与数据表数据库与数据表是应用系统的数据资 料。在项目下创建数据库,命名为通讯录管理。在该库中创建两个表, 分别是个人通讯录.dbf 和用户授权表.dbf ,结构如上所述。输入几条示 范记录。为了保密,在用户授权表的表设计器中对用户名和密码字段 设置掩码。 2.3创建表单、报表对于表单来说可分为两部分考虑:一是显示数 据用的“表单;二是作为应用程序操作界面的“表单”,它们的用途不 同,但制作方法确相差不大。 在项目中新建表单,在表单设计器中首先设置数据环境,选取数 据源授权用户表,用表中的记录创建表单控件,方法是从数据环境设 计器中将用户名、密码字段分别拖入表单中,选定“密码”文本框,从属性对话框中将PassWordChr 属性设置*(星号)。利用表单控件中的命令按钮制作“确定”按钮,并且制定单击按钮后的任务,即在“过程代码框”中输入相应代码。显示数据的表单分别有个人通讯录.scx ,私人电话.scx ,办公电话.scx ,QQ.scx ,联系地址.scx 等。以上表单都是基于数据源“个人通讯录.dbf ”,只是在控件设置上有区别。个人通讯录.scx 选取表中的所有字段,私人电话.scx 选取姓名、私人电话字段,其它表单类同。报表是使用数据记录的另一种重要形式,除了具有浏览数据记录的功能外,还能控制打印输出数据记录的格式。在本系统中基于个人通讯录.dbf 制作一个报表,显示表中所有字段和记录。所以可利用报表向导制作,命名为个人通讯录.frx 。2.4制定应用程序的操作菜单个人通讯录应用系统的功能是由菜单来实现的,它的结构如设计所述。各菜单可在菜单设计器中制作。系统功能的下拉菜单项分别有以下命令实现:DO FORM 个人通讯录(浏览通讯录),个人通讯录.RELEASE (关闭通讯录),REPOT FORM 个人通讯录(打印通讯录);编辑功能的命令语句分别是DO FORM 个人通讯录(增加记录),DELETE (删除记录),RECALL (恢复记录);查询功能实现的命令分别是DO FORM 个人通讯录(查询记录),DO FORM 私人电话(查询私人电话),DO FORM 办公电话(查询办公电话),DO FORM QQ (查看QQ ),DO FORM 通讯地址(查询通讯地址)。2.5制定应用程序的主程序主程序包括初始化设置,制定操作窗口的显示形式,制定操作窗口尺寸与标题,设置程序文件位置与入口等内容。这里不给出具体代码。2.6调试与编译程序为了确保程序的正常运行,调试工作不可忽视,利用调试器发现错误并排除。调试完成后就可以进行程序的编译。在项目管理器中单击“连编”按钮,进入“连编选项”对话框。选择“连编可执行文件”,应用程序可以在独立于VFP 环境运行。3小结个人通讯录管理系统设置了程序入口界面,通过用户名和密码验证方可使用该系统。提高系统的安全性和保密性。个人通讯录管理系统以个人通讯录表文件作为数据源,各条通讯记录可以进行修改、维护。在此基础上建立的各种表单文件是用户的操作界面,能直观的浏览记录,通过控制按钮更方便控制和使用数据记录。应用程序的菜单以调用各种表单来实现,为用户提供了一个结构化访问数据库的途径。【参考文献】[1]王顺利,等.数据库应用技术.呼和浩特:内蒙古出版社,2007.[2]杨克玉,等.Visual FoxPro 6.0程序设计.合肥:安徽大学出版社,2002.[3]许向荣,等.Visual FoxPro 6.0项目案例导航.北京:科学出版社,2002.[责任编辑:翟成梁]●科○IT 论坛○490