没有合适的资源?快使用搜索试试~ 我知道了~
C语言实训报告--通讯录管理系统.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 110 浏览量
2023-05-16
23:23:39
上传
评论
收藏 175KB DOCX 举报
温馨提示
试读
16页
实训报告,有些带有源程序
资源推荐
资源详情
资源评论
1
通讯录管理系统
本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉 C 语
言的文件和单链表的各种基本操作。本程序中涉及结构体、单链表、文件等方面的知识。通
过本程序的训练,使学生能对 C 语言的文件操作有一个更深刻的了解,掌握利用单链表存储
结构实现对学生通讯录管理的原理,为进一步开发出高质量的管理信息系统打下坚实的基础。
1、 问题定义与描述
1.1 问题定义
创建一个学生通讯录管理系统。系统中每个学生信息包括学号、姓名、性别、出生日期、
家庭地址、学号、电话、QQ。程序的运行效果如下图所示,选择任意菜单后,实现相应功
能。
图 1.1 学生通讯录管理系统功能需求
1.2 问题描述
在问题定义与描述阶段要考虑题目的可行性和需求分析,接下来进入开发阶段,完成系
统设计和系统实现的任务。
2、系统设计
总体设计
采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,然后
分别设计各个小任务。需要注意的是划分出来的模块应该相对独立但又相关,且容易理解。
可以用模块化层次结构图(即模块图)来分析其任务的划分,一般从上到下进行,最上面一
层是主模块,下面各层是其上一层模块的逐步细化描述。
实 训 报 告
通讯录管理系统
输入记录
模块
查询记录
模块
更新记录
模块
输出记录
模块
从
文
件
读
入
从
键
盘
输
入
按
学
号
查
询
按
姓
名
查
询
修
改
记
录
删
除
记
录
增
加
记
录
排
序
记
录
输
出
至
文
件
输
出
至
屏
幕
图 2.1 通讯录管理系统功能模块图
2
↓
,
2.1 主要功能模块
添加:添加通讯录记录。
显示:显示通讯录记录。
删除:删除通讯录记录。
查询:查询通讯录记录。
修改:修改通讯录记录。
保存:将信息保存到文件。
2.2 数据结构设计
结构体
s struct addr /*通讯地址结构定义*/
{ char post_num[10]; /*邮编*/
char addr[40]; /*家庭地址*/
};
struct birth /*出生年月结构定义*/
{ int year; /*年份*/
int month; /*月份*/
int day; /*日期*/
};
struct friend1 /*电子通讯录结构定义*/
{ int number; /*序号*/
char name[20]; /*姓名*/
char sex; /*性别*/
struct birth birth; /*出生年月*/
struct addr addr; /*通信地址*/
char telephone[13]; /*联系电话*/
}friends[50];
FILE *fp;
int i;
2.3 输入记录模块
输入记录模块主要实现将数据存入结构体中。,用户应选择 2,调用 Data_Inpu ()函数,进行
朋友姓名、电话、地址、性别的输入,即完成在结构体中添加记录的操作。
保
存
记
录
登陆
界面
登
录
进
系
统
3
2.4 查询记录模块
查询记录模块主要实现了在结构体中按姓名查找满足相关条件的信息记录。在查询函数
search()中,找到相同名字则打印出记录。
2.5 删除记录模块
该操作完成删除指定姓名的记录,
输入要删除的序号,输入后调用函数若找到该记录,询问是否继续寻找相同姓名的记录。
2.6 显示所有记录模块
该操作完成显示所有记录信息,它分两步完成。
第一步,按照数组中序号进行排序。
第二步,逐条显示出来。
3、系统实现
3.1 编码
3.1.1 程序源代码
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<stdio.h>
#include<dos.h>
struct addr /*通讯地址结构定义*/
{ char post_num[10]; /*邮编*/
char addr[40]; /*家庭地址*/
};
struct birth /*出生年月结构定义*/
{ int year; /*年份*/
int month; /*月份*/
int day; /*日期*/
};
struct friend1 /*电子通讯录结构定义*/
{ int number; /*序号*/
char name[20]; /*姓名*/
char sex; /*性别*/
struct birth birth; /*出生年月*/
struct addr addr; /*通信地址*/
char telephone[13]; /*联系电话*/
}friends[50];
FILE *fp;
int i;
void Data_Load()
{ int j;
long k;
fp=fopen("friend.txt","r+t"); /*打开文件 friend.txt*/
if(fp!=NULL)
4
{ for(i=1;i<50;i++)
{ j=fgetc(fp);
if(j==EOF) /*判断是否到了文件尾*/
return;
k=i-1;
fseek(fp,k*sizeof(struct friend1),SEEK_SET);
fread(&friends[i],sizeof(struct friend1),1,fp);/*从文件中读取一条记录*/
}
}
else
{ fp=fopen("friend.txt","w");
i=1;
}
}
void Data_Show(int j) /*打印记录的详细资料*/
{
printf("\n\n\tNo:%3d\n",friends[j].number);
printf("\n\tBirthday(y/m/d):%4d%2d%2d",friends[j].birth.year,friends[j].birth.month,friends[j].bi
rth.day);
printf("\n\tPostnum:%-10s",friends[j].addr.post_num);
printf("\n\taddress:%-40s",friends[j].addr.addr);
printf("\n\tTele%-13s",friends[j].telephone);
}
void Data_Input(int j) /*记录插入函数*/
{
fflush(stdin);
friends[j].number=j;
printf("\n\n\n\tNo %d record",j);
printf("\n\n\tName:"); /*读入姓名*/
scanf("%s",friends[j].name);
fflush(stdin);
printf("\n\tSex(m/f):"); /*读入性别*/
scanf("%c",&friends[j].sex);
printf("\n\t---birthday---"); /*读入出生年月*/
printf("\n\tyear:");
scanf("%d",&friends[j].birth.year);
printf("\n\t\tmonth:");
scanf("%d",&friends[j].birth.month);
printf("\n\t\tday:");
scanf("%d",&friends[j].birth.day);
printf("\n\tPost_number:"); /*读入邮编*/
剩余15页未读,继续阅读
资源评论
白茶丫
- 粉丝: 4w+
- 资源: 1734
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功