资源描述
学 号
高级程序设计语言C++课程设计
设计说明书
天津城建大学医院药品管理信息系统
起止日期: 201年 7 月 6日 至 201 年 7 月 17日
学生姓名
班级
成绩
指导教师(签字)
计算机与信息工程学院
201年 7月6日
高级程序设计语言C++课程设计
目 录
1、设计目的 1
2、总体设计 1
3、详细设计: 2
3.1、程序具体功能 2
3.2、调试分析 2
4、源程序和运行结果 3
4.1、源程序 3
4.2、运行结果 16
4.3、心得体会 24
天津城建大学医院药品管理信息系统
1、 设计目的
.通过实验实现对学生信息系统的管理操作;
.进一步掌握和利用C++进行程设计的能力;
.进一步理解和运用结构化程序设计的思想和方法;
.初步掌握开发一个小型实用系统的基本方法;
.学会利用流程图或N-S图表示算法;
.掌握书写程设计开发文档的能力(书写课程设计报告);
天津城建大学药品管理信息系统
2、 总体设计
按ID大 小给 药品 排序
保存药品信息
按ID删除药品信息
读取药品信息
按ID或 生产商 查询 药品 信 息
按ID修改药品信息
浏览药品信息
录入药品信息
3、详细设计:
3.1、程序具体功能:
① 、录入 (按照提示录入药品信息);
② 、浏览(选择操作,就可以浏览药品的具体信息);
③ 、修改(输入一个药品的ID号码,修改其编号);
④ 、查询 (按输入的ID号码或者根据生产商查询相应的药品信息);
⑤ 、读取(选择相应操作,对文件中的信息进行读取);
⑥ 、保存(选择相应操作保存文件中的信息);
⑦ 、删除(按照输入的ID号删除对应的ID的药品信息);
⑧ 、排序(选择相应的排序方式进行升序或降序);
3.2、调试分析
上机调试之前我们对所编的程序作了纸面上的检查,先改正一些不该犯错误,如{ }没有搭配完整,漏写 ,拼写错误等,这些都是我们通过认真的态度在运行之前可以解决、避免的。而且还可以减少机器时间。往往一连串的错误是由于漏写或写错一个字符引起的。
在上机调试过程中,对文件这一节的知识还不够熟悉,所以在解决输入输出流的过程中出了很多问题。
问题如下:
1. 文件进行保存否知道:
2. 文件读取功能实现不了,进行此操作无反应:
3. 项目的录入数量明明设置了为n,所以的操作都是以n作为条件进行,但是为什么输入超过两个的时候系统就发生了错误:
4. 对于修改功能,其他的信息都能够进行顺利的修改,但是选题类型修改后输出的还是之前的,而没有进行修改:
4、源程序和运行结果
4.1、源程序
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class Date
{
private:
int year,month,day;
public:
void display();
int get_year();//获取year值
int get_month();//获取month值
int get_day();//获取day值
void set_year();//设置year值
void set_month();//设置month值
void set_day();//设置day值
void set_all(int y,int m,int d);
};
void Date::set_all(int y,int m,int d)
{
year = y;
month = m;
day =d ;
}
void Date::display()
{
cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;
}
int Date::get_year()
{
return year;
}
int Date::get_month()
{
return month;
}
int Date::get_day()
{
return day;
}
void Date::set_year()
{
cout<<endl<<"年:";
cin>>year;
}
void Date::set_month()
{
cout<<"月:";
cin>>month;
}
void Date::set_day()
{
cout<<"日:";
cin>>day;
}
class Drug
{
public:
Drug();
Drug(int n,string na,string lb,string scs,string jx,float zl,string gg,Date d);//举个例子吧,某药品,0.2mg/支,10ml/支,10支/盒。那0.2mg就是规格。
//某药品,0.。1mg/粒,10支/盒。0.1mg就是规格。
~Drug();
void input_Drug();
void output_Drug();
int get_num();//获取药品编号
string get_name();
string get_LB();
string get_SCS();
string get_JX();
float get_ZL();
string get_GG();
void set_num(int xnum);//设置编号
Date get_date();
void set_allE(int n,string na,string lb,string scs,string jx,float zl,string gg,int year, int month,int day);
private:
int num;
string name;
string LB;//药品类别
string SCS;//生产商
string JX;//剂型
float ZL;//装量
string GG;//规格
Date date;//生产日期
};
string Drug::get_name()
{
return name;
}
int Drug::get_num()
{
return num;
}
Date Drug::get_date()
{
return date;
}
string Drug::get_LB()
{
return LB;
}
string Drug::get_JX()
{
return JX;
}
float Drug::get_ZL()
{
return ZL;
}
string Drug::get_GG()
{
return GG;
}
void Drug::set_allE(int n,string na,string lb,string scs,string jx,float zl,string gg,int year, int month,int day)
{
num=n;
name=na;
LB=lb;
SCS=scs;
JX=jx;
ZL=zl;
GG=gg;
date.set_all(year,month,day);
}
Drug::Drug()
{
num=0;
name=" ";
LB=" ";
SCS=" ";
JX=" ";
ZL=0;
GG=" ";
}
void Drug::input_Drug()
{
cout<<"药品编号:";
cin>>num;
cout<<"药名:";
cin>>name;
cout<<"类别:";
cin>>LB;
cout<<"生产商 :";
cin>>SCS;
cout<<"剂型 :";
cin>>JX;
cout<<"装量 :";
cin>>ZL;
cout<<"规格 :";
cin>>GG;
cout<<"生产日期 :";
date.set_year();
date.set_month();
date.set_day();
}
void Drug::output_Drug()
{
cout<<" 药品编号"<<"---"<<"药名"<<"----"<<"类别"<<"----"<<"生产商"<<"---"<<"剂型"<<"---"<<"装量"<<"----"<<"规格"<<"-----"<<"生产日期"<<endl;
cout<<" "<<num<<"\t\t"<<name<<"\t"<<LB<<"\t"<<SCS<<"\t"<<JX<<"\t"<<ZL<<"\t"<<GG<<"\t"<<date.get_year()<<'-'<<date.get_month()<<'-'<<date.get_day()<<endl;
}
string Drug::get_SCS()
{
return SCS;
}
void Drug::set_num(int xnum)
{
num=xnum;
}
Drug::Drug(int n,string na,string lb,string scs,string jx,float zl,string gg,Date d):num(n),name(na),LB(lb),JX(jx),ZL(zl),GG(gg),date(d){}
Drug::~Drug()
{
}
class DrugSys{
private:
Drug e[1000];
int m;//要输入数据的个数
public:
DrugSys();
void menu();//显示菜单
void input_all();//输入所有药品信息
void output_all();//输出所有药品信息
void modify_num();//修改指定药品ID
int search_num();
int search_name();//查找指定药品编号
int search_SCS();
void read_fromfile();
void save_tofile();
void op();//所有操作
void DrugSys::delete_Drug();//删除
void DrugSys::sort_ID_Drug(); //按ID进行排序
};
DrugSys::DrugSys()
{
}
void DrugSys::menu()
{ system("color F1");
cout<<endl;
cout<<" ********************************************"<<endl;
cout<<" * *"<<endl;
cout<<" * 欢迎进入天津城建大学药品信息管理系统 *"<<endl;
cout<<" * *"<<endl;
cout<<" ********************************************"<<endl;
cout<<endl;
cout<<" --------------------------------------------"<<endl;
cout<<" | 主菜单 |"<<endl;
cout<<" | |"<<endl;
cout<<" | |"<<endl;
cout<<" | 1、药品信息的录入 |"<<endl;
cout<<" | 2、药品信息的显示 |"<<endl;
cout<<" | 3、修改药品的ID信息 |"<<endl;
cout<<" | 4、通过快捷功能进行药品查询 |"<<endl;
cout<<" | 5、读取信息 |"<<endl;
cout<<" | 6、保存信息 |"<<endl;
cout<<" | 7、删除药品功能 |"<<endl;
cout<<" | 8、排序功能 |"<<endl;
cout<<" | 9、退出 |"<<endl;
cout<<" --------------------------------------------"<<endl;
cout<<endl<<endl<<endl;
}
void DrugSys::input_all()
{
cout<<"请输入需要录入的项目的数量(m):";
cin>>m;
for(int i=0;i<m;i++)
e[i].input_Drug();
}
void DrugSys::output_all()
{
for(int i=0;i<m;i++)
e[i].output_Drug();
}
void DrugSys::modify_num()//修改函数
{
int i=search_num();
if(i<m)
{
int xnum;
cout<<"请输入新的药品编号:";
cin>>xnum;
e[i].set_num(xnum);
e[i].output_Drug();
}
}
int DrugSys::search_name()//按姓名查询功能
{
string searchname;
cout<<"请输入要查找的药品名:";
cin>>searchname;
for(int i=0;i<m;i++)
{
if(e[i].get_name()==searchname)
{
e[i].output_Drug();
break;
}
}
if(i>=m)
cout<<"not find";
return i;
}
int DrugSys::search_num()//按ID查询功能
{
int searchnum;
cout<<"请输入要查找的药品ID:";
cin>>searchnum;
for(int i=0;i<m;i++)
{
if(e[i].get_num()==searchnum)
{
e[i].output_Drug();
break;
}
}
if(i>=m)
cout<<"not find";
return i;
}
int DrugSys::search_SCS()//按生产商查询功能
{
string searchSCS;
cout<<"请输入要查找的生产商:";
cin>>searchSCS;
for(int i=0;i<m;i++)
{
if(e[i].get_SCS()==searchSCS)
{
e[i].output_Drug();
break;
}
}
if(i>=m)
cout<<"not find";
return i;
}
void DrugSys::read_fromfile()//读取功能
{
int num;
string name;
string LB;//药品类别
string SCS;//生产商
string JX;//剂型
float ZL;//装量
string GG;//规格
int year,month,day;
ifstream infile("Drug.txt",ios::in);
if(!infile)
{
cerr<<"err!"<<endl;
exit(1);
}
infile>>m;
for(int i=0;i<m;i++)
{
infile>>num>>name>>LB>>SCS>>JX>>ZL>>GG>>year>>month>>day;
e[i].set_allE(num,name,LB,SCS,JX,ZL,GG,year,month,day);
}
infile.close();
DrugSys::output_all();
}
void DrugSys::save_tofile()//保存功能
{
ofstream outfile("Drug.txt",ios::out);
if(!outfile)
{
cerr<<"err!"<<endl;
exit(1);
}
outfile<<m<<endl;
for(int i=0;i<m;i++)
{
outfile<<e[i].get_num()<<" "<<e[i].get_name()<<" "<<e[i].get_LB()<<" "<<e[i].get_SCS()<<" "<<e[i].get_JX()<<" ";
outfile<<e[i].get_ZL()<<" "<<e[i].get_GG()<<" "<<e[i].get_date().get_year()<<" "<<
e[i].get_date().get_month()<<" "<<e[i].get_date().get_day()<<endl;
}
outfile.close();
}
void DrugSys::op()
{
while(1)
{
menu();
cout<<"请输入操作序号:";
int n;
int a;
cin>>n;
switch(n)
{
case 1:input_all();break;
case 2:output_all();break;
case 3:modify_num();break;
case 4: cout<<"1、通过药品名进行查询"<<endl;
cout<<"2、通过生产商进行查询"<<endl;
cout<<"请选择输入快捷查询的序号"<<endl;
cin>>a;
if(a==1)
{search_name();break;}
if(a==2)
{search_SCS();break;}
case 5:read_fromfile();break;
case 6:save_tofile();break;
case 7:DrugSys::delete_Drug();break;
case 8:DrugSys::sort_ID_Drug();break;
case 9:exit(0);break;
}
}
}
void DrugSys::delete_Drug() //删除功能
{
int d,i;char c;
cout<<"请输入需要删除的药品的ID:";
cin>>d;
for( i=0;i<m;i++)
{
if(e[i].get_num()==d)
{
cout<<"该药品的具体信息如下:"<<endl;
e[i].output_Drug();
break;
}
}
if(i>=m)
cout<<"对不起,您所查找的药品不存在哦!"<<endl;
for( i=0;i<m;i++)
{
if(e[i].get_num()==d)
{
cout<<" --------------------------------------------"<<endl;
cout<<" | 温馨提示:您确定真的需要删除该项目吗? |"<<endl;
cout<<" --------------------------------------------"<<endl;
cout<<" a.确定删除 "<<endl;
cout<<" b.取消删除 "<<endl;
cout<<"请选择:";
cin>>c;
if(c=='a')
{
for(d=i;d<m-1;d++)
{
e[i]=e[i+1];
}
m--;
cout<<"删除成功!"<<endl;
}
if(c=='b')
{exit(1);cout<<"现在将退出系统!";}
}
}
}
void DrugSys::sort_ID_Drug() //按ID进行排序
{
char choose;
cout<<"请选择:a-升序 b-降序"<<endl;
cin>>choose;
int j,i,k;
Drug t;
if(choose=='a')
{
for(i=0;i<m-1;i++)
{
k=i;
for(j=i+1;j<m;j++)
if(e[j].get_num()<e[k].get_num())
k=j;
t=e[k];
e[k]=e[i];
e[i]=t;
}
cout<<" 排序结果如下所示:"<<endl;
for( i=0;i<m;i++)
{
e[i].output_Drug();
}
cout<<endl;
}
if(choose=='b')
{
for(i=0;i<m-1;i++)
{
k=i;
for(j=i+1;j<m;j++)
if(e[j].get_num()>e[k].get_num())
k=j;
t=e[k];
e[k]=e[i];
e[i]=t;
}
cout<<" 排序结果如下所示: "<<endl;
for( i=0;i<m;i++)
{
e[i].output_Drug();
}
cout<<endl;
}
}
int main()
{
DrugSys em;
em.op();
return 0;
}
4.2、运行结果
系统首界面:
项目信息录入功能:
显示功能:
修改功能:
查询功能:
排序功能:
删除功能:
4.3、心得体会
最开始的时候,知道有C++课设这个课,心里很烦躁千因为一个学期没有碰C++,都忘得差不多了,总觉得自己做不出来。当在看到老师给的例子时,心里觉得我怎么可能写的出来。但是我庆幸当时自己没有放弃。
虽然在一开始的时候,确实很困难(自我觉得),很多C++用法都忘了,然后我就回头又重新看书,比如冒泡排序的写法,我就是重新看了书才能写出来的。在写的过程中我遇到很多不一样的大大小小的问题。有时候弄得自己很烦,但是解决问题之后,心里又是不可抑制的激动与兴奋。
现在觉得,还真庆幸有这样一个课设,让我又学到很多,不光是专业知识,更重要的是,我学到了:没有什么是不能做的,自己能不能行?只要做了之后,你就会有答案------那就是只要肯下功夫,即使达不到最好,做不到完美,但是能完成50%,那也是进步。
展开阅读全文