算法与数据结构设计_通讯录的实现.doc

算法与数据结构设计_通讯录的实现.doc
算法与数据结构设计_通讯录的实现.doc

题目二:通讯录的实现

一,课题内容和要求

基本要求:实现一个以带表头结点的单链表为存储结构的通讯录,其中通讯录的信息中包括姓名、电话、地址等数据项。所设计的系统要有简单的DOS界面,方便用户进行操作,显示以下功能:

(1)建立通讯录。

(2)插入、删除、修改通讯录记录

(3)查询通讯录记录,要求可按姓名和电话号码查询

(4)可按姓名或电话号码对讯录进行排序

(5)输出通讯录到文本文件中。

提高要求:建立通讯录时,从文本文件中输入通讯录记录,从而建立通讯录。

分配该题目的学生学号:10001111-10001120

二、需求分析

(1)建立一个类,类中包含

添加联系人函数void add_person();

删除联系人void add_person();

显示所有联系人void show_all();

修改信息void alter();

查询联系人void select();

保存新增加的联系人void save_new();

同时,通讯录中包含name姓名

address地址

number电话号码

mail邮箱

(2)系统总流程图

三,概要设计

定义一个结构体,在其中声明结构变量,然后定义字符串,来存放要用到的变量。然后定义此程序的其他功能模块的原型。主函数调用各个功能子函数,定义各个功能子函数,通过class person创建一个联系人信息函数。通过add_person做一个添加的函数,实现联系人信息的录入。通过del_person做一个删除的函数,实现联系人信息的删除。通过show_all做一个显示的函数,显示所有联系人的信息。通过select做一个查询信息的函数,实现查询某联系人的信息。通过alter做一个修改信息的函数,实现修改某联系人的信息。在程序中需要输入的内容包括:

(1)联系人的录入

实现过程:根据提示选择“1”进入添加联系人信息界面,按步骤输入要添加的信息,以“Enter”键结束,然后由系统自动调用信息录入函数,联系人的信息保存在事先定义的文件中。

(2)联系人的删除

实现过程:根据提示选择”2”进入删除联系人信息界面,按步骤输入要删除的联系人姓名或号码,以”Enter”键结束,然后由系统自动调用信息删除函数,删除联系人后保存在事先定义的数据库中。

(3)显示所有联系人

实现过程:根据提示选择”3”进入现显示所有联系人信息界面,由系统自动调用显示联系人信息函数。

(4)联系人的修改

实现过程:根据提示选择“4”进入联系人信息的修改界面,按步骤输入要修改的联系人姓名或号码,以“Enter”键结束,此时所有的基本信息都被要求重新输入。

(5)联系人的查询

实现过程:根据提示选择“5”进入联系人信息的查询界面,按步骤输入要查询的联系人姓名或号码,以“Enter”键结束,由系统自动调出所需要查询的信息。

四,详细设计

1,添加联系人

(1)函数声明为:void person::add_person();

(2)功能:该函数用来录入联系人信息,name 是姓名,number是号码,mail 是电子邮箱,address是籍贯。

(3)流程图为:

(4)函数定义为:

void person::add_person()

{

cout <

cout <<"姓名 :" ;

cin >>name;

cout <<"电话号码 : ";

cin>>number;

cout <<"电子邮箱 : ";

cin >>mail;

cout <<"籍贯 : ";

cin >>address;

save_new();

cout <

2,联系人查询函数

(1)函数声明为:void person::select();

(2)功能:该函数用来查找指定的联系人的基本信息(包括姓名,号码,电子邮箱,籍贯)。

(3)流程图:

(4)函数定义为:

void person::select()

{

ifstream inData("pperson.txt",ios::in);

if (!inData)

{

cout <

system("pause");

return;

}

string sign;

cout <

cin >>sign;

fflush(stdin);

string str1;

bool flag = true;

string str;

while (inData >>name >>number)

{

getline(inData, str);

if ((name==sign) || (number==sign))

{

cout <

cout <

cout <

<

flag = false;

system("pause");

break;

}

}

}

void person::save_new()

{

ofstream outData("pperson.txt", ios::app);

if (!outData)

{

cout <

return;

}

outData << setiosflags(ios::left) << setw(17) << name

<<" " << setw(16) << number <<" "

<< setw(14) << mail <<" "

<< setw(20) << address <

}

3,联系人信息修改函数

(1)函数声明为:void person::alter();(2)功能:该函数用来修改联系人信息。(3)流程图:

(4)函数定义为:

void person::alter()

{

ofstream outData("temp.txt", ios::out);

ifstream inData("pperson.txt", ios::in); //

if (!outData || !inData)

{

cout <

system("pause");

return;

}

string sign;

cout <

cin >>sign;

string str1;

bool flag = true;

string str;

while (inData >>name >>number)

{

getline(inData, str);

if ((sign==name) || (sign==number))

{

cout <

cout <

cout <

cin >>name;

fflush(stdin);

cout <<"电话号码:";

cin >>number;

fflush(stdin);

fflush(stdin);

cout <<"电子邮箱 :";

cin >>mail;

fflush(stdin);

cout <<"籍贯 :";

cin >>address;

fflush(stdin);

save_new();

flag = false;

break;

}

outData <

<<" " <

}

if (flag)

{

cout <

else

{

while (getline(inData, str))

{

outData <

}

outData.close();

inData.close();

ofstream out("pperson.txt", ios::out);

ifstream in("temp.txt", ios::in);

if (!out || !in)

{

cout <

system("pause");

return;

}

while (getline(in, str))

{

out <

}

out.close();

in.close();

cout <

}

system("pause");

}

4,联系人信息删除函数

(1)函数声明为:void person::del_person();

(2)功能:该函数用来删除某联系人信息。

(3)流程图:

(4)函数定义为:

void person::del_person()

{

ofstream outData("temp.txt", ios::out);

ifstream inData("pperson.txt", ios::in); // if (!outData || !inData)

{

cout <

return;

}

string sign;

cout <

cin >>sign;

string str1;

bool flag = true;

string str;

while (inData >>name >>number)

{

getline(inData, str);

if ((sign==name) || (sign==number))

{

cout <

cout <

cout <

<<" " <

flag = false;

break;

}

outData <

<<" " <

}

if (flag)

{

cout <

else

{

while (getline(inData, str))

{

outData <

}

outData.close();

inData.close();

ofstream out("pperson.txt", ios::out);

ifstream in("temp.txt", ios::in);

if (!out || !in)

{

cout <

return;

}

while (getline(in, str))

{

out <

}

out.close();//

in.close();

cout <

}

system("pause");

}

五、测试数据及其结果分析

1,运行中Dos界面

2,通讯录中录入联系人的信息

3,显示通讯录中联系人的信息

4,修改联系人的信息,包括姓名,电话号码,邮箱与籍贯

5,查找通讯录中的联系人信息

6,关闭通讯录

六,总结

1,进一步巩固了在C++与数据结构中所学的知识,进一步熟悉了数组,指针,结构体,文件数据类型等知识点的运用与掌握,加深了对高级语言基本语言要素和控制结构的理解,又一次锻炼了自己设计程序的能力。

2,面对运行时候出现的Error,要沉着冷静的一步步改错,这也是一种能力,不懂的地方也自己查阅资料,最后可以询问同学与老师。

完整的开发文档数据库设计说明书

变更履历

目录 第一章引言 (1) 1.1编写目的 (1) 1.2背景 (1) 1.3术语定义 (2) 1.4参考资料 (2) 第二章外部设计 (3) 2.1标识符和状态 (3) 2.2使用它的程序 (3) 2.3命名约定 (3) 2.4设计约定 (3) 第三章结构设计 (4) 3.1概念结构设计 (4) 3.2逻辑结构设计 (21) 3.3物理结构设计 (33) 第四章运用设计 (34) 4.1数据字典设计 ............................................... 错误!未定义书签。 4.2安全保密设计 ............................................... 错误!未定义书签。 4.3数据库实施 (34) 4.3.1创建数据库 (34) 4.3.2创建表 (34) 4.3.3添加参照完整性约束 ..................................... 错误!未定义书签。 4.3.4添加用户完整性约束 ..................................... 错误!未定义书签。 4.3.5添加索引 ............................................... 错误!未定义书签。 4.3.6创建视图 ............................................... 错误!未定义书签。 4.3.7插入测试数据 ........................................... 错误!未定义书签。

数据结构与算法设计实验一

《数据结构与算法设计》 实验报告 ——实验一 学院: 班级: 学号: 姓名:

一、实验目的 第一题利用单向环表实现约瑟夫环。 第二题归并顺序表。 二、实验内容 第一题采用单向环表实现约瑟夫环。 请按以下要求编程实现: ①从键盘输入整数m,通过create函数生成一个具有m个结点的单向环表。环表中的结点编号依次为1,2,……,m。 ②从键盘输入整数s(1<=s<=m)和n,从环表的第s个结点开始计数为1,当计数到第n个结点时,输出该第n结点对应的编号,将该结点从环表中消除,从输出结点的下一个结点开始重新计数到n,这样,不断进行计数,不断进行输出,直到输出了这个环表的全部结点为止。 例如,m=10,s=3,n=4。则输出序列为:6,10,4,9,5,2,1,3,8,7。 第二题选作:归并顺序表。 请按以下要求编程实现: ①从键盘输入两个升序排列的整数序列linka和linkb,每个序列以输入0为结束标记。 ②将链表linka和linkb归并为linkc,linkc仍然为升序排列。归并完成后,linka 和linkb为空表。输出linkc。 ③对linkc进行处理,保持升序不变,删除其中重复的整数,对重复的整数只保留一个,输出删除重复整数后的链表。 例如:linka输入为:10 20 30 40 50 0 linkb输入为:15 20 25 30 35 40 45 50 0 归并后的linkc为:10 15 20 20 25 30 30 35 40 40 45 50 50 删除重复后的linkc为:10 15 20 25 30 35 40 45 50 三、程序设计 1、概要设计 第一题为了实现程序功能,应当建立单向环表来寄存信息及结点,通过查找结

数据结构与算法基础知识总结

数据结构与算法基础知识总结 1 算法 算法:是指解题方案的准确而完整的描述。 算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。 算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。特征包括: (1)可行性; (2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义性; (3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止,包括合理的执行时间的含义; (4)拥有足够的情报。 算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。 指令系统:一个计算机系统能执行的所有指令的集合。 基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。 算法的控制结构:顺序结构、选择结构、循环结构。 算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。 算法复杂度:算法时间复杂度和算法空间复杂度。 算法时间复杂度是指执行算法所需要的计算工作量。 算法空间复杂度是指执行这个算法所需要的内存空间。 2 数据结构的基本基本概念 数据结构研究的三个方面: (1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构; (2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;(3)对各种数据结构进行的运算。 数据结构是指相互有关联的数据元素的集合。 数据的逻辑结构包含: (1)表示数据元素的信息; (2)表示各数据元素之间的前后件关系。 数据的存储结构有顺序、链接、索引等。 线性结构条件:

(1)有且只有一个根结点; (2)每一个结点最多有一个前件,也最多有一个后件。 非线性结构:不满足线性结构条件的数据结构。 3 线性表及其顺序存储结构 线性表由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。 在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。 非空线性表的结构特征: (1)且只有一个根结点a1,它无前件; (2)有且只有一个终端结点an,它无后件; (3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。结点个数n称为线性表的长度,当n=0时,称为空表。 线性表的顺序存储结构具有以下两个基本特点: (1)线性表中所有元素的所占的存储空间是连续的; (2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 ai的存储地址为:adr(ai)=adr(a1)+(i-1)k,,adr(a1)为第一个元素的地址,k代表每个元素占的字节数。 顺序表的运算:插入、删除。(详见14--16页) 4 栈和队列 栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。 栈按照“先进后出”(filo)或“后进先出”(lifo)组织数据,栈具有记忆作用。用top表示栈顶位置,用bottom表示栈底。 栈的基本运算:(1)插入元素称为入栈运算;(2)删除元素称为退栈运算;(3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化。 队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。rear指针指向队尾,front指针指向队头。 队列是“先进行出”(fifo)或“后进后出”(lilo)的线性表。 队列运算包括(1)入队运算:从队尾插入一个元素;(2)退队运算:从队头删除一个元素。循环队列:s=0表示队列空,s=1且front=rear表示队列满

数据库设计说明书-模版

XXXX项目 数据库设计说明书

变更履历

第1章引言 (1) 1.1 编写目的 (1) 1.2 背景 (1) 1.3 术语定义 (1) 1.4 参考资料 (1) 第2章外部设计 (3) 2.1 标识符和状态 (3) 2.2 使用它的程序 (3) 2.3 约定 (3) 2.3.1数据库设计的范围 (3) 2.3.2 命名的总体规则及注意事项 (3) 2.3.3 数据模型设计工具要求 (4) 2.4 支持软件 (4) 第3章结构设计 (5) 3.1 物理结构设计 (5) 3.1.1 表空间物理存储参数 (5) 3.1.2 表空间SQL规程 (6) 3.1.3 数据库用户创建 (7) 3.1.4 数据库例程创建 (7) 3.1.5 角色授权 (7) 第4章运用设计 (8) 4.1 数据字典设计 (8) 4.1.1 表名的命名规范 (8) 4.1.2 表字段命名规范 (9) 4.2 安全保密设计 (9) 第5章风险评估 (10) 5.1 表汇总列表 (10) 5.2 实体关系图 (10) 5.3 表详细设计 (11) 第6章安全检查 ....................................... 错误!未定义书签。 6.1 表汇总列表 ..........................................错误!未定义书签。 6.1 实体关系图 ..........................................错误!未定义书签。 6.2 表详细设计 ..........................................错误!未定义书签。第7章绩效管理 ....................................... 错误!未定义书签。 7.1 表汇总列表 ..........................................错误!未定义书签。 7.2 实体关系图 ..........................................错误!未定义书签。 7.3 表详细设计 ..........................................错误!未定义书签。第8章安全响应、预警和管理............................. 错误!未定义书签。 8.1 表汇总列表 ..........................................错误!未定义书签。

数据结构与算法设计知识点

数据结构与算法设计知识点 试题类型: 本课程为考试科目(闭卷笔试),试题类型包括:概念填空题(10 %),是非判断题(10 %),单项选择题(40 %),算法填空题(10%),算法应用题(20 %),算法设计题(10 %)。 第一章绪论 重点内容及要求: 1、了解与数据结构相关的概念(集合、数据、数据元素、数据项、关键字、元 素之间的关系等)。 数据:所有能被输入到计算机中,且能被计算机处理的符号的 集合。是计算机操作的对象的总称。是计算机处理的信息的某种特定 的符号表示形式。 数据元素:是数据(集合)中的一个“个体”,数据结构中的基本 单位,在计算机程序中通常作为一个整体来考虑和处理。 数据项:是数据结构中讨论的最小单位,数据元素可以是一个或 多个数据项的组合 关键码:也叫关键字(Key),是数据元素中能起标识作用的数 据项。 其中能起到唯一标识作用的关键码称为主关键码(简称主码); 否则称为次关键码。通常,一个数据元素只有一个主码,但可以有多 个次码。 关系:指一个数据集合中数据元素之间的某种相关性。 数据结构:带“结构”的数据元素的集合。这里的结构指元素之 间存在的关系。 数据类型:是一个值的集合和定义在此集合上的一组操作的总

称。 2、掌握数据结构的基本概念、数据的逻辑结构(四种)和物理结构(数据元素 的表示与关系的表示、两类存储结构:顺序存储结构和链式存储结构)。 数据结构包括逻辑结构和物理结构两个层次。 数据的逻辑结构:是对数据元素之间存在的逻辑关系的一种抽象的描述,可以用一个数据元素的集合和定义在此集合上的若干关系来表示 逻辑结构有四种:线性结构、树形结构、图状结构、集合结构数据的物理结构:是其逻辑结构在计算机中的表示或实现,因此又称其为存储结构。 存储结构:顺序存储结构和链式存储结构 顺序存储结构:利用数据元素在存储器中相对位置之间的某种特定的关系来表示数据元素之间的逻辑关系; 链式存储结构:除数据元素本身外,采用附加的“指针”表示数据元素之间的逻辑关系。 3、了解算法分析的基本方法,掌握算法时间复杂度相关的概念。 算法:是为了解决某类问题而规定的一个有限长的操作序列 或处理问题的策略 一个算法必须满足以下五个重要特性:1.有穷性2.确定性3.可行性4.有输入5.有输出 设计算法时,通常还应考虑满足以下目标: 1.正确性, 2.可读性, 3.健壮性 4.高效率与低存储量需求

通讯录管理系统课程设计报告完整版

通讯录管理系统课程设 计报告 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

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

printf("\t--------------------\n"); printf("\t请您选择(0-7):"); scanf("%d",&c); }while(c>7&&c<0); return(c); } int Input(struct date per[10],int n) { int i=0; char sign,x[10]; while(sign!='n'&&sign!='N') { printf("\t姓名:"); scanf("%s",per[n+i].name); printf("\t电话号码:"); scanf("%s",per[n+i].phone); printf("\t电子邮箱:"); scanf("%s",per[n+i].email); printf("\tQQ:"); scanf("%s",per[n+i].QQ); gets(x); printf("\n\t是否继续添加?(Y/N)"); fflush(stdin); ame,per[i-1].phone,per[i-1].QQ,per[i-1].email); if(i>1&&i%10==0) { printf("\t-----------------------------------\n"); printf("\t"); system("pause"); printf("\t-----------------------------------\n"); } } printf("----------------------------------------------------------------------\n"); system("pause"); } int Delete_a_record(struct date per[10],int n) { char s[20]; int i=0,j; printf("\t请输入想删除记录中的名字:"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i

《算法与数据结构》课程设计报告书

烟台大学计算机学院课程设计(算法与数据结构) 设计题目: 班级 姓名 学号 指导教师 成绩 二○一三年四月十日

内容包括: 一、课程设计题目: 二、课程设计内容: 三、算法设计: 四、程序正确性验证(指边界测试数据,即程序对于精心选择的典型、苛刻 而带有刁难性的几组输入数据能够得出满足要求的结果): 五、课程设计过程中出现的主要问题、原因及解决方法: 六、课程设计的主要收获: 七、对今后课程设计的建议:

算法与数据结构课程设计题目 一、单项分值:25分 1、约瑟夫环游戏 2、八皇后问题(图形表示加20分) 3、表达式的求值问题 4、迷宫问题(图形表示加10分) 二、单项分值:80分 5、HTML文档标记匹配算法 要求:输入一段HTML代码,判断该代码是否符合HTML的语法 提示:HTML文档由不同的标记划分为不同的部分与层次。与括号类似,这些标记需要成对出现,对于名为的起始标记,相应的结束标记为。常用的HTML标记: ● :HTML文档 ● :文档标题 ● :文档体 ●

:节的头部 ●
:居中对齐 ● :左对齐 ● :段落 ●。。。 HTML语言有合理的嵌套,如 6、程序源代码的相似性 问题描述:对于两个C++语言的源程序代码,用哈希表的方法分别统计两个程序中使用C++语言关键字的情况,并最终按定量的计算结果,得出两份程序的相似性。 基本要求:建立C++语言关键字的哈希表,统计在每个源程序中C++关键字出现的频度, 得到两个向量X1和X2,通过计算向量X1和X2的相对距离来判断两个源程序的相似性。 例如: 关键字 Void Int For Char if else while do break class 程序1关键字频度 4 3 0 4 3 0 7 0 0 2 程序2关键字频度 4 2 0 5 4 0 5 2 0 1 X1=[4,3,0,4,3,0,7,0,0,2] X2=[4,2,0,5,4,0,5,2,0,1] 设s是向量X1和X2的相对距离,s=sqrt( ∑(xi1-xi2) 2 ),当X1=X2时,s=0, 反映出可能是同一个程序;s值越大,则两个程序的差别可能也越大。 测试数据: 选择若干组编译和运行都无误的C++程序,程序之间有相近的和差别大的,用上述方法求s, 对比两个程序的相似性。 提高要求:建立源代码用户标识符表,比较两个源代码用户标识符出现的频度,综合关键字频度和用户标识符频度判断两个程序的相似性。

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

高级语言程序设计(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函数

C语言程序设计课程设计-通讯录管理系统

通讯录信息管理系统设计计算机学院计算机科学与技术专业 1.课程设计的目的 学习了C语言程序设计这门课程之后,使我对程序设计有了一定的了解,为了熟练掌握C语言的语法特点、及其数据结构,提高自身编写程序的能力。通过课程设计实现理论知识与实际情况的结合,使所学知识能够在现实社会中起到一定的作用,防止所编写的程序脱离实际,让程序可以更好的发挥作用,以便减轻实际工作中所遇到的繁琐步骤,提高现实工作中的效率。此外通过课程设计提高逻辑思考能力和解决实际问题的能力。程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。这当中就有一个严谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼。 通讯录信息管理系统是生活中不可缺少的部分编写了一个通讯录信息管理系统是十分必要的。 本程序设计具有通讯信息的录入,进行保存、查找、删除等功能,操作界面简洁美观,易于操作。程序用了条件、循环、指针、结构体等知识点,综合了文件的打开和保存编写的。软件运用菜单实现交互式管理,用户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足的需要。 通过对通讯录管理系统的设计,进一步理解和掌握C语言这门课程的知识点,能够熟练的调用各种函数,把各种C语句有机的结合起来,提高自己C语言程序设计的能力,为今后解决实际问题打下良好基础。

2.设计方案论证 2.1设计思路 建立一个函数,用来添加、显示、删除、查询、修改、保存通讯录等信息,完成通讯录的功能。主函数可以调用六个子函数,分别完成添加记录、显示记录、删除记录、查询记录、修改记录、保存记录、退出系统等功能。在主函数中可以以1、2、3、4、5、6数字键分别可以执行某个功能模块。 2.2程序设计 2.2.1根据图1定义数据类型建立函数 typedef struct { char Num; //编号 char Name[10]; //姓名 char Tel[15]; //电话号码 char Email[20]; //邮箱 char age[8]; //年龄 char adds[20]; //住址 }Person; 2.2.2主函数及其流程图 定义主函数main()和一系列的功能函数,只有通过这些函数才可实现程序

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

C通讯录管理系统的设计 与实现 The latest revision on November 22, 2020

目录

通讯录的设计与实现 摘要 随着互联网的不断发展,互联网对我们生活产生的影响越来越大。在日常的生活中,我们需要接触很多不同的人,如何运用互联网技术实现朋友圈通讯录的管理呢这是我们日常生活中经常要面临的问题。本次毕业设计中设计的通讯录管理系统既可以实现对通讯录进行管理,在本地进行通讯录的增加、修改、删除、更新等操作。本次设计的通讯录管理系统主要是了解通讯录管理系统的业务逻辑,熟悉通讯录管理系统的实现方式,模拟了真实的通讯录管理软件,为后续相关内容的学习打下了坚实的基础。 通讯录管理系统是一个专门针对少用户的实用系统,它方便了大家对众多信息的储存和快速查询的功能,大大减少了查找过程的时间,是一个比较实用的通讯录管理系统,。对我们后续学习移动端的通讯录管理也会有很大的帮助。 本设计使用的计算机语言是C++,C++语言是在C语言的基础上作了进一步的强化。C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它的应用范围广泛,具备很强的数据处理能力。作为C语言家族的一种,C++也具备了C 语言所具有的优点,并对其进行了优化封装,是开发者更容易操作运用,所以本次课程设计采用了C++作为系统的开发语言。本通讯录管理系统的主要功能有:建立通讯录的链表、插入通讯录信息、查询通讯录信息、删除通讯录信息,输出通讯录信息,保存到通讯录信息。采用的是面向过程的方法,封装函数功能,调用各个功能函数来实现系统的各个功能。

关键词 通讯录;链表;类; 第一章绪论 课题背景 随着市场经济的发展和人们生活水平的提高,互联网技术也在不断地取得新的成果,近些年移动通讯软件层出不穷,人与人之间的联系越来越便捷,这也使得同时与许多人保持联系成为生活中不可或缺的一部分,而单纯的依靠人脑已经很难记住所有人的联系方式,使用传统的纸面方式记录联系人信息时,在联系人比较多时查找将非常的困难。因此,本设计实现的通讯录成为了许多人保持联系方式的首选。当前在许多软件中都附带了通讯录功能,部分手机及一些手机软件也提供了功能不一的通讯录功能,一定程度上说明了通讯录对我们工作生活的重要性。 目的和意义 本毕业设计可以加深对课堂理论学习的理解,增强动手能力,培养了学生合作的能力,为以后的工作学习打下了坚实的基础。在计算机领域中,信息管理系统是我们在学习和生活中比较常见的系统,通过对通讯录管理系统的业务逻辑进行分析,可以很好的理解信息管理系统的业务逻辑,由于市面上绝大部分的信息管理系统的业务逻辑都存在共性,所以通过通讯录管理系统的设计,可以很好地掌握市面上很多的通讯录管理系统的业务逻辑。同时,通讯录系统也是计算机理论学习过程中最常见的信息管理系统之一,通过对该系统的设计与实现,也可以很好地锻炼学生的实践能力,以及培养学生的计算机逻辑思维。 本系统最求简洁、实用、方便等一些实用性的功能,新建模块上可以实现多添加;查询模块可以根据姓名、性别和电话号码查询,以方便管理员查询自己想要的信息;删除模块上,管理员可以根据自己不想要的或者过时的信息进

数据库详细设计说明书

修正&标记表 文档变更历史 日期作者版本变更描述 2011-05-28 舒睿V01 数据库说明书创建 2011-06-13 舒睿V01.1 数据库各表功能说明创建 2011-06-20 舒睿V02 数据库各项细节功能完成 审核结果 审核人通过版本审核认职位日期 文档属性 项目描述 文档名称功能说明书 作者舒睿 创建日期5/28/2011 最后更新日期 1.1目的 本文为图书馆管理课程设计SQL Server功能规范说明书。本说明书将: ●描述数据库设计的目的 ●说明数据库设计中的主要组成部分 ●说明数据库设计中各功能的实现 1.2内容 本文档主要内容包括对数据库设计结构的总体描述,对数据库中各种对象的描述(包括对象的名称、对象的属性、对象和其他对象直接的关系)。本文档中包含对以下数据库内容的描述: ●数据表 ●视图 ●存储过程 ●触发器

●约束 在数据库主要对象之外,本文还将描述数据库安全性设置、数据库属性设置和数据库备份策略,为数据库管理员维护数据库安全稳定地运行提供参考。 1.3与其他项目的关联 本项目的数据库设计与本项目(Web部分和Windows部分)功能密切相关。本案例项目的数据库将按照项目程序部分的功能需求而设计,数据库设计将配合设计案例的程序部分,以实现一个功能完备的真实环境内的应用。 表 1.4表设计概述 根据设计的系统功能,数据库将以图书信息为中心存储相关数据,配合SQL Server 数据库系统中提供的数据管理,实现图书的借阅、归还、续借及系统设置等业务功能。 数据库设计将以存储读者信息的读者表为基础,连接多张相关表以实现对以下关系的支持: ●读者借书记录 ●读者还书记录 ●读者续借记录 ●读者罚款记录 ●读者对图书的评价 ●读者对图书和图书馆的建议及留言 数据库系统主要的实体关系如图0-1所示。

数据结构算法设计题复习题

算法设计题 1. 设二叉树bt采用二叉链表结构存储。试设计一个算法输出二叉树中所有非叶子结点,并求出非叶子结点的个数。 【答案】 int count=0; void algo2(BTNode *bt){ if (bt){ if(bt->lchild || bt->rchild){ printf(bt->data); count++; } algo2(bt->lchild); algo2(bt->rchild); } } 2. 阅读下列函数arrange() int arrange(int a[],int 1,int h,int x) {//1和h分别为数据区的下界和上界 int i,j,t; i=1;j=h; while(i=x)j--; while(i=x)i++; if(i

通讯录详细设计说明书

通讯录管理系统 详细设计说明书 组员: 1210431107 孟磊(项目组长) 1210431119 张静 1210431039 左依婷 1210431041 王庆喜 1210431075 杨江峰 12级计算机软件一班

目录 1.引言 1.1编写目的 1.2 背景 1.3 定义 1.4 参考材料 2.程序系统的结构 2.1 运行环境 2.2 系统组织结构 3. 程序主要模块设计说明 3.1 程序描述 3.2 主要功能模块设计 3.3 性能 3.4 输入输出 3.5 算法 3.6 流程逻辑 3.7 接口 3.8 存储分配 3.9 注释设计 3.10 测试设计 3.11 限制条件 3.12 尚未解决的问题

1引言 1.1编写目的 本文档将对通讯录系统软件开发的详细设计进行描述,本文档的读者是项目策划、设计和评审人员。 1.2背景 本项目作为《软件文档写作》课程的训练项目提出,将学生分成若干项目开发小组进行管理。希望学生通过通讯录系统软件设计开发,了解软件文档的相关标准和编写原则,训练并掌握软件各类文档写作的技巧,同时提高学生使用Java 开发应用程序的能力。 本项目的名称:通讯录管理系统 本项目的提出者:指导老师 本项目的开发者:本小组 项目需求方:日常管理 用户:管理员 1.3定义 通讯录管理系统名称 1.4参考资料 《开发要求说明》.《软件需求说明书》。《概要设计说明书》。

2程序系统的结构 2.1运行环境 (1) 设备 硬件最低要求:CPU PⅢ以上PC服务器,内存32MB以上,硬盘15MB以上。 (2) 支持软件 操作系统:Windows 98,Windows NT、Windows 2000、Windows XP,Windows Server 2003等能 3程序主要模块设计说明 3.1 程序描述 给出对该程序的简要描述,主要说明安排设计本程序的目的意义,并且,还要说明本程序的特点(如是常驻内存还是非常驻?是否子程序?是可重人的还是不可重人的?有无覆盖要求?是顺序处理还是并发处理等)。 3.2 主要功能模块设计 (1) 打开通讯录系统显示欢迎界面:具体实现函数 (2) 菜单处理函数管理程序的用户界面操作,用户通过提示选择想要进行的操作:具体实现函数

C语言程序设计学生通讯录管理系统

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

#define null 0 struct record { char name[20]; char phone[20]; char adress[40]; char postcode[10]; char e_mail[30]; }student[500]; struct LinkList { struct record US; struct LinkList *next; }a; struct LinkList *head=null; int num=0; FILE *fp; int menu_select(); int adduser(); int list(); int search(); int display(); int add();

int listbyname(); int dele(); int save(); int exit(); void main() { system("cls"); for(;;) { switch(menu_select()) { case 0:adduser();break; case 1:list();break; case 2:search();break; case 3:add();break; case 4:dele();break; case 5:save();break; case 6:exit(0); } } } menu_select() {

char s[80]; int a; printf("*_* press any key enter menu! *_* \n"); getch(); system("cls"); printf("\t\t********************MENU*********************\n\n"); printf("\t\t 0. 输入记录\n"); printf("\t\t 1. 显示记录 \n"); printf("\t\t 2. 按姓名查找\n"); printf("\t\t 3. 插入记录 \n"); printf("\t\t 4. 删除记录\n"); printf("\t\t 5. 记录保存文件\n"); printf("\t\t 6. Quit\n"); printf("\t\t***********************************************\n"); do{ printf("\n Enter you choice(0~11):"); scanf("%s",s); a=atoi(s); } while (a<0||a>11); return a; } adduser()

数据结构与算法设计课程设计

内江师范学院 数据结构与算法设计课程设计实验报告册 编制算法设计课题组审定曾意 数学与信息科学学院 2014年9月

1. 学生在做实验之前必须要准备实验,主要包括预习与本次实验相关的理论知识,熟练与本次实验相关的软件操作,收集整理相关的实验参考资料,要求学生在做实验时能带上充足的参考资料;若准备不充分,则学生不得参加本次实验,不得书写实验报告; 2. 要求学生要认真做实验,主要是指不得迟到、早退和旷课,在做实验过程中要严格遵守实验室规章制度,认真完成实验内容,极积主动地向实验教师提问等;若学生无故旷课,则本次实验等级计为D; 3. 学生要认真工整地书写实验报告,实验报告的内容要紧扣实验的要求和目的,不得抄袭他人的实验报告; 4. 实验成绩评定分为A+、A、A-、B+、B、C、D 各等级。根据实验准备、 实验态度、实验报告的书写、实验报告的内容进行综合评定,具体对应等级如下:完全符合、非常符合、很符合、比较符合、基本符合、不符合、完全不符 合

实验名称:算法设计基础实验(实验一) 指导教师:牟廉明,刘芳实验时数: 4 实验设备:安装了VC++计算机 实验日期:年_月_日实验地点:第五教学楼北802 实验目的: 掌握算法设计的基本原理,熟悉算法设计的基本步骤及其软件实现。 实验准备: 1. 在开始本实验之前,请复习相关实验内容; 2. 需要一台准备安装Windows XP Professional操作系统和装有VC++6.0的计算机。 实验内容: 求n至少为多大时,n个1组成的整数能被2013整除。 实验过程: 1.1算法思想 2013=61*33,6个1能够整除33,寻找满足n个1能够整除61的n即可。 1.2算法步骤 1?定义变量y储存余数,i储存1的个数,m为被除数,初始化为111111; 2?如果被除数能够除尽61,输出i; 如果被除数不能够除尽61,while继续循环,m=y*1000000+111111,i++; 3?重复2,直到找到满足条件的m为止,输出i; 1.3算法实现(C++程序代码) #in clude using n amespace std; int mai n() { int y,m,i; i=6; m=111111; while(y!=0){ m=y*1000000+111111; y=m%61; i=i+6; } cout<

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

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

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

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

数据结构与算法基础

数据结构与算法基础 一.判断题: 1.数据元素是数据的最小单位。 2.数据结构是带有结构的数据元素的集合。 3.数据结构、数据元素、数据项在计算机中的映像(或表示)分别称为存储结构、结点、数据域。 4.数据项是数据的基本单位。 5.数据的逻辑结构是指各数据元素之间的逻辑关系,是用户按使用需要而建立的。 6.数据的物理结构是指数据在计算机内实际的存储形式。 7.算法和程序没有区别,所以在数据结构中二者是通用的。 答案: 1.错误 2.正确 3.正确 4.错误 5.正确 6.正确 7.错误 二. 数据结构是研究数据的 A 和 B 以及它们之间的相互关系,并对这种结构定义相应的 C ,设计出相应的 D ,而确保经过这些运算后所得到的新结构是 E 结构类型。 供选择答案: A、B:a理想结构b抽象结构c物理结构d逻辑结构 C、D、E:a运算b算法c结构d规则e现在的f原来的 答案: A:cB;dC:aD:bE:f 三.从供选择的答案中选取正确的答案填在下面叙述中的横线上: 1. A 是描述客观事物的数字、字符以及所能输入到计算机中并被计算机程序加工处理的符号的集合。 2. B 是数据的基本单位,即数据集合中的个体。有时一个 B 由若干个___C____组成,在这种情况下,称 B 为记录。 C 是数据的最小单位。而由记录所组成的线性表为 D 。 3. E 是具有相同特性的数据元素的集合,是数据的子集。 4. F是带有结构特性数据元素的集合。 5. 被计算机加工的数据元素不是孤立无关的,它们彼此之间一般存在着某种联系。通常将数据元素的这种关系称为G。 6. 算法的计算量的大小称为计算的H。 供选择的答案: A-F:a数据元素b符号c记录d文件e数据f数据项g数据对象h关键字i数据结构

系统数据库设计说明书

期末考核设计报告 课程名称:软件工程 题目:航空订票系统 专业班级:17计科本4班 学号:17401085 学生姓名:刘梅 指导教师:朱婕 2019年11月20日

期末考核任务书 课程名称:软件工程 设计题目:航空订票系统 专业:计算机科学与技术班级:17计科本4班完成时间:2019年11月指导教师:朱婕

期末考核成绩评定表

航空订票系统数据库设计说明书 编写人:刘梅

目录 1引言 (1) 1.1编写目的 (1) 1.2项目背景 (1) 2数据库外部设计 (2) 2.1标识符和状态 (2) 2.2支持软件 (2) 2.3 数据完整性设计 (2) 2.4 数据规范性设计 (2) 3数据库结构设计 (4) 3.1概念结构设计 (4) 3.2逻辑结构设计 (6) 3.3表结构设计 (8) 3.3.1表user (9) 3.3.2 表administrator (9) 3.3.3 表flight (9) 3.3.4 表ticket (9) 参考文献 (10)

1引言 1.1编写目的 本文档说明了航空订票系统项目的数据库设计,用于指导该系统在数据库存储各方面的内容,为系统设计员及开发的程序员作为基准文档。 该文档的预期读者是该项目的系统设计员及程序员。 在下一阶段的详细设计及编码中,程序设计人员可参考此数据库设计说明,在数据模型设计的基础上,对系统进行详细设计和编码。在以后的软件测试以及软件维护阶段也可参考此说明书,以便在修改时找出在本阶段设计的不足或错误。 1.2项目背景 开发软件名称:航空订票系统 委托单位:武汉工商学院 开发单位:205 主管部门:205 信息管理技术作为当今计算机最广泛的应用,已经渗透到软件系统的方方面面,该航空订票系统在社会上运用广泛,航空市场的不断扩大,飞机现已成为大部分人选择的出行工具,航空订票系统也成为了重要的系统。这可以适应现在的快速发展,管理大量的数据,并且具有一定稳定性,实现现代化的信息管理。

相关文档
最新文档