C语言通讯录系统课程设计资料报告材料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通讯录系统的设计与实现电子科技大学电信三班傅得耕
3.1系统的需求分析
通讯录系统作为一个应用软件将为人民提供一个可以串联人与人之间的信息的一个平台。
根据系统界面的提示信息对通讯录进行查询、初始化等操作。
系统功能需求分析描述如下:
(1)创建联系人。
(2)显示所有联系人:显示可以进行的操作。
(3)删除联系人。
(4)查询:根据进行查询,并可显示所有关于该人的信息。
(5) :退出。
3.2系统的设计
3.2.1 系统的总体设计
下面从系统的整体流程的功能模块、系统界面及数据结构进行总体设计。
(1)总体思想
本系统主要设计思想是实现通讯录系统信息的创建联系人、删除、查找等主要功能。
系统的设计方法是结构化实际方法,系统用C语言进行开发用户可以清晰的了解联系人的情况。
(2)系统模块结构图
根据需求分析结果,通讯录系统可以分为五大模块:创建联系人模块、显示功能模块、查找联系人功能模块、删除联系人模块以及退出模块。
系统模块结构如图:
3.2.2 系统的概要设计
㈠系统主菜单。
显示系统的主菜单,里面有相应的功能代码,根据选择各功能代码进入不同的界面。
功能主要包括:退出系统、查询、创建显示及删除。
㈡查询人物信息
进入此菜单功能模块,输入您要查询的图书的名字。
图书查询模块流程如图:
3.3 测试结果系统主界面
创建
显示系统查询系统删除系统
3.4 源代码
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#define LEN sizeof(struct people) struct people
{
char name[10];
char address[50];
char postcode[7];
char phonenum[12];
struct people * next;
};
int n = 0, c;
static struct people * head;
void insert();
void show();
void delete(char *);
void query(char *);
int main(int argc, char const *argv[]) {
struct people * peo;
char nam[10];
int i, choose = 0;
for (i = 0; i < 60; ++i)
{
printf("*");
}
printf("\n\t\t\t\t通讯录\n");
printf("\t\t\t1.创建联系人\n");
printf("\t\t\t2.显示所有联系人\n");
printf("\t\t\t3.删除联系人\n");
printf("\t\t\t4.查找联系人\n");
printf("\t\t\t5.退出\n\n");
for (i = 0; i < 60; ++i)
{
printf("*");
}
do
{
printf("\t\t\t请选择功能(1~5):\n");
printf("\n");
scanf("%d", &choose);
switch (choose)
{
case 1:
insert();
break;
case 2:
show();
break;
case 3:
printf("\n请输入要删除联系人的:");
scanf("%s", nam);
delete(nam);
break;
case 4:
printf("\n请输入要查询联系人的:");
scanf("%s", nam);
query(nam);
break;
case 5:
exit(0);
break;
}
} while (1);
return 0;
}
void insert()
{
struct people * p1, *p2;
p1 = (struct people *)malloc(LEN);
if (n == 0)
{
printf(":");
scanf("%s", &p1->name);
printf("地址:");
scanf("%s", &p1->address);
printf("邮编:");
scanf("%s", &p1->postcode);
printf(":");
scanf("%s", &p1->phonenum);
head = p1;
p1->next = NULL;
}
else {
p1 = head;
while (p1->next != NULL)
{
p1 = p1->next;
}
p2 = p1;
p1 = (struct people *)malloc(LEN);
printf(":");
scanf("%s", &p1->name);
printf("地址:");
scanf("%s", &p1->address);
printf("邮编:");
scanf("%s", &p1->postcode);
printf(":");
scanf("%s", &p1->phonenum);
p2->next = p1;
p1->next = NULL;
}
n += 1;
}
void show()
{
struct people * p;
printf("\t 地址\t 邮政编码\t \n");
p = head;
if (head != NULL)
{
do
{
printf("%s \t %s %s \t %s \n", p->name, p->address, p->postcode, p->phonenum);
p = p->next;
} while (p != NULL);
}
}
void delete(char * name)
{
struct people * p1, *p2;
if (head == NULL)
{
printf("没有数据\n");
}
p1 = head;
while (strcmp(name, p1->name) && p1->next != NULL)
{
p2 = p1;
p1 = p1->next;
}
if (!strcmp(name, p1->name))
{
if (p1 == head)
{
head = p1->next;
}
else
{
p2->next = p1->next;
}
printf("已经删除%s的数据\n", name);
n = n - 1;
}
else {
printf("找不到这个人\n");
}
}
void query(char * name)
{
struct people * p;
p = head;
if (head != NULL)
{
do
{
if (!strcmp(name, p->name))
{
printf(":%s\n", p->name);
printf("地址:%s\n", p->address);
printf("邮编:%s\n", p->postcode);
printf(":%s\n", p->phonenum);
}
p = p->next;
} while (p != NULL);
}
else
{
printf("输入错误\n");
}
}
第四章心得体会
经过一个多星期的编译原理课程设计,在我的努力下,顺利完成该课程设计。
通过该课程设计,掌握了编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程及其相关的技术,对课本上的知识也有了更深的理解。
老师常说,课本上的知识是机械的,表面的,要学会去运用,要举一反三。
现在终于深刻的了解了这句话。
经过这次的课程设计,发现书本上很深奥的知识变的更为简单,同样,对实验原理也了有更深的理解。
知道和理解了该理论在计算机中是怎样执行的,对该理论在实践中的应用有深刻的理解。
通过该课程设计,把死板的课本知识变得生动有趣,激发了学习的积极性。
能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。
课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要的命令去除。
除了课堂外,课程设计是最能学到东西的,最考验人的。
在做课程设计的这段时间,时刻都感到自己学的知识有多么的贫瘠。
经过这次课程设计,让我对C这门语言有了更深的认识,操作能力有了提高要想是写出的代码能运行,需要耐心细心,毅力以及充沛的体力。
只有经过多次编辑,多次编译,再多次运行,才能编写出更好的程序,有时候需要多次的更正才能达到所要的运行结果。
参考文献
谭洁强《C程序设计第二版》清华大学。