通讯录管理系统数据库分析与设计说明书

合集下载

通讯录系统设计说明书

通讯录系统设计说明书

通讯录系统设计说明书(不少于2500字)一、设计思想通讯录管理系统是每一个用户管理通讯录的不可缺少的一个管理信息系统,它的内容对于用户的管理者来说是至关重要的,所以通讯录管理系统应该能够为每一个用户的管理者提供充足的信息和快捷的查询手段,大大的方便用户合理的管理通讯录。

作为计算机应用的一部分,使用计算机对通讯录进行管理,具有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。

这些优点能够极大地提高通讯录管理的效率,也是用户理财的科学化、正规化管理,与先进科学技术接轨的重要条件。

开发这一系统的好处大约有以下几点:第一、可以存储大量的通讯录信息,安全、高效;第二、只需一档案录入员即可操作系统,节省人力;第三、可以迅速查到所需通讯录信息。

二、系统架构及运行环境系统架构:运行环境:1、操作系统:Microsoft Windows Server 2008,Windows XP,Windows 7,Windows 8,Windows 102、技术平台:.Net Framework 3.5三、系统数据库介绍用户:用户名,密码联系人:联系电话,姓名,工作单位,电子邮件,头像用户登录联系人数据库表结构:登录表联系人表四、系统功能模块介绍本系统由1个功能模块(主界面)和5个表单(新增联系人,删除联系人,修改联系人信息,视图,搜索联系人)组成。

主要功能:(1)录入所有通讯人员的相关信息,当单击新增按钮时,就会弹出增加信息的窗体。

(2)修改当前记录:当选择功能菜单时,会出现一个新用户界面对话框用户根据对话框提示进行当前记录的数据的修改直到修改完所有的信息(3)删除记录:当用户选择要删除人员的姓名即可删除(4)查询记录:本程序可以通过姓名、电话进行查询。

五、系统主要功能模块详细设计及实现登录窗体主窗体增加联系人窗体删除联系人窗体查询联系人窗体六、心得体会1、心得体会2、技术总结。

通讯录管理系统报告书

通讯录管理系统报告书

《C++程序设计》课程设计通讯录管理系统学院信息与电气工程学院专业电子信息工程年级大一学号0808140208班级电子081姓名蒋明阳200 9年7月目录一.设计项目名称二.课程设计目的三.需求分析及规格说明3.1 需求分析3.2 详细功能3.3 规格说明四.概要设计4.1 通讯录管理系统说明图4.2 数据的结构和各模块分析4.3 数据保存方式及格式4.4 实现各模块功能的相应程序五.详细设计的部分六.调试分析及心得体会6.1 调试分析6.2 心得体会七.使用说明7.1 运行环境7.2 系统操作说明八.全部源代码一.设计项目名称:通讯录管理系统二.课程设计目的:通过设计一个《通讯录管理系统》,进一步熟悉C++中类的概念、基本知识和技能,类的封装、继承的实现方式。

掌握面向对象程序设计的基本思路和方法,并利用所学的基本知识和技能解决简单的面向对象的程序设计问题。

了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C++的理解与Visual C++环境的使用:逐步熟悉程序设计的方法,并养成良好的编程习惯。

三.需求分析及规格说明:3.1,需求分析:● 3.11设计一个实用的小型学生通讯录管理系统,用文件来存储学生的姓名,电话,QQ号码,邮编,地址等信息,完成对信息的添加,删除,查询,显示所有信息,退出及用双向链表来处理修改等操作.● 3.12 详细功能如下:● A.添加:系统将提示用户输入新添加学生信息,输入到文件中,学生信息数据包括姓名,电话号码,QQ号,邮编,地址.● B.删除:首先由用户输入要删除的学生的姓名或者电话号码,然后调用删除函数,删除该学生的所有相关资料.● C.显示所有人员信息:该功能将显示已经保存的所有学生的姓名,电话,QQ号,邮编及地址.● D.修改:首先由用户输入要修改的学生姓名或者电话号码,然后系统用修改函数查找,显示该名同学的资料,然后系统提示用户输入需要修改的人员的相关信息.并用双向链表来实现修改功能● E.查询:可由用户输入要查找的学生姓名或电话号码,然后系统用查找函数查找,接着系统使用相关文件命令输出所查找的人员的全部信息.● F.退出系统关闭通讯录管理系统.3.2.规格说明:● 3.21:要有一个菜单,用于选择各项功能:其中包括:.a:添加新联系人;.b:删除联系人;.c:显示所有人员信息;.d:修改人员信息;. e: 查询联系人;.f:关闭通讯录.● 3.22:采用面向对象的程序设计方法,a,b,c,d,e,这五项菜单都调用一个函数来实现.四.概要设计:4.1.通讯录管理系统功能说明图:4.2.数据的结构及各模块分析:● 4.21:设计类,对象及基本数据类型:● 4.211创建一个book类,它有五个私有数据成员:string name; 姓名string address; 家庭地址string personalnumber; 本人联系电话string class; 班级string university; 就读大学名称string homepnumber 家庭电话string major 专业string post 邮编包含七个公有成员函数:功能如下:char inter_face(); 首页void add_person(); 添加联系人void del_person(); 删除联系人void show_all(); 显示所有联系人void alter(); 修改信息void select(); 查询联系人void save_new(); 保存新增加的联系人在主函数main()之中,.book obj; 创建名为obj的对象4.212.结构体:struct record{book object; object对象作为结构体record的一个成员record *prior; 定义一个指向前驱的结构体指针record *next; 定义一个指向后继的结构体指针};该结构体是在alter()修改函数中用来处理相关信息的修改.● 4.213 .字符串变量: str,record;字符变量: choose;布尔型变量:flag;4.3.数据保存方式以及格式:该通讯录管理系统将把输入的人员信息保存为pbook.txt 文本文件,在文件读取时系统将会把该文件中相关信息读出,并在屏幕上显示出相关信息.4.4.实现各模块功能的相应程序:● 4.41,界面:inter_face(){system("cls");cout<<endl;cout<<"\t\t★★★★★★★★★★★★★★★★★★★★….. ……fflush(stdin);return choose;}● 4.42添加联系人:add_person(){cout<<endl<<"根据下面… …. … ….save_new(){ofstream outData("pbook.txt", ios::app);if(!outData)… …outData.close();}cout<<endl<<"新联系人信息已经保存好!!!"<<endl<<endl;system("pause");}● 4.43删除联系人del_person(){ofstream outData("temp.txt", ios::out);… …cout<<endl<<"这个人的信息已经从你的通迅录中删除!!!"<<endl<<endl;}system("pause");}● 4.44显示所有联系人:show_all(){ifstream inData("pbook.txt",ios::in);… …cout<<"所有联系人已经全部显示出来!!!"<<endl;}system("pause");}● 4.45修改信息alter(){ifstream inData("pbook.txt", ios::in);… …cout<<endl<<"信息已经修改完成!!!"<<endl<<endl;system("pause");}}● 4.46查询联系人select(){ifstream inData("pbook.txt",ios::in);… …}system("pause");}五.详细设计的部分:现将“修改”功能模块详解如下:void book::alter(){ifstream inData("pbook.txt", ios::in);//打开文件pbook.txt,进行读操作if(!inData)//判断文件打开是否成功{cout<<endl<<"对不起不能打开文件!!!"<<endl<<endl;//如果打开失败,输出“对不起不能打开文件!!!”system("pause");//屏幕暂停return;}string sign;//定义字符串变量signcout<<endl<<"请输入你想要修改的联系人的姓名或电话号码:";cin>>sign;//输入变量signfflush(stdin);//清空缓冲区record *H=new record;//新建结构体指针变量H,并为其分配空间record *p=H;//使p指针指向指针Hrecord *q=H;//使q指针也指向指针Hbool flag=true;//定义布尔型变量flag.while(inData>>p->>>p->object.number>> p->object.qq >>p->object.post>>p->object.address)//读取文件中一个人的信息{p->next=new record; //建立双向链表p=p->next;p->prior=q;q->next=p;q=p;}p->next=NULL;//使p的next成员指向NULL.inData.close();//关闭pbook.txt文件p=H;//使指针变量P指向结构指针H的头节点while(p)//当p不为空时{if((p->==sign)||(p->object.number==sign))//判断输入是否为空.{if(flag){cout<<endl<<"你想修改你联系人的信息如下:"<<endl<<endl;cout<<setiosflags(ios::left)<<setw(17)<<p-><<""<<setw(16)<<p->object.class<<" "<<setw(18)<<p->object.personalnumber<<" "<<setw(14)<<p->object.post<<""<<setw(20)<<p->object.address<<setw(15)<<p->objiet.homepnumber<<setw(15)<<p->object.university<<setw(15)<<p->object.major<<endl;//输出要修改的人的信息flag=false;}cout<<endl<<"请根据下面提示修改信息: "<<endl;cout<<"姓名:" ;cin>>p->;fflush(stdin);cout<<"个人联系方式:";cin>>p->object.personalnumber;fflush(stdin);cout<<"家庭地址:";cin>>p->object.adress;fflush(stdin);cout<<"邮编:";cin>>p->object.post;fflush(stdin);cout<<"家庭电话:";cin>>p->object.homepnumber;fflush(stdin);cout<<”就读大学”;cin>>p->object.university;fflush(stdin);cout<<”班级”cin>>p->object.classfflush(stdin);cout<<”专业”;cin>>p->object.majorbreak;//根据提示进行修改}p=p->next;//使结构体指针p指向该指针的末尾}if(flag){cout<<endl<<"你的通迅录中没有你找的联人!!!";cout<<endl<<endl;system("pause");return;}else{ofstream out("pbook.txt",ios::out);//打开文件pbook.txt,进行写操作if (!out) //判断文件打开是否成功打开{cout <<endl <<"对不起!!!不能打开文件!!!!" <<endl;system("pause");return;}p=H; //使结构体指针p指向被修改的人的记录的首地址.while(p)//如果p不为空,则执行以下语句{out<<setiosflags(ios::left)<<setw(17)<<p-><<" "<<setw(16)<<p->object.number<<" "<<setw(18)<<p->object.qq<<" "<<setw(14)<<p->object.post<<" "<<setw(20)<<p->object.address<<endl;将修改后的信息保存到原来位置p=p->next;//使用p指针指向其本身的末尾}out.close();//关闭pbook.txt文件cout<<endl<<"信息已经修改完成!!!"<<endl<<endl;system("pause");//屏幕暂停}}六.调试分析及心得体会:6.1.调试分析:● 6.11 函数: fflush(stdin);功用: stdin是默认的输入流文件,对应输入缓冲区就是清空输入缓冲区,避免缓冲区内残存读取函数无法取走的内容! 也就是在添加人员信息(见下程序段)时,如果加入该函数,则输入的信息如:姓名,电话等,文件调用该函数时,就可以把缓冲区的内容全部送入文件.……cout<<"姓名: ";cin>>name;fflush(stdin);cout<<"电话: ";……● 6.22. 函数alter();中,用指针来处理双向链表时.相关程序及分析如下:record *H=new record;//新建一个结构体指针,作用是为了指向要修改的人员的记录record *p=H;……//令p结构体指针指向结构体指针H,为了用p来建立双向链表…p=H;//再次使用p指向H的头节点,为了在while(){}循环中输出要修改的整个人员的信息while(p){}…… //依次输出要修改信息,并进行修改.……………p=H; //又令p指针指向H指针的头节点,为了将修改后的信息输出到修改while(p ) //前的位置{out<<setiosflags(ios::left)<<s………cout<<endl<<"信息已经修改完成!!!"<<endl<<endl;……6.2.心得体会:● 6.21,程序的编写应是:三分编写,七分调试;● 6.22,程序编写之前需求分析,至关重要,将关系这整个项目的成败.● 6.33,一名优秀程序员的成长,需要付出很多很多,编程是每天必做之事,就像一位程序大师所说: “After three days without programming,ife becomes meaningless. 三日不编程,食肉无味”● 6.34,熟能生巧,这次在用指针处理双向链表时,以前对这块内容并不十分清楚,,这次感觉很吃力,所以在今后的编程之中,尽可能把基本技能练习熟练.● 6.35,做软件最终是满足用户的需求,所以做软件时应一切应以用记为导向.七.使用说明:7.1运行环境:Microsoft Visual C++6.07.2在此,把软件使用过程写出,并对此程序的一些细节和具体的操作方法加以说明,说明如下:●7.21将软件进行初始化,即在VC++6.0中运行该程序,进入程序主界面,界面显示的是“一个通讯录系统”,总的操作流程有七个方面:1,添加新联系人2,删除联系人3,显示所有联系人4,修改信息5,查询联系人6,关闭通讯录7,最后是提示用户选择要使用的功能7.22. 输入和存取人员信息,选择菜单界面的第1个选择,按Enter键进入此选择界面,根据提示,输入信息相关信息,出现以下界面:●7.23 显示所有人的信息,按“3”,出现以下界面:●7.24要修改人员信息就按“4”,根据提示输入相关信息: 如下:7.25要查找相关人员信息就按“5”,根据提示输入信息,将出现以下界面●7.26,要删除相关人员信息,按“2”,根据提示输入信息,将出现以下界面7.27要退出该程序,按“6”.八.全部源代码://C++课程设计---通讯录#include <iostream> #include <string>#include <iomanip>#include <fstream>#include <cstdlib>using namespace std;class book{public:book();char inter_face();void add_person();void del_person();void show_all();void alter();void select();void save_new();private:string name;string address;string homepnumber;string post;string class;string university;string personalnumber;class major;};struct record{book object;record *prior;record *next;};book::book(){name="\0";address="\0";number="\0";post="\0";qq="\0";}char book::inter_face(){system("cls");cout<<endl;cout<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl<<"\t\t※※"<<endl<<"\t\t※欢迎使用小小通讯录※"<<endl<<"\t\t※※"<<endl<<"\t\t※ 1. 添加新联系人. 4. 修改信息. ※"<<endl<<"\t\t※※"<<endl<<"\t\t※ 2. 删除联系人. 5. 查询联系人. ※"<<endl<<"\t\t※※"<<endl<<"\t\t※ 3. 显示所有联系人. 6. 关闭通讯录. ※"<<endl<<"\t\t※※"<<endl<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl<<endl<<"\t\t选择:";char choose;cin>>choose;fflush(stdin);return choose;}void book::add_person(){cout<<endl<<"根据下面提示输入新联系人信息"<<endl;cout<<"姓名:" ;cin>>p->;fflush(stdin);cout<<"个人联系方式:";cin>>p->object.personalnumber;fflush(stdin);cout<<"家庭地址:";cin>>p->object.adress;fflush(stdin);cout<<"邮编:";cin>>p->object.post;fflush(stdin);cout<<"家庭电话:";cin>>p->object.homepnumber;fflush(stdin);cout<<”就读大学”;cin>>p->object.university;fflush(stdin);cout<<”班级”cin>>p->object.classfflush(stdin);cout<<”专业”;cin>>p->object.majorsave_new();cout<<endl<<"新联系人信息已经保存好!!!"<<endl<<endl;system("pause");}void book::save_new(){ofstream outData("pbook.txt", ios::app);if(!outData){cout<<endl<<"对不起!!!打开文件失败!!!"<<endl<<endl;system("pause");return;}outData<<cout<<setiosflags(ios::left)<<setw(17)<<p-><<""<<setw(16)<<p->object.class<<" "<<setw(18)<<p->object.personalnumber<<" "<<setw(14)<<p->object.post<<""<<setw(20)<<p->object.address<<setw(15)<<p->objiet.homepnumber<<setw(15)<<p->object.university<<setw(15)<<p->object.major<<endloutData.close();}void book::del_person(){ofstream outData("temp.txt", ios::out);ifstream inData("pbook.txt", ios::in);if(!outData||!inData){cout<<endl<<"对不起!!!找不到文件!!!"<<endl;system("pause");return;}string sign;cout<<endl<<"你要删除输入姓名或电话号:";cin>>sign;bool flag=true;string str;while(inData>>name>>personalnumber){getline(inData, str);if((sign==name)||(sign==personalnumber)){cout<<endl<<"你想删除的联系人:"<<endl<<endl;cout<<setiosflags(ios::left)<<setw(17)<<name<<" "<<number<<str<<endl;flag=false;break;}outData<<setiosflags(ios::left)<<setw(17)<<name<<" "<<number<<str<<endl;}if(flag){cout<<endl<<"对不起!!!联系人中没你找的人!!!"<<endl<<endl;}else{while(getline(inData, str)){outData<<str<<endl;}outData.close();inData.close();ofstream out("pbook.txt", ios::out);ifstream in("temp.txt", ios::in);if(!out||!in){cout<<endl<<"对不起不能打开文件!!!"<<endl<<endl;system("pause");return;}while(getline(in, str)){out<<str<<endl;}out.close();in.close();cout<<endl<<"这个人的信息已经从你的通迅录中删除!!!"<<endl<<endl;}system("pause");}void book::alter(){ifstream inData("pbook.txt", ios::in);if(!inData){cout<<endl<<"对不起不能打开文件!!!"<<endl<<endl;system("pause");return;}string sign;cout<<endl<<"请输入你想要修改的联系人的姓名或电话号码:";cin>>sign;fflush(stdin);record *H=new record;record *p=H;record *q=H;bool flag=true;while(inData>>p->>>p->object.personalnumber>>p->objec t.class>>p->object.post>>p->object.address>>p->object.homep number>>p->university>>p->major){p->next=new record;p=p->next;p->prior=q;q->next=p;q=p;}p->next=NULL;inData.close();p=H;while(p){if((p->==sign)||(p->object.number==sign)){if(flag){cout<<endl<<"你想修改你联系人的信息如下:"<<endl<<endl;cout<<setiosflags(ios::left)<<setw(17)<<p-><<""<<setw(16)<<p->object.class<<" "<<setw(18)<<p->object.personalnumber<<" "<<setw(14)<<p->object.post<<""<<setw(20)<<p->object.address<<setw(15)<<p->objiet.homepnumber<<setw(15)<<p->object.university<<setw(15) <<p->object.major<<endlflag=false;}cout<<endl<<"请根据下面提示修改信息: "<<endl;cout<<"姓名:" ;cin>>p->;fflush(stdin);cout<<"个人联系方式:";cin>>p->object.personalnumber;fflush(stdin);cout<<"家庭地址:";cin>>p->object.adress;fflush(stdin);cout<<"邮编:";cin>>p->object.post;fflush(stdin);cout<<"家庭电话:";cin>>p->object.homepnumber;fflush(stdin);cout<<”就读大学”;cin>>p->object.university;fflush(stdin);cout<<”班级”cin>>p->object.classfflush(stdin);cout<<”专业”;cin>>p->object.majorbreak;}p=p->next;}if(flag){cout<<endl<<"你的通迅录中没有你找的联系人!!!"<<endl<<endl;system("pause");return;}else{ofstream out("pbook.txt",ios::out);if (!out){cout <<endl <<"对不起!!!不能打开文件!!!!" <<endl;system("pause");return;}p=H;while(p){out<< cout<<setiosflags(ios::left)<<setw(17)<<p-><<""<<setw(16)<<p->object.class<<" "<<setw(18)<<p->object.personalnumber<<" "<<setw(14)<<p->object.post<<""<<setw(20)<<p->object.address<<setw(15)<<p->objiet.homepnumber<<setw(15)<<p->object.university<<setw(15) <<p->object.major<<endlp=p->next;}out.close();cout<<endl<<"信息已经修改完成!!!"<<endl<<endl;system("pause");}}void book::select(){ifstream inData("pbook.txt",ios::in);if(!inData){cout<<endl<<"对不起!!!!文件找不到!!!"<<endl;system("pause");return;}string sign;cout<<endl<<"输入你想查找的联系人的姓名或电话号码: ";cin>>sign;fflush(stdin);bool flag=true;string str;while (inData>>name>>personalnumber){getline(inData, str);if((name==sign)||(personalnumber==sign)){cout<<endl<<"你要查找的联系人是: "<<endl<<endl;cout<<setiosflags(ios::left)<<setw(17)<<name<<personalnumber<<str< <endl;flag=false;break;}}system("pause");}void book::show_all(){ifstream inData("pbook.txt",ios::in);if(!inData){cout<<endl<<"对不起!!!没有找到文件!!!"<<endl;system("pause");return;}bool flag=true;string record;while(getline(inData, record)){if(flag){cout<<"所有联系人信息如下:"<<endl;}cout<<record<<endl;flag=false;}if(flag){cout<<endl<<"你的通迅录中没有联系人!!!"<<endl<<endl;}else{cout<<"所有联系人已经全部显示出来!!!"<<endl;}system("pause");}int main(){char choose;book obj;while(choose=obj.inter_face()){switch (choose){case '1':obj.add_person();break;case '2':obj.del_person();break;case '3':obj.show_all();break;case '4':obj.alter();break;case '5':obj.select();break;case '6':cout <<endl <<"谢谢使用!!!"<<endl <<endl;exit(0);break;default:break;}}return 0;}。

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

通讯录管理系统数据库设计说明
通讯录管理系统数据库设计与实现
1
1.1
通讯录管理系统
分 组 基 本 信 息








联系人基本信息管

















添 加 联 系 人



















1.2
功能中涉及的数据项说明。
1.用分组基本信息(Admin):包括 分组号、分组名;
2.用户基本信息(Dormitory):包括账号、密码、昵称、个性签名,这样可以 方便分清用户记录的联系人;
3.联系人基本信息(linkman):包括、性别、关系、手机号、座机号、QQ E-mail、
生日、工作单位、地址、所属用户、所属分组;
1.3
数据项列表
数据项编号
数据项名
数据项含义
与其它数据项的关系
存储结构 别名
TXL-1
G_nu mber
分组号
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)

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

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

智灵通讯录管理系统设计说明书一、需求分析本通讯录是一款具有基本通讯信息管理功能的系统。

包括基本添加,修改,删除,查询和输出等功能。

其中联系组是为了更好地管理联系人信息,如常用的组有亲戚,家人,朋友,同学等。

用户添加的信息存储到文件当中,本系统的数据存储文件包括group.dat和linkman.dat,其中group.dat存储组信息;而linkman.dat则存储联系人的信息。

用户登陆系统后,根据需要,选择操作类型。

系统一启动,便将相关数据文件装载进内存,如果数据文件不存在,系统将会创建新的数据文件。

并将数据文件内的记录存放在链表数据结构类型中,接下来用户所有的操作,都是对链表的操作。

当用户退出系统时,系统将自动将链表的信息存进数据文件。

本系统中包含两个链表:group链表和linkman链表,分别对应group,dat和linkman,dat两个数据文件。

1、组信息管理模块:◎添加新组信息:当用户添加一个新组时,这个新组将被添加到group.dat文件的末尾,如果添加的组已存在则返回出错信息。

◎修改已有组信息:用户首先输入所要修改的联系组,然后系统查询该联系组存不存在。

若存在,则要求用户输入新的信息,并进行替换;若不存在,则返回错误信息。

◎删除已有组:用户首先输入所要删除的组,然后系统查询该组存不存在。

如果存在,则先删除该组下的所有联系人的信息,再删除该组;如果所要删除的信息不存在,则返回错误信息。

◎删除所有已有组信息:该操作没有输入值。

如果原来group.dat文件中没有联系组,返回错误信息;否则,删除所有联系组,同时删除各个组下的联系人信息。

◎组查询功能:按用户输入的查询条件,在group.dat文件中查询相关信息。

若存在符合条件的组,则输出相应的组信息;若不存在,则返回出错信息。

◎输出所有组信息:将group.dat中所有组全部输出来。

2、联系人信息管理模块:◎添加联系人:当用户添加一个新联系人时,这个联系人的信息将被添加到group.dat 文件的末尾,若添加的联系人已存在,则返回出错信息。

通讯录管理系统任务需求分析说明书

通讯录管理系统任务需求分析说明书

通讯录管理系统通讯录是现代日常生活中不可或缺的部分,除了常规的姓名、电话外,通讯录还能存储联系人的所在城市、所在单位、家庭地址等,从而提高工作与社交的效率。

鉴于此,单条通讯录信息可被定义为一个结构体。

本实验要求设计一个简单的通讯录管理系统,涉及函数、结构体、链表、文件等方面的知识,学习利用链表处理数据的方法,熟练掌握文件操作,构建综合程序设计的思路及框架,提高综合设计软件系统的能力。

1.数据格式与功能描述1.1数据文件格式每条通讯录记录包括如下信息:序号、姓名、性别、年龄、电话号码、所在城市、所在单位、住址。

多条通讯录信息存储在一个txt文件中,本系统涉及多个这样的txt文件。

单条通讯录示例格式如图1-1所示。

图1-1 单条通讯录信息本实验中,要求自行创建5个txt文件,分别命名为a.txt, b.txt.. e.txt,分别表示5个人a,b,c,d,e的通讯录信息,每一个人的通讯录中,既可以有其他4人中部分人(1-3人)的信息,也可以有此5人之外其他人的信息,通讯录具体内容可以自行设定。

1.2功能描述设计一个通讯录管理系统,利用单链表来处理联系人信息,要求实现如下系统功能。

(1)初始化菜单程序开始运行后显示菜单,要求菜单能完全展示本系统的功能,尽力做到设计美观。

(2)选择待操作的文件考虑到本系统有多个文件,需要提示用户输入来选择需要操作的通讯录文件。

(3)查询通讯录信息选择通讯录文件后,按姓名、性别、城市查询联系人所有信息。

提示用户输入待查人员的姓名、性别、城市,显示符合条件的联系人所有信息。

如果没有满足要求的联系人,输出提示信息。

可输出全部联系人信息,若当前通讯录没有联系人,输出提示信息。

(4)删除通讯录记录信息按指定的姓名、工作单位、城市删除通讯录中对应记录,删除时应删除该联系人的所有信息并提示删除成功。

若此联系人不存在,输出提示信息。

(5)修改通讯录记录信息修改指定通讯录的信息。

提示用户输入要修改的姓名,若此人存在,则提示选择修改通讯录中的电话号码、所在单位、所在城市或者家庭地址。

通讯录管理系统课程设计报告书 (2)

通讯录管理系统课程设计报告书 (2)

数据结构课程设计报告题目:通讯录管理系统设计学院信息工程学院 __________ 专业计算机科学与技术_______________ 年级班别 _ 12级四班___________学号 _2012051419________学生姓名张海涛_____指导教师米文丽___成绩 _2013年12月通讯录管理系统一.需求分析设计题目及要求:◆建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子邮箱等;◆能够提供添加、删除和修改通讯录信息的功能;◆能够提供安不同方式查询的功能;如按姓名或年龄、电话等查询;◆将通讯录保存在文件中;◆能够按表格方式输出通讯录信息。

系统功能需求分析:主要包含一下多种功能:添加:添加通讯录记录显示:显示通讯录记录删除:删除通讯录记录查询:查询通讯录记录修改:修改通讯录记录保存:将信息保存到文件二.概要设计系统功能模块图:添加:可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱后,会提示是否继续添加。

显示:可以以表格形式输出所有通讯录里的记录删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容查询:可以选择用姓名、电话、地址三种方式查询修改:输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱即可完成修改保存:,输入文件名(带后缀名)后,即可将通讯录信息保存到文件三.详细设计(1).通讯录:typedef struct{char score; /*编号*/char name[10]; /*姓名*/char num[15]; /*号码*/char email[20]; /*邮箱*/char age[8]; /*年龄*/char adds[20]; /*住址*/}Person;void main() /*主函数*/{int n=0;for(;;){switch(menu_select()){case 1:printf("\n\t添加记录到通讯录\n"); /*添加记录*/n=Input(pe,n);break;case 2:printf("\n\t\t\t 通讯录记录表\n"); /*显示记录*/Display(pe,n);break;case 3:printf("\n\t从通讯录中删除记录\n");n=Delete_a_record(pe,n); /*删除记录*/printf("\t");system("pause");break;case 4:printf("\n\t在通讯录中查找记录\n");Query_a_record(pe,n); /*查找记录*/printf("\t");system("pause");break;case 5:printf("\n\t修改通讯录中的记录\n");Change(pe,n); /*修改数据*/printf("\t");system("pause");break;case 6:printf("\n\t保存功能\n");WritetoText(pe,n); /*保存数据*/printf("\t");system("pause");break;case 0:printf("\n\t\t谢谢使用,再见!\n"); /*结束程序*/printf("\n\t\t");system("pause");exit(0);}}}(2).工作流程图:①添加:添加通讯录记录②显示:显示通讯录记录③删除:删除通讯录记录④查询:查询通讯录记录先选择查询方式,以姓名查询方式为例⑤修改:修改通讯录记录四.测试数据及其结果分析测试:1).显示的主菜单界面2).添加界面:3).显示界面:4).删除界面:删除后,通讯录里的显示记录:5).查询界面:以姓名查询方式为例:6).修改界面:修改后,通讯录里的显示记录:7).保存界面:tongxunlu.txt文件截图:问题思考:1.当我在进行删除、查询、修改、保存等功能时,以查询为例,输入名字按回车后,虽然会显示该人的所有记录,但是显示后,它马上自动消失了,还没来得及等我看内容。

通讯录管理系统数据库课程设计

通讯录管理系统数据库课程设计

通讯录管理系统数据库课程设计一、课程设计背景随着互联网和智能手机的普及,通讯录成为人们日常生活中不可或缺的一部分。

而对于企业和组织来说,通讯录更是必不可少的管理工具。

为了提高学生对数据库课程的实际应用能力,本课程设计旨在设计一个通讯录管理系统数据库,作为学生课程设计的项目,帮助学生深入理解数据库的概念和操作。

二、课程设计目标本课程设计的目标是让学生通过实际设计一个通讯录管理系统数据库,掌握数据库设计的基本原理和方法,包括数据库的规范化、关系模式的设计、SQL语言的应用等方面的知识。

通过完成课程设计,学生将能够提高解决问题的能力,锻炼团队合作和交流能力。

三、课程设计内容1. 系统需求分析1.1 确定系统的功能和性能需求1.2 确定系统的使用环境和用户特点2. 数据库设计2.1 确定数据库的实体和关系2.2 设计数据库的表结构和约束条件2.3 进行数据库规范化设计3. 系统实现3.1 使用MySQL或Oracle等数据库管理系统搭建数据库3.2 使用Java、C#等编程语言编写系统的界面和逻辑代码3.3 实现系统的基本功能,包括添加通信人、编辑通信人信息、查找通信人、删除通信人等功能4. 系统测试4.1 对系统进行功能测试和性能测试4.2 修复系统中出现的bug和问题5. 系统部署5.1 部署系统到本地服务器或云服务器5.2 进行系统的上线和维护四、课程设计流程1. 分组确定课程设计题目学生按照班级和兴趣分组,确定课程设计的具体题目和要求。

2. 系统需求分析学生对系统的功能和性能需求进行分析,编写系统需求规格说明书。

3. 数据库设计学生根据系统需求规格,设计系统的数据库结构和约束条件,完成数据库设计文档。

4. 系统实现学生根据数据库设计文档,使用相应的数据库管理系统搭建数据库,编写系统的界面和逻辑代码。

5. 系统测试学生对系统进行功能测试和性能测试,并记录测试结果,修复系统中出现的bug和问题。

6. 系统部署学生将完成的系统部署到本地服务器或云服务器,并进行上线和维护。

学生通讯录管理系统说明书

学生通讯录管理系统说明书

家庭地址:
IDC_CURRENTADDRESS
当前地址:
IDC_EDIT_QQ
IDC_EDIT_EAMIL
IDC_EDIT_HOME
IDC_EDIT_CURRENT
No.8
OnRecAdd()函数的内容和功能:由于增加和显示记录在同一个界面出现,容易造成 误操作。因此,在修改和添加记录数据之前,往往设计一个对话框用于获得所需要的数 据,然后用该数据进行当前记录的编辑。这样就能避免它们的相互影响,且保证代码的 相对独立性。获得所需数据的对话框名为“联系人信息表”,对话框资源的 ID 号是 IDD_INFO_TABLE,对话框资源对应的类名为 CInfoDlg,要进行添加操作,首先为这个类 添加一个对象[2],以便引用控件变量,添加完信息确定之后,“联系人信息表”的内 容传值给主界面对应的变量,如 m_pSet->m_ptelephone=dlg.m_strPersonTelephone。
能为空!"), MessageBox("没有查到你要找的联系人!")用于反馈用户操作。
在主界面上选择添加按钮如图 6 所示
添加的控件 输入框
下Hale Waihona Puke 列表框 按钮 按钮 文本框 文本框
图 6 添加记录
ID 号 IDC_DEIT_NAME
IDC_COMBO_GENDER IDOK
IDCANCEL IDC_NAME1 IDC_GENTER
沈阳大学
课程设计说明书
No.5
分解,提高数据操作效率和存储空间的利用率。 2.2.3 连接数据库
#define Provider "Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2基本数据信息描述
2.1数据元素
数据元素(data element)是计算机科学术语。

它是数据的基本单位,在计算机程序常作为一个整体进行考虑和处理。

本系统的数据元素有:
●用户的ID、密码、、性别、、E-mail、用户权限;
●通讯录的联系人、地址、联系、所属职务、所在单位、所属地区。

2.2数据组织
数据组织 data 0rganization :按照一定的方式和规则对数据进行归并、存储、处理的过程。

3综合业务流程
整个系统的数据流程图如下:
4.数据库结构设计
4.1概念结构设计
概念设计是把用户的需求进行综合、归纳与抽象,统一到一个整体概念结构中,形成数据库的概念模型。

图4-7 E-R实体图
4.2.3概念模型
概念模型是在对用户需求分析之后,通过画出本系统抽象出的E-R图,由概念模型辅助工具PowerDesigner进行设计,通过具体地设置和绘画,最后就形成了如下所示的概念模型图,生成的概念结构就能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对数据处理要求,是对现实世界的一个真实模型。

如图所示:
4.3逻辑结构设计
现在需要将上面是数据库概念结构转化为数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。

4.3.1关系模式识别
设计数据库应用系统的一项重要工作是设计关系模式,也就是设计一组二维表的表头。

用户(用户ID,密码,,性别,,E-mail、用户权限)
通讯录(联系人,地址,联系,所属职务,工作单位,QQ)
4.3.2关系模式转换
“用户”实体到关系模式的转换
从图4-1可以看出,“用户”实体具有用户ID、密码、、性别、、E-mail、用户权限7个属性,其中用户ID是其关键属性。

●“通讯录”实体到关系模式的转换
从图4-5可以看出,通讯录的实体具有联系人、地址、联系、所属职务、工作单位、QQ6个属性。

联系人是其关键属性。

4.3.3主键,外键,域,规则,默认值等约束描述确认
●“用户”表中用户ID是其主键,并给“性别”列添加CHECK约束,规定“性
别”只能为“男”或“女”。

●通讯录表中联系人是其主键。

4.3.4物理模型
将生成的概念模型通过单击PowerDesigner工具菜单栏上的Tools选项,在选择Generate Physical Data Model选项,就可以转换为物理模型,生成的最后结果具体如图:
2、系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置。

3、强壮的事务处理功能,采用各种方法保证数据的完整性。

4、支持对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言。

SQLServer以其置的数据复制功能、强大的管理工具、与Internet的紧密集成和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台
5.2.2库实现
在企业管理器下创建“通讯录管理”数据库或在查询分析器中用以下语句创建:
CREATE DATABASE ’通讯录管理’
5.2.3表实现
创建用户信息表 TB_Users
create table TB_Users
(
sUserID varchar(10),
sUserName varchar (20),
sUserPassword varchar(10),
sUserSex char(2),
sUserEmail varchar(20),
sUserPhone varchar(20),
sUserPurview char(1)
)
图5-1 TB_Users
●创建地区信息表 TB_Area
create table TB_Area
(
sAreaID varchar(20),
sAreaName varchar(50)
)
图5-2 TB_Area
●创建职务信息表 TB_Duty
create table TB_Duty
(
sDutyID varchar(20),
sDutyName varchar(50)
)
图5-3 TB_Duty
●创建学校信息表 TB_School
create table TB_School
(
sSchoolID varchar(20),
sSchoolName varchar(50),
iStudentNum int,
sAreaID_FK varchar(20)
)
图5-4 TB_School
创建通讯录信息表 TB_AddrList
create table TB_AddrList
(
iAddrID int,
sLinkName varchar(50),
sAddress varchar(20),
sLinkPhone varchar(20),
sUnitName varchar(50),
sSchoolID_FK varchar(20),
sDutyID_FK varchar(20),
sAreaID_FK varchar(20)
)
图5-5 TB_AddrList 共五表如下:
图5-6用户表建立关系图如下:
图5-7 关系图所建CHECK约束如下:
图5-8 CHECK约束
5.2.4视图实现
创建学校信息视图表V_SchoolInfo,包含sSchoolName,sAreaName,sLinkName,sDutyName,sLinkPhone五列,来自
TB_AddrList,TB_School,TB_Duty,TB_Area四个表。

create view V_SchoolInfo
as
select sSchoolName,
sAreaName,
sLinkName,
sDutyName,
sLinkPhone
from TB_AddrList,TB_School,TB_Duty,TB_Area
where TB_AddrList.sSchoolID=TB_School.sSchoolID
and
TB_AddrList.sDutyID=TB_Duty.sDutyID
And
TB_AddrList.sAreaID=TB_Area.sAreaID
图5-9 学校信息视图表V_SchoolInfo
5.2.5存储过程实现
根据“4.4.5用户常用存储过程设计”中给出的代码,在SQL SERVER 2000中执行以实现存储过程,执行语句如下:
EXEC AddTB_Users
●EXEC AddTB_Area
图5-10 AddTB_Area
●EXEC AddTB_Duty
图5-11 AddTB_Duty
●EXEC AddTB_School
图5-12 AddTB_School
●EXEC AddTB_AddrList
图5-13 AddTB_AddrList
●EXEC UpdateTB_Users
图5-14 UpdateTB_Users
●EXEC UpdateTB_Area
图5-15 UpdateTB_Area。

相关文档
最新文档