《软件技术综合实验课程设计解读(共24页).doc》由会员分享,可在线阅读,更多相关《软件技术综合实验课程设计解读(共24页).doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上井冈山大学电子与信息工程学院软件技术综合实验 ( 20152016年度第一学期)课程名称: 软件技术综合实验 学 院: 班 级: 姓 名: 学 号: 任课教师: 成 绩: 2015年 10 月 20 日专心-专注-专业成 绩 评 定一、 指导教师评语二、 成绩成绩备注 指导教师: 日 期: 年 月 日目录一、设计要求11问题描述12需求分析1二、概要设计11.主界面设计12.存储结构设计23系统功能设计2三、模块设计21模块设计22系统子程序及功能设计33函数主要调用关系图3四、详细设计41数据类型定义4五、测试分析61. 通讯录的建立62. 插入通讯记录73. 查询
2、通讯记录74. 删除通讯记录85. 显示通讯录信息8六、用户手册9七、调试报告9学生通讯录管理系统一、设计要求1问题描述 纸质的通讯录已经不能满足大家的要求,容易丢失、查找困难等问题是纸质通讯录所不能克服的缺点。“学生通讯录管理系统”是为了帮助老师、同学,或者其他一些需要使用通讯录的人员进行管理和分析的一种应用程序。2需求分析 (1) 输入数据建立通讯录。 (2) 查询通讯录中满足要求的信息。 (3) 插入新的通讯录信息。 (4) 删除不需要的通讯录信息。 (5) 查看所有的通讯录信息。二、概要设计1.主界面设计为了实现学生通讯管理系统各功能的管理,设计一个含有多个菜单项的主控菜单子程序以链接
3、系统的各项子功能,方便用户使用本系统。本系统主控菜单运行界面如图1所示。2.存储结构设计 本系统主要采用链表结构类型来表示存储在“学生通讯录管理系统”中的信息。其中,链表结点由4个分量构成:通讯录成员学号、通讯录成员姓名、通讯录成员电话号码、指向该结构体的指针。此外,本系统还设置了一个全局变量seat,表示通讯录中成员的序号。3系统功能设计本系统设置了5个子功能菜单,5个子功能的设计描述如下。 (1)建立通讯录系统。可以一次输入多个成员通讯录的信息,建立通讯录。该功能由creatIncreLink() 函数实现。 (2)插入通讯记录。每次可以插入一个成员通讯录的信息,如果要连续插入多个成员通讯
4、录信息必须多次选择该功能。该功能由insertYouXu()函数实现。 (3)查询通讯记录。可以按两种方式查询所需要的通讯录成员记录,一是按学号查询,二是按姓名查询。分别由searchNum()函数和searchName()函数实现。 (4)删除通讯记录。可以对通讯录中不再需要的信息进行删除。有三种删除方式:按序号进行删除,按学号进行删除和按姓名进行删除。分别由deleteElem()函数,delNum()函数和delName()函数实现。 (5)显示通讯录记录。可以查看通讯录中所有的通讯录成员记录。该功能由printList()函数实现。三、模块设计1模块设计 本程序包含两个模块:主程序模块
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)void insertYouXu(LinkList L,Li
6、nkList Elem)/插入一条通讯录 (6)printList(LinkList L) /打印指针地址为L的通讯录 (7)prior(LinkList L,LinkList p) /查找位于当前地址元素的前一元素的地址 (8)searchName(LinkList L,char n) /按姓名查找通讯者记录 (9)int searchNum(LinkList L,int n) /按学号查找通讯者记录 (10)viod main() /主函数。设定界面的颜色和大小,调用链表操作模块3函数主要调用关系图 本系统10个子程序之间的主要调用关系如图3所示。图中数字是个函数的编号。568910mai
7、n()123457图3 系统函数调用关系图四、详细设计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 te
8、lenum;char name20;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);insertYou
9、Xu(L,p);/有序的插入新结点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)/打印头结点地址为L的通讯录printf(n-n);printf( 学号 姓名 电话号码n);printf(-n);LinkList p=L;int n=1;if(
10、L=NULL | 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所示。图4 通讯录的建立2. 插入通讯记录 在主菜单下,用户输入2并回车,可以插入一个新
11、的通讯录成员的信息,依次输入学号,姓名和电话号码,运行结果如图5所示。图5 插入通讯录记录3. 查询通讯记录在主菜单下,用户输入3并回车,可以按照两种方式查询通讯录。一种是按照学号查询,另一种方式是按照姓名查询。可按照提示操作,运行结果如图6所示。图6 查询通讯录记录4. 删除通讯记录 在主菜单下,用户输入4并回车,进行通讯录记录的删除。可以按三种方式进行删除操作:按序号、按学号和按姓名。图7是按序号删除的运行结果。图7 删除通讯录记录5. 显示通讯录信息 主菜单下,用户输入5并回车,查看通讯录中所有的成员信息。运行结果如图8所示。 图8:显示通讯录信息六、用户手册 (1)本程序执行文件为“学
12、生通讯管理系统.exe”。 (2)进入本系统之后,用户可在该界面下输入各子类菜单前对应的序号并回车,执行相应子菜单命令。 (3)本系统没有提供直接修改通讯录信息的功能的,课通过删除和插入操作完成修改功能。 (4)本系统对于学生通信录的管理十分有意义,解决了纸质通信录的弊端。七、调试报告(1)在程序的录入工程中由于自己的粗心,导致程序出错,花费了大量时间调试。(2)链表的创建比较麻烦,得逐个录入,有待完善。(3)总体而言,本程序还是有很大的价值,解决了纸质通信录带来的大部分问题。八、主要程序清单#include #include #include #define NULL 0#define LE
13、N sizeof(LNode)int 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 (p_prior)
14、;/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;p=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-next=Elem;/8.主函
15、数。设定界面的颜色大小,调用工作区模块函数void main()LinkList L=NULL;printf(n* 欢迎使用通讯录系统*n);printf( * 1.通讯录的建立 *n);printf( * 2.插入通讯记录 *n);printf( * 3.查询通讯记录 *n);printf( * 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)int number,telenum;char name20;printf(请输入通讯者的学号和姓名:n);printf(请输入学号:n);scanf(%d,&number);printf(请输入姓名:);char temp=getchar();gets(name);printf(请输入电话号码:);scanf(%d,&tele
17、num);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:int way,n,s; /查找方式char na20;if(L!=NULL)if(flag)printf(请选择查找方式:n);printf( 1.按学号; 2.按姓名);scanf(%d,&wa
18、y);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);elseprintf(通讯录中无记录!n);break;elseprintf(通讯录中无记录!n);break;case 4:int way; /删除方式printf(请选择删除方式:1.按序号 2
19、.按学号 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)int n,f;printf(请输入学号:);scanf(%d,&n);f=delNum(L,n); /按学号删除if(f!=0)printf(删除后:n);printList(L);else printf(无该学号,删除失败!n);else if(way=3)char na20;int f;printf(n请输入姓名:
20、);char temp=getchar();gets(na);f=delName(L,na); /按节点删除if(f!=0)printf(删除后:n);printList(L);elseprintf(无该学号,删除失败!n);else printf(ERROR!n);break;case 5:printf(当前通讯录内容如下:n);printList(L); /打印通讯录break;case 0:exit(0);default:printf(n 没有此功能,重新输入n);printf(选择功能:);scanf(%d,&menu); 读书的好处1、行万里路,读万卷书。2、书山有路勤为径,学海无涯
21、苦作舟。3、读书破万卷,下笔如有神。4、我所学到的任何有价值的知识都是由自学中得来的。达尔文5、少壮不努力,老大徒悲伤。6、黑发不知勤学早,白首方悔读书迟。颜真卿7、宝剑锋从磨砺出,梅花香自苦寒来。8、读书要三到:心到、眼到、口到9、玉不琢、不成器,人不学、不知义。10、一日无书,百事荒废。陈寿11、书是人类进步的阶梯。12、一日不读口生,一日不写手生。13、我扑在书上,就像饥饿的人扑在面包上。高尔基14、书到用时方恨少、事非经过不知难。陆游15、读一本好书,就如同和一个高尚的人在交谈歌德16、读一切好书,就是和许多高尚的人谈话。笛卡儿17、学习永远不晚。高尔基18、少而好学,如日出之阳;壮而好学,如日中之光;志而好学,如炳烛之光。刘向19、学而不思则惘,思而不学则殆。孔子20、读书给人以快乐、给人以光彩、给人以才干。培根