搜档网
当前位置:搜档网 › 基于MFC对话框的个人通信录系统

基于MFC对话框的个人通信录系统

基于MFC对话框的个人通信录系统
基于MFC对话框的个人通信录系统

1. 作业题目

请分别就C和C++中的基本输入输出\文件读写各自的特点和实现方法进行分析和举例说明;完成一个简单的基于MFC对话框的个人通信录系统(界面布局和系统需求自己确定),详细描述你的分析以及实现过程,通讯录的数据写入文件。

2. C语言的输入/输出(文件操作)

2.1 C语言的输入/输出

在C语言中,没有专门的输入输出语句,所有输入输出操作都是通过对标准I/Q库函数的调用实现的。常用的输入输出函数有:scanf()、printf()、getchar()、putchar()、gets ()、puts(),使用这些函数时需要包含头文件stadio.h。

其中:

scanf()---整型、浮点型、字符串数据的输入函数;

printf()---整型、浮点型、字符串数据的输出函数;

putchar()---字符输出函数;

getchar()---字符输入函数;

gets ()---字符串输入函数;

puts()---字符串输出函数。

2.1.1 函数getchar()的简单介绍及实现方法

它的功能是从键盘上输入1个字符,其一般形式为:getchar();通常把输入的字符赋予一个字符变量,构成赋值语句。使用getchar函数时还应注意:getchar函数只能接受单个字符,输入多于一个字符时,只接受第一个字符。

例2-1 输入单个字符

#include

int main(void )

{

char c;

printf(“input a character\n”);

c=getchar();

putchar(c);

return 0;

}

注意:程序最后两行可用下面两行的任意一行代替:

putchar(getchar());

printf(“%c ”, getchar());

2.1.2 函数printf ()的简单介绍及实现方法

函数原型:int printf (const char*, 123,,,n e e e e )

参数说明:format 确定输出格式的格式字符串;123,,,n e e e e 为n 个表达式。

功能说明:把表达式i e 的值按格式字符串中的第i 个格式指示转换为外部形式的数据(一串字符),用以取代格式字符串中的第i 个格式指示(格式指示符如表2-1所示),若输出的是整型数据,

i e 可整型变量、整型数组元素或常型变量。向标准输出设备输出所有转换完成后的格式字符串。输

出整数时,格式字符标志为: “%d ”(int 型十进制整数),“%u ”(unsigned 型十进制整数),“%ld ” (long 型十进制整数)。

表2-1 C 语言中的实数

例2-2 printf ()格式化输出。 int main(void) {

int a=15;

float b=123.1234567;

double c=12345678.1234567; char d=‘p ’; printf (“a=%d,%5d,%o,%x\n ”,a,a,a,a );

//要求以4种格式输出整型变量a 的值,输出宽度为5 printf (“b=%f,%lf,%5.4lf,%e\n ”,b,b,b,b,);

//要求以4种格式输出实型变量b 的值,输出宽度为5,精度为4 printf (“c=%lf,%f,% 8.4lf \n ”,c,c,c ); printf (“d=%c,%8c\n ”,d,d ); return 0:}

2.2 C 语言的文件操作

在C语言中,文件操作都是由库函数来完成的。文件指针在C语言中用一个指针变量指向一个文件, 这个指针称为文件指针。通过文件指针就可对它所指的文件进行打开、关闭、读、写、定位等各种操作。

2.2.1 文件的打开与关闭

fopen函数用来打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被说明为FILE 类型的指针变量,“文件名”是被打开文件的文件名。“使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。例如:

FILE *fp;

fp=("file a","r");

其意义是在当前目录下打开文件file a,只允许进行“读”操作,并使fp指向该文件。

在打开一个文件时,如果出错,fopen将返回一个空指针值NULL。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理。因此常用以下程序段打开文件:

if((fp=fopen("c:\\hzk16","rb")==NULL)

{

printf("\nerror on open c:\\hzk16 file!");

getch();

exit(1);

}

文件一旦使用完毕,应用关闭文件函数把文件关闭,以防意外操作导致数据丢失或被非法篡改。关闭文件的实质是取消系统与正在操作的文件之间的关联,关闭文件操作由标准库函数fclose()实现,其一般形式为:

fclose(文件指针);

例如:

fclose(fp);

正常完成关闭文件操作时,fclose函数返回值为0。如返回非零值则表示有错误发生。编译时通常用下列语句判断文件是否正常关闭:

if(fclose(fp)){

printf( “can’t close the file!\n)”;

exit(1);

}

2.2.2 文件的读写

在C语言中提供了多种文件读写的函数:

字符读写函数:fgetc和fputc

字符串读写函数:fgets和fputs

数据块读写函数:freed和fwrite

格式化读写函数:fscanf和fprinf

使用以上函数都要求包含头文件stdio.h。字符读写函数:fgetc和fputc是以字符

(字节)为单位的读写函数。每次可从文件读出或向文件写入一个字符。下面以一个复制文件的例子简单介绍C语言文本文件读写的特点。

例2-3 打开现存文件f1.txt和新建的文件f2.bak,并读取f1.txt中的字符,写到f1.bak中,直至读到f1.txt文件末尾。该例实现的算法流程图如图2-1所示。

图2-1 文件复制流程图

在这里,将用到两个函数:fgetc()和fputc(),fgetc()函数的原型在stdio.h

中申明如下:

int fgetc(FILE *stream);

其调用方式如下:

ch=fgetc(fp);

ch为字符型变量,fp为文件型指针变量。函数fgetc()从文件中读取1个字符赋值给ch, fgetc ()在读取字符过程中,如果遇到文件结束符,函数将返回文件结束标志EOF(在stdio.h中EOF 的值定义为-1)。如需要在屏幕上显示一个文本文件,可以用以下语句实现:

ch=fgetc(fp);

while(ch!=EOF)

{

putchar(ch);

ch=fgetc(fp);

}

fputc()函数的原型在stdio.h中申明如下:

int fputc(char ch,FILE *stream);

ch为字符型变量或字符型常量,fp为文件型指针变量。函数fputc()将ch的值输出

到fp指针指向的文件中,如果输出成功,函数返回ch的内容,否则返回EOF。程序实现如下:

#include

#include

int main(void)

{

FILE *fp1, *fp2;

char ch;

if(fp1=fopen((“f1.txt”,“r”))==NULL)

{

printf(“cannot open f1.txt\n”);

exit(1);

}

if((fp2=fopen(“f1.bak”,“w”))==NULL)

{

printf(“cannot open f2.bak \n”);

exit(1);

}

While((ch=fgetc(fp1))!=EOF)

fputc(ch,fp2);

fclose(fp1);

fclose(fp1);

}

3.C++输入输出(文件操作)

程序在执行期间,接受外部信息的操作称为程序的输入;而把程序向外部发送信息的操作称为程序的输出。在C++中没有专门的输入输出语句,所有输入输出是通过输入输出流来实现的。接下来会简单介绍输入输出数据方法。准输入输出流库函数iostream常用的输入和输出函数为cin和cout。在使用C++输入输出流之前,必须在程序的开头增加一行:#include

3.1 C++输入输出

3.1.1 输入语句:cin

语法:cin >>变量>>变量>>变量 ,提取运算符:“>>”。cin可以输入任何类型的变量。从键盘输入数据时,相应位置上的值必须符合变量的类型。若输入的类型不致,则输入的数据不正确。

例3-1

int i,j;

float x,y;

cin >>i>>j>>x>>y;

当输入:27 227 71.23 21.30时,变量值为i=27 j=227 x=71.23 y=21.3。

(1)字符变量输入

为字符变量输入数据时,输入的数据必须是字符型数据。设有如下的程序片段:

例 3-2

char c1,c2,c3,c4;

cin >> c1 >> c2 >> c3; cin >> c4;

当输入a b c d 或者abcd 时,变量值为 c1=‘a ’ c2=‘b ’ c3=‘c ’ c4=‘d ’。 若要把从键盘上输入的每一个字符,包括空格和回车键都作为一个输入字符赋给字符型变量时,必须使用函数cin.get()。其格式为:cin.get(<字符变量>)。

例3-3

char c1,c2,c3,c4; cin.get(c1); cin.get(c2); cin.get(c3); cin.get(c4);

执行到既定行数时,若输入:C D ,字符C 前没有空格,在字符C 与D 之间有一个空格;则将字符C 、空格、D 分别赋给c1,c2,c3,该行中的回车键赋给变量c4,若用cin>> c4代替cin.get(c4),则输入行的回车键不起作用,等待用户输入一个字符。若此处没有cin.get(c4),则回车键保留。

(2)输入十六进制或八进制数据

对于整型变量,从键盘上输入的数据也可以是八进制或十六进制数据。在缺省的情况下,系统约定输入的整型数是十进制数据。当要求按八进制或十六进制输入数据时,在cin 中必须指明相应的数据类型:hex 为十六进制;oct 为八进制;dec 为十进制。 格式:cin>>hex>>整型变量;(输入十六进制整数)

cin>>oct>>整型变量;(输入八进制整数) cin>>dec>>整型变量;(输入十进制整数)

八进制或十六进制数的输入,只适用于整型变量,不适用于字符型变量,实型变量。当在cin 中指明使用的数制输入后,则所指明的数制一直有效。如例3-1中,输入的k 值不变时,仍为八进制。输入数据的格式、个数和类型必须与cin 中所列举的变量类型一一对应。

例3-4 当语句执行到cin 时,若输入的数据为:11 11 11 11时,则将这些数据赋给变量i,j,k,和l ,转换后输出:17 9 9 11。

int ,,,;cin hex ;cin oct ;cin ;

cin

dec ;i j k l i j k l ?

?>>>>??>>>>?

?>>?

>>>>??

cout i ;cout ;cout k ;cout l ;j <<<

?

<<<

‘\n'‘\n'‘\n'‘\n'

3.1.2 输出:cout

和cin 流输出相同,cout 在进行数据输入时,不管采用何种数据类型,其格式都相同。cout

语句的语法格式:cout<<表达式<<表达式<<表达式 ,插入运算符:“<<”,这里的表达式的结果可以是任何类型。如cout<< “字符串”<<变量1<<“字符串”<<变量2 。

(1)输出宽度定位函数setw()。

表达形式:cout<< setw(n)<< 变量或者表达式。当n小于实际数据的长度,按实际数据的长度输出;当n大于实际数据的长度,按右对齐原则输出。

(2)输出十六进制或八进制数据

输出十六进制或八进制数据的格式与输入格式有着极度相似的地方,具体如下:

cout <

cout <

cout <

对于整型数据可指定以八进制或十六进制输出,而对于实型数据可指定以科学表示法形式输出。

例3-5 设有如下程序

#include

void main(void)

{

int i=2,j=10,k=20,m=30;

float x=3.14,y=100;

cout <<"i="<

if (! examplefile.is_open())

{

cout << "Error opening file";

exit (1);

}

while (! examplefile.eof() )

{

examplefile.getline (buffer,100);

cout << buffer << endl;

}

return 0;

}

上面的例子读入一个文本文件的内容,然后将它打印到屏幕上。注意我们使用了一个新的成员函数叫做eof ,它是ifstream 从类 ios 中继承过来的,当到达文件末尾时返回true 。

3.2.2 关闭文件

打开的文件使用完成后一定要关闭,fstream提供了成员函数close()来完成此操作,如:file1.close();就把file1相连的文件关闭。

3.2.3读写文件

读写文件分为文本文件和二进制文件的读取。对于文本文件的读取,用插入器(<<)向文件输出,用析取器(>>)从文件输入,相对比较简单。此处着重介绍二进制文件的读写。

①put()

put()函数向流写入一个字符,其原型是ofstream &put(char ch),使用也比较简单,如file1.put('c');就是向流写一个字符'c'。

②get()

get()函数比较灵活,有3种常用的重载形式:一种就是和put()对应的形式,功能是从流中读取一个字符,结果保存在引用ch中,如果到文件尾,返回空字符;另一种重载形式的原型是:int get();这种形式是从流中返回一个字符,如果到达文件尾,返回EOF,如x=file2.get();还有一种形式的原型是:

ifstream &get(char *buf,int num,char delim='\n');

这种形式把字符读入由 buf 指向的数组,直到读入了 num 个字符或遇到了由 delim 指定的字符,如果没使用 delim 这个参数,将使用缺省值换行符'\n'。

③读写数据块

要读写二进制数据块,使用成员函数read()和write()成员函数,它们原型如下:read(unsigned char *buf,int num);

write(const unsigned char *buf,int num);

3.3 C与C++输入输出、文件读写的比较。

由于C++是在C语言的基础上发展扩充而来的,它当然支持C语言中的输入输出函数。使用C 语言的输入输出函数时,要包含相应的头文件。使用C++编程时,我们提倡使用C++提供的输入输出流来实现输入输出,最好不要使用C语言的输入输出函数来实现输入输出。因为同时使用C++的输入输出流和C语言的输入输出函数来完成输入输出时,有时会出现一些特殊异常的现象,如输入输出语句的执行顺序不对等。

和C的文件操作方式不同的是,C++ I/O系统管理两个与一个文件相联系的指针。一个是读指针,它说明输入操作在文件中的位置;另一个是写指针,它下次写操作的位置。每次执行输入或输出时,相应的指针自动变化。所以,C++的文件定位分为读位置和写位置的定位,对应的成员函数是seekg()和 seekp(),seekg()是设置读位置,seekp是设置写位置。它们最通用的形式如下:istream &seekg(streamoff offset,seek_dir origin);

ostream &seekp(streamoff offset,seek_dir origin);

streamoff定义于 iostream.h 中,定义有偏移量 offset 所能取得的最大值,seek_dir 表示移动的基准位置,是一个有以下值的枚举:

ios::beg:文件开头

ios::cur:文件当前位置

ios::end:文件结尾

这两个函数一般用于二进制文件,因为文本文件会因为系统对字符的解释而可能与预想的值不同。比如下面:

file1.seekg(1234,ios::cur);//把文件的读指针从当前位置向后移1234个字节

file2.seekp(1234,ios::beg);//把文件的写指针从文件开头向后移1234个字节

4. 基于MFC的简易通讯录管理系统设计

4.1 MFC简单概述

MFC是对WindowsAPI的封装,它包含两个最重要的类:CWinApp和CFrameWnd。CWinApp代表着程序的本体,winmain函数就是封装在其中,所以函数将从这个类中开始运行; CFrameWnd代表了一个主框窗口:在编写函数的时候需要以这两个类为基础进行派生自己的类,并改写其一些成员函数以实现自己的程序的功能。

4.1.1 MFC是一个编程框架

MFC中的各种类结合起来构成了一个应用程序框架,它的目的是让程序员在此基础上来建立Windows下的应用程序,这是一种相对于SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。在提供了相应的工具的Microsoft Visual C++中,编译后,就通过类库是限量应用程序特定的逻辑。

4.1.2 封装

构成MFC框架的是 MFC类库,MFC类库是C++类型。这些类或者封装了Win32应用程序编程接口,或者封装了应用程序的概念,或者封装了OLE特性,或者封装了ODBC和DAO数据访问的功能。

4.1.3 继承

首先,MFC抽象出众多类的共同性,设计出一些基类作为实现其他类的基础。这些类中,最重要的是CObject和CCmdTarget。CObject是MFC的根类,绝大部分MFC类是其派生的,CObject实现了一些重要的特性,包括动态信息、动态创建、对象序列化、对程序调试的支持等,所以从CObject 派生的类都具备或者可以具备它所拥有的特性。CCmdTarget通过封装一些属性和方法,提供了信息处理的框架。MFC中,任何可以处理消息的类都从CCmdTarget派生。

4.1.4 虚拟函数和动态约束

MFC以“C++”为基础,支持虚拟函数和动态约束,MFC建立了消息映射机制,以一种富有效率、便于使用的手段解决消息处理函数。这样,通过虚拟函数和消息映射,MFC类提供了丰富的编译窗口。程序员继承基类的同时,把自己实现的虚拟函数和消息处理函数嵌入MFC的编译框架中,MFC 编译框架将在适当的时候、地方来调用程序的代码。

4.2功能模块框图

根据系统功能的要求,可以将系统分解成几个功能模块,它如图4-1所示。

图4-1通讯录管理系统模块图

4.3 程序代码编写

本程序采用的是MFC的基于窗体的基本架构。实现程序中主要逻辑和文件访问功能的函数被封装在一个自己写的类“myClass”中。

(1) 头文件(myClass.h)中的代码如下:

class myClass

{

public:

myClass(void); //构造函数。

~myClass(void); //析构函数。

CString getAll();//得到全部联系人的信息。

CString getFriend();//得到标记为“朋友”的联系人的信息。

CString getFamily();//得到标记为“家人”的联系人的信息。

CString getOthers();//得到标记为“其他”的联系人的信息。

void add(CString str);//添加一条记录。

};

(2)定义文档类数据成员

在CAboutDlg 对话框中编写代码:

class CAboutDlg : public CDialogEx

{

public:

CAboutDlg();

// 对话框数据

enum { IDD = IDD_ABOUTBOX };

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持

// 实现

protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)

{

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialogEx::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)

END_MESSAGE_MAP()

}

(4)添加记录

void addConnect::DoDataExchange(CDataExchange* pDX)

{

CDialogEx::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(addConnect, CDialogEx)

ON_BN_CLICKED(IDC_BUTTON1, &addConnect::OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON2, &addConnect::OnBnClickedButton2) END_MESSAGE_MAP()

// addConnect 消息处理程序

void addConnect::OnBnClickedButton1()

{ myClass a;

CString b;

CEdit * myEdit1=(CEdit *)GetDlgItem(IDC_EDIT1);

CEdit * myEdit2=(CEdit *)GetDlgItem(IDC_EDIT2);

CEdit * myEdit3=(CEdit *)GetDlgItem(IDC_COMBO1);

CString str1;

CString str2;

CString str3;

myEdit1->GetWindowTextA(str1);

myEdit2->GetWindowTextA(str2);

myEdit3->GetWindowTextA(str3);

b=str1+"\t\t"+str2+"\n"+str3;

a.add(b);

CDialogEx::OnOK();

// TODO: 在此添加控件通知处理程序代码

}

BOOL addConnect::OnInitDialog()

{

CDialogEx::OnInitDialog();

CComboBox * myEdit4=(CComboBox*)GetDlgItem(IDC_COMBO1);

myEdit4->AddString("朋友");

myEdit4->AddString("家人");

myEdit4->AddString("其他");

myEdit4->SetCurSel(0);

// TODO: 在此添加额外的初始化

return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE

}

void addConnect::OnBnClickedButton2()

{

CDialogEx::OnCancel();

// TODO: 在此添加控件通知处理程序代码

}

4.4 函数的实现

函数的实现文件(myClass.cpp)中的代码如下:

#include "StdAfx.h"

#include "myClass.h"

#include

#include

#include

using namespace std;

//无参数的构造函数。

myClass::myClass(void)

{

}

//析构函数的实现。

myClass::~myClass(void)

{

}

//得到所有联系人信息的函数

CString myClass::getAll(){

CString a;

CString tem;

CStdioFile myFile; //定义文件访问类。

CFileException fileException;

//访问文件。

if(myFile.Open("you.txt",CFile::typeText|CFile::modeNoTruncate|CFile::modeCreate|CFile ::modeReadWrite),&fileException)

{

myFile.SeekToBegin();

//读出文件内容

while(myFile.ReadString(tem)){

a=a+tem+"\r\n";

myFile.ReadString(tem);

}

}

//返回得到的值给上游函数。

return a;

}

CString myClass::getFriend(){

CString a;

CString tem1;

CString tem2;

CStdioFile myFile;

CFileException fileException;

if(myFile.Open("you.txt",CFile::typeText|CFile::modeNoTruncate|CFile::modeCreate|C File::modeReadWrite),&fileException)

{

myFile.SeekToBegin();

while(myFile.ReadString(tem1)){

myFile.ReadString(tem2);

if(tem2=="朋友"){

a=a+tem1+"\r\n";

}

}

}

return a;

}

CString myClass::getFamily(){

CString a;

CString tem1;

CString tem2;

CStdioFile myFile;

CFileException fileException;

if(myFile.Open("you.txt",CFile::typeText|CFile::modeNoTruncate|CFile::modeCreate|C File::modeReadWrite),&fileException)

{

myFile.SeekToBegin();

while(myFile.ReadString(tem1)){

myFile.ReadString(tem2);

if(tem2=="家人"){

a=a+tem1+"\r\n";

}

}

}

return a;

}

CString myClass::getOthers(){

CString a;

CString tem1;

CString tem2;

CStdioFile myFile;

CFileException fileException;

if(myFile.Open("you.txt",CFile::typeText|CFile::modeNoTruncate|CFile::modeCreate|C File::modeReadWrite),&fileException)

{

myFile.SeekToBegin();

while(myFile.ReadString(tem1)){

myFile.ReadString(tem2);

if(tem2=="其他"){

a=a+tem1+"\r\n";

}

}

}

return a;

}

void myClass::add(CString str){

CStdioFile myFile;

CFileException fileException;

if(myFile.Open("you.txt",CFile::typeText|CFile::modeNoTruncate|CFile::modeCreate|CFile ::modeReadWrite),&fileException)

{

myFile.SeekToEnd();

myFile.WriteString(str+"\n");

}

该程序运行起来之后即显示所有联系人的信息。如图4-2所示:

图4-2 程序运行后所有联系人的信息

接下来就是利用事件驱动特点来写事件里的代码。主要是几个按钮下的事件。默认页面初始化的代码:

myClass *a=new myClass();

CEdit * myEdit1=(CEdit *)GetDlgItem(IDC_EDIT1);

//调用的是getAll()

CString cc=a->getAll();

myEdit1->SetWindowTextA(cc);

4.4.1 点击“全部”按钮,和程序初始化(即上面的程序)是一样的,显示所有联系人的信息,如图4-2所示。

4.4.2 点击“朋友”按钮,可以查看类型为“朋友”的联系人信息,如图4-3所示。

点击“朋友”按钮的代码如下:

myClass *a=new myClass();

CEdit * myEdit1=(CEdit *)GetDlgItem(IDC_EDIT1);

//调用的是getFriend()

CString cc=a->getFriend();

myEdit1->SetWindowTextA(cc);

图4-3 点击“朋友”按钮后显示的联系人信息

4.4.3 点击“家人”按钮,可以查看类新为“家人”的联系人信息,如图4-4所示。

点击“家人”按钮的代码如下:

myClass *a=new myClass();

CEdit * myEdit1=(CEdit *)GetDlgItem(IDC_EDIT1);

//调用的是getFamily()

CString cc=a->getFamily();

myEdit1->SetWindowTextA(cc);

图4-4 点击“家人”按钮后显示的联系人信息

4.4.4 点击“其他”按钮,可以查看类新为“其他”的联系人信息,如图4-5所示。点击“其他”按钮的代码如下:

myClass *a=new myClass();

CEdit * myEdit1=(CEdit *)GetDlgItem(IDC_EDIT1);

//调用的是getOthers()

CString cc=a->getOthers();

myEdit1->SetWindowTextA(cc

图4-5 点击“家人”按钮后显示的联系人信息

4.4.5 点击添加按钮,弹出对话框如图4-6所示。请求输入姓名、号码、类型。其中类型共有3种,即“朋友”、“家人”、“其他”。默认值为“朋友”。输入完毕后点“确定”按钮。就完成了把该条记录保存到文件的操作。填写的示例,如图4-7所示。

(1)点击“添加”按钮的代码:

addConnect add;

add.DoModal(); 这里就是生成一个新窗体而已。

图4-6 点击“添加”按钮弹出的对话框

(2)在点击添加页面上的“确定”按钮的代码:

myClass a;

CString b;

CEdit * myEdit1=(CEdit *)GetDlgItem(IDC_EDIT1);

CEdit * myEdit2=(CEdit *)GetDlgItem(IDC_EDIT2);

CEdit * myEdit3=(CEdit *)GetDlgItem(IDC_COMBO1);

CString str1;

CString str2;

CString str3;

myEdit1->GetWindowTextA(str1);

myEdit2->GetWindowTextA(str2);

myEdit3->GetWindowTextA(str3);

b=str1+"\t\t"+str2+"\n"+str3;

a.add(b);

CDialogEx::OnOK();

图4-7 添加新的联系人

5. 作业总结

由于在VC++方面知识的浅陋,对C++及MFC的学习几乎是从头开始学的,所以对于整个系统都是简单的实现。问题的第一问较为简单,就是把C与C++相关的基础知识

综合整理下,并能够准确的对它们进行区分。当然,由于字数条件的限制,在作业完成情况中,我并没有一一列出两者的用法,只是对它们进行了综合性地简单介绍,要完全了解C与C++输入输出与文件书写的方法,可以从课本中的得到更详细的解说。对于第二问,在刚开始时遇到了很多问题,但通过从图书馆以及数据库中查资料,在同学的提醒下,总算一步步解决了程序在运行过程中出现的错误,程序实现了包括含有朋友、家人、以及其他的不同的分类,还能实现包括人员数据的添加功能。此次作业,既让我了解到MFC编程的宽广神奇性,又让我的自学能力和遇到问题解决问题得到锻炼。

通讯录管理系统

课程设计任务书 题目C语言课程设计 系(部) 信息科学与电气工程学院 专业计算机科学与技术 班级计职141 学生姓名王雪 学号140819139 06 月21 日至07 月04 日共 2 周 指导教师 院长 2015 年6月23日

一、课程设计目的 将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼: (1)进一步巩固、加深学生所学专业课程《C++程序设计语言》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。 (2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。 (3)利用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。 (4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。 (5)掌握结构化程序设计方法,熟悉面向对象程序设计方法。 (6)熟练掌握C++语言的基本语法,灵活运用各种数据类型。 (7)进一步掌握在集成环境下如何调试程序和修改程序。 设计功能 录入联系人信息(包括姓名、电话号码、地址等信息);通讯录管理系统要求实现以下功能: 1、输入每一位联系人记录,将其信息存入文件中。 2、查询所有联系人的信息,并按可选的自定义规则进行排序; 3、记录修改,将修改的记录信息保存于文件中。 设计要求 1、设一个通信录由以下几项数据信息构成: 数据项类型 姓名字符串 地址字符串 邮政编码字符串 电话号码字符串 试为通信录数据定义类型和定义通信录变量,实现功能:存取、显示、删除记录、查询记录等功能。 2、要求:界面友好,易于操作 总体设计 系统功能模块图:

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

《面向对象程序设计》课程设计报告:同学通讯录管理程序

目录 1.设计题目................................. 错误!未定义书签。 2.设计目的和内容........................... 错误!未定义书签。 设计目的................................... 错误!未定义书签。 设计内容................................... 错误!未定义书签。 3.基本功能描述............................. 错误!未定义书签。 4.设计思路................................. 错误!未定义书签。 5.软件设计................................. 错误!未定义书签。 设计步骤................................... 错误!未定义书签。 界面设计................................... 错误!未定义书签。 关键功能的实现............................. 错误!未定义书签。 添加记录................................ 错误!未定义书签。 删除记录................................ 错误!未定义书签。 选中记录................................ 错误!未定义书签。 确认修改................................ 错误!未定义书签。 保存记录................................ 错误!未定义书签。 退出.................................... 错误!未定义书签。 6.结论与心得体会........................... 错误!未定义书签。 7.参考文献................................. 错误!未定义书签。 8.附录..................................... 错误!未定义书签。 调试报告及测试结果 ......................... 错误!未定义书签。

题目通讯录管理系统

题目 2 通讯录管理系统 一.设计要求 1、问题描述 设有一通讯录,记录联系人的联系信息,包括联系人姓名、联系人多个联系电话、邮箱、联系地址以及所属群组。联系人按姓氏序列升序排列并按顺序编号。使用者能根据姓名或编号对联系人信息进行增删改查。请编制一程序模拟该通讯录的管理。 2、设计要求 1)基本要求 (1) 新建联系人。输入联系人的姓名、电话、email、地址和分组等信息, 并插入通讯录的正确位置。 (2) 编辑联系人。可修改、新增或删除联系人的电话、设置首个默认电话号 码、修改或删除email、地址和分组等信息。 (3) 删除联系人。可按姓名或序号删除联系人的信息。 (4) 查询联系人。可按姓名或序号查询联系人的信息并输出。 (5) 群组管理。可根据实际情况删除或新增分组,可为联系人分配群组或移 除群组,并可按群组查询联系人信息。 (6) 输出通讯录。按顺序输出通讯录的全部信息。 2)以下为选做: (7) 按姓名查询联系人时可进行模糊查询。 (8) 通过文件读写实现通讯录信息的读取和记录。 二.概要设计 1.主界面设计 为了实现通讯录管理系统,设计一个含有多个菜单项的主控菜单子程序以链接系统的各项子功能,方便用户使用本系统。本系统主菜单运行界面如下图

所示。 2.存储结构设计 本系统主要采用链表结构类型存储联系人信息。 3.系统功能设计 本系统分为以下7个功能模块。 (1)添加联系人:添加联系人子模块可完成添加联系人姓名、电话、email、地址和分组等信息,并插入通讯录的正确位置。 (2) 编辑联系人。可修改、新增或删除联系人的电话、设置首个默认电话号码、修改或删除email、地址和分组等信息。 (3) 删除联系人。可按姓名或序号删除联系人的信息。 (4) 查询联系人。可按姓名或序号查询联系人的信息并输出。 (5) 群组管理。可根据实际情况删除或新增分组,可为联系人分配群组或移除群组,并可按群组查询联系人信息。 (6) 输出通讯录。按顺序输出通讯录的全部信息。 (7)可选择是否保存并退出系统。 三.模块设计

个人通讯录管理系统

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.程序设计说明书 【设计题目】班级通讯录管理系统 【问题描述】 信息1002班上学生的通讯基本信息包含姓名、电话号码、QQ号和宿舍号。对信息1002班学生的基本通讯信息进行统一整理,并可以按电话号码或姓名等查到学生个人基本通讯信息。可以显示所有的通讯记录,并对现有的通讯记录进行修改和增删等处理。 【基本要求】 1.通过此软件可以直接录入各个学生的基本通讯信息,并且会将所有信息自动保存到磁盘 上。 2.通过此软件可以直接对已录入的各个学生的通讯基本信息进行修改,并且修改完成后会将 更改后的信息情况自动保存到原磁盘文件中。 3.通过此软件可以直接对信息1002班每个同学的基本信息情况进行查询。 【算法思想】 1.根据要求,通讯录数据以文本文件存放在文件中: 2.需要提供文件的输入输出的等操作: 3.还需要保存记录已进行修改,删除,查找的操作: 4.另外还需提供键盘式选择菜单实现功能的选择。 【总体设计】 图1系统功能模块图 【详细设计】 主函数 主函数设计要求简洁,只提供部分提示语和函数的调用 【程序】

图2.主函数流程图 Voidmenu()/*主界面*/ { intn,w1; voidenter();voidadd();voidmodify();voidbrowse();voiddelete();voidsearch(); do { puts("\t*******菜单**************\t\n\n"); puts("\t\t\t\t1.新建联系人"); puts("\t\t\t\t2.添加联系人"); puts("\t\t\t\t3.修改"); puts("\t\t\t\t4.删除"); puts("\t\t\t\t5.浏览"); puts("\t\t\t\t6.查找"); puts("\t\t\t\t7.退出"); puts("\n\n\t*****信息1002班通讯录*************\t\n"); printf("请选择服务种类(1-7):[]\b\b"); scanf("%d",&n); if(n<1||n>7) {w1=1;getchar();} elsew1=0; }while(w1==1); switch(n) { case1:enter();break;/*输入模块*/ case2:add();break;/*添加模块*/ 【模块流程图】 main函数

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

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

学生通讯录管理系统的设计与实现 问题描述: 纸质的通讯录已经不能满足实际需求,容易丢失,查找困难等问题是纸质通讯录所不能克服的缺点。“学生通讯录管理系统”是为了帮助老师、同学,或者其它一些需要使用的通讯录的人员进行管理和应用的一种应用程序。 需求分析: 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判断输入进行

通讯录管理系统需求分析

通讯录管理系统需求分析 项目编号: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()菜单函数

个人通信录管理系统 课程设计

中国矿业大学银川学院 面向对象程序设计课程设计报告 (2011/2012学年第二学期) 题目名称个人通信录管理系统 系部机电动力与信息工程系 专业计算机科学与技术 班级 10级计算机 姓名 xxx 学号 120100510062 完成时间 2011年 6 月 指导老师 xxx

引言: (3) 1 课程设计目的及意义 (5) 2 详细设计 (5) 2.1需求描述 (5) 2.1.1通讯录界面设计 (5) 2.1.2通讯录添加联系人模块 (5) 2.1.3通讯录删除联系人模块 (5) 2.1.4通讯录拨号模块 (6) 2.1.5通讯录显示所有联系人模块 (6) 2.1.6通讯录修改联系人模块 (6) 主要是修改联系人的信息,界面提示要输入需要修改的姓名或者电话号码,如果不正确,显示对不起,联系人中没有你找的人。如果正确,则显示出改联系人的所有信息,并提示根据下面提示修改信息,姓名、电话号、QQ、邮编、地址等 (6) 2.1.7通讯录关闭通讯录模块 (6) 提示谢谢使用! (6) 2.2功能描述 (6) 2.2.1添加联系人; (6) 2.2.2删除联系人 (8) 2.2.3拨号 (11) 2.2.4显示所有联系人的实现: (12) 2.2.5 修改联系人模块 (13) 2.2.6 查询联系人模块 (17) 对文件进行遍历,将联系人的所有信息都显示出来。 (17) 2.2.7关闭通讯录模块 (19) 提示谢谢使用! (19) 2.2.8主函数 (19) 2.3程序用行说明 (20) 2.3.1程序界面 (20) 2.3.2添加联系人信息 (20) 2.3.3删除联系人 (21) 2.3.4拨号 (23) 2.3.5显示所有联系人 (23) (23) 2.3.6修改联系人信息 (23) 2.3.7查询联系人 (24) 2.3.8关闭通讯录 (24) 3课程设计总结 (25) 3.1编程日志 (25) 3.2测试报告 (25) 4 心得体会: (25) 附录: (26) 参考文献: (43)

C课程设计通讯录管理系统

C课程设计通讯录管理 系统 文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208]

课程设计说明书(论文)课程名称 C++程序设计实践 题目通信录管理系统 专业软件工程班级 学号姓名 xx 起止日期 指导教师赵新慧成绩 辽宁石油化工大学计算机与通信工程学院

摘要 本次课程设计任务是通过编写一个通信录管理系统,学习用Visual?C++?开发简单的管理系统。采用Visual?C++?软件为主要开发工具。巩固和加深学生对C++课程的基本知识的理解和掌握,掌握C++编程和程序调试的基本技能,利用C++进行简单软件设计的基本思路和方法,提高运用C++解决实际问题的能力,掌握书写程序设计说明文档的能力使用计算机进行信息管理。实现通信录的管理功能(添加、删除、排序)、按姓名查询的功能,以及把联系人资料保存在文件中,将文件中内容读出来。使用计算机进行系统管理,不仅提高了工作效率,而且大大提高了其安全性,尤其对于复杂的信息管理,计算机能充分地发挥它的优越性,通信录管理系统是每个人不可缺少的部分,在课程设计中,系统开发平台为Windows XP,程序设计语言采用Visual C++,在程序设计中,运用了面向对象解决问题的方法。程序通过调试运行,初步实现了设计目标。 Abstract The curriculum design task is through the preparation of a student achievement ranking management system, learning management system with Visual C++ 6 to develop simple. Using Visual C++ 6 software as the main development tool. To consolidate and deepen the students the basic knowledge of C++

管理信息系统-通讯录管理系统

昆明理工大学管理信息系统课程设计通讯录管理系统 学院计算机科学与技术学院 姓名黄亚军 学号200910405229 指导教师姓名王剑 2012年05月27日

昆明理工大学管理信息系统课程设计 (1) 摘要 参考文献 (25)

摘要: 通讯录管理系统是每一个用户管理通讯录的不可缺少的一个管理信息系统,它的内容对于用户的管理者来说是至关重要的,所以通讯录管理系统应该能够为每一个用户的管理者提供充足的信息和快捷的查询手段,大大的方便用户合理的管理通讯录。 随着科学技术的不断提高,计算机科学日渐成熟,网上通讯工具的迅速发展,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算机对通讯录进行管理,具有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高通讯录管理的效率,也是用户理财的科学化、正规化管理,与先进科学技术接轨的重要条件。 因此,开发这样一套管理软件成为很有必要的事情,对于我们即将计算机专业毕业的学员来说,也是一次将计算机应用于现实管理的一次很有意义的实践活动。 关键词:通讯录管理信息系统计算机科学用户 一、前瞻 1.开发背景简介 随着信息活动在国民经济中主导地位的确立和信息产业的崛起信息资源管 理(Informetion Resouces Management,简称IRM)作为一个专有名词和独立的学科逐渐发展起来。如何积极开发、合理配置和有效利用信息资源,日益成为社会生活中亟待解决的问题。由于计算机和通信技术的高速发展,推广应用计算

Java课程设计--个人通讯录管理系统

《JAVA程序设计》课程设计说明书

目录 1 引言 (1) 1.1课程设计选题 (1) 1.2课程设计的目的 (1) 1.3本选题的设计背景 (1) 2 需求分析 (1) 2.1 功能需求 (1) 2.2 系统的开发运行环境 (2) 3 总体设计 (2) 3.1 系统体系结构设计 (2) 3.2系统功能模块及主要类设计 (3) 3.3数据库设计 (5) 4 详细设计与实现 (7) 4.1 登录模块 (7) 4.2 注册新用户模块 (8) 4.3 查询模块 (9) 4.4 添加模块 (11) 4.5 修改模块 (13) 4.6删除模块 (16) 4.7备份模块 (18) 4.8退出模块 (19) 5 小结和展望 (20) 参考文献 (22) 附录 (22) 使用说明书 (22)

1引言 1.1课程设计选题 《个人通讯录管理系统》 1.2课程设计的目的 通过编写并调试一个Java应用软件,熟悉和掌握使用Java开发应用程序的完整过程。 使学生巩固和加深以Java 语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平。 1.3本选题的设计背景 一直以来就想做一个比较实用的通讯录管理系统,这样可以方便我对于身边联系人信息的管理,防止遗忘和丢失。 在这样一个信息化的社会里,人们的生活也越来越离不开电脑了,本次通过做个人通讯录管理系统,希望摈弃传统的纸质记录的弊端,发挥电脑软件的优势,方便人们对自己的联系人信息的管理。 2需求分析 2.1 功能需求 2.1.1个人通讯录功能需求 (1)登陆功能。用户可以直接输入用户名和密码,登陆进入通讯录的主功能界面。 (2)注册功能。其他用户可以输入自己的用户名和密码及确认密码,来实现注册成为该通讯录的使用者。 (3)查询功能。在该功能里,用户可以采用模糊查询和精确查询两种查询方式来对自己存储的联系人信息进行查询。 (4)添加功能。在该功能里,用户可以添加自己的常用联系人和分组信息。

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

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

学生通讯录管理系统的设计与实现 问题描述: 纸质的通讯录已经不能满足实际需求,容易丢失,查找困难等问题是纸质通讯录所不能克服的缺点。“学生通讯录管理系统”是为了帮助老师、同学,或者其他一些需要使用的通讯录的人员进行管理和应用的一种应用程序。 需求分析: 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判断输入进行各种操作,1进行建立信息

C语言通讯录管理系统程序代码

一、课程设计题目及要求 题目通讯录管理系统 任务:自学C语言中相关知识,设计出通讯录管理系统。要求如下所述: ◆建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子 邮箱等;; ◆能够提供添加、删除和修改通讯录信息的功能; ◆能够提供按姓名或电话等查询; ◆将通讯录保存在文件中; ◆能够按表格方式输出通讯录信息。 二、系统设计方案 (一)总体框架图: 通讯录管理系统:1、录入通讯录信息 2、修改通讯录信息 3、查询通讯录信息 4、浏览通讯录信息 5、增加通讯录信息 6、推出系通讯录统 (二)模块设计 模块一:头文件,变量定义,函数的声明 对系统所使用的变量进行定义,对函数进行声明 模块二:录入通讯录信息 声明函数void readfile(),说明一个文件指针FILE *fp 打开文件"student.txt" 模块三:通讯录信息的查找 声明void seek()为查找函数,通过switch(item)设定用学号查找,用姓名查找两个分支 模块四:通讯录信息的修改

声明void modify()为学生信息修改函数,通过switch(item)设定所要修改的项目模块五:通讯录信息按学号排序 声明void sort()将录入通讯录信息系按升序排列,用的是“冒泡排序法”实现排序模块六:加通讯录信息 声明void insert()插入通讯录信息,先通过判断通讯录是否存在,若否则继续输入,若是跳出,重新循环 模块七:通讯录信息 声明void del()实现通讯录信息删除,通过学号对比确定要删除的信息,然后用后一个替换掉。 模块八:示学生信息 通过display()函数输出通讯录信息 模块九;存信息 通过fp=fopen("student.txt","w");写入信息 模块十:界面菜单 通过switch(num)调用,以上各函数,实现功能 三、设计详情 1.主函数 主函数设计要求简洁,只提供部分提示语和函数的调用 【程序】

个人通讯录管理(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

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

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

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

联系人管理系统

联系人管理系统设计报告 程珠 200907260203 信管0901 一、实验目地 通过本课程设计,要求熟悉管理信息系统开发的原理,掌握系统分析、系统设计、系统编程与调试等方法。能够完成一个中小型信息系统的规划与分析设计工作,或者能够开发一个小型的管理信息系统,提高分析问题与解决问题的能力。 二、实验内容 1.业务简介 (1)公司联系人 A.公司联系人类型构成:公司联系人类型标识,公司联系人类型 B.公司联系人构成:公司联系人标识,公司联系人名称,地址,出生日期,公司联系 人类型标识 C.查询构成:公司联系人标识,公司联系人类型标识 (2)客户 A 客户构成:客户标识,客户名称,客户地址,客户电话 (3)客户联系人 客户联系人构成:客户联系人标识,客户联系人姓名,客户联系人地址,客户联系人电话 2.系统功能 A 查看和修改公司联系人、客户、客户联系人 B添加和删除公司联系 人、客户、客户联系人 C退出系统 通过联系人管理系统,可以查询和修改公司联系人、客户、客户联系人。添加和删除公司联系人、客户、客户联系人,给企业或学校提供一个良好的人力资源管理环境。 也可以清晰地了解到三者的关系。除了可以查看公司联系人名称,地址,出生日期,公

司联系人类型还可以查看联系人的公司信息和家庭信息,如联系人的上级和下级信息,父母信息等等。以及联系人的毕业信息和在学校、公司的突出表现。方便企业对公司联系人更好的了解和统计。通过客户信息可以查找与公司有业务来往的客户信息。 三、实验过程 1. 系统分析(以公司联系人为例)

ER图 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.用户的主要信息需求: ①对个人通讯信息资料进行登记、修改、浏览。 ②对个人通讯信息资料进行按姓名和学号查询。 ③对个人通讯信息资料进行打印输出。 系统功能设计与分析: 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

相关主题