简单的产品管理系统文档格式.docx
《简单的产品管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《简单的产品管理系统文档格式.docx(24页珍藏版)》请在冰点文库上搜索。
![简单的产品管理系统文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-4/30/15d73157-61ee-4598-a76f-bc0de5cf7705/15d73157-61ee-4598-a76f-bc0de5cf77051.gif)
6、指出所设计问题的不足和改进方案
5.课程设计材料的装订顺序为:
1)设计说明书封面
2)课程设计任务书
3)课程设计鉴定表
4)目录
5)设计报告书正文
三、设计方法和基本原理
1.问题描述:
某工厂有5种产品,每种产品包括:
产品代码,产品名称,产品数量,销售量,要求编写函数实现下面:
(1)从键盘输入这些产品的信息;
(2)按照产品的库存量进行升序排序,使用选择法排序,在主函数中输出;
(3)使用折半查找法进行循环查询,当用户给出某种产品的代码时,在主函数中显示该产品的信息,如果没找到则给出未找到的信息,退出程序的运行;
(4)输出产品信息。
2.问题的解决方案:
根据问题的描述,可以按照程序要求的功能采用结构化的设计思想。
(1)产品的库存量在输入函数中求解或者编写独立函数求解;
(2)在排序过程中,结构数组元素的交换可以整体进行,无需每个成员之间进行互换。
(3)使用折半查找法进行查找之前,应该先按照产品代码进行排序。
四、主要技术问题的描述
根据三的分析,主要问题在于:
(1)结构体的构造
除了产品的代码(intcode)、产品名称(charname),产品数量(floatamount),销售量(floatsales)外,还应有产品的库存量(floatstock)
(2)排序
在进行完结构数组中某个成员的比较后,不是某个成员的互换,而是结构体数组元素之间的互换。
例如结构体数组元素pro[j]和pro[k]的互换:
t=pro[j];
pro[j]=pro[j+1];
pro[j+1]=t;
(3)各个函数的参数传递问题
实参应为结构数组名,形参为结构体指针或者结构体数组。
如输入函数:
voidInput(PRODUCT*p)//结构体指针作为形参
{//programcode
}
函数调用时:
Input(pro);
//pro为结构体数组名
五、课程设计时间:
18周
六、课程设计的考核方式及评分方法
1.考核方式
课程设计结束时,在机房当场验收。
1)教师提供测试数据,检查运行结果是否正确。
2)回答教师提出的问题。
3)学生提交课程设计文档(A4纸打印)
2.评分方法
上机检查:
书面报告=7:
3,没有通过上机检查的其成绩直接记录不及格
指导教师签名:
日期:
教研室主任签名:
日期:
系主任签名:
日期:
长沙学院课程设计鉴定表
专业
计算机科学与技术
班级
设计题目
指导教师意见:
评定等级:
教师签名:
日期:
答辩小组意见:
答辩小组长签名:
日期:
教研室意见:
系(部)意见:
日期:
说明
课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类;
摘要
本书参照《c++程序设计》和《程序设计基础课程设计任务书-1》,利用结构与函数方法,设计一个简单的产品管理系统。
该系统能够提示用户输入不同的指令,根据用户输入的不同指令,用二分法实现对产品的查找,用直接选择排序对产品进行排序等功能。
本书共分为五个部分,第一部分是设计的内容及要求,第二部分是设计的说明,第三部分是个人总结,第四部分是源代码附录,第五部分是测试结果截图。
因水平有限书中存在许多不足,请批评指正。
关键字:
产品管理系统;
选择排序法;
折半查找法
目录
1设计内容与要求………………………………………………………………………………1
2.设计说明………………………………………………………………………………………2
2.1问题描述与功能设计………………………………………………………………………2
2.2算法与数据结构……………………………………………………………………………3
2.3函数定义……………………………………………………………………………………5
2.4界面设计……………………………………………………………………………………6
2.5编码…………………………………………………………………………………………8
2.6测试…………………………………………………………………………………………9
3总结……………………………………………………………………………………………11
参考文献………………………………………………………………………………………12
附录A源代码…………………………………………………………………………………13
1设计内容与要求
设计内容:
设计要求:
创新要求:
在基本要求达到后,进行创新设计,如进行界面美化界面等操作。
1
2设计说明
2.1问题描述与功能设计
1.问题描述:
产品代码,产品名称,产品数量,销售量,要求编写函数实现相应操作:
(1)从键盘输入这些产品的信息;
(3)使用折半查找法进行循环查询,当用户给出某种产品的代码时,在主函数中显示;
(4)该产品的信息,如果没找到则给出未找到的信息,退出程序的运行;
输出产品信息。
2.功能设计:
根据用户输入的不同指令,分别实现对产品信息的排序、输出、查找等功能。
2
2.2.算法与数据结构
本程序的算法设计是先编写一个“product.h”头文件,包含结果的定义与函数的声明,以及定义了几个外部变量:
voidsortProductStock();
//按产品的库存量排序
voidsortProductCode();
//按产品的代码排序
voidsearchProduct(int);
//查找产品信息
voiddisplayProduct();
//输出产品信息
externboolY;
//定义一个布尔型外部变量
externstructproductpro[];
//定义一个结构数组
接下来就是编写一个主函数来调用各个函数,再新建几个“cpp”文件,每个文件中定义一个函数。
首先是定义了一个输出所有产品信息的函数,用到了for循环与控制域宽的算法:
voiddisplayProduct()
{
cout<
<
"
产品代码产品名称产品数量销售量库存量"
endl;
for(intk=1;
k<
=t;
k++)
{
setw(10)<
pro[k].code;
pro[k].name;
pro[k].amount;
pro[k].sales;
pro[k].stock<
}
-然后是查找产品信息的函数,其中一个很重要的算法是折半查找法(二分法),根据产品的代码查找产品的信息。
由于运用折半查找法查找的元素必须是已经排好序的,故在查找这个函数之前必须先调用对产品代码排序的函数。
查找时限输入一个要查找的产品的代码,将它与最中间的一个元素进行比较。
如果比中间的大就去后一部分查找,否则就去前一部分查找。
如此不断循环,直到找到与之相同的代码,若该代码不存在,则输出“您要的产品不存在!
”。
有如下代码:
voidsearchProduct(intkey)
{
intmiddle,low=1,high=t;
while(low<
=high)
middle=(low+high)/2;
if(key==pro[middle].code)//如果正中间的代码恰好是要查找的,则输出
Y=true;
//如果Y为正确的,则表示该产品已找到
3
pro[middle].code;
pro[middle].name;
pro[middle].amount;
pro[middle].sales;
pro[middle].stock<
//输出找到的产品的信息
return;
else
if(key<
pro[middle].code)
high=middle-1;
//要找的元素在前半部分
low=middle+1;
//要找的元素在后半部分
本程序包含的数据结构是顺序表,首先建立的顺序表用来保存产品的信息类数据:
structproduct
intcode;
//产品的代码
charname[20];
//产品名称
floatamount;
//产品数量
floatsales;
//销售量
floatstock;
//库存量
};
后面的一个顺序表则包含各钟产品的信息:
structproductpro[100]={
{0,"
0"
0,0,0},
{1,"
milk"
1000,123,877},
{2,"
bobo"
5000,444,4556},
{3,"
beer"
3000,888,2112},
{4,"
eggs"
4000,200,3800},
{5,"
bags"
2000,900,1100}};
//产品信息
4
2.3.函数定义
本程序定义了四个函数其源文件与功能如下:
5
2.4.界面设计
本程序主要是结构与函数的相关应用,利用switch语句从程序中一开始输出提示信息:
当用户输入某一个字符后,就相当于向计算机发了一条指令,程序就会有不同的输出结果。
例如输入一个字符“c”或“C”,就会出现如下界面:
程序每执行完一个指令后,都会输出一句“请输入后面括号中的某个字符(s/S,c/C,h/H=help,p/P,q/Q=exit)(每输完一个字符后按“回车”键):
”由此用户可以不断的让程序实现各种功能,直到用户不需要执行程序了,就输入p或Q结束程序;
并且输入h或H还有帮助的功能,充分显示了对用户的友好性。
实现该用户界面的程序代码如下:
while
(1)
请输入后面括号中的某个字符(s/S,c/C,h/H=help,p/P,q/Q=exit)"
(每输完一个字符后按“回车”键):
;
cin>
>
chSelect;
//输入一个字符
switch(chSelect)
case'
s'
:
S'
6
sortProductCode();
请输入要查找产品的代码:
x;
//输入要查找的代码
if(x<
0)
break;
Y=false;
searchProduct(x);
if(!
Y)//如果Y为错误的,则不存在该产品
您要的产品不存在!
c'
C'
displayProduct();
h'
H'
各字符的功能如下:
p/P:
按库存量排序."
c/C:
查看产品信息."
s/S:
查找产品."
h/H:
帮助."
q/Q:
退出."
p'
P'
sortProductStock();
q'
Q'
return0;
default:
输入错误!
7
2.5.编码
见附录A源代码
8
2.6.测试
测试图如下:
9
程序的模块组成:
10
3总结
在这次课程设计中,我做的是第一题:
设计一个简单的产品管理系统。
这个题目中涉及到的知识点有排序、查找、结构、函数,正是遇到了这些知识点的结合问题,菜发现自己对这些知识点掌握还不牢固,第一次遇到比较大型的程序还有点棘手。
经过一次全面复习,加深了对以上各知识点的理解,并基本上达到了课程设计的要求。
此程序的功能有很多个,因此先创建一个头文件,在加上几个子程序,分别放在不同的cpp文件中,在每个子程序中定义一个函数,分别实现查找、排序、输出等功能基本思路确定了,就开始实现每一步骤。
每个步骤在教科书上都偶遇些的代码,但是真正动手开始实现每一步骤是菜发现程序并没有想象的那么简单。
好不容易白所要程序代码写了出来,但是各个函数的调用有出了问题。
于是又仔细检查函数的定义、函数参数列表的使用方面。
终于在同学的帮助下,将程序完成了。
通过这次课程设计,我认识到了自身的许多不足,例如只注重书面理论而忽略了上机编程的运用过程,是得很多错误自己根本看不懂,更不知道怎么解决,只会盲目的调试。
还有一些错误完全是由于粗心导致的。
此外,程序在健壮性方面做的不好,若用户在一些关键步骤输入错误,程序就会自动结束或者输出一些乱码,这都是并不完善的,下次要注意。
这次我个人觉得程序的亮点是用户界面的友好性比以前大有提升,程序的注解也多了,这些都要好好保持。
11
参考文献
[1]钱能.C++程序设计教程[M].北京:
清华大学出版社,2005:
315-324,415-418,423.
[3]王挺.C++程序设计[M].北京:
清华大学出版社,2006.
12
附录A源代码:
//头文件
#ifndef_PRODUCT_H
#define_PRODUCT_H
#definet5
#endif
//主函数
#include<
iostream.h>
iomanip.h>
#include"
product.h"
boolY;
intmain()
intx,nCurrent=5;
charchSelect;
13
switch(chSelect)
sortProductCode();
14
return0;
//查找
else
//代码排序
voidsortProductCode()
inti,j;
for(i=1;
i<
=t-1;
i++)
for(j=i+1;
j<
j++)
15
if(pro[j].code<
pro[i].code)
producthold;
//交换
hold=pro[i];
pro[i]=pro[j];
pro[j]=hold;
//库存量排序
voidsortProductStock()
inta,b;
for(a=1;
a<
a++)
for(b=a+1;
b<
b++)
if(pro[b].stock<
pro[a].stock)
hold=pro[a];
pro[a]=pro[b];
pro[b]=hold;
//输出
16
c