电话薄管理系统.doc

上传人:马菲菲 文档编号:8754909 上传时间:2021-01-10 格式:DOC 页数:19 大小:93.50KB
返回 下载 相关 举报
电话薄管理系统.doc_第1页
第1页 / 共19页
电话薄管理系统.doc_第2页
第2页 / 共19页
电话薄管理系统.doc_第3页
第3页 / 共19页
电话薄管理系统.doc_第4页
第4页 / 共19页
电话薄管理系统.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《电话薄管理系统.doc》由会员分享,可在线阅读,更多相关《电话薄管理系统.doc(19页珍藏版)》请在三一文库上搜索。

1、郑州轻工业学院实 训 报 告实训名称: 电话薄管理系统 姓 名: 院 (系): 专业班级: 学 号: 指导教师: 成 绩: 时间: 实训报告:一、 需求分析设计一个电话薄管理系统,实现通讯录管理工作的系统化,为人们的工作和生活提供便利。二、 功能描述该系统具有输入、显示、查找、删除、插入、保存、读入、排序和退出等功能。三、总体设计设计思路:电话薄管理系统输入模块输出模块查询模块更新模块输出至屏幕输出至文件排序记录插入记录删除记录修改记录按姓名查询按电话号码查询从键盘读入从文件读入(1)、输入模块。主要完成将数据存入数组中的工作。记录既可以从以文本格式存储的数据文件中读入,也可以从键盘逐个输入。

2、记录由于联系人有关的基本信息字段构成。(2)、查询模块。查询模块主要完成在数组中查找满足相关条件的记录。用户可以按照联系人姓名或者联系人号码在数组中进行查找。(3)、更新模块。更新模块主要实现对记录的修改、删除、插入、和排序。在进行更新操作只好,需要将修改的数据存入源数据文件。(4)输出模块。实现对记录的存盘,并以表格的形式将记录信息打印在屏幕上。主控函数流程图:结束调用Save()函数,进行写数据文件操作是否已对修改进行了存盘?判断键值,调用相应函数,完成相应功能输入是否为0?输入08中的一数值,选择相应的操作进入while(1)主循环调用menu菜单函数将此文件的内容读出,并存入一个新的结

3、构体类型的数组中以可读写的方式打开一个数据文件开始结束调用Save()函数,进行写数据文件操作是否已对修改进行了存盘?判断键值,调用相应函数,完成相应功能输入是否为0?输入08中的一数值,选择相应的操作进入while(1)主循环调用menu菜单函数将此文件的内容读出,并存入一个新的结构体类型的数组中以可读写的方式打开一个数据文件开始结束调用Save()函数,进行写数据文件操作是否已对修改进行了存盘?判断键值,调用相应函数,完成相应功能输入是否为0?输入08中的一数值,选择相应的操作进入while(1)主循环调用menu菜单函数将此文件的内容读出,并存入一个新的结构体类型的数组中以可读写的方式打

4、开一个数据文件开始结束调用Save()函数,进行写数据文件操作是否已对修改进行了存盘?判断键值,调用相应函数,完成相应功能输入是否为0?输入08中的一数值,选择相应的操作进入while(1)主循环调用menu菜单函数将此文件的内容读出,并存入一个新的结构体类型的数组中以可读写的方式打开一个数据文件开始结束调用Save()函数,进行写数据文件操作是否已对修改进行了存盘?判断键值,调用相应函数,完成相应功能输入是否为0?输入08中的一数值,选择相应的操作进入while(1)主循环调用menu菜单函数将此文件的内容读出,并存入一个新的结构体类型的数组中以可读写的方式打开一个数据文件开始结束调用Sav

5、e()函数,进行写数据文件操作是否已对修改进行了存盘?判断键值,调用相应函数,完成相应功能输入是否为0?输入08中的一数值,选择相应的操作进入while(1)主循环调用menu菜单函数将此文件的内容读出,并存入一个新的结构体类型的数组中以可读写的方式打开一个数据文件开始程序实现:在判断键值是,有效输入为08之间的任意整数,其他输入都被视为错误案件。若输入为0,则会判断在对记录进行了更新操作之后知否进行了存盘操作。若未存盘,系统会提示用户是否需要进行数据存盘操作,用户输入Y或y,系统会进行存盘操作。最后系统执行退出电话薄管理系统的操作。若选择1,执行增加记录操作;若选择2,执行以表格形式打印输出

6、记录至屏幕的操作;若选择3,执行删除记录操作;若选择4,执行查询记录操作;若选择5,执行修改记录操作;若选择6,执行插入记录;选择7,执行按升序排序的操作;选择8,执行存储记录的操作;若输入哦08之外的整数,给出案件错误的提示。程序主菜单如下: 欢迎使用电话薄管理系统 *电话薄主菜单* * * 1 增加记录 2 显示记录 * * * * 3 删除记录 4 查询记录 * * * 5 修改记录 6 插入记录 * * * * 7 排序记录 8 存储记录 * * * * 0 退出系统 * * * *实训感想1、巩固和强化了个人程序设计基本知识和基本技能,尤其是C语言的基本数据类型、构造类型、函数、指针

7、、文件等等方面的基本知识和技能。2、培养和训练了个人综合利用所学基本知识和基本技能进行小型应用程序开发的技能。3、培养个人适应岗位需要,独立分析问题、解决问题的基本能力,以及团队合作精神。附录(代码)#include stdio.h /标准输入输出函数库#include stdlib.h /标准函数库#include string.h /字符串函数库#include conio.h /屏幕操作函数库#define HEADER1 -电话簿-n#define HEADER2 | 编号 | 姓名 | 电话号码 | 地址 | n#define HEADER3 |-|-|-|-| n#define F

8、ORMAT | %-8s| %-10s| %-11s | %-18s | n#define DATA p-num,p-name,p-phonenum,p-address#define END -n#define N 250int saveflag=0; /是否需要存盘的标志变量/定义与职工有关的数据结构typedef struct telebook /标记为telebookchar num4; /记录编号char name10; /联系人姓名char phonenum15; /联系人电话号码char address20; /联系人地址TELEBOOK;void menu() /主菜单syste

9、m(cls); /调用DOS命令,清屏.与clrscr()功能相同system(color 1a);cprintf( 欢迎使用电话薄管理系统 n);cprintf( n); cprintf( *电话薄主菜单*n);cprintf( * *n);cprintf( * 1 增加记录 2 显示记录 *n);cprintf( * *n);cprintf( * 3 删除记录 4 查询记录 *n);cprintf( * *n);cprintf( * 5 修改记录 6 插入记录 *n);cprintf( * *n);cprintf( * 7 排序记录 8 存储记录 *n);cprintf( * *n);cp

10、rintf( * 0 退出系统 *n);cprintf( * *n);cprintf( *n); /cprintf()送格式化输出至文本窗口屏幕中void printheader() /格式化输出表头printf(HEADER1);printf(HEADER2);printf(HEADER3);void printdata(TELEBOOK pp) /格式化输出表中数据TELEBOOK* p;p=&pp;printf(FORMAT,DATA);void Disp(TELEBOOK temp,int n) /显示数组temp中存储的记录,内容为电话薄结构中定义的内容int i;if(n=0) /

11、表示没有电话簿记录printf(n=无电话号码记录!n);while(getchar()!=n)continue; printf(输入回车键继续);getchar();return;printf(nn);printheader(); /输出表格头部i=0;while(i没有相关记录,请按回车键继续!n);/作用:用于定位数组中符合要求的记录,并返回保存该记录的数组元素下标值/参数:findmess保存要查找的具体内容; nameorphonenum保存按什么在数组中查找int Locate(TELEBOOK temp,int n,char findmess,char nameorphonenu

12、m)int i=0;if(strcmp(nameorphonenum,phonenum)=0) /按号码记录编号查询 while(in) if(strcmp(tempi.phonenum,findmess)=0) /若找到findmess值的号码记录编号return i;i+; else if(strcmp(nameorphonenum,name)=0) /按号码记录姓名查询while(in)if(strcmp(tempi.name,findmess)=0) /若找到findmess值的号码记录姓名return i;i+; return -1; /若未找到,返回一个整数-1/输入字符串,并进行

13、长度验证(长度lens) printf(n 超出长度! n);/进行长度校验,超过lens值重新输入 while(strlen(n)lens); strcpy(t,n); /将输入的字符串复制到字符串t中 /增加电话号码记录int Add(TELEBOOK temp,int n)char ch,num10;int i,flag=0;system(cls);Disp(temp,n); /先打印出已有的电话号码记录 while(1) /一次可输入多条记录,直至输入号码记录编号为0的记录结束添加操作 while(1) /输入电话号码编号,保证该编号没有被使用,若输入编号为0,则退出添加记录操作 st

14、ringinput(num,10,(输入0返回主菜单)请输入n编号:); /格式化输入编号并检验 flag=0; if(strcmp(num,0)=0) /输入为0,则退出添加操作,返回主界面 return n; i=0; while(i该编号%s已存在,是否重新输入?(y/n):,num); scanf(%c,&ch); if(ch=y|ch=Y) continue; else return n; else break; strcpy(tempn.num,num); /将字符串num复制到tpn.num中stringinput(tempn.name,10,姓名:); /输入姓名stringi

15、nput(tempn.phonenum,15,电话号码:); /输入电话号码stringinput(tempn.address,20,地址:); /输入家庭地址saveflag=1;n+; return n;/按电话薄号码编号或姓名,查询记录void Qur(TELEBOOK temp,int n)int select; /:按编号查,2:按姓名查,其他:返回主界面char searchinput20; /保存用户输入的查询内容int p=0;if(n没有相关记录,请按回车键继续!n);getchar();return;system(cls);printf(n =1 按姓名查找 =2 按号码查

16、找n);printf( 请选择1,2:);scanf(%d,&select);if(select=1) /按姓名查询 stringinput(searchinput,10,请输入存在的姓名:); p=Locate(temp,n,searchinput,name); /在数组temp中查找编号为searchinput值的元素,并返回该数组元素的下标值 if(p!=-1) /若找到该记录 printheader(); printdata(tempp); printf(END); printf(输入回车键返回); getchar(); else Nofind(); getchar();else if

17、(select=2) /按电话号码查询 stringinput(searchinput,15,请输入存在的电话号码:); p=Locate(temp,n,searchinput,phonenum); if(p!=-1) printheader(); printdata(tempp); printf(END); printf(输入回车键返回); getchar(); else Nofind(); getchar();else Wrong(); getchar(); /删除记录:先找到保存该记录的数组元素的下标值,然后在数组中删除该数组元素int Del(TELEBOOK temp,int n)i

18、nt sel;char findmess20;int p=0,i=0;if(n没有任何记录!n);getchar();return n;system(cls);Disp(temp,n);printf(n =1 按姓名删除 =2 按号码删除n);printf( 请选择1,2:);scanf(%d,&sel);if(sel=1)/先按姓名查询到该记录所在的数组元素的下标值 stringinput(findmess,10,请输入存在的姓名:); p=Locate(temp,n,findmess,name); getchar(); if(p!=-1) for(i=p+1;i删除成功,请输入回车键返回!

19、n); n-; getchar(); saveflag=1; else Nofind(); getchar(); else if(sel=2) /先按电话号码查询到该记录所在的数组元素的下标值 stringinput(findmess,15,请输入存在的电话号码:); p=Locate(temp,n,findmess,phonenum); getchar(); if(p!=-1) for(i=p+1;i删除成功,输入回车键返回!n); n-; getchar(); saveflag=1; else Nofind(); getchar(); return n;/修改记录:先按输入的电话编号查询到

20、该记录,然后提示用户修改编号之外的值,编号不能修改void Modify(TELEBOOK temp,int n)char findmess20;int p=0;if(n无号码记录,请按回车键继续!n); getchar(); return ;system(cls);printf(修改号码记录);Disp(temp,n);stringinput(findmess,10,请输入存在的姓名:); /输入并检验该编号p=Locate(temp,n,findmess,name); /查询到该数组元素,并返回下标值if(p!=-1) /若p!=1,表明已经找到该数组元素 printf(编号:%s,n,t

21、empp.num); printf(姓名:%s,tempp.name); stringinput(tempp.name,10,请输入新姓名:); printf(姓名:%s,tempp.phonenum); stringinput(tempp.phonenum,15,请输入新电话号码:); printf(姓名:%s,tempp.address); stringinput(tempp.address,20,请输入新地址:); printf(n=修改成功,输入回车键返回!n); Disp(temp,n); getchar(); saveflag=1;else Nofind(); getchar();

22、 return ;/插入记录:按号码编号查询到要插入的数组元素的位置,然后在该编号之后插入一个新数组元素。int Insert(TELEBOOK temp,int n) char ch,num10,s10; /s保存插入点位置之前的编号,num保存输入的新记录的编号 TELEBOOK newinfo; int flag=0,i=0,kkk=0; system(cls); Disp(temp,n); while(1) stringinput(s,10,请输入要插入哪位编号之后:); flag=0;i=0; while(i该编号%s不存在,重新尝试?(y/n):,s); scanf(%c,&ch)

23、; if(ch=y|ch=Y) continue; else return n; /以下新记录的输入操作与Add()相同 while(1) stringinput(num,10,请输入要插入的编号:); i=0;flag=0; while(i对不起,你输入的编号%s已存在,请重新输入!(y/n):,num); scanf(%c,&ch); if(ch=y|ch=Y) continue; else return n; else break; strcpy(newinfo.num,num); /将字符串num复制到newinfo.num中 stringinput(newinfo.name,10,姓

24、名:); /输入姓名 stringinput(newinfo.phonenum,15,电话号码:); /输入电话号码 stringinput(newinfo.address,20,地址:); /输入地址 saveflag=1; /在main()有对该全局变量的判断,若为1,则进行存盘操作 for(i=n-1;ikkk;i-) /从最后一个组织元素开始往向移动一个元素的位置 strcpy(tempi+1.num,tempi.num); strcpy(tempi+1.name,tempi.name); strcpy(tempi+1.phonenum,tempi.phonenum); strcpy(

25、tempi+1.address,tempi.address); strcpy(tempkkk+1.num,newinfo.num); /在kkk的元素位置后插入新记录 strcpy(tempkkk+1.name,newinfo.name); strcpy(tempkkk+1.phonenum,newinfo.phonenum); strcpy(tempkkk+1.address,newinfo.address); n+; Disp(temp,n); printf(nn输入回车键返回); getchar(); return n;/利用选择排序法实现数组的按记录编号或姓名的升序排序void Sel

26、ectSort(TELEBOOK temp,int n)int i=0,j=0,flag=0,indexmin,select;char charflag10;TELEBOOK newinfo;if(n无号码记录,输入回车键返回!n); getchar(); return ;system(cls);Disp(temp,n); /显示排序前的所有记录printf( =1 按记录编号排序 =2 按姓名排序n);printf( 请选择1,2:);scanf(%d,&select);if(select=1) /按记录编号排序 for(i=0;in-1;i+) flag=32767;indexmin=0;

27、 for(j=i;jn;j+) if(atoi(tempj.num)排序成功,输入回车键返回!n); getchar(); return; else if(select=2) for(i=0;in-1;i+) charflag0=255;indexmin=0; for(j=i;jn;j+) if(strcmp(tempj.name,charflag)0) strcpy(charflag,tempj.name); indexmin=j; strcpy(newinfo.num,tempi.num); /利用结构变量newinfo实现数组元素的交换 strcpy(newinfo.name,tempi.name); strcpy(newinfo.phonenum,tempi.phonenum); strcpy(newinfo.address,tempi.address); strcpy(tempi.num,tempindexmin.num); strcpy(tempi.name,tempindexmin.name); strcpy(tempi.phonenum

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1