数据结构程序设计
学 院: 信息工程学院
专 业: 计算机科学与技术
班 级: 12级本科四班
学 号: 2012051417
姓 名: 姚宝龙
指导教师: 米 文 丽
成 绩 :
目录
实验题目 : 通讯录管理系统
一、问题与需求
二、概要设计
三、模块设计
四、详细设计
五、测试分析
六、用户手册
实验题目:
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
达式求值
一、实验目的
二、实验要求
三、设计思想(本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系)
实验题目:药店的药品销售统计
一、实验目的和要求
二、需求分析
三、概要设计
四、详细设计
五、调试分析
六、
使用说明
爱威a9效果器使用图word使用说明在哪儿钻床数控系统用户手册玻璃钢风机使用说明书控制器用户说明书
实验题目 : 通讯录管理系统
一、问题与需求
1.问题描述
纸质的通讯录系统已经不能满足大家的要求,容易丢失、查找困难等问题是纸质通讯录所不能克服的缺点。“学生通讯管理系统”是为了帮助老师、同学,或者其他一些需要使
用通讯录的人员进行管理和分析的一种应用程序。
2.需求分析
(1) 输入数据建立通讯录
(2) 查询通讯录系统中满足要求的信息
(3) 插入新的通讯录信息
(4) 删除不需要的通讯录信息
(5) 查看所有通讯录信息
二、概要设计
为了实现需求分析的功能,可以从三个方面着手设计。
1.主界面设计
为了实现学生通讯录管理系统各功能的管理,设计一个含有多个菜单项的主控菜单子程序以链接系统的各项子功能,方便用户使用本系统。本系统主控菜单运行界面如图2-3所示。
2.存储结构设计
本系统主要采用链表结构类型来表示存储在“学生通讯录管理系统”中的信息。其中,链表结点由四个分构成通讯录成员学号、通讯录成员姓名、通讯录成员电话号码、指向该结构体的指针。此外,本系统还设置了一个全局变量seat,表示通讯录中成员的序号。
3.系统功能设计
本系统设置了5个子功能菜单,5个子功能的设计描述如下。(1)建立通讯录系统。可以一次输入多个成员通讯录的信息,建立通讯录。该功能由creatIncreLink( )
函数
excel方差函数excelsd函数已知函数 2 f x m x mx m 2 1 4 2拉格朗日函数pdf函数公式下载
实现。(2)插入通讯记录。每次可以插入一个成员通讯录的信息。如果要连续插入多个成员通讯录信息必须多次选择该功能。该功能有insertYouXu( )函数实现。(3)查询通讯记录。可以按两种方式查询所需要的通讯录成员记录,一是按学号查询,二是按姓名查询。分别由seartNum( )和seartName( )函数实现。(4)删除通讯记录。可以对通讯录中不再需要的信息进行删除。有三种删除方式:按序号进行删除,按学号进行删除和按姓名进行删除。分别由deleteElem( )函数,delNum( )函数和delName( )函数实现。(5)显示通讯录系统。可以查看通讯录中所有的通讯录成员记录。该功能由printList( )函数实现。
三、模块设计
1.模块设计
本程序包含两个模块:主程序模块和链表操作模块。其调用关系如图2-4所示。 图2-4 模块调用示意图
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 LinkList Elem ) //插入一条通讯录
(6)printList( LinkList L) //打印指针地址为L的通讯录
(7)prior ( LinkList L,LinkList p) // 查找位于当前地址元素的前一元素的地址
(8)searchName( LinkList L,int n) //按姓名查找通讯录记录
(9)int searchNum( LinkList L,int n) // 按学号查找查找通讯录记录
(10)void main( ) //主函数。设定界面的颜色和大小,调用链表操作模块3.函数主要调用关系图本系统10个子程序之间的主要调用关系如图2-5所示。图中数字是各函数的编号。 图2-5 系统函数调用关系图如下所示:
四、详细设计
1.数据类型定义本系统采用链式结构存储通讯录结点。结点定义如下:typedef struct LNode { int number; double telenum; char name[20]; 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; char name[20];
printf("请输入学生学号、姓名和电话号码,建立通讯录,以'-1'为输入结束标志\n");
printf("请输入号 %d: ",num);
scanf("%d",&number);
printf("请输入姓名 %d: ",num);
temp=getchar();
gets(name);
printf("请输入电话号码 %d: ",num);
scanf("%1f",&telenum);
while(number>=0)
{ p=(Linklist)malloc(LEN);
p->number=number;
p->telenum=telenum;
strcpy(p->name,name);
insertYouXu(L,P);
num++;
printf("请输入学号 %d: ",num);
scanf("%d",&number);
printf("请输入姓名%d: ",num);
temp=getchar();
gets(name);
printf("请输入电话号码%d: ",num);
scanf("%1f",&telenum); return(L); }
(2) 显示链表中所有结点的信息,用查看通讯录所有的记录。void printList(LinkList L) { //打印头结点地址为L的通讯录
printf("\n ----------------\n");
printf(" 学号 姓名 电话号码\n");
printf(" ----------------\n");
LinkList p=L; int n=1;
if(L==NULL || L->next==NULL) printf ("该通讯录中没有元素\n"); //判断通讯录是否为空
else while(p->next !=NULL)
{ printf(" %2d %-9d",n,p->next->number);
printf(" %-5s %.0f\n",p->next->name,p->next->telenum);
p=p->next; n++; }
printf(" --------------------\n");
return
}
五、测试分析
系统运行主界面如图2-3所示。各子功能测试运行结果如下。
1.通讯录的建立
在主菜单下,用户输入1并回车,然后按照提示建立通讯录,分别输入通讯录成员的学号,姓名,电话号码,运行结果如图2-6所示。
2. 插入通讯录记录
在主菜单下,用户输入2并回车,可以插入一个新的通讯录成员的信息,依次输入学号,姓名和电话号码,运行结果如图2-7所示。
3.插入通讯录记录
在主菜单下,用户输入2并回车,可以插入一个新的通讯录成员的信息,依次输入学号,姓名和电话号码,运行结果如图2-7所示。
4.删除通讯录记录在主菜单下,用户输入4并回车,进行通讯录记录的删除。可以按三种方式进行删除操作:按序号、按学号和按姓名。图2-9是按学号删除的运行结果。
5.显示通讯录信息在主菜单下,用户输入5并回车,可以查看通讯录中的所有成员信息。运行结果如图2-10所示。图2-10 显示通讯录信息
六、用户手册
(1)本程序执行文件为“学生通讯录管理系统.exe”。
(2)进入本系统之后,随即显示系统主菜单界面,用户可在该界面下输入各子菜单前对应的数字并按回车键,执行相应子菜单命令。
(3)本系统没有提供直接修改通讯录信息的功能,可通过删除和插入操作完成修改功能。
实验题目: 表达式求值
一、实验目的
(1)通过本实验,理解栈这种基本数据结构,并掌握编程实现栈的一些基本操作函数;
(2)理解前缀、中缀、后缀表达式的定义,学习前缀、中缀、后缀表达式的计算;
(3)用栈的“先进后出”性质进行中缀表达式转后缀表达式和求值;
二、实验要求
1、实验要求:
(1)从键盘任意输入一个语法正确的中缀表达式,
保存该表达式;
(2)利用栈结构,将上述(中缀)表达式转换成后
缀表达式,并显示栈的变化过程和所得到的后缀达式。
(3)利用栈结构,对上式后缀表达式进行求值,并
显示栈的状态变化过程和最终结果。
(4)表达式中的字符有:
运算符‘+’、‘-’、‘*’、‘/’、‘(’、‘)’;
实数;
“#”(用来区分标记负号,区分减号);
三、设计思想(本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系)
1、逻辑设计
(1)中缀表达式转后缀表达式的算法:设立一个栈,存放运算符,首先栈为空,程序从左到右扫描中缀表达
a.若遇到操作数,存放到后缀表达式的数组中,并输出一个空格作为两个操作数的分隔符(这里注意多位数处理,多位数处理数字与数字之间不要空格);
b.若遇到运算符,则必须与栈顶比较,运算符级别比栈顶级别高则进否则退出栈顶元素并存放在后缀表达式中,然后输出一个空格作分隔符;
c.若遇到左括号,进栈;
d.若遇到右括号,则一直退栈输出,直到退到左括号止。当栈变成空时,输出的结果即为后缀表达式。
(2)计算后缀表达式算法:
设置一个栈,开始时,栈为空,然后从左到右扫描后缀表达式:
a.若遇操作数,字符型转化为double类型,进栈;
b.若遇运算符,则从栈中退出两个元素,先退出的放到运算符的右边,后退出的放到运算符左边,运算后的结果再进栈,直到后缀表达式扫描完毕。
c.此时,栈中仅有一个元素,即为运算的结果。
2、物理设计
流程图(最左边为主函数,右边为3个子函数及其调用关系):
实验题目:药店的药品销售统计
一、实验目的和要求
掌握小型系统开发方法,提高学生综合开发能力。根据实际问题,设计
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
,综合运用课程知识,《数据结构算法演示系统》的设计、编程与调试工作。
二、需求分析
1.设计一系统,实现医药公司定期对各药品的销售记录进行统计,并按药品编号、单价、销售量或销售额做出排序。
2.在设计中,各药品的信息包括:药品编号、药品名称、单价、销售量、销售额。其中药品编号共4位,采用字母和数字混合编号,如:B125,前一位为大写字母,后三位为数字。
三、概要设计
存储结构类型定义:
①药品信息的存储结构类型定义
typedef struct node
{char num[4];/*药品编号*/
char name[10]; /*药品名称*/
float price;/*单价*/
int count; /*销售量*/
float sale; /*销售额*/
}DataType;
②存储药品信息的顺序表的定义
typedef struct
{DataType r[maxsize];
int length;
}sequenList;
四、详细设计
1)sequenList input(sequenList sq)//录入信息
2)void shuchu(sequenList sq)//输出
3)void sort_num(sequenList sq)//按编号排序
4)void sort_price(sequenList sq)//按单价排序
5)void sort_count(sequenList sq)//按销量排序
6)void sort_sale(sequenList sq)//按销售额排序
五、调试分析
1.按要求输入要录入的药品信息。
2.按药品编号、单价、销售量或销售额做出排序
六、使用说明
输入药品信息,然后按药品编号、单价、销售量或销售额做出排序。