c语言程序设计实践报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中南大学
C语言程序设计实践报告
题目通讯录程序设计
学生姓名
指导教师
学院
专业班级
完成时间
一、任务描述
通讯录程序设计
设计一个实用的小型通讯录程序,具有添加,查询和删除功能。由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码。电话号码可由字符和数字组成。
实现功能:(1)系统以菜单方式工作
(2)信息录入功能
(3)信息浏览功能
(4)信息查询功能
(5)信息修改功能
(6)系统退出功能
二、算法描述
设计一个实用的的小型通讯录程序必须具备系统以菜单方式工作、信息录入、信息浏览、信息查询、信息修改、系统退出功能,那么就需要这样的函数来实现。因此,我需要自定义这样的函数来解决问题,当然还会调用库函数。在定义函数的过程中会用到选择结构、循环结构等基本语句,以及对结构体数组的定义等。
三、程序设计
/******头文件(.h)***********/
#include "stdio.h" /*I/O函数*/
#include "stdlib.h" /*标准库函数*/
#include "string.h"/*字符串函数*/
#include "ctype.h" /*字符操作函数*/
#define M 50 /*定义常数表示记录数*/
typedef struct /*定义数据结构*/
{
char NAME[20]; /*姓名*/
char EMAIL[30]; /*邮箱*/
char TELE1[10]; /*电话*/
char TELE2[10]; /*电话*/
char HOMETOWN[30]; /*籍贯*/
}DATA;
/******以下是函数原型*******/
int enter(DATA t[]); /*输入记录*/
int add(DATA t[],int n); /*添加记录*/
int change(DATA t[],int n); /*修改记录*/
int deleter(DATA t[],int n); /*删除记录*/
void list(DATA t[],int n); /*显示记录*/
void search(DATA t[],int n); /*按姓名查找显示记录*/
void qseek(DATA t[],int n); /*快速查找记录*/
void print(DATA temp); /*显示单条记录*/
int find(DATA t[],int n,char *s) ; /*查找函数*/
int menu_select(); /*主菜单函数*/
/******主函数开始*******/
main()
{
int i;
DATA d[M]; /*定义结构体数组*/
int length; /*保存记录长度*/
system("cls");
for(;;)/*无限循环*/
{
switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/ {
case 1:length=enter(d);break;/*输入记录*/
case 2:length=add(d,length); break; /*添加记录*/
case 3:length=deleter(d,length);break; /*删除记录*/
case 4:list(d,length);break; /*显示全部记录*/
case 5:search(d,length);break; /*查找记录*/
case 6:qseek(d,length);break; /*快速查找记录*/
case 7:length=change(d,length);break;
case 8:exit(0); /*如返回值为8则程序结束*/
}
}
}
/*菜单函数,函数返回值为整数,代表所选的菜单项*/
* *\n");
printf(" * 1. 录入联系人数据 5.按姓名查找
*\n");
printf(" * *\n");
printf(" * 2. 添加联系人数据 6.快速查找
*\n");
printf("* *\n");
printf(" * 3. 删除联系人数据 7.修改联系人数据
*\n");
printf(" * *\n");
printf(" * 4. 显示全部联系人8.退出系统
*\n");
printf(" * *\n");
printf("* *\n");
printf("
****************************************************\n");
do{
printf("\n 请输入您的选项(1~8):"); /*提示输入选项*/
scanf("%s",s); /*输入选择项*/
c=atoi(s); /*将输入的字符串转化为整型数*/
}while(c<1||c>8); /*选择项不在1~7之间重输*/
return c; /*返回选择项,主程序根据该数调用相应的函数*/
}
/***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/
int enter(DATA t[])
{
int i,n;
system("cls");
printf("\n 请输入需录入数据的个数: "); /*提示信息*/
scanf("%d",&n); /*输入记录数*/
printf("\n 请输入数据:\n"); /*提示输入记录*/
printf("\n 姓名邮箱电话号码 1 电话号码 2 籍贯 \n");
printf("*-------*----------------*---------------*----------------*------------
---*\n");
for(i=0;i { scanf("%s%s%s%s%s",t[i].NAME,t[i].EMAIL,t[i].TELE1,t[i].TELE2,t[i].HOMETOWN); /*输入记录*/ printf("*---------------------------------------------------------------------- ---*\n"); } return n; /*返回记录条数*/ }