付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、井冈山大学电子与信息工程学院软件技术综合实验( 2015 2016 年度第一学期 )课程名称:软件技术综合实验学院:班级:姓名:学号:任课教师:成绩:2015年 10 月 20 日成绩评定一、指导教师评语二、成绩成绩备注指导教师:日期:年月日目录一、设计要求11问题描述12需求分析1二、概要设计11.主界面设计12.存储结构设计23系统功能设计2三、模块设计21模块设计22系统子程序及功能设计33函数主要调用关系图3四、详细设计41数据类型定义4五、测试分析61. 通讯录的建立62. 插入通讯记录73. 查询通讯记录74. 删除通讯记录85. 显示通讯录信息8六、用户手册9七、调试报告90学生
2、通讯录管理系统一、设计要求1问题描述纸质的通讯录已经不能满足大家的要求,容易丢失、查找困难等问题是纸质通讯录所不能克服的缺点。 “学生通讯录管理系统”是为了帮助老师、同学,或者其他一些需要使用通讯录的人员进行管理和分析的一种应用程序。2需求分析( 1) 输入数据建立通讯录。( 2) 查询通讯录中满足要求的信息。( 3) 插入新的通讯录信息。( 4) 删除不需要的通讯录信息。( 5) 查看所有的通讯录信息。二、概要设计1.主界面设计为了实现学生通讯管理系统各功能的管理,设计一个含有多个菜单项的主控菜单子程序以链接系统的各项子功能,方便用户使用本系统。 本系统主控菜单运行界面如图 1 所示。12.
3、存储结构设计本系统主要采用链表结构类型来表示存储在“学生通讯录管理系统” 中的信息。其中,链表结点由4 个分量构成:通讯录成员学号、通讯录成员姓名、通讯录成员电话号码、指向该结构体的指针。此外,本系统还设置了一个全局变量seat,表示通讯录中成员的序号。3系统功能设计本系统设置了 5 个子功能菜单, 5 个子功能的设计描述如下。( 1)建立通讯录系统。可以一次输入多个成员通讯录的信息,建立通讯录。该功能由 creatIncreLink() 函数实现。( 2)插入通讯记录。 每次可以插入一个成员通讯录的信息, 如果要连续插入多个成员通讯录信息必须多次选择该功能。该功能由 insertYouXu(
4、) 函数实现。( 3)查询通讯记录。 可以按两种方式查询所需要的通讯录成员记录, 一是按学号查询,二是按姓名查询。分别由 searchNum()函数和 searchName()函数实现。( 4)删除通讯记录。 可以对通讯录中不再需要的信息进行删除。 有三种删除方式:按序号进行删除, 按学号进行删除和按姓名进行删除。 分别由 deleteElem()函数, delNum()函数和 delName()函数实现。( 5)显示通讯录记录。 可以查看通讯录中所有的通讯录成员记录。 该功能由 printList() 函数实现。三、模块设计1模块设计2本程序包含两个模块:主程序模块和链表程序模块。 其调用关
5、系如图2 所示。主程序模块链表操作模块图 2 模块调用示意图2系统子程序及功能设计本程序共设置 10 个子程序,各程序的函数名及功能说明如下,其中大部分函数都是链表的基本操作函数。( 1) LinkList creatIncreLink()/链表的创建( 2)deleteElem(LinkList L,int i)/ 从通讯录中按序号删除第i 个元素( 3) delName(LinkList L,char n)/按姓名删除通讯者记录( 4) delNum(LinkList L,int n)/按学号删除通讯者记录( 5) voidinsertYouXu(LinkList L,LinkList E
6、lem)/插入一条通讯录( 6) printList(LinkList L)/打印指针地址为L 的通讯录( 7) prior(LinkList L,LinkList p)/查找位于当前地址元素的前一元素的地址( 8) searchName(LinkList L,char n)/按姓名查找通讯者记录( 9) intsearchNum(LinkList L,int n)/按学号查找通讯者记录( 10)viod main()/主函数。设定界面的颜色和大小,调用链表操作模块3函数主要调用关系图本系统 10 个子程序之间的主要调用关系如图3 所示。图中数字是个函数的编号。10main()3图 3系统函数
7、调用关系图四、详细设计1数据类型定义typedef struct LNodeint number;double telenum;char name20;struct LNode *next;LNode,*LinkList;2系统主要子程序详细设计(1)建立链表的函数,主要用来建立通讯录。LinkList createIncreLink()/创建一个存放通讯录成员的非递减有序表,返回头结点地址LinkList L=(LinkList)malloc(LEN);/头结点L-next=NULL;LinkList p;int num=1,number;double telenum;4char name2
8、0;printf( 请输入学生学号、姓名和电话号码,建立通讯录,以-1为输入结束标志 n);printf( 请输入学号 %d:,num);scanf(%d,&number);printf( 请输入姓名 %d:,num);char temp=getchar();gets(name);printf( 请输入电话号码 %d:,num);scanf(%lf,&telenum);while(number=0)p=(LinkList)malloc(LEN);/新结点p-number=number;p-telenum=telenum;strcpy(p-name,name);insertYouXu(L,p);
9、/有序的插入新结点num+;printf( 请输入学号 %d:,num);scanf(%d,&number);printf( 请输入姓名 %d:,num);temp=getchar();gets(name);printf( 请输入电话号码 %d:,num);scanf(%lf,&telenum);return(L);( 2)显示链表中所有结点的信息,用于查看通讯录所有的记录。void printList(LinkList L)5/打印头结点地址为L 的通讯录printf(n-n);printf(学号姓名电话号码 n);printf(-n);LinkList p=L;int n=1;if(L=N
10、ULL | L-next=NULL)printf( 该通讯录中没有元素 n);/判断通讯录是否为空elsewhile(p-next != NULL)printf(%2d%-9d,n,p-next-number);printf(%-5s%.0fn,p-next-name,p-next-telenum);p=p-next;n+;printf(-n);return ;五、测试分析1. 通讯录的建立在主菜单下, 用户输入 1 并回车,然后按照提示建立通讯录,分别输入通讯录成员的学号,姓名,电话号码,运行结果如图4 所示。6图 4 通讯录的建立2. 插入通讯记录在主菜单下, 用户输入 2 并回车,可以插
11、入一个新的通讯录成员的信息,依次输入学号,姓名和电话号码,运行结果如图5 所示。图 5 插入通讯录记录3. 查询通讯记录在主菜单下, 用户输入 3 并回车,可以按照两种方式查询通讯录。一种是按照学号查询,另一种方式是按照姓名查询。可按照提示操作,运行结果如图6所示。7图 6查询通讯录记录4. 删除通讯记录在主菜单下,用户输入4 并回车,进行通讯录记录的删除。可以按三种方式进行删除操作:按序号、按学号和按姓名。图7 是按序号删除的运行结果。图 7删除通讯录记录5. 显示通讯录信息主菜单下,用户输入5 并回车,查看通讯录中所有的成员信息。运行结果如图 8 所示。8图 8:显示通讯录信息六、用户手册
12、(1)本程序执行文件为“学生通讯管理系统.exe”。(2)进入本系统之后,用户可在该界面下输入各子类菜单前对应的序号并回车,执行相应子菜单命令。(3)本系统没有提供直接修改通讯录信息的功能的,课通过删除和插入操作完成修改功能。(4)本系统对于学生通信录的管理十分有意义,解决了纸质通信录的弊端。七、调试报告(1)在程序的录入工程中由于自己的粗心,导致程序出错,花费了大量时间调试。(2)链表的创建比较麻烦,得逐个录入,有待完善。(3)总体而言,本程序还是有很大的价值,解决了纸质通信录带来的大部分问题。八、主要程序清单#include #include #include #define NULL 0
13、#define LEN sizeof(LNode)9int seat; /通讯录成员的序号typedef struct LNode /用于通讯录节点int number;double telenum;char name20;struct LNode *next;LNode,*LinkList;/7.找到位于当前地址元素的前一元素的地址LinkList prior(LinkList L,LinkList p)if(L-next=NULL)return (L);LinkList p_prior=L;while(p_prior-next !=p)p_prior=p_prior-next;return
14、 (p_prior);/5.插入一个元素,使原有序表仍为有序void insertYouXu(LinkList L,LinkList Elem)LinkList p=L-next;while(p!=NULL & Elem-number=p-number)if(p-number=Elem-number)printf( 重复输入!n);return;10p=p-next; / 确定 Elem 插入的位置if(p=NULL)p=prior(L,p);Elem-next=NULL;p-next=Elem;else /若为空表,插到头结点之后p=prior(L,p);Elem-next=p-next;p
15、-next=Elem;/8.主函数。设定界面的颜色大小,调用工作区模块函数void main()LinkList L=NULL;printf(n*欢迎使用通讯录系统*n);printf(*1.通讯录的建立*n);printf(*2.插入通讯记录*n);printf(*3.查询通讯记录*n);11printf(*4.删除通讯记录*n);printf(*5.显示通讯录信息*n);printf(*0.退出管理系统*n);printf(n*欢迎使用通讯录系统*n);int flag=0; / 通讯录是否建立int menu; /菜单选项printf( 请选择 0-5:);scanf(%d,&menu)
16、;while(menu!=0)switch(menu) /用于调用菜单的语句case 1:L=creatIncreLink(); / 调用函数实现通讯录的建立printf( 建立通讯录: );printList(L);flag=1;break;case 2:if(flag=1)12int number,telenum;char name20;printf( 请输入通讯者的学号和姓名:n);printf( 请输入学号: n);scanf(%d,&number);printf( 请输入姓名: );char temp=getchar();gets(name);printf( 请输入电话号码: );s
17、canf(%d,&telenum);LinkList p=(LinkList)malloc(LEN); /新结点p-number=number;strcpy(p-name,name);p-telenum=telenum;insertYouXu(L,p); / 有序地插入新结点printf( 插入后: );printList(L);elseprintf(n ERROR: 通讯录还没有建立,请先建立通讯录n);break;case 3:13int way,n,s; /查找方式char na20;if(L!=NULL)if(flag)printf( 请选择查找方式: n);printf(1.按学号;
18、2.按姓名 );scanf(%d,&way);if(way=1)printf(n 请输入学号: );scanf(%d,&n);s=searchNum(L,n); /查找通讯录成员if(s=0)printf( 无此通讯者,查找失败!n);else if(way=2)printf(n 请输入姓名: );char temp=getchar();gets(na);s=searchName(L,na);if(s=0)printf( 无此通讯者,查找失败!n);else14printf( 通讯录中无记录! n);break;elseprintf( 通讯录中无记录! n);break;case 4:int
19、way;/删除方式printf( 请选择删除方式:1.按序号2.按学号3.按姓名n);scanf(%d,&way);if(way=1)int n;printf( 请输入通讯录序号: );scanf(%d,&n);printf( 删除后: n);deleteElem(L,n); /按序号删除printList(L);else if(way=2)15int n,f;printf( 请输入学号: );scanf(%d,&n);f=delNum(L,n); / 按学号删除if(f!=0)printf( 删除后: n);printList(L);elseprintf( 无该学号,删除失败!n);else if(way=3)char na20;int f;printf(n 请输入姓名: );char temp=getchar();gets(na);f=delName(L,na)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第一节-细胞的结构和功能-七年级-济南版
- 跨境电算协同中算力负载跨国绿电响应与算力金融市场联动-基于国际算力金融衍生品市场与绿电现货市场联动监管规范分析
- 跨境电算协同中跨国算力绿电耦合系统碳配额清缴-基于国际碳市场算力中心绿电耦合碳配额清缴机制规范分析
- 云南省思茅地区2027届数学六上期末质量检测模拟试题含解析
- 四川省A人员考试试题及答案
- 2026年刀郎歌曲进入考试试题及答案
- 2026年数字乡村建设试点项目总结
- 2027届山东省聊城市莘县六上数学期末教学质量检测试题含解析
- 建筑机电安装安全管控专项培训
- 紧固件表面镀锌技术创新总结报告
- 2025年一级建造师考试《矿业工程》真题及答案
- 2025至2030中国休闲组合鞋底行业发展研究与产业战略规划分析评估报告
- 2026年油藏数值模拟技术新进展:智能化与国产化创新
- T-CCIAA 48-2025 混合苯标准规范
- 2026年实验室生物安全责任书(标准)
- 社区宗教包保责任制度
- 压力容器制造(含设计)许可鉴定评审实施细则
- 2025-2030药用植物资源循环利用优化方案设计及国际化产业运营模式探讨
- 2026年官方兽医牧运通考试题库附答案
- 2025年光伏电站运维知识题库(附答案)
- (2026)肠内营养指南与共识课件
评论
0/150
提交评论