北华大学 电气信息工程学院 《C++程序设计实习》报告
课题名称:1、门诊挂号管理系统 2、成绩查询管理系统
专业班级:通信09-1 学 号:200926030122 姓 名:索明
时 间:2011.11.7-2011.11.18
1
一、 课程设计目的
了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程,加深对C++的理解与Visual C++环境 的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。
二、
设计题目
题目1门诊挂号管理系统
1. 需求分析
旨在开发一个统一的医院信息管理平台,利用信息化手段辅助医院管理,达到提升医院信息化管理水平的目的。医院管理人员能够更方便的进行管理工作,包括患者信息管理、医师信息管理、医院信息管理、收费信息管理等。患者用户能够利用该系统进行信息查询、挂号;医师则能够更方便的获取患者信息;医院可以更方便的对患者和本院医师的信息进行管理。 2.
设计思路
1.) 系统模块图
1
输入个人信息定及确定挂号单编门诊挂号管理系统 统计普通门诊与专家门诊的人数 统计各科室人数及总收入 统计各个科室中各个年龄段人数 查询病人信息
2.)系统采用的关键(难点)技术
a.病人个人信息类 #define PERSON_H
//定义一个病人个人信息类 class person {
public:
//输入个人信息及确定挂号单编号 void input();
//统计普通门诊与专家门诊的人数 void output(); //统计各科人数 void count();
//统计内科科室中各诊室的人数 void roomall(); //查询病人信息 void chaxun();
3. 程序说明
使用面向对象的程序设计进行分析,整个系统涉及两大类可操作,仓库、商品。所以系统主要涉及两大类:仓库类、商品类。系统框架就是仓库类和商品类的定义;主函数中定义一个仓库对象,循环显示主菜单并根据用户选择调用仓库类的相应方法(成员函数)。
考虑系统操作的货物信息具有不确定性,所以考虑使用链表保存、处理货物信息。仓库类包含:所有货物信息的一个不带头结点的链表及可以对货物信息进行增,改,删除,查询,数量设置,数据存盘
1
等操作的相关模块为成员函数。所有货物都具有的公共信息及操作可以使用仓库类进行描述。由于系统具有3类货物且3类货物信息数据,操作基本相同,所以可以为他们创立相同的类,并且采用继承和派生。
1
4. 测试运行的结果
1.) 商场库存货物管理系统首页
2).商品入库
1
3).商品查询
4).按商品名查询
5).按商品价格查询
1
6).按商品大类查询
7).商品报损
题目2 小型公司工资管理系统的设计
1. 需求分析
小型公司有经理、技术员、销售员以及销售经理等四类员工。 该系统可对各个员工的各种情况(包括名字、年龄、性别、职工号、工资状况、工作时间、销售额)进行输入。然后可以输出。
1
可以按姓名或职工号对员工基本信息进行查询。
系统可以对销售经理下属的销售员的各种情况进行统计,并可以对销售经理按销售总额由高到低进行排序。 系统可以对各类员工的各种情况进行统计。 系统可以将员工所有的基本信息进行保存备份。
1
2. 设计思路
首先,创建了一个Employer基类.然后派生出四个类: Manager、Technician、Seller、Salemanager.在基类定义了四个虚函数用于对派生类所有数据进行输入、输出、统计、打印、排序、查询等。
其次,在总体结构上,建立一级菜单,用于选择各种功能. 数据输入:输入员工的各种数据.
数据统计:将员工的总数据进行对比排序,然后输出. 数据打印:显示输入的各种数据. 数据备份:对输入的数据进行保存备份. 信息检索:对员工的信息进行检索并输出。 退出程序:执行退出程序命令. 3. 程序说明
此系统是面向小型公司的工资管理系统,可用于有四个经理、四个技术员、四个销售经理及下属的十六个销售员的工资管理。此系统含有多级菜单,一级菜单共包括六个控件。
控件一:信息输入,按“1”并按回车键进入下级菜单,二级菜单包括五个控件,可以分别对经理、技术员、销售员、销售经理的姓名、性别、职工号、年龄、工资等基本信息进行输入,可根据屏幕的提示进行相关信息的输入。
控件二:信息统计,按“2”并按回车键,直接对每个销售经理下属的四位销售员的姓名、性别、职工号、年龄、工资等基本信息进行统计,并对四位销售经理按工资又高到低排序并输出。
1
程序设计实习报告
控件三:数据打印,按“3”并按回车键进入下一级菜单,此时可分别选择对经理、技术员、销售员和销售经理的职工号、姓名、性别、年龄、工资等信息进行打印,按“5”并按回车返回主菜单。
控件四:数据备份,按“4”并按回车可直接将所有员工的基本信息保存到c盘下“公司员工基本信息.txt”文件中。
控件五:员工信息检索,按“5”并按回车进入下级菜单,此时可选择按职工号或按姓名检索。按“3”返回上一级菜单。
控件六:结束程序。 4. 运行结果
1
程序设计实习报告
1
程序设计实习报告
0
程序设计实习报告
1
程序设计实习报告
2
程序设计实习报告
三、 心得体会
四、 附录A商场库存货物管理系统程序代码清单
//main.cpp
#include //仓库管理员类 class admin { public: admin(); private: string name; }; //仓库货架类 class shelf { public: shelf(); private: admin men;//管理员 string storeNo;//仓库编号 string kinds;//商品大类 string shelfNo;//货架号 }; //electrical class class ele { public: ele(); private: string name;//商品名 double price;//介格 shelf sh;//所属货架 long count;//商品数量 }; //管理(组合类) class mana { public: mana(); char first_face();//首页 void in_storage();//入库 void out_storage();// 出库 void select_ele();//查询 void select_name();//按商品名称查询void select_price();//按商品价格查询 void select_kind();//按大类查询 void call_break();//商品报损 3 程序设计实习报告 private: ele aele; shelf ashelf; admin abs; }; //电器类默认构造函数 ele::ele():sh() { name = \"xxx\";//商品名 price = 0.0;//介格 count = 0;//商品数量 } // //仓库货架类默认构造函数 shelf::shelf():men() { storeNo = \"xxx\";//仓库编号 kinds = \"xxx\";//商品大类 shelfNo = \"xxx\";;//货架号 } //仓库管理员类 admin::admin() { name = \"xxx\"; } //管理类默认构造函数 mana::mana():aele(), ashelf(), abs() { } char mana::first_face() { system(\"cls\"); cout << endl; cout < 4 程序设计实习报告 //入库 void mana::in_storage() { system(\"cls\"); string name;//商品名 double price;//介格 string storeNo;//仓库编号 string kinds;//商品大类 string shelfNo;//货架号 long count = 0; //商品数量 cout << endl << \"商品入库,请输入相关信息 : \" << endl << endl ; cout << \"\商品名称 : \"; cin >> name; cout << endl << \"\商品介格 : \"; cin >> price; cout << endl << \"\商品数量 : \"; cin >> count; cout << endl << \"\仓库编号 : \"; cin >> storeNo; cout << endl << \"\商品大类 : \"; cin >> kinds; cout << endl << \"\货架编号 : \" ; cin >> shelfNo; ofstream storeFile(\"store.txt\ storeFile << setiosflags(ios::left) << setw(20) << name << \" \" << setw(15) << price << \" \" << setw(10) << count << \" \" << setw(10) << storeNo << \" \" << setw(20) << kinds << \" \" << shelfNo << endl; storeFile.close(); cout << endl << endl << \"\该商品已经入库.......\" << endl << endl << \"\\"; system(\"pause\"); } // 出库 void mana::out_storage() { system(\"cls\"); string name;//商品名 cout << endl << \"\商品出库,输入出库商品信息 : \" << endl << endl; cout << \"\商品名称 : \"; cin >> name; ifstream storeFile(\"store.txt\"); if (!storeFile) { ofstream storeFile1(\"store.txt\"); storeFile1.close(); cout << endl << endl << \"\仓存为空!!!!\" << endl << endl << \"\\"; system(\"pause\"); return; } bool flag = false; 5 程序设计实习报告 string name1;//商品名 double price1;//介格 string storeNo1;//仓库编号 string kinds1;//商品大类 string shelfNo1;//货架号 long count1 = 0; //商品数量 ofstream tempFile(\"temp.txt\"); while (storeFile >> name1 >> price1 >> count1 >> storeNo1 >> kinds1 >> shelfNo1) { if (name1==name) flag = true; else { tempFile << setiosflags(ios::left) << setw(20) << name1 << \" \" << setw(15) << price1 << \" \" << setw(10) << count1 << \" \" << setw(10) << storeNo1 << \" \" << setw(20) << kinds1 << \" \" << shelfNo1 << endl; } } tempFile.close(); storeFile.close(); if (!flag) { cout << endl << endl << \"\仓库中没有这种商品!!!\" << endl << endl << \"\\"; system(\"pause\"); return; } ofstream storeFile1(\"store.txt\"); ifstream tempFile1(\"temp.txt\"); storeFile1 << tempFile1.rdbuf(); storeFile1.close(); tempFile1.close(); cout << endl << \"\这些商品已经出库, 请仔细检查!!!\" << endl << endl << \"\\"; system(\"pause\"); } //查询 void mana::select_ele() { while (1) { system(\"cls\"); cout << endl << endl; cout << \"\=============================================================\" << endl << \"\|| ||\" << endl << \"\|| 商 品 查 询 ||\" << endl << \"\|| ||\" << endl << \"\|| 1. 按商品名称查询 ||\" << endl << \"\|| ||\" << endl << \"\|| 2. 按商品价格查询 ||\" << endl << \"\|| ||\" << endl 6 程序设计实习报告 << \"\|| 3. 按大类查询 ||\" << endl << \"\|| ||\" << endl << \"\|| 4. 返回 ||\" << endl << \"\|| ||\" << endl << \"\=============================================================\" << endl << endl << \"\\\"; char select = getch(); switch (select) { case '1': select_name(); break; case '2': select_price(); break; case '3': select_kind(); break; case '4': return; default: break; } } } //按商品名称查询 void mana::select_name() { system(\"cls\"); cout << endl << \"\按商品名查询 : \" << endl << endl ; cout << \"\输入商品名 : \"; string name; cin >> name; string name1;//商品名 double price1;//介格 string storeNo1;//仓库编号 string kinds1;//商品大类 string shelfNo1;//货架号 long count1 = 0; //商品数量 ifstream storeFile(\"store.txt\"); if (!storeFile) { cout << endl << endl << \"\对不起,你的库存为空!!!\" << endl << endl << \"\\"; system(\"pause\"); return; } bool flag = false; cout << endl << \"商品名 \" << \"介格 \" << \"商品数量 \" << \"仓库编号 \" << \"商品大类 \" << \"货架号\" << endl << endl; while (storeFile >> name1 >> price1 >> count1 >> storeNo1 >> kinds1 >> shelfNo1) { if (name1 == name) { 7 程序设计实习报告 flag = true; cout << setiosflags(ios::left) << setw(15) << name1 << \" \" << setw(10) << price1 << \" \" << setw(10) << count1 << \" \" << setw(10) << storeNo1 << \" \" << setw(15) << kinds1 << \" \" << shelfNo1 << endl; } } storeFile.close(); if (!flag) cout << endl << endl << \"对不起,库存中没有这种商品!!!\"; cout << endl << endl; system(\"pause\"); } //按商品价格查询 void mana::select_price() { system(\"cls\"); cout << endl << \"\按商品价格查询 : \" << endl << endl ; cout << \"\输入价格 : \"; double price; cin >> price; string name1;//商品名 double price1;//介格 string storeNo1;//仓库编号 string kinds1;//商品大类 string shelfNo1;//货架号 long count1 = 0; //商品数量 ifstream storeFile(\"store.txt\"); if (!storeFile) { cout << endl << endl << \"\对不起,你的库存为空!!!\" << endl << endl << \"\\"; system(\"pause\"); return; } bool flag = false; cout << endl << \"商品名 \" << \"介格 \" << \"商品数量 \" << \"仓库编号 \" << \"商品大类 \" << \"货架号\" << endl << endl; while (storeFile >> name1 >> price1 >> count1 >> storeNo1 >> kinds1 >> shelfNo1) { if (price1 == price) { flag = true; cout << setiosflags(ios::left) << setw(15) << name1 << \" \" << setw(10) << price1 << \" \" << setw(10) << count1 << \" \" << setw(10) << storeNo1 << \" \" << setw(15) << kinds1 << \" \" << shelfNo1 << endl; } } storeFile.close(); if (!flag) cout << endl << endl << \"对不起,库存中没有这个价格的商品!!!\"; cout << endl << endl; 8 程序设计实习报告 system(\"pause\"); } //按大类查询 void mana::select_kind() { system(\"cls\"); cout << endl << \"\按商品大类查询 : \" << endl << endl ; cout << \"\输入大类名 : \"; string kinds; cin >> kinds; string name1;//商品名 double price1;//介格 string storeNo1;//仓库编号 string kinds1;//商品大类 string shelfNo1;//货架号 long count1 = 0; //商品数量 ifstream storeFile(\"store.txt\"); if (!storeFile) { cout << endl << endl << \"\对不起,你的库存为空!!!\" << endl << endl << \"\\"; system(\"pause\"); return; } bool flag = false; cout << endl << \"商品名 \" << \"介格 \" << \"商品数量 \" << \"仓库编号 \" << \"商品大类 \" << \"货架号\" << endl << endl; while (storeFile >> name1 >> price1 >> count1 >> storeNo1 >> kinds1 >> shelfNo1) { if (kinds1 == kinds) { flag = true; cout << setiosflags(ios::left) << setw(15) << name1 << \" \" << setw(10) << price1 << \" \" << setw(10) << count1 << \" \" << setw(10) << storeNo1 << \" \" << setw(15) << kinds1 << \" \" << shelfNo1 << endl; } } storeFile.close(); if (!flag) cout << endl << endl << \"对不起,库存中没有这类商品!!!\"; cout << endl << endl; system(\"pause\"); } //商品报损 void mana::call_break() { system(\"cls\"); string name;//商品名 cout << endl << \"\商品报损,请输入要报损商品信息 : \" << endl << endl; cout << \"\商品名称 : \"; 9 程序设计实习报告 cin >> name; ifstream storeFile(\"store.txt\"); if (!storeFile) { ofstream storeFile1(\"store.txt\"); storeFile1.close(); cout << endl << endl << \"\仓存为空!!!!\" << endl << endl << \"\\"; system(\"pause\"); return; } bool flag = false; string name1;//商品名 double price1;//介格 string kinds1;//商品大类 string shelfNo1;//货架号 long count1 = 0; //商品数量 ofstream tempFile(\"temp.txt\"); string storeNo1;//仓库编号 cout << endl << endl << \"你想报损商品信息如下 : \" << endl << endl; cout << endl << \"商品名 \" << \"介格 \" << \"商品数量 \" << \"仓库编号 \" << \"商品大类 \" << \"货架号\" << endl << endl; while (storeFile >> name1 >> price1 >> count1 >> storeNo1 >> kinds1 >> shelfNo1) { if (name1==name) { flag = true; cout << setiosflags(ios::left) << setw(15) << name1 << \" \" << setw(10) << price1 << \" \" << setw(10) << count1 << \" \" << setw(10) << storeNo1 << \" \" << setw(15) << kinds1 << \" \" << shelfNo1 << endl; shelfNo1 += \"(损坏)\"; } tempFile << setiosflags(ios::left) << setw(20) << name1 << \" \" << setw(15) << price1 << \" \" << setw(10) << count1 << \" \" << setw(10) << storeNo1 << \" \" << setw(20) << kinds1 << \" \" << shelfNo1 << endl; } tempFile.close(); storeFile.close(); if (!flag) { cout << endl << endl << \"对不起,仓库中没有这种商品!!!\" << endl << endl; system(\"pause\"); return; } ofstream storeFile1(\"store.txt\"); ifstream tempFile1(\"temp.txt\"); storeFile1 << tempFile1.rdbuf(); storeFile1.close(); tempFile1.close(); cout << endl << endl << \"这些商品已经损坏,请尽快从仓库中取出!!!\" << endl << endl; cout << \"报损成功,记录已经更改!!!\" << endl << endl ; 10 程序设计实习报告 system(\"pause\"); } int main() { char select; mana men; while (select = men.first_face()) { switch (select) { case '1': men.in_storage(); break; case '2': men.out_storage(); break; case '3': men.select_ele(); break; case '4': men.call_break(); break; case '5': cout << \"\\" << \"谢谢使用!!!!\" << endl << endl << \"\\\"; exit( 0 ); break; default: break; } } return 0; } 11 程序设计实习报告 附录B小型公司工资管理系统的设计程序清单 文件1:head.h #include void Sstatistics(); //声明销售员类统计表格函数 void Salesroom(); //声明Salemanager类的友元函数 用于数据成员salesroom的赋值和排序 void Smstatistics(); //声明销售经理排序表格函数 void allprint(Technician *p,int n); //声明打印表格的allprint函数 void allprint(Manager *p,int n); //声明打印表格的allprint重载函数 void allprint(Salemanager *p,int n); //声明打印表格的allprint重载函数 void allprint(Seller *p,int n); //声明打印表格的allprint重载函数 void allsave(Technician *p,int n); //声明数据备份的函数 void allsave(Manager *p,int n); //声明数据备份的重载函数 void allsave(Salemanager *p,int n); //声明数据备份的重载函数 void allsave(Seller *p,int n); //声明数据备份的重载函数 void num_search(); //声明按职工号检索函数 void nam_search(); //声明按姓名检索函数 Employer *p; Manager m[4]; Technician t[4]; Seller s[16]; Salemanager sm[4]; int flags=1; int num; string nam; 文件2 class.cpp #include public: virtual void input() { cout<<\"其姓名:\";cin>>name; cout<<\"性别(m/w):\";cin>>sex; cout<<\"年龄:\";cin>>age; } 12 程序设计实习报告 void print1() //定义基类的成员虚函数 用于打印固定格式的私有数据成员 {cout<<\"┃\"< 信息 定义为基类的成员函数 { if(num==number) { cout<<\"该员工基本信息如下:\"< 息 定义为基类的成员函数 { if(nam==name) { cout<<\"该员工基本信息如下:\"< 13 程序设计实习报告 int age; double pay; }; class Manager:public Employer { public: void input() { cout<<\"经理的编号:\";cin>>number; Employer::input(); pay=pays(); cout< class Technician:public Employer { public: void input() { cout<<\"技术员的编号:\";cin>>number; Employer::input(); cout<<\"工作时间:\";cin>>time; pay=pays(); cout< int time; }; class Seller:public Employer { public: void input() { cout<<\"销售员的编号:\";cin>>number; Employer::input(); cout<<\"销售额:\";cin>>saleroom; 14 程序设计实习报告 cout<<\"所属销售经理的编号:\";cin>>belong; pay=pays(); cout< int saleroom; int belong; }; class Salemanager:public Employer { public: void input() { cout<<\"销售经理的编号:\";cin>>number; Employer::input(); cout< friend void Salesroom(); 15 ┃┃┃程序设计实习报告 private: int salesroom; }; 文件3:main.cpp #include\"001.cpp\" #include\"hea d.h\" using namespace std; int main() { int i,j,k; cout<<\"请按屏幕提示进行操作:\"< cout<<\" ***小型公司工作管理系统***\"< while(i!=1&&i!=2&&i!=3&&i!=4&&i!=5&&i!=6) { cout<<\"您输入错误,请重新输入\"< switch(i) { case 1: { while(1) { cout<<\" ***公司员工数据数据输入***\"< 程序设计实习报告 cout<<\"请选择一个操作:\"; cin>>j; while(j!=1&&j!=2&&j!=3&&j!=4&&j!=5) { cout<<\"您输入错误,请重新输入\"< Salesroom(); //调用Salemanager类的友元函数 用于数据成员salesroom的赋值和排序 Sstatistics(); //调用销售员类统计表格函数 Smstatistics(); //调用销售经理排序表格函数 break; } case 3: { while(1) { cout<<\" ***公司员工基本信息打印***\"< 程序设计实习报告 } } case 4: outfile.open(\"c:\\\\公司员工基本信息.txt\ if(!outfile) { cerr<<\"打开出错!\"< cout<<\"返回上一级菜单 :5 并按回车键\"< while(j!=1&&j!=2&&j!=3&&j!=4&&j!=5) { cout<<\"您输入错误,请重新输入\"< switch(j) { case 1: cout<<\"经理基本信息如下:\"< 程序设计实习报告 exit(1); } cout<<\"公司员工的基本信息已备份。\"< 19 程序设计实习报告 cout<<\"请输入员工姓名:\"; cin>>nam; flags=1; nam_search(); //调用按姓名检索函数 break; case 3:goto next; default: break; } } case 6:exit(1); default:exit(1); } } return 0; } void Sstatistics() //销售员类统计表格函数的定义 { int n,m; for(n=1;n<5;n++) { cout<<\"职工号为40\"< int n,m; for(n=0;n<4;n++) { 20 程序设计实习报告 sm[n].salesroom=s[4*n].Saleroom()+s[4*n+1].Saleroom()+s[4*n+2].Saleroom()+s[4*n+3].Saleroom(); } for(n=0;n<3;n++) for(m=n+1;m<4;m++) if(sm[n].salesroom cout<<\"销售经理按工资排序为:\"< cout<<\"┣━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━┫\"< cout<<\"┗━━━━━━┻━━━━━━┻━━━━━━┻━━━━━━┻━━━━━━┛\"< int x; cout<<\"┏━━━━━━┳━━━━━━┳━━━━━━┳━━━━━━┳━━━━━━┓\"< 程序设计实习报告 p[x].print1(); } cout<<\"┗━━━━━━┻━━━━━━┻━━━━━━┻━━━━━━┻━━━━━━┛\"< int x; cout<<\"┏━━━━━━┳━━━━━━┳━━━━━━┳━━━━━━┳━━━━━━┓\"< cout<<\"┗━━━━━━┻━━━━━━┻━━━━━━┻━━━━━━┻━━━━━━┛\"< int x; cout<<\"┏━━━━━━┳━━━━━━┳━━━━━━┳━━━━━━┳━━━━━━┓\"< cout<<\"┗━━━━━━┻━━━━━━┻━━━━━━┻━━━━━━┻━━━━━━┛\"< cout<<\"┏━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━━━━━┓\"< 程序设计实习报告 \"< cout<<\"┗━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━━━━━━┛\"< int x; outfile<<\"┏━━━━━━┳━━━━━━┳━━━━━━┳━━━━━━┳━━━━━━┓\"< outfile<<\"┗━━━━━━┻━━━━━━┻━━━━━━┻━━━━━━┻━━━━━━┛\"< int x; outfile<<\"┏━━━━━━┳━━━━━━┳━━━━━━┳━━━━━━┳━━━━━━┓\"< outfile<<\"┗━━━━━━┻━━━━━━┻━━━━━━┻━━━━━━┻━━━━━━┛\"< 23 程序设计实习报告 int x; outfile<<\"┏━━━━━━┳━━━━━━┳━━━━━━┳━━━━━━┳━━━━━━┓\"< outfile<<\"┗━━━━━━┻━━━━━━┻━━━━━━┻━━━━━━┻━━━━━━┛\"< int x; outfile<<\"┏━━━━━━┳━━━━━━┳━━━━━━┳━━━━━━┳━━━━━━┓\"< for(int x=0;x<4;x++) m[x].num_compare(num); for(int y=0;x<4;y++) t[y].num_compare(num); for(int z=0;z<4;z++) sm[z].num_compare(num); for(int q=0;q<16;q++) s[q].num_compare(num); if(flags==1) cout<<\"本公司没有此人!\"< 24 程序设计实习报告 { for(int x=0;x<4;x++) m[x].nam_compare(nam); for(int y=0;x<4;y++) t[y].nam_compare(nam); for(int z=0;z<4;z++) sm[z].nam_compare(nam); for(int q=0;q<16;q++) s[q].nam_compare(nam); if(flags==1) cout<<\"本公司没有此人!\"< 程序设计实习报告 26 程序设计实习报告 27 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务