当前位置:文档之家› 数据结构课程设计通讯录、电话号码查询系统

数据结构课程设计通讯录、电话号码查询系统

数据结构课程设计通讯录、电话号码查询系统
数据结构课程设计通讯录、电话号码查询系统

一、课程设计概述:

本次数据结构课程设计共完成两个题:电话号码查询系统、通讯录。

使用语言:C

编译环境:VC6.0

二、课程设计题目一

[实验内容]

电话号码查询系统

[问题描述]

设计散列表实现电话号码查找系统。

[需求分析]

(1)设每个记录有下列数据项:电话号码、用户名、地址;

(2)从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表;

(3)采用一定的方法解决冲突;

(4)查找并显示给定电话号码的记录;

(5)查找并显示给定用户名的记录。

整个系统必须满足系统功能要求;设计不同的散列函数,比较冲突率;在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。

[概要设计]

void getin(Record* a) // 键盘输入联系人的信息

void ShowInformation(Record* a) //显示输入的用户信息

Status collision(int p,int &c) // 冲突处理函数,采用二次探测再散列法解决冲突

void CreateHash(HashTable* H ,Record* a) // 建表,若哈希地址冲突,进行冲突处理void SearchHash ( HashTable* H,int &c) //在通讯录里查找关键字

void Save() //保存

void main_menu()

[存储结构]

typedef struct{//记录

NA name;

NA tel;

NA add;

}Record;

typedef struct{//哈希表

Record *elem[HASHSIZE]; //数据元素存储基址

int count; //当前数据元素个数

int size; //当前容量

}HashTable;

[详细设计]

#include //cout,cin语句的头文件

#include //清屏函数头文件:使用csl时调用system

#include //字符串头文件

#include

#include

#define MAXSIZE 100 //电话薄记录的数量

#define MAX_SIZE 50 //用户名、电话号码、地址的最大长度

#define HASHSIZE 400 //定义表长

#define SUCCESS 1 //查找

#define UNSUCCESS -1

#define LEN sizeof(HashTable) // 哈希表的长度

using namespace std;

typedef int Status;//typedef用来定义类型的别名。此处用status作为int别名,目的表达int 变量是一个状态变量。

typedef char NA[MAX_SIZE]; //NA作为char的别名

typedef struct{ // 自定义一个记录用户名、电话号码、联系地址的结构体的别名record

NA name,tel,add,way;

}Record;

Record a[HASHSIZE];

typedef struct{ //散列表

Record *elem[HASHSIZE]; //数据元素存储地址

int count; //数据元素个数

int size; //容量

}HashTable;

Status eq(NA x,NA y)

{ //关键字比较,相等返回SUCCESS;否则返回UNSUCCESS

if(strcmp(x,y)==0)//2个字符串的大小比较s1=s2,strcmp(s1,s2) == 0; s1>s2, strcmp(s1,s2) == 1; s1

return SUCCESS;

else

return UNSUCCESS;

}

Status NUM_BER; //记录的个数

void getin(Record* a){ // 键盘输入联系人的信息,Record*调用Record函数;a是参数

cout<<"请输入要添加的联系人的个数:\n";

cin>>NUM_BER;

int i;

for(i=0;i

cout<<"请输入第"<

cin>>a[i].name;

cout<<"请输入第"<

cin>>a[i].tel;

cout<<"请输入第"<

cin>>a[i].add;

}}

void ShowInformation(Record* a)//显示输入的用户信息

{

int i;

for( i=0;i

cout<<"\n第"<

}

long fold(NA s) //人名的折叠处理:将关键字分割成位数相同的几部分,最后一部分位数可以不同,然后取这几部分的叠加和(去除进位)作为散列地址

{

char *p;

long sum=0;

NA ss;

strcpy(ss,s);//复制字符串,不改变原字符串的大小写

strupr(ss);//将字符串ss转换为大写形式

p=ss;

while(*p!='\0')

sum+=*p++;

return sum;

}

int Hash1(NA str){//哈希函数

long n;

int m;

n=fold(str);//先将用户名进行折叠处理

m=n%HASHSIZE; //折叠处理后的数,用除留余数法构造哈希函数

return m; //并返回模值

}

int Hash2(NA str){//哈希函数

long n;

int m;

n = atoi(str);//把字符串转换成整型数.

m=n%HASHSIZE; //用除留余数法构造哈希函数

return m; //并返回模值

}

Status collision(int p,int &c){ // 冲突处理函数,采用二次探测再散列法解决冲突

int i,q;

i=c/2+1;

while( i < HASHSIZE ){

if(c%2==0){

c++;

q=(p+i*i)%HASHSIZE;

if(q>=0) return q;

else i=c/2+1;

}

else{

q=(p-i*i)%HASHSIZE;

c++;

if(q>=0) return q;

else i=c/2+1;

}

}

return UNSUCCESS;

}

int searchHash( HashTable * &H, NA key, int &p, int &c ,int way )

{

if( way == 1 ){

p=Hash1( key );

while(H->elem[p]!=NULL && !eq( key, H->elem[p]->name ) )//若哈希地址冲突,进行冲突处理

collision( p ,++c );

if( eq( key, H->elem[p]->name ) )

return 1;

else

return 0;

}

else

{

p=Hash2( key );

while(H->elem[p]!=NULL && !eq( key, H->elem[p]->tel ) )//若哈希地址冲突,进行冲突处理

collision( p ,++c );

if( eq( key, H->elem[p]->tel ) )

return 1;

else

return 0;

}

}

// 建表,若哈希地址冲突,进行冲突处理

void CreateHash(HashTable* H ,Record* a)

{

cout<<"\n 〓〓〓〓〓〓建立散列表〓〓〓〓〓〓〓";

cout<<"\n ⑴. 以姓名建立散列表(再散列法解决冲突) ";

cout<<"\n ⑵. 以电话号码建立散列表(再散列法解决冲突) ";

cout<<"\n ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆";

cout<<"请输入选择:";

int num,i,p=-1,c;

cin>>num;

for(i=0;i

c=0;

if( num==1 ){

p=Hash1( a[i].name );

while(H->elem[p]!=NULL && !eq( a[i].name, H->elem[p]->name ) )//若哈希地址冲突,进行冲突处理

collision( p ,++c );

}

else{

p=Hash2( a[i].tel );

while(H->elem[p]!=NULL && !eq( a[i].tel, H->elem[p]->tel ) )//若哈希地址冲突,进行冲突处理

collision( p ,++c );

}

H->elem[p]=a+i; //求得哈希地址,将信息存入

H->count++;

cout<<"第"<

}

cout<<"\n建表完成!\n此哈希表容量为"<count<<".\n";

}

// 查找用户名和电话号码的记录;

void SearchHash ( HashTable* H,int &c){//在通讯录里查找关键字,若查找成功,显示信息

//c用来记录冲突次数,查找成功时显示冲突次数

NA type;

int p;

cout<<"\n 〓〓〓〓〓〓查找并显示用户信息记录〓〓〓〓〓〓〓";

cout<<"\n ⑴. 查找并显示给定用户名的记录";

cout<<"\n ⑵. 查找并显示给定电话号码的记录";

cout<<"\n ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆";

cout<<"请输入选择:";

int num;

cin>>num;

switch(num){

case 1:

cout<<"\n请输入要查找的用户名:\n";

cin>>type;

searchHash( H, type, p, c, 1);

if( eq( type, H->elem[p]->name )==1){

cout<<"\n查找成功!以下是您需要要查找的信息:\n\n";

cout<<"姓名:"<elem[p]->name<<"\n电话号码:"<elem[p]->tel<<"\n 联系地址:"<elem[p]->add<<"\n";

}

else

cout<<"\n对不起,该用户不存在\n";

break;

case 2:

cout<<"\n请输入要查找电话号码:\n";

cin>>type;

searchHash( H, type, p, c, 2);

if( eq( type, H->elem[p]->tel )==1){

cout<<"\n查找成功!以下是您需要要查找的信息:\n\n";

cout<<"姓名:"<elem[p]->name<<"\n电话号码:"<elem[p]->tel<<"\n 联系地址:"<elem[p]->add<<"\n";

}

else

cout<<"\n对不起,该用户不存在\n";

break;

default:

cout<<"输入错误,请重新输入!";

}

}

void Save(){ //保存

ifstream in;

ofstream out;

out.open("123.txt");

printf("\n保存成功!");

for(int i=0; i

out<<"姓名:"<

}

return;

}

void main_menu()

{

int c,flag=1;////定义一个布尔型变量flag并初始化为真(true)

HashTable *H;

H=(HashTable*)malloc(LEN);

for(int i=0;i

H->elem[i]=NULL;

H->size=HASHSIZE;

H->count=0;

while (1){ // while使电话查询系统执行后返回主菜单的界面

system("cls");

cout<<"\n 〓〓〓〓〓〓↖(^ω^)↗欢迎使用电话号码查找系统〓〓〓〓〓〓〓";

cout<<"\n ⑴. 添加用户信息";

cout<<"\n ⑵. 读取所有用户信息";

cout<<"\n ⑶. 建立散列表(再散列法解决冲突) ";

cout<<"\n ⑷. 查找并显示给定用户的记录";

cout<<"\n ⑸. 保存";

cout<<"\n ⑹. 退出";

cout<<"\n 提示:进行4操作前请先进行3操作 .否则无法查找成功!"; cout<<"\n ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆";

cout<<"\n\n请选择:";

int num;

cin>>num;

switch(num){

case 1:

getin(a);

system("pause");

break;

case 2:

ShowInformation(a);

system("pause");

break;

case 3:

CreateHash (H,a); /* 建立散列表*/

system("pause");

break;

case 4:

c=0;

SearchHash (H,c);

system("pause");

break;

case 5:

Save();

system("pause");

break;

case 6:

return ;

break;

default:

cout<<"输入错误,请重新输入!";

cout<<"\n";

}

}

}

int main(int argc, char* argv[])

{

main_menu();

//执行结束后清屏,显示主菜单

return 0;

} [调试分析]

问题一:

现象:每次执行后,系统界面不自动清屏?

原因:执行每个选项后,没有清屏操作的代码。解决办法:将CLS放到switch函数体后面,执行选项后,执行清屏操作

问题二:

现象:进行查找的时候,总是查找失败! ! !

原因:查找前没有建立散列表。解决办法:先建立散列表,再查找。

[运行结果及分析]

课程设计题目二

[实验内容]

通讯录

[问题描述]

管理通讯信息,包含姓名(name )、出生日期(birthday)、城市(city)、职业(profession)、电话(tel)、QQ号(qq)等。

[需求分析]

1、输入信息。

2、显示信息。

3、分别以姓名、城市、出生日期、电话或QQ作为关键字查找。

4、删除信息。

5、存盘,将数据保存在文件phonefile中,以便下次可以继续上述工作。

测试数据:自己设计,不少于30人。

[概要设计]

void TeleNumber::ReadFile(istream & in) //从文件依次将标准输入流中的数据读入到变量name,.... 中

void TeleNumber::input() //信息数据输入

void TeleNumber::display() //调用telenumber中的display函数输出信息

void TeleMessage::Remove() //删除

void TeleMessage::Show()

int main()

[存储结构]

此程序的存储结构是单链表

void TeleMessage::Insert() //插入

{ End->input(); //尾指针指向input,从单链表尾部插入信息

End->Next=new TeleNumber; //尾节点指向下一个数据节点,开辟一个新的节点

End=End->Next; //尾节点指向下一个节点

cout<

[流程图]

[详细设计]

#include //对标准输入输出文件的操作,后面有命名空间,不能用,否则出错

#include //是对文件操作

#include

#include

using namespace std;

int num ;

struct TeleNumber //用struct结构体来存放不同类型的数据,函数

{

char name[20]; //姓名,字符必须注明长度

int phoneNumber; //电话号码

int birthday; //出生日期

char city[30]; //城市

TeleNumber * Next;

void ReadFile(istream & in);//

void input(); //信息输入的函数

void display();//信息输出的函数

} ;

void TeleNumber::ReadFile(istream & in) //从文件依次将标准输入流中的数据读入到变量name,.... 中

{ in>>name>>phoneNumber>>birthday>>city;

}

void TeleNumber::input() //信息数据输入

{ cout<<"请输入姓名"<

cin>>name;

cout<<"请输入电话号码"<

cin>>phoneNumber;

cout<<"请输入出生日期"<

cin>>birthday;

cout<<"请输入城市"<

cin>>city;

}

void TeleNumber::display() //调用telenumber中的display函数输出信息

{ cout<<"姓名:"<

<<"出生日期:"<

}

class TeleMessage //建造一个类,表示信息功能的类{ public:

TeleMessage(); //构造数据结构

~TeleMessage(); //析构函数,用来释放单链表

void Save(); //数据保存到文件

TeleNumber * Search(char *); //定义一个查找数据的指针

void Insert(); //插入函数的定义在后面,这里要先声明

void Remove(); //删除

void Change(); //更改

void Show(); //显示

private:

TeleNumber * End,* Head; //定义结构体的头尾指针

ifstream in; //定义从文件中读入数据

ofstream out; //定义将数据写到文件中

}; TeleMessage::TeleMessage() //定义信息类中的信息函数

{ Head=new TeleNumber; //头插法建立单链表Head->Next=new TeleNumber; //head指向一个新分配的节点

End=Head->Next; //对结构体遍历,头节点指针依次指向下一个节点,直到指向尾节点

in.open("TeleNumber.text"); //打开外存文件,读入数据

} //使屏幕暂停,而不是直接闪过

TeleMessage::~TeleMessage() //释放单链表

{ TeleNumber * temp; //定义一个数据指针temp

while(Head->Next!=End) //当头节点指向的下一个指针不是尾节点

{ temp=Head->Next; //数据指针指向头节点指向的下一个节点Head=Head->Next; //头结点依次指向头结点的下一个节点

delete temp; //删除数据指针指向的节点数据

}

delete Head,End; //删除头尾指针

}

void TeleMessage::Save() //保存文件

{ out.open("TeleNumber.txt"); //建立外存文件TeleNumber.txt,把数据写入外存文件中

for(TeleNumber *p=Head->Next;p!=End;p=p->Next) out<name<<"\t"<phoneNumber<<"\t"<birthday<<"\t"<city<

out.close(); //定义一个数据指针p,使p依次指向头结点指向的下一个指针,直到p指向尾节点,依次写入每个节点的信息

cout<<"保存成功!"<

}

void TeleMessage::Insert() //插入

{ End->input(); //尾指针指向input,从单链表尾部插入信息

End->Next=new TeleNumber; //尾节点指向下一个数据节点,开辟一个新的节点

End=End->Next; //尾节点指向下一个节点

cout<

}

void TeleMessage::Remove() //删除

{ char name[20];

TeleNumber * p=new TeleNumber,*temp=NULL; //定义一个数据指针,指向新的数据,定义一个数据指针temp,指向空函数

cout<<"请输入要删除人的姓名:"<

cin>>name;

if( (p=Search(name))) //如果找到了要删除的节点

{ if( Head->Next==p){

Head->Next=p->Next;//利用头指针,将要删除的数据拉出来,这个是经过找很多人写出来的。首先非常感谢百度知友和校友

}

temp=p; //使指针temp指向p指向的要删除的节点

p=p->Next; //摘链:使p指向p指向的下一个节点的下一个节点

delete temp; //删除temp指向的节点

cout<<"删除成功!"<

}

else

{ cout<<"没有找到!"<

}

}

TeleNumber * TeleMessage::Search(char * name) //定义信息类中查找函数指针

{ for(TeleNumber *p=Head->Next;p!=End;p=p->Next) //定义一个数据指针p指向头节点指向的下一个节点,头节点没有数据,数据从头节点的下一个节点开始存储,P进行遍历操作,直到指向尾节点

if(!strcmp(p->name,name)) //strcmp作用是俩个变量相减,如果p所指向的name 和要查找的name相同,则strcmp值为0,非1

{ p->display();

return p;

}

else

cout<<"查无此人"<

return 0;

system("cls");

}

void TeleMessage::Show()

{ for(TeleNumber * p=Head->Next;p!=End;p=p->Next)

p->display();

}

int main()

{ bool flag=true;//定义一个布尔型变量flag并初始化为真(true),只认识真(true)和假(false),1和0,也就是成立和不成立的简单判断。

TeleMessage tele;

char name[20];

while(flag) //如果flag为真

{

system("cls");

cout<<"〓〓〓〓〓〓〓通讯录〓〓〓〓〓〓〓"<

cout<<" 1.增加信息"<

cout<<" 2.显示信息"<

cout<<" 3.查找号码"<

cout<<" 4.删除信息"<

cout<<" 5.保存信息"<

cout<<" 6.退出系统"<

cout<<"――――――――――――――――― "<

cout<<"请选择:";

cin>>num;

switch(num)

{ case 1:tele.Insert();break;

case 2:tele.Show();break;

case 3: cout<<"请输入姓名"<

cin>>name;

tele.Search(name);break;

case 4:tele.Remove();break;

case 5:tele.Save();break;

case 6: cout<<"谢谢使用! "<

default:cout<<"输入错误,请重新输入!";

cout<<"\n";

}

system("pause ");

} }

[调试分析]

问题一:

现象:执行查找时,运行出错。

原因:定义查找时,出错了,经过调试if语句,运行成功

问题二:

现象:按0,系统不退出

原因:输入0后,系统执行的是break,而不是return 0.

问题三:

现象:删除操作时,系统显示俩排相同的信息

原因:定义删除函数时,一个for,一个if导致删除执行了俩次。解决办法是for消掉[运行结果及分析]

三、参考文献:

[1].《C程序设计》第二版,谭浩强著。北京:清华大学出版社,2004年。

[2].《数据结构》严蔚敏、吴伟民。北京:清华大学出版社,2005年。

个人通讯录管理系统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) /*只写方式判断*/

简单的通讯录实验报告

( 二〇一二 年 十 月 课程设计说明书 本科毕业设计 题 目:简单通讯录程序 学生姓名:李天罡 学 院:工学院 专 业:数字媒体技术 班 级:2011级 指导教师:王金祥

目录 引言 (3) 第一章需求与分析...................................... I 1.1开发环境 ....................................................................................................... I 1.1.1软件环境 ........................................................................................................... I 1.1.2硬件环境 ........................................................................................................... I 1.1.3开发平台 ........................................................................................................... I 1.2功能需求 ....................................................................................................... I 1.2.1数据字段 ........................................................................................................... I 1.2.2主要功能 ........................................................................................................... I 第二章总体设计 ...................................... II 2.1流程图 ......................................................................................................... II 2.2主要模块功能介绍 .................................................................................... III 2.2.1选择模块 ........................................................................................................ III 2.2.2增添删减模块 ................................................................................................ III 2.2.3查询模块 ........................................................................................................ I V 2.2.4排序模块 ........................................................................................................ I V 第三章详细设计 ...................................... IV 3.1源代码 ........................................................................................................ I V 第四章实体机测试..................................... XV 4.1测试的目标 ..................................................................................................... XV 4.2测试方法 ......................................................................................................... XV 4.3测试结果 ........................................................................................................ XVI 总结 .............................................. XXIII

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

课程设计报告 通讯录管理系的设计与实现 姓名:钟婷英 班级:计122 学号:1213023039 时间:2014年1月10日 1,问题描述 通讯录是用来记载和查询联系人通讯信息的工具,电子通讯录已经为手机,电子词典等设备中不可缺少的工具软件,请设计一个能够满足这种需求的软件,基本功能模块如下图所示。 输入:记录的录入。 显示:通讯录的显示。 查找:按指定方式,输入关键字,查找指定记录。 插入:实现记录的添加或在指定位置插入记录。 保存:将内存中正在被操作的通讯录以文件形式保存到磁盘。 读入:保存的逆操作,讲存在磁盘中的通讯录文件读到内存中。 排序:按指定关键字对通讯录数据进行排序。 修改:提供修改某条记录的功能。 移动:移动记录在通讯录中的存储位子,使其被查找或显示时的位序前移或后移。 退出:结束程序运行。 2,设计要求 (1)设计通讯录数据的逻辑结构和物理结构。 (2)通讯录至少包括下列数据信息:姓名,电话,单位等。 (3)完成图示基本功能。 (4)软件易用,操作简单。 (5)根据自己使用通讯录体会扩充其他功能,如按姓名查找,按号码查找,按序号删除等。 (6)设计足够多的测试用例 主程序 输 入 显示 查找 插入 删除 保存 读入 排序 修改 移动 退出

(7)数据输入有效性检验:如姓名不能为空,号码中不能有非法字符等。(8)提供分组管理的相关功能,如:分组显示,加入组,组创建,组查询等。(9)可视化的界面设计。 3,概要设计 1,使用struct data struct addressList定义结构体类型,struct data结构体中包括年月日的定义,strcut addressList中包括联系人ID账号,名字,性别,名族,生日,手机号码,QQ号码和家庭地址等。 struct date { int year; int month; int day; }; struct addressList { char ID[10]; char name[10]; char gender[4]; char minzu[2]; date birthday; char shoujihao[14]; char QQ[11]; char address[40]; }; 2,程序设计过程中用到的函数有: int zhujiemian( ); void tianjia(fstream & ); void xiugai(fstream & ); void shanchu(fstream & ); void chazhao(fstream & ); void liulan(fstream & ); int findRecord(fstream &, const char *); int getAmount(fstream & ); 3,整个程序用的是面向对象的方法,在主函数中调用各种函数,来实现通讯录的功能。在主函数中,使用的是c++语言中的开关语句(switch)用来选择通讯录的各种功能。

通讯录管理系统

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

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

个人通讯录管理系统

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

通讯录管理系统课程设计报告..

设计课题题目 一、课程设计目的与要求 1.课程设计目的 (1)综合运用之前所学知识(选择控制,循环控制,数组,函数,指针,结构体和文件等)来完成一个简单的信息管理程序的设计。 (2)充分体现和体会函数在程序设计中的必要性和实用性,并反映主函数main()在程序设计中的实现思路和方法。 2. 课程设计要求 制作一个通讯录系统。 (1)该程序具有查找、添加、修改、删除功能。 (2)通讯录包括:姓名、电话、街道、城市、省、邮编等。 二、总体设计 根据系统的要求,系统总体设计如图1所示。

三、详细设计 1、数据结构设计 #include /*标准输入输出函数库*/ #include /*标准函数库*/ #include /*字符串函数库*/ #define FILENAME "phone.dat" struct date //定义一个结构体类型数组 { char name[10]; /*姓名*/ char phone[12]; /*电话*/ char email[20]; /*邮箱*/ char QQ[20]; /*QQ*/ } per[10]; int menu() //主菜单选择函数 2.函数说明 (1) 主函数 main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能。 (2)

四、程序清单 1、头文件 #include /*标准输入输出函数库*/ #include /*标准函数库*/ #include /*字符串函数库*/ #define FILENAME "phone.dat" 2、主函数 void main() //主函数 { int n=0,i; while(1) { switch (menu()) { case 1: { printf("\n\t 通讯信息录入\n"); //信息录入 n=Input(per, n); } break; case 2: printf("\n\t\t\t 通讯录记录表\n"); //显示记录 Display(per,n); break; case 3: printf("\n\t保存功能\n"); WritetoText(per,n); //保存数据 printf("\t"); system("pause"); //操作完成后进行暂停 break; case 4: printf("\n\t从通讯录中删除记录\n"); n=Delete_a_record(per,n); //删除记录 printf("\t"); system("pause"); break; case 5: printf("\n\t修改通讯录中的记录\n"); Change(per,n); //修改数据

个人通讯录管理系统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 通讯录文件不存在"); /*判断结论*/

简单通讯录C++实现

简单通信录的C++实现 这是一个简单的通讯录系统,数据结构内包括学号,姓名,手机号,具备增加、删除、修改、查询的功能。 //2015/3/12 by LDSD #include #include using namespace std; struct node { char num[15]; char name[7]; char phone[12]; node *next; }; void serch(node *head) { head=head->next; char con; char data[15]; while(1) { cout<<"1:按学号查询 2:按姓名查询,请选择指令执行操作。\n"; cin>>con; if(con=='1') { cout<<"请输入学号。"<>data; while(head!=NULL) { if(strcmp(head->num,data)==0) { cout<num<<'\t'<name<<'\t'<phone<<'\n';break; } else head=head->next; } if(head==NULL)

cout<<"未查询到匹配的记录!"<>data; while(head!=NULL) { if(strcmp(head->name,data)==0) { cout<num<<'\t'<name<<'\t'<phone<<'\n';break; } else head=head->next; } if(head==NULL) cout<<"未查询到匹配的记录!"<>new_stu->num>>new_stu->name>>new_stu->phone; new_stu->next=head->next; head->next=new_stu; } void modify(node *head) { char num[15]; char name[7]; char phone[12]; node *head1=head->next; int i=1; node *new_stu=new node; cout<<"通讯录内容如下,请依次输入编号,学号,姓名,电话号码,以便对信息更新。\n"; while(head1!=NULL) { cout<num<<'\t'<name<<'\t'<phone<<'\n'; head1=head1->next;

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

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

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

通讯录管理系统

测试与光电工程学院 课程设计任务书 测控技术与仪器系 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)

(简易手机通讯录管理系统)

一、课题名称 简易手机通讯录管理系统(线性表、查找、排序) 二、主要内容 简易手机通讯录管理系统的设计主要是实现对手机通讯录的管理和相关操作。基本功能如下: (1)联系人信息录入、添加功能:包括手机号(此处用短号,5位,不能重复)、姓名、家庭住址的录入和添加。 (2)联系人信息查询功能:能①按手机号进行查询。②按联系人姓名进行查询。 (3)排序:①能按手机号升序进行排序;②能按姓名进行升序排序,姓名相同时按手机号从小到大进行排序 (4)联系人信息的修改、删除功能:①按手机号进行联系人信息的修改和删除。 ②按姓名进行联系人信息的修改和删除,多个姓名时,再指定具体的号码。 (5)统计功能:统计自己的联系人有多少个。 三、课题设计的基本思想,原理和算法描述 (1)本次课程设计题目为简易手机通讯录管理系统,主要运用到线性表中顺序表的相关知识,以及顺序查找的思想和冒泡排序算法。 (2)界面设计 //菜单函数 int menu() { int c; printf("\n\n\t☆☆☆☆☆☆☆手机通讯录信息管理系统☆☆☆☆☆☆☆☆\n\n"); printf("******************************************************************* ***\n"); printf(" 1.添加联系人信息\n"); printf(" 2.查询联系人信息\n"); printf(" 3.对联系人信息进行排序\n"); printf(" 4.修改联系人信息\n"); printf(" 5.删除联系人信息\n"); printf(" 6.统计联系人个数\n"); printf(" 0.退出信息管理系统\n"); printf("******************************************************************* ***\n\n");

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

通讯录管理系统设计说明书 系统概述: 随着毕业的来临,我们就将面临分离。为了能在毕业后,能够方便联系我们在大学其间的同学朋友,通讯录就是一个可以帮我们方便查找同学朋友的工具。 随着计算机的普及,人们的生活摆脱了传统式的记事本、电话簿,越来越多的靠计算机来帮助人们记住这些事情,极其简便。这就需要有一个使用的通讯录管理系统,用户可以方便的通过自己电脑的通讯录管理系统,来随时查阅自己所需要的信息,而不必再大费周折去翻开那繁琐的记事本。 通讯录管理系统是一个专门针对储存用户联系方式以及一些简单个人信息的实用管理系统,它方便了用户对众多客户、朋友、同事等个人信息的储存和快速查阅的功能,大大减少了查找过程的时间。 关键字:插入,删除,查找,输出。 需求分析: 调查用户需求: 随着同学们的即将毕业,蹋出社会,交际难免地逐渐扩大,与外界联系将更为广泛和密切,传统的手工通讯录、地址簿已经难以满足快节奏、高效率的现代生活的需求。经常发生要在几十甚至上百张名片中找出某一张名片的情况,若由手工完成效率十分低。当交际扩大后,传统的手工通讯录非常不方便,不易查询、修改、存放,不易保密,容易遗失。 由计算机带来管理庞大而繁杂的通讯录是非常合适的,不仅查询和修改方便,并且效率高,速度快,完全能够满足现代化交际活动的要求,同时也更方便同学们联系交往。 本系统专门用于个人通讯信息管理的小型应用软件,主要提供个人通讯信息的登记、修改、浏览、查询和打印等功能。

1.用户的主要信息需求: ①对个人通讯信息资料进行登记、修改、浏览。 ②对个人通讯信息资料进行按姓名和学号查询。 ③对个人通讯信息资料进行打印输出。 系统功能设计与分析: 1.功能模块图 2.功能设计 (1)新建通讯录功能 增加一个新的记录,并保存通讯录; (2)搜索通讯录功能

个人通讯录系统设计

个人通讯录系统设计 摘要: 系统主要为满足单个用户对联系人的管理和查询工作而设计。系统使用Visual Basic 作为编程语言、选用Access 2003作为后台数据库,并用ADO对象和ADO Data 控件进行数据库编程,实现了用户对联系人信息的添加、查询、浏览、修改、删除和对基本用户的管理。 系统设计突出个性化、人性化的特点。界面美观,友好.登录后即出现欢迎画面,为防止用户出现密码遗忘的情况,系统还创新性地设计了密码保护程序。用户可通过回答密码提示问题,找回自己遗忘的密码,实现登录.用户可以随时修改密码,还可通过系统获得必要的帮助,查看系统的介绍。 关键字:通讯录 VB Access 目录: 一、选题背景—------—-----—--—---—-——---———-----——----— --—---——--—-2 1、系统开发背景—----——--—-—--—----—-——-—————--—- -------—-—--———2 2、设计思路——-——---—--———--—-—-—--------——--—-———- —---———--—-—-3 3、系统指导思想------——--—--—-—-———-—-—--—---——--—-—-—----—-——-3 4、应解决的主要内容----—--——---——-----—--—-—-----—-——-— --—----3 二、可行性分析--—--—-—-——-------——-------——--—-—--—-------—--————4

1、技术可行性—----—-———--—---—--—--———---—---——--—-——-—-——-—-——4 2、经济可行性---—--———-—--—--———----——-—--——-------—--—-----———4 3、环境可行性-———-—-—-———-—-——----——-————-——-—-------—----—--—-5 4、进度可行性-—-----——-—-—-———-—---—---————-------—-——--———----5 三、需求分析-—---—--------——-———-——-——-—-—------—-—-—-——-—-—-—5 1、用户需求分析--—-—-——-----—----————-—-—-----—---—--———-——--—-5 2、业务流程分析-----—--—------—--—-----——-—--—---—————-—-—---—-6 3、数据流程分析—---——-——---—---------—--—-—-——-----——----—-----6 4、数据字典--———---—---—--—-——---——----———-------—----------—7 5、处理逻辑分析-—-------—---—-—--—--—-—-—--—-—-—--—--—-—--—---16 四、系统设计-—---—---—----—----——---—-----—-—-—--------—--————--16 1、总体结构设计-————-—---—-------—--—-—--—-———-——--—-—-----—--16

通讯录管理系统

实验课程名称 专业班级 学生姓名 学号 指导教师 至学年第学期第至周

目录 1概述 (3) 1.1现状分析 (3) 1.2存在的问题 (3) 1.3实现意义 (3) 2系统分析 (4) 2.1 用户需求分析 (4) 2.2 管理者需求分析 (4) 3概要设计 (4) 3.1程序设计中的数据设计 (4) 3.2算法流程图 (6) 4详细设计 (11) 4.1 通讯录建立模块设计 (11) 4.2 通讯录插入模块设计 (11) 4.3 通讯录查找模块设计 (12) 4.4 通讯录删除模块设计 (12) 4.5 通讯录输出模块设计 (13) 4.6 通讯录数据保存模块设计 (13) 5运行与测试 (14) 5.1 执行过程中出现错误 (14) 5.2功能模块的调试 (14) 6总结和心得 (21) 参考文献 (21)

1概述 1.1现状分析 通讯录管理系统是一个非常通用的管理系统。很多地方都需要拥有自己的通讯录管理系统,以便对自己的同学、同事、朋友等信息资料的管理及使用。通讯录管理系统具有很强的实用性,使用者只要根据具体情况稍加修改,就可以把它应用到实际需求中。随着社会的发展及知识经济的到来,管理信息系统在各行各业发挥着越来越重要的作用。通讯录管理系统是典型的信息管理系统。通讯录管理系统工作繁琐,包含了大量的信息数据,因此需要一个完整的信息管理系统来实现对这些数据的管理,满足管理者的需求。通讯录管理系统的设计能推动机关单位信息管理走向科学化、规范化。通讯录管理系统易于开发、维护、使用方便。各行各业使用越来越广泛。常用于日常办公,提高办事效率。 1.2存在的问题 通讯录管理系统存在很多不足,由于自身编程能力的不足,这个系统实现的功能有限,只能实现管理系统最基本的功能,简单的添加、查询、删除、退出功能。每个模块设计也存在不足,还需要努力学习,进一步完善所学知识。编译过程中,由于自己的粗心造成输入错误,使程序不能运行,需要自己认真仔细对待。还有没有读懂某些模块函数的设计思想,理解困难,能力有限,某些功能自己不能设计完成,还需要进一步努力提升编程能力。不能完全满足用户的需求。 1.3实现意义 通讯录管理系统的设计使得对信息的管理更加方便,能够实现动态管理。检索迅速、查找方便、可靠性高、存储量大、保密性好。管理者工作起来效率高,可以不用再做大量的数据记录,从而减少了机关机关单位职员的工作量。运用数据结构中的算法思想做数据结构,结合C语言知识,编写一个通讯录管理系统。通过完成本课程,进一步熟悉C语言的基本知识,并掌握数据结构的一些基本算法思想,进一步熟悉指针的用法,数组的建立运用和函数的调用。加深对数据结构的理解,提高算法设计能力,锻炼编程能力。用C语言编写一个通讯录管理系统软件,要求能实现通讯录管理系统中增加新记录、按名字或编号删除记录、显示通讯录的所有信息、按名字或编号查询信息、保存通讯录、退出系统。

(整理)个人通讯录系统软件工程课程报告

淮北师范大学 软件工程 题目:个人通讯录系统 班级:10 网络工程 日期:2013年 6 月 26 日

软件工程课程设计报告 目录 目录 2 一、软件开发过程计划------------------------------------- 3 二、需求分析--------------------------------------------- 3 二、系统分析及设计-------------------------------------- 5 四、数据库设计------------------------------------------- 6 五、系统实现-------------------------------------------- 8 六、软件测试------------------------------------------- 35 七、小结----------------------------------------------- 36

一、软件开发过程计划 主要负责人:冯燕艳 1、项目名称 个人通讯录系统 2、指导教师 葛方振 3、开发人员及其任务 冯燕艳(组长):软件开发过程计划、软件编码 高丽莎:软件开发系统设计 唐传广:软件编码及测试 解倩:数据库设计及开发 杨琳:软件开发需求分析 4、计划项目进度表 软件开发过程计划两个课时 软件开发需求分析三个课时 软件开发系统设计三个课时 数据库设计及开发两个课时 软件编码及测试五个课时 确认测试一个课时 二、需求分析 主要负责人:杨琳 1、需求的定义 用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足合同、标准,规范或其它正式规定文档所需具有的条件或权能。 2、需求分析目标 实现本地通讯录管理系统的基本功能,可以实现电话用户的建立、联系人的存储、联系人的添加及删除、联系人分组、添加及删除等功能,以方便人们的记录和通讯。 3、用户的特点 提供给学生通讯录的相关功能,本软件为应用型软件,用户不需要任何技术背景。 4、运行环境 (1)硬件平台:PC台式机,笔记本电脑

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

科技信息 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

相关主题
文本预览