c课程设计实验报告.doc
学 号 高级程序设计语言C+课程设计设计说明书天津城建大学医院药品管理信息系统起止日期: 201年 7 月 6日 至 201 年 7 月 17日学生姓名 班级 成绩指导教师(签字) 计算机与信息工程学院 201年 7月6日目 录1、设计目的12、总体设计13、详细设计:23.1、程序具体功能23.2、调试分析24、源程序和运行结果34.1、源程序34.2、运行结果164.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 Dateprivate: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 Drugpublic: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<<"tt"<<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 DrugSysprivate:Drug e1000;int m;/要输入数据的个数public:DrugSys();void menu();/显示菜单void input_all();/输入所有药品信息void output_all();/输出所有药品信息void modify_num();/修改指定药品IDint 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+)ei.input_Drug();void DrugSys:output_all()for(int i=0;i<m;i+)ei.output_Drug();void DrugSys:modify_num()/修改函数int i=search_num();if(i<m)int xnum;cout<<"请输入新的药品编号:"cin>>xnum;ei.set_num(xnum);ei.output_Drug();int DrugSys:search_name()/按姓名查询功能string searchname;cout<<"请输入要查找的药品名:"cin>>searchname;for(int i=0;i<m;i+)if(ei.get_name()=searchname)ei.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(ei.get_num()=searchnum)ei.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(ei.get_SCS()=searchSCS)ei.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;ei.set_allE(num,name,LB,SCS,JX,ZL,GG,year,month,day);in(); 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<<ei.get_num()<<" "<<ei.get_name()<<" "<<ei.get_LB()<<" "<<ei.get_SCS()<<" "<<ei.get_JX()<<" "outfile<<ei.get_ZL()<<" "<<ei.get_GG()<<" "<<ei.get_date().get_year()<<" "<<ei.get_date().get_month()<<" "<<ei.get_date().get_day()<<endl;out();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(ei.get_num()=d)cout<<"该药品的具体信息如下:"<<endl;ei.output_Drug();break;if(i>=m)cout<<"对不起,您所查找的药品不存在哦!"<<endl; for( i=0;i<m;i+)if(ei.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+)ei=ei+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(ej.get_num()<ek.get_num() k=j; t=ek; ek=ei; ei=t; cout<<" 排序结果如下所示:"<<endl;for( i=0;i<m;i+) ei.output_Drug();cout<<endl;if(choose='b') for(i=0;i<m-1;i+)k=i;for(j=i+1;j<m;j+)if(ej.get_num()>ek.get_num()k=j;t=ek; ek=ei;ei=t; cout<<" 排序结果如下所示: "<<endl;for( i=0;i<m;i+) ei.output_Drug();cout<<endl;int main()DrugSys em;em.op();return 0;4.2、运行结果系统首界面:项目信息录入功能:显示功能:修改功能:查询功能:排序功能:删除功能:4.3、心得体会 最开始的时候,知道有C+课设这个课,心里很烦躁千因为一个学期没有碰C+,都忘得差不多了,总觉得自己做不出来。当在看到老师给的例子时,心里觉得我怎么可能写的出来。但是我庆幸当时自己没有放弃。虽然在一开始的时候,确实很困难(自我觉得),很多C+用法都忘了,然后我就回头又重新看书,比如冒泡排序的写法,我就是重新看了书才能写出来的。在写的过程中我遇到很多不一样的大大小小的问题。有时候弄得自己很烦,但是解决问题之后,心里又是不可抑制的激动与兴奋。 现在觉得,还真庆幸有这样一个课设,让我又学到很多,不光是专业知识,更重要的是,我学到了:没有什么是不能做的,自己能不能行?只要做了之后,你就会有答案-那就是只要肯下功夫,即使达不到最好,做不到完美,但是能完成50%,那也是进步。