1、二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。现有一批通讯录的数椐,要求输入计算机并存放在内存中,然后增加若干个新通讯录的记录,并可输出通讯录清单,实现文件存盘和读入文件进行修改的功能。通讯录的基本信息包括编号,姓名,电话号码,QQ号码,电子邮件,通讯地址。要求设计菜单来调用其各功能模块:v新建文件、打开文件、保存信息到文件v输入记录、输出记录v查询记录(至少具有两种查询方式,例如以姓名查询和以电话号码查询)v修改、插入和删除记录三、设计要求及成果1. 分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)2.
2、写出详细设计说明(至少包括功能实现分析和模块流程图)3. 编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少500行代码,不包括注释和花括号)4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告(请严格按照模板进行排版)四、进度安排第一天 选择课程设计题目,分析课题的要求第二天 编程第三天 编程及调试第四天 写课程设计报告第五天 提交课程设计报告(打印稿及电子稿)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有
3、人均判为不及格。第一章 需求分析1.1引言随着手机的普遍化,人与人的联系几乎使用手机或电话。这样,每人都有一个电话号码,这就需要对电话号码进行管理。而写在纸质的本子上,会给查找带来不便,所以,这是需要软件来进行管理。1.2任务概述1.3数据描述1.采用结构体来存储通讯录的数据2.通讯录的数据包括:编号,姓名,电话号码,QQ号码,电子邮件,通讯地址3.编号输入时为1-10的数字4.电子邮件的格式为:*5.姓名和通讯地址表示方式:拼音或汉字6.姓名、电话号码、QQ号码、电子邮件、通讯地址的长度不可超出201.4功能需求1.建立记录2.输入记录、3.输出记录4.查询记录(至少具有两种查询方式)5.修
4、改记录6.插入记录7.删除记录8.存入文件1.5性能需求1.具有基本提示判断。2.对数据具有基本处理功能。3.对管理数据输入输出。1.6运行需求1、输入信息要严格按照提示顺序进行输入。2、输入选择项功能,要在选项范围内进行选择。3、输入的信息严格按照要求的格式输出。4、输入的信息必须清晰,不可连续不断。5、在Vc和CodeBlocks中,均可运行。1.7任务计划本程序是以为了更好地管理通讯录信息而写的程序。目的是以以一种更系统的操作来管理通讯录信息,所以本程序的输入是以数据和文字两种形式输入的,输出也是一样。而本程序可以对通讯录信息输入和输出,对信息进行删除和修改并可以对信息进行浏览使使用者更
5、方便的浏览所输入的信息。还可以对信息尽查找,方便使用者对信息进行提取。对程序进行调试时,如果有输入错的信息的时候,本程序会对使用者进行提示,而让使用者对信息进行重新输入。对信息的录入要完善详细,种类齐全。第二章概要设计2.1总体设计2.2数据类型设计(或数据结构设计)typedef struct node int num; /编号 char name20; /姓名 char phone20; /电话号 char QQ20; /QQ号 char email20; /电子邮件 char address20; /通讯地址 struct node *next;JD; /结构体储存2.3接口设计表2.1
6、:函数列表函数名 函数格式 函数功能creat_address_bookJD *creat_address_book()建立通讯录信息scan_messagevoid scan_message(JD *head)浏览通讯录信息search_numvoid search_num(JD *head)按编号查询信息search_namevoid search_name(JD *head)按姓名查询信息insertvoid insert(JD *head)添加通讯录信息deletvoid delet(JD *head)删除通讯录信息change_messagevoid change_message(J
7、D *head)修改通讯录信息savevoid save(JD*head)将信息存入文件2.4运行界面设计 printf(t);*n* 欢迎进入通讯录管理系统 * /6个空格*1、建立通讯录信息*2、浏览通讯录信息*3、按编号查询信息*4、添加通讯录信息*5、删除通讯录信息*6、修改通讯录信息*7、文件中的信息*0、退出通讯录系统*请输入序号:运行后如图2.1所示:图2.1:运行界面第三章详细设计3.1输入模块设计JD *creat_address_book() JD *head; /指向结构体数组的指针 JD *p; JD *s; head=(JD*)malloc(sizeof(JD); /
8、让head指向新建节点 p=head; s=(JD*)malloc(sizeof(JD); /让s指向新建节点请输入通讯录中信息:以编号为0或姓名为#结束:编号(1-10): scanf(%d,&s-num);姓名(如he):%sname);电话号码:phone);QQ:QQ);电子邮箱(如*):email);地址(如neimeng):address); while(s-num!=0)&(s-name20!=#) /编号为0或名字为#退出输入 p-next=s; /让s指向下一个节点 p=s; s=(JD*)malloc(sizeof(JD); printf( scanf( p-next=NU
9、LL; /将新建节点置为表尾 return head;3.2输出模块设计通讯录现有信息: p=head-next; while(p!=NULL)编号:,p-姓名:电子邮箱:地址: p=p-3.3查找模块设计1.按编号查找:void search_num(JD *head) /结构体指针变量做函数形参 int i; /让头指针指向待删除节点p的下一节点请输入你要查询人的编号:i); if(p-num=i) printf(输出此人信息: break; else p=p- /让p指向下一个节点 if(p=NULL)查无此人!2.按姓名查找:void search_name(JD *head) /结构
10、体指针变量做函数形参 char s20; /让头指针指向节点p的下一节点请输入你要查询人的姓名(如he):s); if(strcmp(p-name,s)=0)3.4整理模块设计1.删除信息void delet(JD *head) /结构体指针变量做函数形参 JD *q; JD *r; r=head;请输入你要删除人的编号:=NULL) num=num) /若当前节点的节点值为num,找到待删除节点 r-next=p- /让前一节点的指针域指向待删节点的下一节点 q=p;输出被删除人的信息: free(q);再次进行浏览,确保此人已删除! r=p; /在q中保存当前节点的下一节点 if(p=NULL) /若链表为空,则退出程序2.插入信息void insert(JD *head) /结构体指针变量做函数形参 r=head- /让s指向待插入节点请输入你添加人的信息:以编号为0结束或姓名为#结束:) s-next=r; /为带插入节点的指针域赋值为S3.修改信息void change_message(JD *head) /结构体指针变量做函数形参 s=head; if(s=NULL) /若在头节点前插入新节点查无此人,修改失败! pr
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1