资源描述
实用文档
.
淮 海 工 学 院 计 算 机 工 程 学 院
课程设计报告
设计名称: C++程序设计课程设计
姓 名: 学 号:
专业班级:
系 (院):
设计时间:
设计地点:
成绩:
指导教师评语:
签名:
年 月 日
文案大全
实用文档
1、课程设计目的
C++程序设计课程设计是计算机科学与技术专业重要的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C++的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C++程序设计这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。
2、课程设计任务与要求:
本次课程设计利用《C++程序设计》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。
要求:
1、对系统进行功能需求分析
2、设计合理的数据结构和系统框架
3、编程简练,程序功能齐全,能正确运行
4、说明书、流程图要清楚
5、课题完成后必须按要求提交课程设计报告
任务:
设计一个商品销售管理系统。
运用C++语言描述商品类、供应商类。要求设计中综合运用C++基础知识,利用指针对商品、供应商链表进行处理,方便快捷的进行增删改,充分利用友元来处理两个类之间的关系,理解面向对象程序设计的核心的概念。
实现功能:
(1)建立商品类、供应商类
(2)商品、供应商信息的初始化
(3)商品信息的添加、修改、删除、 查找
(4)供应商信息的添加、修改、删除、查找
(5)商品信息、供应商信息的输出
备注:将商品、供应商保存为文件,能够写入与读出。
概要设计
(1) 需求分析:
要实现对商品,供应商信息的添加、修改、删除、查找,并输出信息,能够方便快捷,并有用户能详细清楚的操作指南。
(2)模块说明:本次程序设计中,需要设计10个模块,分别是添加、修改、删除、查找、输出商品信息和供应商信息,一共4个类:分别是商品类、商品数据类、供应商类、供应商数据类。通过几个switch语句实现用户选择功能。
主要函数流程图:
(3)详细设计
商品数据类的设计
class spData
{
private:
char name[100];
int count;
float iprice;
float oprice;
char gys[20];
public:
int id;
int getId()
char *getName()
int getCount()
float getBuy()
float getSale()
char *getGys()
void setId(int n)
void setName(char na[])
void setCount(int c)
void setBuy(float i)
void setSale(float o)
void setGys(char g[])
};
商品类的设计
class Commodity
{
private:
spData t[50];
int n;
public:
void newFile()
{
int id;
int n;
char name[50];
int count;
float iprice;
float oprice;
char gys[20];
if(n<0)
n=0;
int i;
spData temp;
for(;;n++)
{
cout<<"商品编号:";
cin>>id;
if(id==-1)
break;
t[n].setId(id);
cout<<"商品名:";
cin>>name;
t[n].setName(name);
cout<<"库存量:";
cin>>count;
t[n].setCount(count);
cout<<"进价:";
cin>>iprice;
t[n].setBuy(iprice);
cout<<"售价:";
cin>>oprice;
t[n].setSale(oprice);
cout<<"供应商:";
cin>>gys;
t[n].setGys(gys);
cout<<"若商品添加完毕,请按-1退出添加!"<<endl;
for(i=0;i<n;i++)
{
if(t[i].getId()>t[n].getId())
{
temp=t[i];
t[i]=t[n];
t[n]=temp;
}
}
}
}
void showData(int i)
{
spData t,*p;
p=&t;
cout<<p->getId()
<<setw(10)<<p->getName()
<<setw(10)<<p->getCount()
<<setw(8)<<p->getBuy()
<<setw(8)<<p->getSale()
<<setw(8)<<p->getGys()<<endl;
}
void showData()
{ int n;
cout<<"商品编号"
<<setw(8)<<"商品名"
<<setw(8)<<"库存量"
<<setw(10)<<"已售量"
<<setw(10)<<"进价"
<<setw(8)<<"售价"
<<setw(8)<<"供应商"<<endl;
for(int i=0;i<n;i++)
if(t[i].getCount()>0 )
showData(i);
cout<<"商品种类:"<<n<<endl;
}
void save()
{
ofstream fout;
fout.open("商品清单.txt",ios::app);
if(!fout)
{
cout<<"cannot open the file!"<<endl;
return ;
}
fout<<"商品编号"<<" "<<"商品名"<<" "<<"库存量"<<" "<<"进价"<<" "<<"售价"<<" "<<"供应商"<<" "<<endl;
for(int i=0;i<n;i++)
{
fout<<t[i].getId()<<setw(14)<<t[i].getName()<<setw(10)<<t[i].getCount()<<setw(10)<<t[i].getBuy()<<setw(10)<<t[i].getSale()<<setw(10)<<t[i].getGys()<<endl;
}
cout<<"*************Save Success!*****************"<<endl;
fout.close();
}
void xiugai()
{
int count;
char name[100];
float iprice;
float oprice;
char gys[20];
int temp;
temp=search();
if(temp==-1)
{
cout<<"cannot find the shopping!"<<endl;
return;
}
else{ cout<<"请输入新数据:"<<endl;
cout<<"商品名:";
cin>>name;
t[temp].setName(name);
cout<<"库存量:";
cin>>count;
t[temp].setCount(count);
cout<<"进价:";
cin>>iprice;
t[temp].setBuy(iprice);
cout<<"售价:";
cin>>oprice;
t[temp].setSale(oprice);
cout<<"供应商:";
cin>>gys;
t[temp].setGys(gys);
}
}
int search()
{ int id;
cout<<"id:";
cin>>id;
int low=0,mid,high=n-1;
while(low<=high)
{
mid=(low+high)/2;
if(t[mid].getId()==id)
return mid;
else if(t[mid].getId()>id)
high=mid-1;
else low=mid+1;
}
return -1;
}
void remove()
{ spData t[10];
cout<<"请输入要删除的商品编号"<<endl;
int id;
cin>>id;
fstream file("商品清单.txt",ios::in|ios::out|ios::binary);
for(int u=0;u<5;u++)
file.read((char*)&t[u],sizeof(t[u]));
for(int v=0;v<5;v++)
{
if(t[v].id==id)
continue;
else
file.write((char*)&t[v],sizeof(t[v]));
cout<<"该商品被删除"<<endl;
}
file.close();
}
};
供应商数据类的设计
class spData
{
private:
char name[100];
int count;
float iprice;
float oprice;
char gys[20];
public:
int id;
int getId()
char *getName(char na[])
int getCount()
float getBuy()
float getSale()
char *getGys()
void setId(int n)
void setName(char na[])
void setCount(int c)
void setBuy(float i)
void setSale(float o)
void setGys(char g[])
};
供应商类的设计
class gongyingshang
{
private:
gysData t[50];
int n;
public:
void newFile()
{ int id;
char name[50];
int phone;
if(n<0)
n=0;
for(;;n++)
{
cout<<"供应商编号:";
cin>>id;
if(id==-1)
break;
t[n].setid();
cout<<"供应商名称:";
t[n].setname(name);
cout<<"供应商电话:";
t[n].setphone( );
cout<<"若供应商添加完毕,请按-1退出添加!"<<endl;
}
}
void showData(int i)
{
gysData t,*p;
p=&t;
cout<<setw(8)<<p->getid()
<<setw(10)<<p->getname()
<<setw(10)<<p->getphone()
<<endl;
}
void showData()
{
cout<<setw(8)<<"供应商编号"
<<setw(8)<<"供应商名称"
<<setw(8)<<"供应商电话"
<<endl;
for(int i=0;i<n;i++)
showData(i);
cout<<"产品种类:"<<n<<endl;
}
void save()
{
ofstream fout;
fout.open("供应商.txt",ios::app);
if(!fout)
{
cout<<"cannot open the file!"<<endl;
return ;
}
fout<<"供应商编号"<<" "<<"供应商姓名"<<" "<<"供应商手机号"<<" "<<endl;
for(int i=0;i<n;i++)
{
fout<<t[i].getid()<<setw(10)<<t[i].getname()<<setw(14)<<t[i].getphone()<<endl;
}
cout<<"*************Save Success!*****************"<<endl;
fout.close();
}
int search()
{ int id;
cout<<"id:";
cin>>id;
int low=0,mid,high=n-1;
while(low<=high)
{
mid=(low+high)/2;
if(t[mid].getid()==id)
return mid;
else if(t[mid].getid()>id)
high=mid-1;
else low=mid+1;
}
return -1;
}
void xiugai()
{
char name[100];
int phone;
int temp;
temp=search();
if(temp==-1)
{
cout<<"cannot find the gys!"<<endl;
return;
}
else{ cout<<"请输入新数据:"<<endl;
cout<<"供应商名:";
cin>>name;
t[temp].setname(name);
cout<<"供应商手机号:";
cin>>phone;
t[temp].setphone();
}
}
void remove()
{ gysData g[10];
cout<<"请输入要删除的供应商编号"<<endl;
int id;
cin>>id;
fstream file("gys.txt",ios::in|ios::out|ios::binary);
for(int u=0;u<5;u++)
file.read((char*)&g[u],sizeof(g[u]));
for(int v=0;v<5;v++)
{
if(g[v].id==id)
continue;
else
file.write((char*)&g[v],sizeof(g[v]));
cout<<"该供应商被删除"<<endl;
}
file.close();
}
};
菜单函数的设计
inline void menu2()
{
system("cls");
cout<<" ******欢迎使用商品销售管理系统****** "<<endl;
cout<<" ***********商品选项********** "<<endl;
cout<<" (1)添加 "<<endl;
cout<<" (2)保存 "<<endl;
cout<<" (3)删除 "<<endl;
cout<<" (4)查找 "<<endl;
cout<<" (5)信息输出 "<<endl;
cout<<" (6)修改 "<<endl;
cout<<" (7)菜单 "<<endl;
cout<<" (0)退出系统 "<<endl;
cout<<" ***********2012.6*********** "<<endl;
}
inline void menu1()
{
system("cls");
cout<<" ******欢迎使用商品销售管理系统****** "<<endl;
cout<<" ***********主菜单********** "<<endl;
cout<<" (1)商品选项 "<<endl;
cout<<" (2)供应商选项 "<<endl;
cout<<" (0)退出系统 "<<endl;
cout<<" ***********2012.6************* "<<endl;
}
inline void menu3()
{
system("cls");
cout<<" ******欢迎使用商品销售管理系统****** "<<endl;
cout<<" ***********供应商选项********** "<<endl;
cout<<" (1)添加 "<<endl;
cout<<" (2)保存 "<<endl;
cout<<" (3)删除 "<<endl;
cout<<" (4)查找 "<<endl;
cout<<" (5)信息输出 "<<endl;
cout<<" (6)修改 "<<endl;
cout<<" (7)菜单 "<<endl;
cout<<" (0)退出系统 "<<endl;
cout<<" ***********2012.6*********** "<<endl;
}
主函数的设计:
int main()
{
menu1();
int x;
cout<<" 请选择:";
cin>>x;
switch(x)
{
case 1:
{
menu2();
Commodity com;
int c;
for(;;)
{
cout<<" 请选择:";
cin>>c;
switch(c)
{
case 1:com.newFile();break;
case 2:com.save();break;
case 3:com.remove();break;
case 4:com.search;break;
case 5:com.showData();break;
case 6:menu1();break;
case 0:{
cout<<" ***********谢谢使用********** "<<endl;
cout<<" *********!再见!********** "<<endl;
}
break;
}
}
}
case 2:
{
menu3();
gongyingshang gys;
int c;
for(;;)
{
cout<<" 请选择:";
cin>>c;
switch(c)
{
case 1:gys.newFile();break;
case 2:gys.save();break;
case 3:gys.remove();break;
case 4:gys.showData();break;
case 5:gys.search();break;
case 6:menu1();break;
case 0:{
cout<<" ***********谢谢使用********** "<<endl;
cout<<" *********!再见!********** "<<endl;
}
break;
}
}
}
case 0:{
cout<<" ***********谢谢使用********** "<<endl;
cout<<" *********!再见!********** "<<endl;
}
break;
}
return 0;
}
(4)调试分析:
F:\程序\3.cpp(226) : warning C4700: local variable 'n' used without having been initialized
F:\程序\3.cpp(246) : warning C4700: local variable 'c1' used without having been initialized
F:\程序\3.cpp(348) : warning C4700: local variable 'g1' used without having been initialized
C:\Documents and Settings\Administrator\桌面\q.cpp(237) : error C2562: 'search' : 'void' function returning a value
C:\Documents and Settings\Administrator\桌面\q.cpp(228) : see declaration of 'search'
C:\Documents and Settings\Administrator\桌面\q.cpp(243) : error C2562: 'search' : 'void' function returning a value
C:\Documents and Settings\Administrator\桌面\q.cpp(228) : see declaration of 'search’
(5)用户使用说明手册:
1.进入演示程序后,即显示对话形式的提示操作过程:
如第一个选择1 商品选项 ,即显示 (1)添加 (2)保存 (3)删除 (4)查找 (5)信息输出
(6)修改 (7)菜单 (0)退出系统
选择1,即显示商品编号、商品名、库存量、进价、售价、供应商各项商品信息,一次输入所添加的数据。添加完毕,按-1退出添加;
选择2,即将商品信息保存;
选择3,删除要删除的商品信息;
选择4,查找商品信息;
选择5,信息的输出;
选择6,修改信息
选择7,返回到菜单;
选择0,退出系统。
如第一个选择2,供应商选项 ,同样显示 (1)添加 (2)保存 (3)删除 (4)查找 (5)信息输出
(6)修改 (7)菜单 (0)退出系统
选择数据的功能跟上面一样。
第一个选择0 退出系统。
(6)测试数据
进入演示程序后,即显示对话形式的提示操作过程:
选择:1 商品选项
选择:1 添加商品
选择:2 保存信息
选择:3 删除信息
选择:4 查找信息
选择:5 信息输出
选择:6 修改
选择:0 退出系统
选择:2 供应商选项
供应商信息的各选项跟商品信息的选项一样。
4.课程设计成果
程序源代码
#include<iostream.h>
#include<fstream.h>
#include<string.h>
#include<iomanip.h>
#define Mfname 100
#include<conio.h>
#include<stdio.h>
#include<process.h>
#include<dos.h>
class spData
{
private:
char name[100];
int count;
float iprice;
float oprice;
char gys[20];
public:
int id;
int getId()
{
return id;
}
char *getName()
{
return name;
}
int getCount()
{
return count;
}
float getBuy()
{
return iprice;
}
float getSale()
{
return oprice;
}
char *getGys()
{
return gys;
}
void setId(int n)
{
id=n;
}
void setName(char na[])
{
strcpy(name,na);
}
void setCount(int c)
{
count=c;
}
void setBuy(float i)
{
iprice=i;
}
void setSale(float o)
{
oprice=o;
}
void setGys(char g[])
{
strcpy(gys,g);
}
};
class gysData
{
private:
char name[100];
int phone;
public:
int id;
int getid()
{
return id;
}
char *getname()
{
return name;
}
int getphone()
{
return phone;
}
void setid()
{
cin>>id;
}
void setname(char na[])
{
strcpy(name,na);
}
void setphone()
{
cin>>phone;
}
};
class Commodity
{
private:
spData t[50];
int n;
public:
void newFile()
{
int id;
int n;
char name[50];
int count;
float iprice;
float oprice;
char gys[20];
if(n<0)
n=0;
int i;
spData temp;
for(;;n++)
{
cout<<"商品编号:";
cin>>id;
if(id==-1)
break;
t[n].setId(id);
cout<<"商品名:";
cin>>name;
t[n].setName(name);
cout<<"库存量:";
cin>>count;
t[n].setCount(count);
cout<<"进价:";
cin>>iprice;
t[n].setBuy(iprice);
cout<<"售价:";
cin>>oprice;
t[n].setSale(oprice);
cout<<"供应商:";
cin>>gys;
t[n].setGys(gys);
cout<<"若商品添加完毕,请按-1退出添加!"<<endl;
for(i=0;i<n;i++)
{
if(t[i].getId()>t[n].getId())
{
temp=t[i];
t[i]=t[n];
t[n]=temp;
}
}
}
}
void showData(int i)
{
spData t,*p;
p=&t;
cout<<p->getId()
<<setw(10)<<p->getName()
<<setw(10)<<p->getCount()
<<setw(8)<<p->getBuy()
<<setw(8)<<p->getSale()
<<setw(8)<<p->getGys()<<endl;
}
void showData()
{ int n;
cout<<"商品编号"
<<setw(8)<<"商品名"
<<setw(8)<<"库存量"
<<setw(10)<<"已售量"
<<setw(10)<<"进价"
<<setw(8)<<"售价"
<<setw(8)<<"供应商"<<endl;
for(int i=0;i<n;i++)
展开阅读全文