版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计 算 机 实 践 报 告课程名称: 计算机实践 课题名称: 通讯录管理系统 专 业: 机械电子工程 班 级: 机电14-2 姓名学号: 2021年10月31日1、 题目总体介绍(1) 课程设计题目通讯录管理系统(2) 课程设计内容与主要功能 设计与开发一个通讯录管理系统,对学生的学号、姓名、性别、年龄等基本信息进行管理,该系统主要功能如下:1) 新增联系人2) 删除联系人3) 联系人清单4) 搜索联系人5) 保存到文件6) 从文件载入(3) 目的与要求目的:要求学生达到熟练掌握C语言的基本知识和技能基本掌握C语言程序设计的思路和方法能够利用所学的基本知识解决简单的C语言程序设计方向的问题要求
2、:设计正确,方案合理界面友好,使用方便程序简练,结构清晰(4) 设计方法和基本原理应用C语言中结构体链表和调用函数的内容,利用调用函数完成系统的交互,定义结构体用来存储相关联系人信息。本系统共定义了9个调用函数,分别是stringinput()、enter()、del()、display()、search()、list()、save()、load()、menu_select(),分别是输入记录函数stringinput(),输入记录ui函数enter(),删除记录函数del(),详情显示函数display(),搜索内容函数search(),列表内容函数list(),保存文件函数save(),载
3、入文件函数load(),主界面ui函数menu_select()。2、 需求分析1) 能够新增联系人2) 能够删除指定的联系人3) 能够列出所有的联系人4) 能够按姓名搜索联系人5) 能够保存到本地和从本地文件载入联系人3、 总体设计(1) 系统组织结构图整个通讯录管理系统的系统组织结构如图3-1所示图3-1 系统组织结构图(2) 程序流程图:整个通讯录管理系统的程序流程如图3-2所示图3-2 程序流程图4、 详细设计(一)类设计类:node数据成员:姓名name,城市city,省份province,国家state,电话号码tel(二)成员函数本系统共定义了1个主函数及9个调用函数,分别是st
4、ringinput()、enter()、del()、display()、sea)rch()、list()、save()、load()、menu_select(),其功能如下输入记录函数stringinput():录入联系人信息输入记录ui函数enter():提供录入联系人时的交互界面删除记录函数del():删除指定姓名的联系人信息详情显示函数display();展示指定姓名的联系人信息搜索内容函数search();查找指定姓名的联系人信息列表内容函数list();展示所有的联系人信息保存文件函数save();将当前信息保存的本地文件载入文件函数load();从本地文件载入信息主界面ui函数me
5、nu_select();提供主菜单显示信息5、 编码与结果分析 (1) 预处理#include<stdio.h>#include<stdlib.h>#include<dos.h>#include<string.h>typedef struct Infochar name15;/*姓名*/char city10; /*城市*/char province10; /*省*/char state10; /*国家*/char tel15; /*电话*/;typedef struct node/*定义通讯录链表的节点结构*/struct Info data;
6、struct node *next;Node,*link;(2) 显示函数void display(Node *p)printf("详情 n");printf("姓名:%15sn",p->);printf("城市:%10sn",p->data.city);printf("省份:%10sn",p->vince);printf("国家:%10sn",p->data.state);printf("电话:%15sn",p-&g
7、t;data.tel);(3) 新增联系人通讯录管理系统主可以实现对联系人的增加的操作,在菜单界面输入1进入增加联系人功能,界面如图5-3所示图5-3 新增联系人界面void stringinput(char *t,int lens,char *notice)char n50;doprintf(notice);/*显示提示信息*/scanf("%s",n); /*输入字符串*/if(strlen(n)>lens)printf("n 超出长度! n");/*超出长度重新输入*/while(strlen(n)>lens);strcpy(t,n);
8、 /*将输入的字符串拷贝到字符串t中*/void enter(link l) /*输入记录*/Node *p,*q;q=l;while(1)p=(Node*)malloc(sizeof(Node); /*申请空间节点*/if(!p) /*未成功申请节点空间提示信息*/printf("申请节点空间失败!n");return;stringinput(p->,15,"请输入姓名:"); /*输入姓名*/if(strcmp(p->,"0")=0) /*检测输入的姓名是否为0*/break;str
9、inginput(p->data.city,10,"请输入城市:"); /*输入城市*/stringinput(p->vince,10,"请输入省份:"); /*输入省份*/stringinput(p->data.state,10,"请输入国家:"); /*输入国家*/stringinput(p->data.tel,15,"请输入电话:"); /*输入电话*/p->next=NULL;q->next=p;q=p;(4) 删除联系人通讯录管理系统主可以实现对联系人的
10、删除的操作,在菜单界面输入2进入删除联系人功能,界面如图5-4所示图5-4删除联系人界面void del(link l)Node *p,*q;char s20;q=l;p=q->next;printf("输入要删除的名字:");scanf("%s",s);/*输入要删除的名字*/while(p)if(strcmp(s,p->)=0) /*查找记录中与输入名字匹配的记录*/q->next=p->next; /*删除p节点*/free(p); /*释放p节点空间*/printf("删除成功!");
11、break;elseq=p;p=q->next;getch();(5) 搜索联系人通讯录管理系统主可以实现对联系人的搜索的操作,在菜单界面输入4进入搜索联系人功能,界面如图5-5所示图5-5 搜索联系人界面void search(link l)char name20;Node *p;p=l->next;printf("输入名字以搜索:");scanf("%s",name);/*输入要查找的名字*/while(p)if(strcmp(p->,name)=0)/*查找与输入名字匹配的记录*/display(p);/*调用显
12、示函数*/getch();break;elsep=p->next;(6) 所有联系人列表通讯录管理系统主可以列出所示有联系人的列表,在菜单界面输入3进入该功能,界面如图5-6所示图5-6 显示所有联系人界面void list(link l)Node *p;p=l->next;while(p!=NULL) /*从首节点一直遍历到链表最后*/display(p);p=p->next;getch();(7) 保存到本地文件通讯录管理系统主可以将内存中的联系人保存到本地文件,在菜单界面输入5进入该功能,程序默认保存到d:Contacts,界面如图5-7所示图5-7保存文件界面void
13、 save(link l)Node *p;FILE *fp;p=l->next;if(fp=fopen("d:Contacts","wb")=NULL) printf("文件打开失败!n");exit(1);printf("n储存文件n");while(p)/*将节点内容逐个写入磁盘文件中*/fwrite(p,sizeof(Node),1,fp);p=p->next;fclose(fp);getch();(8) 从文件载入通讯录管理系统主可以将本地文件中的联系人载入到内存中,在菜单界面输入6进入该功能,
14、程序默认载入文件为d:Contacts,界面如图5-8所示图5-8 文件载入界面void load(link l)Node *p,*r;FILE *fp;l->next=NULL;r=l;if(fp=fopen("d:Contacts","rb")=NULL)printf("文件打开失败!n");exit(1);printf("n载入文件n");while(!feof(fp)p=(Node*)malloc(sizeof(Node);/*申请节点空间*/if(!p)printf("申请节点空间失败!&
15、quot;);return;if(fread(p,sizeof(Node),1,fp)!=1)/*读取记录到节点p中*/break;elsep->next=NULL;r->next=p;/*插入连表中*/r=p;fclose(fp);getch();(9) 主函数及主菜单交互界面menu_select()int i;system("color F0");printf("nntn");printf("t 菜单 n");printf("tn");printf("t 1.输入联系人 n")
16、;printf("t 2.删除联系人 n");printf("t 3.联系人列表 n");printf("t 4.搜索联系人 n");printf("t 5.保存到文件 n");printf("t 6.从文件载入 n");printf("t 7.退 出 系统 n");printf("tn");doprintf("nt请输入您的选择:");scanf("%d",&i);while(i<0|i>7);
17、return i;main()link l;l=(Node*)malloc(sizeof(Node);if(!l)printf("n分配内存失败!");/*如果没有申请到,输出提示信息*/return ;/*返回主界面*/l->next=NULL;system("cls");while(1)system("cls");switch(menu_select()case 1:enter(l);break;case 2:del(l);break;case 3:list(l);break;case 4:search(l);break;c
18、ase 5:save(l);break;case 6:load(l);break;case 7:exit(0);(10) 设计特点及不足1 特点(1) 输入姓名超出长度可以重新输入(2) 程序可以与本地文件交互(3) 界面简洁清爽(4) 代码简练,执行效率高2 不足(1) 删除不存在的联系人没有提示(2) 搜索时只能以姓名作为索引(3) 保存和载入文件时不能选择目录6、 总结略附表:源程序代码#include<stdio.h>#include<stdlib.h>#include<dos.h>#include<string.h>typedef st
19、ruct Infochar name15;char city10;char province10;char state10;char tel15;typedef struct nodestruct Info data;struct node *next;Node,*link;void stringinput(char *t,int lens,char *notice)char n50;doprintf(notice);scanf("%s",n);if(strlen(n)>lens)printf("n exceed the required length! n
20、");while(strlen(n)>lens);strcpy(t,n);void enter(link l)Node *p,*q;q=l;while(1)p=(Node*)malloc(sizeof(Node);if(!p)printf("memory malloc failn");return;stringinput(p->,15,"enter name:");if(strcmp(p->,"0")=0) break;stringinput(p->data.cit
21、y,10,"enter city:"); stringinput(p->vince,10,"enter province:"); stringinput(p->data.state,10,"enter status:");stringinput(p->data.tel,15,"enter telephone:"); p->next=NULL;q->next=p;q=p;void del(link l)Node *p,*q;char s20;q=l;p=q->nex
22、t;printf("enter name:");scanf("%s",s);while(p)if(strcmp(s,p->)=0)q->next=p->next;free(p);printf("delete successfully!");break;elseq=p;p=q->next;getch();void display(Node *p)printf("MESSAGE n");printf("name:%15sn",p->)
23、;printf("city: %10sn",p->data.city);printf("province:%10sn",p->vince);printf("state: %10sn",p->data.state);printf("telphone:%15sn",p->data.tel);void search(link l)char name20;Node *p;p=l->next;printf("enter name to find:");scan
24、f("%s",name);while(p)if(strcmp(p->,name)=0) display(p);getch();break;elsep=p->next;void list(link l)Node *p;p=l->next;while(p!=NULL) display(p);p=p->next;getch();void save(link l)Node *p;FILE *fp;p=l->next;if(fp=fopen("d:adresslist","wb")=NULL) p
25、rintf("can not open filen");exit(1);printf("nSaving filen");while(p)fwrite(p,sizeof(Node),1,fp);p=p->next;fclose(fp);getch();void load(link l)Node *p,*r;FILE *fp;l->next=NULL;r=l;if(fp=fopen("d:adresslist","rb")=NULL)printf("can not open filen");exit(1);printf("nLoading filen");while(!feof(fp)p=(Node*)malloc(sizeof(Node);if(!p)printf("memory malloc fail!");return;if(fread(p,sizeof(Node),1,fp)!=1)break;elsep->next=NU
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- WBC、CRP、PCT化验指标解读及临床意义
- 医院消毒供应医师2026年二季度器械消杀管控总结
- 2026秋一升二部编版语文暑假衔接讲义|字词阅读写话(含答案)
- 2026年秋季小学开学第一课 开学适应与心理疏导主题班会
- 2026年北师大版小学六年级数学上册课时《分数的运算总结》教案
- 2026年保温材料行业市场竞争格局分析
- 工地建材砂石供货合同 建材购销可修改模板
- 阑尾炎切除术护理查房
- 辅警行测提分秘籍:60个纯技巧+刷题训练双攻略
- abs使用顾比交易技巧和风险控制
- 2026年全国保密教育线上培训考试试题库及参考答案【完整版】
- 2026福建漳州闽投华阳发电有限公司招聘43人笔试参考题库及答案详解
- GB/T 47655-2026电力电子装备和系统的构网性能要求及试验方法
- GA/T 1466.1-2026智能手机型移动警务终端第1部分:技术要求
- 中信建投:未来产业投资地图系列之“可控核聚变”
- 检验科生物安全培训内容及记录
- 2025广东省深圳市中考历史真题(解析版)
- 门诊一站式服务流程建设方案
- 浙江省食用农产品批发市场食品安全主体责任清单与技术评审指南(2023版)
- 注册安全工程师考试金属冶炼(中级)安全生产专业实务复习难点详解
- 大型赛事活动安保服务方案投标文件(技术标)
评论
0/150
提交评论