通讯录实训实验报告.docx

上传人:b****6 文档编号:6746884 上传时间:2023-01-09 格式:DOCX 页数:21 大小:158.25KB
下载 相关 举报
通讯录实训实验报告.docx_第1页
第1页 / 共21页
通讯录实训实验报告.docx_第2页
第2页 / 共21页
通讯录实训实验报告.docx_第3页
第3页 / 共21页
通讯录实训实验报告.docx_第4页
第4页 / 共21页
通讯录实训实验报告.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

通讯录实训实验报告.docx

《通讯录实训实验报告.docx》由会员分享,可在线阅读,更多相关《通讯录实训实验报告.docx(21页珍藏版)》请在冰豆网上搜索。

通讯录实训实验报告.docx

通讯录实训实验报告

实训报告

面向对象程序设计

 

题目:

通讯录

院系:

信息科技学院

专业:

计算机科学与技术

姓名:

***

学号:

****

指导教师:

******

日期:

2012年1月7日

 

电子科技大学信息科技学院

 

1问题定义………………………………………………………………………………………4

2系统设计………………………………………………………………………………………4

2.1总体设计…………………………………………………………………………………4

2.2详细设计………………………………………………………………………………6

2.2.3输入记录模块……………………………………………………………………7

2.2.4查询记录模块………………………………………………………………………8

2.2.5更新记录模块………………………………………………………………………8

2.2.6统计记录模块………………………………………………………………………8

3系统实现…………………………………………………………………………………9

3.1编码………………………………………………………………………………………9

3.1.1程序预处理………………………………………………………………………9

3.1.2主函数main()………………………………………………………………9

3.1.3主菜单界面……………………………………………………………………9

3.1.4表格形式显示记录……………………………………………………………10

3.1.5记录查找定位……………………………………………………………………10

3.1.6格式化输入数据…………………………………………………………………10

3.1.7增加记录……………………………………………………………………10

3.1.8查询记录……………………………………………………………………10…

3.1.9删除学生记录……………………………………………………………………11

3.1.10修改记录………………………………………………………………………11

3.1.11插入记录………………………………………………………………………12

3.1.12统计记录……………………………………………………………….…12

3.1.13排序记录………………………………………………………………………13

3.1.14存储记录………………………………………………………………………13

3.1.15截图……………………………………………………….……………17

 

前言

课程设计环节是应用型本科院校非常重要的一个教学环节,是学完一门课后应用本课知识及以前的知识积累而进行的综合性、开放性的训练。

通过课程设计,不仅能够使学生得到系统的技能训练,巩固和加强所学得专业理论知识,而且能够培养学生工程意识、创新能力、团队精神等综合素质,培养学生的设计能力和解决实际问题的能力。

C语言由于其强大的功能,丰富的表达能力,高效的代码,良好的移植性和灵活性,自1972年问世以来,经久不衰,即使现在出现了面向对象的程序设计方法和开发工具,但它仍然是人们学习程序设计的首选语言,用它训练和提高编程技术,以及开发应用程序等。

我们通过《C语言程序设计》这门课程的学习,已经能编写解决小问题的程序,对程序的开发也有了初步的认识,还掌握了C语言的基本语法,这一过程确确实实令我们感到欣喜,有点计算机可以完成自我任务的成就感。

但是,对于程序设计而言,学习C的步伐不应该停留于此。

我们最终的目的应该是掌握开发大型综合程序的方法,即遵循软件工程的开发步骤和结构化程序设计思想,用C语言开发出解决复杂问题的大型综合程序。

可是对于多数学生来说,学习了C语言后,除了应付各种考试之外,别无它用,对TurboC语言丰富的函数知之甚少,加上DOS环境所限,因而对C语言兴趣不大,也感到C语言比较难以掌握。

本实训就是为了让学生在学完C语言后进一步了解C语言的知识,掌握C语言在软件开发方面的使用方法,希望通过此次实训,不仅能提高学生学习C语言的兴趣,更为今后学习其它专业知识及开发程序打下坚实的基础。

本指导书中有些容借鉴了互联网上相关程序的设计思想,在此对相关者表示衷心的感。

由于时间、经验及水平的原因,不当、不足之处,请大家提出宝贵意见。

编者

通讯录系统

本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和单链表的各种基本操作。

本程序中涉及结构体、单链表、文件等方面的知识。

通过本程序的训练,使学生能对C语言的文件操作有一个更深刻的了解,掌握利用单链表存储结构实现对学生成绩管理的原理,为进一步开发出高质量的管理信息系统打下坚实的基础。

1、问题定义

创建一个通讯录管理系统。

假设系统中每个人录只包括、,如下图所示,选择任意菜单后,实现相应功能。

在问题定义阶段要考虑题目的可行性和需求分析,接下来进入开发阶段,完成系统设计和系统实现的任务。

2、系统设计

2.1总体设计

采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,然后分别设计各个小任务。

需要注意的是划分出来的模块应该相对独立但又相关,且容易理解。

可以用模块化层次结构图(即模块图)来分析其任务的划分,一般从上到下进行,最上面一层是主模块,下面各层是其上一层模块的逐步细化描述。

本通讯录系统要求采用数组实现,它由如下五大功能模块组成:

●输入记录模块:

完成将数据存入文件的工作。

记录可以从以二进制形式存储的数据文件中读入,也可从键盘逐个输入学生记录。

学生记录由学生的基本信息和成绩信息字段构成。

当从数据文件中读入记录时,也就是把在以记录为单位存储的数据文件中,将记录逐条复制到数组中。

●查询记录模块:

逐一查找文件名对应文件,打开读数。

●更新记录模块:

打开相应文件,对其中数据更改。

●输出记录模块:

重文件中读出数据,转出存入数组中,再由数组输出。

2.2详细设计

2.2.1数据结构设计

●通讯录结构体

直接由外部文件分隔储存,进行文件建立,结合外部搜索完成基本结构。

 

2.2.2定义数组函数执行流程

//通讯录Dlg.h:

headerfile

//

#if!

defined(AFX_DLG_H__37C8ABEA_DB2A_4346_9B9E_B2B26BE0014A__INCLUDED_)

#defineAFX_DLG_H__37C8ABEA_DB2A_4346_9B9E_B2B26BE0014A__INCLUDED_

#if_MSC_VER>1000

#pragmaonce

#endif//_MSC_VER>1000

/////////////////////////////////////////////////////////////////////////////

//CMyDlgdialog

classCMyDlg:

publicCDialog

{

//Construction

public:

structstudent

{

CStringcsCode;//学号

CStringcsName;//

}structStudent[20];

intnStudentNum;

intnAccordNum;

intnAccordItem[20];

intnumber;

CMyDlg(CWnd*pParent=NULL);//standardconstructor

//DialogData

//{{AFX_DATA(CMyDlg)

enum{IDD=IDD_MY_DIALOG};

CStringm_csCode;

CStringm_csName;

CStringm_csSearchCode;

CStringm_csSearchName;

//}}AFX_DATA

//ClassWizardgeneratedvirtualfunctionoverrides

//{{AFX_VIRTUAL(CMyDlg)

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport

//}}AFX_VIRTUAL

//Implementation

protected:

HICONm_hIcon;

//Generatedmessagemapfunctions

//{{AFX_MSG(CMyDlg)

virtualBOOLOnInitDialog();

afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);

afx_msgvoidOnPaint();

afx_msgHCURSOROnQueryDragIcon();

afx_msgvoidOnButton1();

afx_msgvoidOnButton2();

afx_msgvoidOnButton3();

afx_msgvoidOnButton4();

afx_msgvoidOnButton5();

virtualvoidOnOK();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

//{{AFX_INSERT_LOCATION}}

//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.

#endif//!

defined(AFX_DLG_H__37C8ABEA_DB2A_4346_9B9E_B2B26BE0014A__INCLUDED_)

public:

structstudent

{

CStringcsCode;//定义

CStringcsName;//定义以结构体完成

}structStudent[10];

intnStudentNum;//定义数组的位置标记的,用于录入时移动数组

intnAccordNum;//查询时,用于找到数组位置

intnAccordItem[10];

intnumber;

将其都定义在主界面PUBLIC之中。

 

2.2.3输入记录模块

voidCMyDlg:

:

OnButton1()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

UpdateData(TRUE);//刷新提取数据

structStudent[nStudentNum].csCode=m_csCode;//录入数据

structStudent[nStudentNum].csName=m_csName;

nStudentNum++;

m_csCode="";//将输入栏变空

m_csName="";

UpdateData(FALSE);//刷新录入数据

}

2.2.4查询记录模块

2.2.5BOOLbAccordCode=FALSE;//用于判断对错

2.2.6BOOLbAccordName=FALSE;

2.2.7CStringcsBuffer;

2.2.8nAccordNum=0;//附初值

2.2.9UpdateData(TRUE);

2.2.10for(inti=0;i

2.2.11{

2.2.12if(m_csSearchCode==""||m_csSearchCode==structStudent[i].csCode)//判断是否符合,查询数据。

2.2.13{bAccordCode=TRUE;}

2.2.14else{bAccordCode=FALSE;}

2.2.15if(m_csSearchName==""||m_csSearchName==structStudent[i].csName)

2.2.16{bAccordName=TRUE;}

2.2.17else{bAccordName=FALSE;}

2.2.18if(bAccordCode==TRUE&&bAccordName==TRUE)

2.2.19{nAccordItem[nAccordNum]=i;nAccordNum++;}

2.2.20}

2.2.21if(nAccordNum>0)//确定存在时进行输出

2.2.22{m_csSearchCode=structStudent[nAccordItem[0]].csCode;

2.2.23m_csSearchName=structStudent[nAccordItem[0]].csName;

2.2.24UpdateData(FALSE);

2.2.25}

2.2.26

2.2.27}

2.2.28

2.2.29

2.2.30}更新记录模块

2.2.31voidCMyDlg:

:

OnButton3()

2.2.32{UpdateData(TRUE);

2.2.33//TODO:

Addyourcontrolnotificationhandlercodehere

2.2.34number=0;

2.2.35for(inti=0;i

2.2.36{

2.2.37if(m_csSearchName==""||m_csSearchName==structStudent[i].csName)

2.2.38number=i;

2.2.39structStudent[number].csCode=m_csSearchCode;//重新赋值

2.2.40structStudent[number].csName=m_csSearchName;

2.2.41

2.2.42}

2.2.43m_csSearchCode="";

2.2.44m_csSearchName="";

2.2.45UpdateData(FALSE);

2.2.46函数功能描述

voidCMyDlg:

:

OnButton1()录入

voidCMyDlg:

:

OnButton2()查询

voidCMyDlg:

:

OnButton3()修改

voidCMyDlg:

:

OnButton4()删除

voidCMyDlg:

:

OnButton5()对话框转接

完成在上述系统设计后,即可着手进行系统实现的工作,开始程序代码的编写。

3、系统实现

3.1编码

classCMyDlg:

publicCDialog

{

//Construction

public:

structstudent

{

CStringcsCode;//定义

CStringcsName;//定义以结构体完成

}structStudent[10];

intnStudentNum;//定义数组的位置标记的,用于录入时移动数组

intnAccordNum;//查询时,用于找到数组位置

intnAccordItem[10];

intnumber;

voidCMyDlg:

:

OnButton1()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

UpdateData(TRUE);

structStudent[nStudentNum].csCode=m_csCode;

structStudent[nStudentNum].csName=m_csName;

nStudentNum++;

m_csCode="";

m_csName="";

UpdateData(FALSE);

}

voidCMyDlg:

:

OnButton2()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

BOOLbAccordCode=FALSE;

BOOLbAccordName=FALSE;

CStringcsBuffer;

nAccordNum=0;

UpdateData(TRUE);

for(inti=0;i

{

if(m_csSearchCode==""||m_csSearchCode==structStudent[i].csCode)

{bAccordCode=TRUE;}

else{bAccordCode=FALSE;}

if(m_csSearchName==""||m_csSearchName==structStudent[i].csName)

{bAccordName=TRUE;}

else{bAccordName=FALSE;}

if(bAccordCode==TRUE&&bAccordName==TRUE)

{nAccordItem[nAccordNum]=i;nAccordNum++;}

}

csBuffer.Format("你查询的信息在左边显示,如过没有显示信息既则没此人记录。

",nAccordNum);

MessageBox(csBuffer,"Attention",MB_OK|MB_ICONINFORMATION);

if(nAccordNum>0)

{m_csSearchCode=structStudent[nAccordItem[0]].csCode;

m_csSearchName=structStudent[nAccordItem[0]].csName;

UpdateData(FALSE);

}

}

voidCMyDlg:

:

OnButton3()

{UpdateData(TRUE);

//TODO:

Addyourcontrolnotificationhandlercodehere

number=0;

for(inti=0;i

{

if(m_csSearchName==""||m_csSearchName==structStudent[i].csName)

number=i;

structStudent[number].csCode=m_csSearchCode;

structStudent[number].csName=m_csSearchName;

}

m_csSearchCode="";

m_csSearchName="";

UpdateData(FALSE);

}

voidCMyDlg:

:

OnButton4()

{

UpdateData(TRUE);

//TODO:

Addyourcontrolnotificationhandlercodehere

number=0;

for(inti=0;i

{

if(m_csSearchName==""||m_csSearchName==structStudent[i].csName)

number=i;

structStudent[number].csCode="";

structStudent[number].csName="";

}

m_csSearchCode="";

m_csSearchName="";

UpdateData(FALSE);

}

voidCMyDlg:

:

OnButton5()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

jja;

a.DoModal();

}

//通讯录Dlg.cpp:

implementationfile

//

#include"stdafx.h"

#include"通讯录.h"

#include"通讯录Dlg.h"

#include"jj.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

//CAboutDlgdialogusedforAppAbout

classCAboutDlg:

publicCDialog

{

public:

CAboutDlg();

//DialogData

//{{AFX_DATA(CAboutDlg)

enum{IDD=IDD_ABOUTBOX};

//}}AFX_DATA

//ClassWizardgeneratedvirtualfunctionoverrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport

//}}AFX_VIRTUAL

//Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg:

:

CAboutDlg():

CDialog(CAboutDlg:

:

IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

voidCAboutDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

//Nomessagehandlers

//}}AFX_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1