C语言实验报告材料 通讯录

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4、学会调试一个较长程序的基本方法;
5、学会利用流程图或N-S图表示算法;
6、掌握书写程序设计开发文档的能力。
2.课程设计的主要设计思想
整个程序的设计是通过对每一个功能的设计,然后,再对每一个功能的程序进行模块化,从而形成一个完整的管理系统。自顶向下、逐步细化、逐步求精。在对于给定问题进行透彻的了解和详细的分析的基础上,把问题分解成若干个按顺序执行的逻辑部分(称为“模块”)。每个子任务如果仍很复杂,还可以再分解为若干个子任务。对于每个模块的设计都采用这种“自顶向下、逐步细化”的方法,将它们分解成为基本结构为止,就如同写文章先拟出题目和中心内容,再确定分为几大部分,每一大部分又分哪几节,每一节分为几段,每一段包括哪几个意思,这就是“自顶向下,逐步细化”的方法。
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);
} else {
p1 = head;
while(p1 -> next != NULL)
{
p1 = p1 -> next;
}
p2 = p1;
p1 = (struct people *)malloc(LEN);
printf("姓名:");
scanf("%s", &p1->name);
printf("地址:");
{
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");
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)
printf("地址:");
scanf("%s", &p1->address);
printf("邮编:");
scanf("%s", &p1->postcode);
printf("电话:");
scanf("%s", &p1->phonenum);
head = p1;
p1 -> next = NULL;
整体框图:

主界面和菜单:
输入“1”新建联系人
输入“2”显示所有联系人:
输入“3”删除联系人:
入“4”查找联系人

通过本次课程的学习我知道了我在C语言方面明显的不足,看了实验要求后我很茫然,不知道哪些题目我有把握做出来。选好了题目之后我就开始着手准备,想制作程序,可我不知道从哪里着手,于是我开始将大困难细化,先解决小功能再解决主界面的困难。全都写完了之后,编译后有好多错误,感觉很烦躁,我开始上网查资料、看书等等,每少一个错误我都有成就感。最后编译成功了,正常运行了的时候我真的觉得自己很不错。但是在这之间我也深刻体会到了我在C语言方面的不足,还有很多要学习。
show();
break;
case 3:
printf("\n请输入要删除联系人的姓名:");
scanf("%s", nam);
delete(nam);
break;
case 4:
printf("\n请输入要查询联系人的姓名:");
scanf("%s", nam);
query(nam);
break;
case 5:
}
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);
由于这次课程设计的时间很紧,因此我们认为验证程序的正确性比什么都重要,在功能上其实还可以提高。而事实上掌握调试的方法和技术才是重中之重。

源程序:
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#define LEN sizeof(struct people)
6、退出程序
1.课程设计的要求
教师要求:
1、为通信录数据定义类型和定义通信录变量,实现功能:存取、显示、删除记录、查询记录等功能。
2、要求:界面友好,易于操作。(本题目限最多一个人完成)
需要的基本知识和技能:
1、利用C语言进行程序设计的能力;
2、理解和运用结构化程序设计的思想和方法;
3、初步掌握开发一个小型实用系统的基本方法;
C语言集中上机报告
院系:班级:
姓名:
合作者:
指导教师:
2015年6月1日

课程设计的目的
实现个人通讯录管理,录入包括姓名、地址、邮政编码、电话号码的信息。其中:
1、对n名学生包括姓名、地址、邮政编码、电话号码等信息进行输入;
2、显示所有记录的信息,若无记录,则给出提示信息;
3、可以按姓名进行查询;
4、可以按姓名进行删除;
printf("地址:%s\n", p -> address);
printf("邮编:%s\n", p -> postcode);
printf("电话:%s\n", p -> phonenum);
}
p = p -> next;
} while (p != NULL);
} else
{
printf("输入错误\n");

整体设计思路:程序主要运用到了文本文件的打开和读取,文件中存取信息的格式为结构体数组,一个主函数下面分为个子函数。此程序运行的前提是必须首先在编译器的子文件中建立一个文本文件,则可以在运行程序的过程中对这个文本文件进行相关读取。
主要特点及具备功能:简洁明了,易于读者阅读。运用了链表结构,可以自动开辟内存空间储存,操作简单,运用了while循环。
}
}
参考文献
[1]谭浩强,C程序设计题解与上机指导(第二版),北京,清华大学出版社,2000年9月。
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)
{
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);
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();

C语编程设计终于告个段落,疯狂地查找资料和看书也随之而结束了。此时此刻我深深吸了一口气,感觉心里的那块大石头终于落下去了。同时,感悟颇深。
写程序时,一定要有耐心而且谨慎,不急于上机运行,待检查觉得无误后,方可上机调试。如果一写完后就急于运行,这不仅得不到想要的结果,反而会打击积极性。因为写完后一定存在很多由于疏忽而存在的错误,上机运行时会浪费更多的时间去查找错误。因此一定要谨慎。
scanf("%s", &p1->address);
printf("邮编:");
scanf("%s", &p1->postcode);
printf("电话:");
scanf("%s", &p1->phonenum);
p2 -> next = p1;
p1 -> next = NULL;
}
n += 1;
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);
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:
相关文档
最新文档