报告 实验报告 管理系统实验报告

通讯录管理实验报告

时间:2024.5.26

通讯录管理系统

许在魁

0101010

2010210338

一.实验要求:设计一个通信录由以下几项数据信息构成:

数据项 类型

姓名 字符串

地址 字符串

邮政编码 字符串

电话号码 字符串

试为通信录数据定义类型和定义通信录变量, 实现功能:存取、显示、删除记录、查询记录等功能。

2、要求:界面友好,易于操作.

二.总体设计

1.编写目的:

根据需求分析文档,初步提出问题的解决方案,以及软件系统的体系结构和数据结构的设计方案并写出书面文档总体设计说明书,为下一步进行详细设计做准备。

2.总体设计:

该程序可以按功能进行模块划分,其模块图如下:

通讯录管理实验报告

通讯录管理实验报告

3.数据结构设计:

本程序定义了结构体s_message,用于存放联系人的基本信息。这里仅有3个于联系人有关的字段, 读者可以按照需要拓展相关字段。

struct s_message {

char name[20]; char address[50]; char code[15]; char tel[15]; }s[MAX];

其中字段的值的含义如下。 *name[20]:保存联系人的姓名 *address[50]: *code[15]:保存联系人的邮政编码

*tel[15]:保存联系人的电话号码

三.详细解说各模块

1.输入记录模块:输入记录模块主要完成将数据存入数组中的工作。在此通信管理系统中,记录可以从以文本形式存储的数据文件中读入就,也可以从键盘输入记录。记录由与联系人有关的信息构成。当从文件中读入记录时,它就是在以记录为单位存储的数据文件中,将记录逐条复制到结构体类型的数组元素中。

2.查询记录模块:查询记录模块主要完成在数组中查找满足相关条件的记录。在此通信管理系统中用户可以按照联系人的姓名在数组中进行查找。若找到该记录,则打印出此记录的信息;否则,将打印出未找到该记录的提示信息。

3.修改记录模块:修改记录模块主要完成对记录的维护。一般而言,系统进行了这些操作之后,需要将修改的记录存入源数据文件

4.输出记录模块:输出记录模块主要完成两个任务:第一,它实现对记录的存盘操作,即将数组中各元素中存储的记录信息写入数据文件中;第二,它实现将数组中存储的记录信息在屏幕上打印出来。

四.程序设计与体会

通过近一个学期的查阅资料,通过相互之间的讨论和交流,在实践中互相弥补不足,更重要的是许多一个人无法解决的问题,在与同学的探讨下,该程序变的简单,清晰,从而把问题轻易地解决。

此次的程序最开始是去网上找的,可错误太多, 要一个个调试还不如自己写。回过头还是得从书本入手,看了两天的书大概明白了程序的主要结构和语言。但尝试写的时候却碰到很多问题,比如要调用什么函数,参数该怎么设置等等。无奈,又去课外书上找。没想到,竟在《C语言课程设计案例精编》上发现类似的程序。经过仔细的查看和研究,仿照书上的案例,结合一步步上机调试,终于完成这次的课程设计。

在此次课程设计周中,我学到最大的就是:刚学写程序的人要仔细研究每一个案例,还要多写程序,更应该和同学们一起交流,在交流中发现问题,再结局问题。在程序编写方面,我依然存在很多的不足。对函数语言的运用等都不是很明确,在接下来的时间里,我一定会勤写程序,勤与同学、老师交流。在每一次的尝试中发掘自己不足的地方,真对薄弱环节下狠功。努力在大学期间完成所学,灵活运用所学的C语言及其他高级语言解决实际上呢搞活中的问题。

五.程序的源代码清单

#include<stdio.h>

#include<string.h> //字符串处理//

#include<conio.h>

#define MY1 printf("\n姓名 地址 邮政编码 电话\t")

#define

printf("\n%s %4s %s %s\n",s[i].name,s[i].address,s[i].code,s[i].tel) #define MAX 20

int i;

int sum;

/*时间结构体类型*/

struct s_message

{

char name[20];

char address[50];

char code[15];

char tel[15];

}s[MAX];

/*保存通讯录信息*/

void save_message(int sum)

{

int i;

FILE *fp; //声明fp是指针,用来指向FILE类型的对象//

if((fp=fopen("D:\\s.txt","wb"))==NULL)

{

printf("文件有误!\n");

return;

}

for (i=0;i<sum;i++)

{

if(fwrite(&s[i],sizeof(struct s_message),1,fp)!=1) //fwite写一个数据块//

printf("writing file is wrong!\n");

}

fclose(fp);

}

/*读取通讯录信息*/

int read_message()

{

FILE *fp;

int i=0;

if((fp=fopen("D:\\s.txt","rb"))==NULL) MY2

{

printf("\n\n***********暂时无任何库存信息,按回车键进入主菜单选择基本信息的录入!***********\n");

return 0;

}

while(feof(fp)==0) /*feof(fp)有两个返回值:如果遇到文件结束,函数feof(fp)的值为1,否则为0。*/

{

if(fread(&s[i],sizeof(struct s_message),1,fp)!=1) //fread是读入一个数据块//

break;

i++;

}

fclose(fp); //关闭文件//

return(i);

}

/*输入通讯录信息*/

putin_message()

{

int i=0,m=0;

printf("\n\n***********输入联系人信息****************\n\n");

printf("输入要输入的联系人的个数(m<MAX)\n");

scanf("%d",&m);

for(i=sum;i<sum+m;i++)

{

printf("\n 姓名:");

scanf("%s",s[i].name);

printf("\n 地址:");

scanf("%s",s[i].address);

printf("\n 邮政编码:");

scanf("%s",s[i].code);

printf("\n 电话:");

scanf("%s",s[i].tel);

}

printf("\n***********************联系人信息输入完毕**********************\n");

sum+=m;

printf("\n 按回车键返回主菜单!");

getch();

/*从控制台读取一个字符,但不显示在屏幕上,即会等待你按下任意键,再继续执行下面的语句,所在头文件为#include<conio.h>*/

return 0;

}

/*输出通讯录信息模块*/

void putout_message()

{

int i=0;

printf("\n*****************************通讯录**********************\n\n"); for(i=0;i<sum;i++)

{

MY1;

MY2;

printf("\n\n");

}

printf("按回车键返回主菜单!");

getch();

}

/*添加联系人信息*/

insert_message()

{

int i=sum,flag=0,j=0,v=0;

char choice;

printf("\n\n**********添加一个联系人信息***********\n");

do

{

printf("\n姓名:");

scanf("%s",&s[i].name);

for(j=0;j<sum;j++)

if(s[i].name==s[j].name)

v=1;

if(v==1)

printf("the name is already existed");

break;

if(s[i].name==0) break;

printf("\n 地址:");

scanf("%s",s[i].address);

printf("\n 邮政编码:");

scanf("%d",s[i].code);

printf("\n 电话:");

scanf("%s",s[i].tel);

printf("\n 要继续吗? (Y/N)");

choice=getch();

if(choice=='y'||choice=='Y')

{

printf("\n 继续!\n");

flag=1;

}

else flag=0;

i++;

sum++;

}while(flag==1);

printf(" 按回车键返回主菜单!");

getch();

return 0;

}

/*修改联系人信息*/

revise_message()

{

int i=0,choice1;

char revise_name[20],flag=0;

char choice2,m=0;

printf("\n 输入要修改的联系人的姓名:"); scanf("%s",&revise_name);

for(i=0;i<sum;i++)

{

if(strcmp(s[i].name,revise_name)==0)

{

m=1;

printf("\n 你要修改哪一项?\n");

printf("\n 1.姓名\n");

printf("\n 2.地址\n");

printf("\n 3.邮政编码\n");

printf("\n 4.电话\n");

printf("请选择:");

scanf("%d",&choice1);

switch(choice1)

{

case 1: printf("\n 输入修改后的名片姓名:"); scanf("%s",s[i].name);break;

case 2: printf("\n 输入修改后的地址:"); scanf("%s",s[i].address);break;

case 3: printf("\n 输入修改后的邮政编码:"); scanf("%d",s[i].code);break;

case 4: printf("\n 输入修改后的电话:"); scanf("%s",s[i].tel);break;

}

}

}

if(m==0)

printf("无该联系人信息!");

printf("\n \n 要继续吗?(Y/N)");

choice2=getch();

if(choice2=='y'||choice2=='Y')

{

printf("\n 继续!\n");

flag=1;

}

else

flag=0;

while(flag==1);

printf(" 按回车键返回主菜单!");

getch();

return 0;

}

/*查询(按姓名)*/

int inquire_name()

{

int i=0,r=0;

char inquire_name[20];

printf("\n 输入要查询的联系人的姓名:");

scanf("%s",inquire_name);

for(i=0;i<sum;i++)

{

if(strcmp(s[i].name,inquire_name)==0)

r=1;

}

if(r==0)

printf("无该联系人信息!!!\n");

for(i=0;i<sum;i++)

if(strcmp(s[i].name,inquire_name)==0)

{

printf("\n **********联系人信息**********\n"); MY1;

MY2;

}

printf(" 按任意键返回主菜单!");

getch();

return 0;

}

/*删除(按姓名)*/

int delete_name()

{

int i=0,m=0,k=0,flag; char choice;

char de_name[20];

do

{

printf("\n 输入要删除的联系人的姓名:");

scanf("%s",de_name); for(i=0;i<sum;i++)

{

if(strcmp(s[i].name,de_name)!=0) break;

}

for(i=0;i<sum;i++)

{

if(strcmp(s[i].name,de_name)==0)

{

m=i;

for(i=m+1;i<sum;i++)

s[i-1]=s[i];

}

}

sum=sum-1;

printf("\n 此联系人的信息已被删除**********\n"); printf("\n 要继续删除吗?(Y/N)");

choice=getch();

if(choice=='y'||choice=='Y')

{

printf("\n 继续!\n");

k++;

flag=1;

}

else flag=0;

}while(flag==1);

printf(" 按任意键返回主菜单!");

getch();

return 0;

}

/*主函数*/

void main()

{

int choice;

sum=read_message();

{

do

{

printf("\n\n********************************************************************************\n");

printf("\n\n**************************欢迎您进入通讯录管理系统******************************\n\n");

printf("********************************************************************************\n");

printf(" 1.录入联系人信息\n\n");

printf(" 2.输出联系人信息\n\n");

printf(" 3.修改联系人信息\n\n");

printf(" 4.查询联系人信息\n\n");

printf(" 5.删除联系人信息\n\n");

printf(" 0.退出系统\n\n");

printf(" 请选择(0-5):");

scanf("%d",&choice);

switch(choice)

{

case 1:putin_message();save_message(sum);break;

case 2:putout_message();break;

case 3:revise_message();save_message(sum);break;

case 4:inquire_name();break;

case 5:delete_name();save_message(sum);break;

case 0:break;

}

}

while(choice!=0);

save_message(sum);

printf("联系人信息被保存!\n");

}

}

六.程序运行结果

1.菜单主界面:运行代码,进入菜单主界面

10

2.输入记录:选择第一项,录入几个名片信息

通讯录管理实验报告

;

11

通讯录管理实验报告

3.显示记录如下:输入完名片后,返回主菜单,进入选项2,显示刚才输入的几个名片

通讯录管理实验报告

;

4.返回主菜单,进入选项3修改名片,按照菜单操作后再返回查看已修改的名片; 12

5.返回主菜单,进入选项4,输入你要查询的名片的姓名,显示在屏幕上 13

通讯录管理实验报告

通讯录管理实验报告

6.返回主菜单,进入选项5,输入你要删除的名片的姓名,操作后显示删除完毕

通讯录管理实验报告

; 14

通讯录管理实验报告

7.退出系统. 15

通讯录管理实验报告

更多相关推荐:
数据库通讯录系统实验报告

学号设计说明书通讯录管理系统起止日期20xx年12月31日至20xx年1月4日学班成生姓名级绩刘艳仙12计算机2班指导教师签字电子与信息工程系20xx年1月5日1通讯录管理系统摘要互联网的出现与迅速发展信息技术...

通讯录管理系统实验报告

ADONET实验报告通讯录管理系统专业计算机嵌入式班级10455341日期20xx0528一实验目的1通过这一项目的实现进一步掌握利用ADONET连接都数据库进行访问2掌握利用ADONET来操纵数据库中的数据的...

通讯录管理系统实验报告(C语言)

通讯录管理系统实验报告学院:物理与电子工程学院专业:电子信息科学与技术学号:***姓名:**日期:20xx年6月12日一.题目要求用C设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。功能要求(1)查…

通讯录管理系统实验报告

通讯录管理系统测试报告姓名李晨雪专业计算机科学与技术班级6班学号20xx030010一实验内容1设计并实现通讯录管理系统该系统提供多用户的通讯录管理并能对通讯录中的联系人分组2具体任务完成用户管理窗口完成用户登...

c课程设计报告书——通讯录管理系统

C语言程序设计实习报告手机通讯录管理系统一、设计题目的任务和内容任务:本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。本程序主要考察对自定义函数的熟悉程度,本程序主要使用的…

C#实验报告通讯录管理系统

C实验报告通讯录管理系统学院计算机科学学院班级12级网络工程1班姓名张挺学号4120xx40120日期20xx年11月11日一试验目的熟悉数据库应用程序的开发步骤学会运用数据库组件结构中的数据集组件数据源组件和...

C++通讯录管理系统实验报告

实验名称通信录管理系统姓名吴亚群学号20xx30120xx67班级电科四班指导老师赵晓红提交日期4月23日一实验目的用C设计出模拟手机通信录管理系统实现管理通讯录的基本功能二实验内容题目通讯录管理系统1题目内容...

通信录管理系统实验报告

南京工程学院课程设计报告设计名称通信录管理系统课程名称高级语言程序设计C院系部通信工程学院班级算通111姓名余丹红学号20xx10410设计地点信息楼实验室C216指导老师实验时间20xx年3月5日至3月8日成...

通讯录管理系统设计报告

通讯录管理系统设计报告姓名SpringBrother学号专业指导教师通讯录管理系统C设计报告目录摘要3第1章概述黑体小二号字411系统实现的目标黑体小三号字412系统实现方案413系统实现环境414具体的开发方...

c语言课程设计报告书_通讯录管理系统[1]

题目通讯录管理系统一需求分析任务要求自学C语言中有关链表及外部文件的内容设计出通讯录管理系统具体要求如下建立通讯录信息信息至少包括编号姓名年龄电话通讯地址电子邮箱等内容能够提供添加删除和修改通讯录信息等功能能够...

C语言课程设计报告—手机通讯录管理系统

目录摘要2第一章绪论311课程设计目的和内容概述312题目手机通讯录管理系统3第二章程序分析421总体设计422详细设计423总流程图4第三章模块介绍和总体实现731构建结构体写入文件732构造函数与模块833...

个人通讯录管理系统课程设计报告示例

重庆科技学院个人通讯录管理系统课程设计报告重庆科技学院课程设计报告院系电气与信息工程学院班级计科普1001学生姓名刘静学号20xx441674设计地点单位计算机自主学习中心设计题目个人通讯录管理系统完成日期20...

通讯录管理系统实验报告(25篇)

热门关注

数据库通讯录系统实验报告

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

学生通讯录管理系统(C语言课程设计实验报告)

c++课程设计总结报告 通讯录管理系统

C语言课程设计报告—通讯录管理系统_

学生通讯录管理系统(C语言课程设计实验报告)1

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

手机通讯录管理系统课程设计报告模板

猜你喜欢

调查报告

清徐阳光特区项目策划报告

昌邑一中举行第七届远足德育实践活动

日常课程销售统计表

服务员工作报告(44篇)

高考作文 议论文(30篇)

点石阅读给产品起个好名字耿姓女宝宝起名字周易起名称大全输入车牌号查车辆信息关于收获的作文拽丫头与校草同居txt下载鹏程万里是什么生肖店铺取名起名大全打分免费测试吉林本土病例增加魔兽争霸战役芊字取名起名大全马姓不好起名专家 起名猛鬼差馆电影二十一客煤炭公司起名宝宝公司起名fc勇者斗恶龙4攻略双胎取名起名大全大全男孩姓雷男人起名超级店长辅助起名2018年起名字测试打分女童给家居起名字好听高姓男宝宝起名四个字搞笑的qq表情起名 与易经小闺女起名字幼儿教师个人总结公司起名攻略歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

点石阅读 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化