软件编程实训
实训报告
一、 课程实训目的
二、 课程实训任务
三、公司职员的信息管理程序设计与实现
1. 系统需求
(1)功能结构图
本程序实现的功能是增加职员信息、查找职员信息、浏览所有的职员信息、删除职员信息。功能结构图如下图所示:
(2)需求说明
据公司职员信息管理的基本需求,本程序需要完成以下任务:
该程序在性能功能上应达到如下需求:
a. 实现增加职员信息、查找职员信息、浏览所有的职员信息、删除职员信息四个基本功能;
b. 用菜单实现对各个功能的选择;
c. 职员的职员号不可重复;
d. 员工信息可使用数组、链表存储,也可存储在文件中。
1. 系统需求
本程序实现的功能是增加职员信息、查找职员信息、浏览所有的职员信息、删除职员信息。功能结构图如下图所示:
该程序在性能功能上应达到如下需求:
a. 实现增加职员信息、查找职员信息、浏览所有的职员信息、删除职员信息四个基本功能;
b. 用菜单实现对各个功能的选择;
c. 职员的职员号不可重复;
d. 员工信息可使用数组、链表存储,也可存储在文件中。
2. 系统总体设计
(1)系统开发环境
操作系统:Windows XP
开发平台:Microsoft Visual Studio 20## (C++)
或者(Microsoft Visual C++ 6.0)
(2)系统总体设计
本系统共包含staff.h、staff.cpp、company.h、company.cpp和main.cpp五个源文件,其中staff.h是对Staff类的定义,staff.cpp为具体的成员函数的实现,company.h为对Company类的定义,company.cpp为对Compan类y成员函数的具体实现,main.cpp主要包含main()函数,实现了对功能菜单的选择和各个功能调用。
本系统共定义了两个类:员工类Staff和公司类Company。
员工类Staff包含员工姓名name、员工号no、部门名称department、工资salary和职位work共5个公有数据成员,包含一个无参构造函数Staff()和一个带参构造函数Staff(char * name1,char *no1,char *dep,double salary1,char*work1),具体定义如下:
class Staff
{
public:
Staff();
Staff(char * name1,char *no1,char *dep,double salary1,char*work1);
char name[16];
char no[6];
char department[16];
double salary;
char work[16];
};
公司类Company包含员工数count、指向员工信息的指针数组address和指向员工的指Sta三个公有数据成员,包含一个无参构造函数和一个析构函数,和四个公成员函数,分别为增加员工的AddStaff(char *name,char * no,char *dep,double salary,char *work)、删除员工的DeleteStaff(char *no)、查找员工的FindStaff(char * no)和显示所有员工信息的DisplayAll()。公司类Company的具体定义如下:
class Company
{
public:
Company();
~Company();
bool AddStaff(char *name,char * no,char *dep,double salary,char *work);
bool DeleteStaff(char *no);
bool FindStaff(char * no);
void DisplayAll();
private:
int count;
Staff *address[30];
Staff *Sta;
};
3. 系统详细设计
(1)界面菜单设计及实现
使用使用循环变量i和while循环实现了功能菜单的循环选择。用户选择功能按键1、2、3、4后,通过switch……case语句实现对用户选项的判断并进入具体功能的调用。。。。。。。
具体实现如下:
int i=1;
while(i)
{
cout<<endl<<endl;
cout<<"请选择您的操作:"<<endl<<endl;
cout<<" 1.增加职工信息"<<endl;
cout<<" 2.查找职工信息"<<endl;
cout<<" 3.显示所有职工信息"<<endl;
cout<<" 4.删除职工信息"<<endl;
cout<<" 0.退出"<<endl<<endl;
cout<<"请选择按键(0-4):";
cin>>i;
if(i>=0&&i<=4)
{
switch(i)
{
case 1:
cout<<"请顺次输入员工姓名、职工号、部门、工资和职位"<<endl;
cin>>name>>no>>department>>salary>>work;
c1.AddStaff(name,no,department,salary,work);
break;
case 2:
cout<<"请输入要查找的员工的员工号:";
cin>>no;
cout<<endl;
c1.FindStaff (no);
break;
case 3:
cout<<"所有职工信息如下:"<<endl;
c1.DisplayAll ();
break;
case 4:
cout<<"请输入要删除的员工的员工号:";
cin>>no;
cout<<endl;
c1.DeleteStaff(no);
break;
case 0:
break;
}
}
else
cout<<"按键有误,请重新输入!"<<endl;
}
}
四、XXX程序设计与实现
1. 系统需求
(1)功能结构图
(2)需求说明
2. 系统总体设计
(1)系统开发环境
(2)系统总体设计
3. 系统详细设计
(1)界面菜单设计及实现
(2)显示一年日历功能的设计及实现
(3)显示某一月日历功能的设计与实现
(4)显示某一天是星期几的实现
①. 程序主要实现3个功能,显示某一年的每个月的日历、显示某一年某一个月的日历以及查询某一天是星期几。
②. 功能选择用菜单实现。例如
1 显示某一年的日历
2 显示某年某一月的日历
3 显示某一天是星期几
0 退出
用户通过输入不同的数字进入不同的菜单。
③. 每一月以日历表格的形式显示 表格的第一行显示星期 表格的内容是每一天。
用户可以很容易看到每一天是星期几。
④. 利用输入输出函数和循环控制语句 实现一个简单的人机交互界面。
⑤. 利用逻辑表达式 使用控制语句 判断闰年 某年某月某日是星期几。 实现对显示结果进行控制
2. 系统总体设计
1 系统开发环境
操作系统 Windows XP
开发平台 Microsoft Visual Studio 20## (C++)
2 系统总体设计
总体设计主要就是一个main函数 附加几个fn1、dayofmonth、fn2、fn3等成员函数。Main函数中 运用while、switch函数实现的程序的界面循环。 函数fn1中含有year、month、day3个成员变量 实现了某年的第N天是星期几的程序。函数dayofmonth中含有year、month2个成员变量 实现了判断闰年 并且反应出一年12个月每月的天数。函数fn2中含有year、month2个成员变量 实现了日历的排版功能 把日历和星期结合起来。函数fn3中含有year1个成员变量 调用了函数fn2实现了查询某年某月的日历功能。
3. 系统详细设计
1 界面菜单设计及实现
cout<<"--------------------------------------"<<endl<<endl; cout<<" 欢迎进入万年历查询系统 "<<endl<<endl; cout<<"--------------------------------------"<<endl; loop:cout<<endl<<endl;//用的goto函数 最好用while
cout<<"请您选择查询内容:"<<endl<<endl;
cout<<" 1.显示一年的日历"<<endl;
cout<<" 2.显示一个月的日历"<<endl;
cout<<" 3.显示某一天是星期几"<<endl;
cout<<" 0.退出:"<<endl;
cout<<endl;
cout<<"请选择按键 "<<endl;
cin>>i;
switch(i)
{
case 0: return;
case 1:
{
cout<<"请输入年份 ";
cin>>year;
cout<<endl;
cout<<year<<"年的每月日历如下 "<<endl;
fn3(year);
break;
}
case 2:
{
cout<<"请输入年份和要查询的月份 ";
cin>>year>>month;
cout<<year<<"年"<<month<<"月的日历如下 "<<endl; fn2(year,month);
break;
}
case 3:
{
cout<<请顺次输入要查询的年月日";
cin>>year>>month>>day;
cout<<year<<"年"<<month<<"月"<<day<<"日"<<"是星期"<<fn1(year,month,day)<<endl
break;
}
default:cout<<"输入错误"<<endl;
}
cout<<"继续查询请输1 "<<endl<<"退出查询请输0"<<endl;
cin>>x;
if(x==1)
goto loop;
}
2 显示一年日历功能的设计及实现
cout<<setw(6)<<"日"<<setw(6)<<"一"<<setw(6)<<"二"<<setw(6)<<"三"<<setw(6)<<"四"<<setw(6)<<"五"<<setw(6)<<"六"<<endl;
for(int i=1;i<=dayofmonth(year,month);i++)
{
if(i==1)
{
for(intj=1;j<fn1(year,month,1);j++)
{
cout<<setw(6)<<" ";
}
cout<<setw(6)<<i;
}
else
{
if((i+fn1(year,month,1)-2)%7==0)
cout<<endl;
cout<<setw(6)<<i;
}
}
3 显示某一月日历功能的设计与实现
for(int i=1;i<=12;i++)
{
cout<<endl<<endl;
cout<<i<<"月的日历如下 "<<endl;
fn2(year,i);
cout<<endl;
}
4 显示某一天是星期几的实现
cout<<"请顺次输入要查询的年月日"; cin>>year>>month>>day;
cout<<year<<"年"<<month<<"月"<<day<<"日"<<"是星期"<<fn1(year,month,day)<<endl
五、 课程实训小结
在这次的软件编程实训,我学到了很多东西,也开始感受到其中的乐趣 经过2周的实训,自己的动手能力得到了很大的提高。 编程的确是一件磨时间的事,我必须要几个小时一直面对电脑 打着代码。如果能顺利完成一个程序的编写,几个小时过得很快。但是当我遇到一个不知怎么下手的题目或者是编译时遇到一大堆错误时,我会越编译越烦躁。可俗话说努力了总会有成果,付出了总会有回报,事实也是如此,现在的我编写代码能力比以前有了很大的进步,我开始对C++有了我自己的理解。
前言
随着现代信息技术的飞速发展,计算机技术已经深入到各个领域,成为各行各业必不可少的工具。计算机作为一种高效的管理工具,对现代企业的管理发挥了极其重要的作用。商业超市是当前最重要的商业经营形式之一,为了进一步提高商业超市的管理水平和竞争力,管理信息系统在商业超市中的应用已是大势所趋。随着小超市规模的发展不断扩大,商品数量急剧增加,有关商品的各种信息量也成倍增长。超市在时时刻刻需要对商品各种信息进行统计分析,而大型的超市管理系统功能过于强大而造成操作繁琐降低了小超市的工作效率。
超市管理系统是市场上最流行的超市上常用的系统之一,它主要包含以下几个模块:系统权限的设定、原始数据录入、数据的汇总及查询等。从而,实现对进货、库存、销售及员工信息等实现全面、动态、及时的管理。
本文系统的分析了软件开发的背景以过程;首先介绍了软件的开发环境,其次介绍了本软件的详细设计过程:数据库的设计、各个模块的设计和实现,以及具体界面的设计和功能。最后对在本软件开发过程中的问题进行了总结。
关键词:进销存管理系统;查询;数据库
摘要
在本超市管理系统项目的前一阶段,也就是需求分析阶段中,已经将系统用户对本系统的需求做了详细的阐述,这些用户需求已经在上一阶段中对一些中小型超市的实地调研中获得,并在需求规格说明书中得到详尽得叙述及阐明。本阶段已在系统的需求分析的基础上,对超市管理系统做概要设计。从该阶段开发正式进入软件的实际开发阶段,本阶段完成系统的大致设计并明确系统的数据结构与软件结构。在软件设计阶段主要是把一个软件需求转化为软件表示的过程,这种表示只是描绘出软件的总的概貌。本概要设计说明书的目的就是进一步细化软件设计阶段得出的软件总体概貌,把它加工成在程序细节上非常接近于源程序的软件表示。
系统规划与分析
(1)、零售前台(POS)管理系统,本系统必须具有以下功能:
? 商品录入:根据超巿业务特点制定相关功能,可以通过输入唯一编号、扫描条形码、商品名称等来实现精确或模糊的商品扫描录入。该扫描录入方法可以充分保证各种电脑操作水平层次的人员均能准确快速地进行商品扫描录入。
? 收银业务:通过扫描条形码或者直接输入商品名称(对于同类多件商品采用一次录入加数量的方式)自动计算本次交易的总金额。在顾客付款后,自动计算找零,同时打印交易清单(包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、交易的时间、负责本次收银的员工号)。如果顾客是本店会员并持有本人会员卡,则在交易前先扫描会员卡,并对所购物品全部实行95折优惠,并将所购物品的总金额累计到该会员的总消费金额中。 会员卡的有效期限为一年,满一年未续卡者,该会员卡将被注销。
? 安全性:OS登陆、退出、换班与操作锁定等权限验证保护;断电自动保护最大限度防止意外及恶意非法操作。
? 独立作业:有的断网收银即在网络服务器断开或网络不通的情况下,收银机仍能正常作业
(2)、后台管理系统,本系统必须具备以下功能
? 进货管理: 根据销售情况及库存情况,自动制定进货计划(亦可手工制定修改),可以避免盲目进货造成商品积压。 按计划单有选择性地进行自动入库登记。 综合查询打印计划进货与入库记录及金额。
? 销售管理: 商品正常销售、促销与限量、限期及禁止销售控制。 综合查询各种销售明细记录、各地收银员收银记录以及交结账情况等。 按多种方式统计生成销售排行榜,灵活察看和打印商品销售日、月、年报表。
? 库存管理: 综合查询库存明细记录。 库存状态自动告警提示。如库存过剩、少货、缺货等。软件为您预警,避免库存商品积压损失和缺货。 库存自动盘点计算。
? 人员管理: 员工、会员、供货商、厂商等基本信息登记管理。 员工操作权限管理。 客户销售权限管理。
(3)系统结构
系统总体结构
模块子系统结构
功能描述:商品录入子系统要求能快速录入商品,因此必须支持条形码扫描。
功能描述:收银业务子系统能计算交易总额,打印交易清单,并根据会员卡打折。
功能描述:进货管理子系统可以根据库存自动指定进货计划,进货时自动等级,以及提供查询和打印计划进货与入库记录的功能。
功能描述:销售管理子系统可以控制某商品是否允许销售,查询每种商品的销售情况并产生年、月、日报表,同时可以生成销售排行榜。
功能描述:库存管理子系统提供查询库存明细记录的基本功能,并根据库存的状态报警,以及自动盘点计算。
功能描述:人员管理子系统提供基本信息登记管理,员工操作权限管理,客户销售权限管理的功能。
3.技术可行性分析
3.1系统简要描述
新系统在原有系统的基础上加入了新的数据库的支持,使用了先进的数据库技术与数据管理技术,使数据的准确性与安全性得到了很大的提高,且在用户的并行操作与用户管理方面也有了极大地改善。
经济可行性研究
设备费:本系统所需的硬件设备费用为2万元。
不可预见费: 80000×15%=12000元
人员费用:本系统开发期为三个月,试运行一周。开发期需要开发人员4人,试运行期需要开发人员2人。人员费用为6万元。(4×4500×3+2×2000=6万元)
系统维护费:需要1人/年进行系统维护,维护费为1.5万元(如当年系统无故障,则不需支付维护费用)
设备维护费:设备更新费为5万元。设备维护费为2万元。
消耗材料费:每年按1万元计算。
出售系统的适用权的收入:100000元。
每月的销售收入20000元。
功能要求
主要完成的功能有:系统设置、商品供应商信息管理、员工档案管理、商品信息管理、商品入库管理、销售管理、销售数据查询,以及这一系列过程中涉及商品的数据修改与查询统计等多种操作
功能:本模块的主要功能是商品信息的查询和更新,库存信息的查询和更新。
查询商品信息:主要功能查询商品的明细信息,和它的库存信息。
添加商品信息:主要功能添加新进的商品。
修改商品信息:主要功能是修改商品的信息,包括他的库存数量。
删除商品信息:主要功能是删除不再销售的商品信息。
输入项、输出项:本模块的数据输入项主要是商品编号。
1)系统设置
(1) 添加删除用户:只限于管理员操作。管理员可以向里面添加和删除用户信息,也可修改用户密码。
(2) 退出登录:返回到登录界面,重新登录.
2)商品供应商信息管理
(1) 供应商信息的录入;
(2) 供应商信息的修改;
(3) 供应商信息的删除;
(4) 供应商信息的查询;
3)员工档案管理
实现员工档案的添加、删除、修改、查询的功能 。
4)商品信息管理
(1) 商品信息的录入。对商品的基本信息进行录入并保存。
(2) 商品信息的修改:在有商品进入时,修改商品的基本信息,更新商品的信息,使商品信息始终是最新的商品信息。
(3) 商品信息的删除:当商品没货时,又不准备再进相同的货时,可以将该商品的信息删除,保证信息库中无冗余的数据。
5)商品入库管理
及时录入商品的入库信息,保证每种商品再入库信息种都有登记,做到商品的实际的量、种类和记录的量和种类相匹配。
6)销售管理及销售数据查询
数据流图
顶层数据流图
为了保证系统能够长期、安全、稳定、可靠、高效的运行,小型超市管理系统应该满足以下的性能需求:
1. 系统处理的准确性和及时性
系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足企业对信息处理的需求。
2. 系统的易用性和易维护性
小型超市管理系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。
小型超市管理系统中涉及到的数据是超市相当重要的信息,系统要提供方便的手段供系统维护人员进行数据的备份,日常的安全管理,系统意外崩溃时数据的恢复等工作。
3.系统的标准性
系统在设计开发使用过程中都要涉及到很多计算机硬件、软件。所有这些都要符合主流国际、国家和行业标准。例如在开发中使用的操作系统、网络系统、开发工具都必须符合通用标准。如规范的数据库操纵界面、作为业界标准的TCP/IP网络协议及ISO9002标准所要求的质量规范等;同时,在自主开发本系统时,要进行良好的设计工作,制订行之有效的软件工程规范,保证代码的易读性、可操作性和可移植性。
4.系统的响应速度
小型超市管理系统在日常处理中的响应速度为秒级,达到实时要求,以及时
反馈信息。在进行统计分析时,根据所需数据量的不同而从秒级到分钟级,
原则是保证操作人员不会因为速度问题而影响工作效率。
超市管理系统的数据需求
超市管理系统的数据需求包括如下几点:
1. 数据录入和处理的准确性和实时性
数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而使系统的工作失去意义。数据的输入来源是手工输入。手工输入要通过系统界面上的安排系统具有容错性,并且对操作人员要进行系统的培训。
在系统中,数据的输入往往是大量的,因此系统要有一定的处理能力,以保证迅速的处理数据。
2. 数据的一致性与完整性
由于超市产品销售管理的系统化、规范化、网络化和自动化,实现对商品入库和销售信息的集中统一的管理,所以如何保证这些数据的一致性,是系统必须解决的问题。要解决这一问题,要有一定的人员维护数据的一致性,在数据录入处控制数据的去向,并且要求对数据库的数据完整性进行严格的约束。
对于输入的数据,要为其定义完整性规则,如果不能符合完整性约束,系统应该拒绝该数据。
3. 数据的共享与独立性
整个超市管理系统的数据是共享的。然而,从系统开发的角度上看,共享会给设计和调试带来困难。因此,应该提供灵活的配置,使各个分系统能够独立运行,而通过人工干预的手段进行系统数据的交换。这样,也能提供系统的强壮性。
数据字典
1、数据流条目
(1)进货信息=进货单号+供应商号+商品号+进货价+进货数量+进货日期+进货员工
(2)销售信息=销售单号+供应商号+商品编号+销售数量+销售日期
2、文件条目
(1)文件名:职工清单
组成:{职工编号+姓名+性别+联系电话+联系地址+邮箱地址}
组织:按职工编号递增排列
(2)文件名:商品清单
组成:{商品编号+供应商+商品名称+批号+批准文号+计量单位+产地+单价+备注}
组织:按商品编号递增排列
(3)文件名:供货商清单
组成:{供货商号+名称+联系人+联系电话+联系地址+邮政地址+开户银行+邮箱地址+银行帐号+备注}
组织:按供货商编号递增排列
(3)文件名:进货清单
组成:{进货单号+商品编号+供货商号+进货价+数量+金额+进货日期+备注}
组织:按进货单编号递增排列
(4)文件名:销售清单
组成:{销售单号+商品编号+销售数量+销售日期}
组织:按销售单编号递增排列
(5)文件名:库存清单
组成:{商品编号+库存数量}
组织:按商品编号递增排列
3、加工说明
(1)加工名:1:查询
加工逻辑:根据要查询的库存信息,检索出库存信息明细表
输入流:库存信息查询,发出库存信息请求
输出流:库存信息清单,进货信息请求
(2)加工名:1:更新
根据进货信息或销售信息更新库存信息
输入流:已进货信息,销售信息
输出流:发出库存检索请求
(3)加工名:2:查询
根据要查询的销售信息,检索出销售信息明细表
输入流:销售信息查询
输出流:销售清单,销售单
(4)加工名:2:更新
加工逻辑:根据销售信息更细销售清单
输入流:前台销售信息,库存信息
输出流:更新库存清单
实习报告西安文理学院软件学院10级软件工程一班张兴华学号141xxxxxxxx实习报告一、实习目的根据所学课程的理论知识,结合企业…
软件工程实训报告专业班级姓名学号指导老师实训时间实训地点成绩软件技术软件3071胡少平20xx20xx1第19周学院机房7502软…
辽宁工程技术大学本科生实习报告书教学单位软件学院专业软件工程(财升本)班级10-01班学生姓名**学号**指导教师**一、实习目的…
软件助理工程师岗位的实习报告姓名:专业班级:10级软件技术(英语)实习单位:埃森哲信息技术(大连)有限公司指导教师:完成日期:20…
软件工程专业实习报告姓名沈亚枫学号0810750081专业软件工程班级软件0801指导老师李春林海南大学三亚学院20xx910目录…
C语言程序设计实训总结为加强学生的实践动手能力,为贯彻落实教学计划的要求,培养学生的专业实践技能,计算机系05级计算机网络工程与管…
C语言程序设计实训总结李爱强通过此次实训,同学们能够利用C语言面向过程的编程思想来完成系统的设计,熟练掌握C语言的基本知识和技能;…
设计题目及要求设计题目及要求设计题目及要求设计题目及要求1.综合应用实例——学生成绩管理编写一个菜单驱动的学生成绩管理程序。实现如…
实训总结转眼间为期2周的数控加工与编程实训已经结束了,经过2周的实训让我学到了许多知识,回想实训这几天我确实有很大的收获。在指导老…
河北科技师范学院欧美学院实习类型教学实习实习单位河北科技师范学院欧美学院实习起止时间年月年日指导教师刘正林所在院(系)信息技术系专…