编译环境devc++
功能实现:医生信息增删改查患者信息增删改查账单增删改查有信息文件保存功能
注意:用的时候记得改一下文件保存的目录
//设计人类(Person类)和医生类(Doctor类),在此基础上,通过增加患者和账单,使它们公用于表示一家诊所的信息管理。
//(1)在一条医生记录中,包括医生的专业说明(specialty),
// 如内科医生(surgeon)、儿科医生(pediatrician) 、产科医生(obstetrician)及全科医生(general practitioner)。
//(2)Doctor记录还含有诊费(office_vist_fee)。
//(3)在一条患者记录中,包括该患者产生的药费(drug_fee) ,患者的诊费(即医生的诊费)。
//(4)在一条账单记录中,包括一条患者对象、该患者对应得主治医生、该患者产生的诊费和药费。
//(5)应用程序能够显示出诊所中每个患者的信息和对应主治医生的信息。
//(6)能够统计出所有患者的总费用。
#include <iostream>
#include <cstring>
#include <windows.h>
#include <fstream>
#include <stdlib.h>
using namespace std;
string special[5];
const int N = 10000;
int now_sum_person = 0, now_sum_doctor = 0;
class Person {
public:
string Name;
string Sex;
string Address;
int Age;
double pill_price;
double doctor_price;
int flag;
int id_doctor;
}person[N];
class Doctor {
public:
int specialty;
string Name;
string Sex;
string Address;
int Age;
double office_vist_fee;
int flag;
}doctor[N];
void print_person(int g) {
cout << "名字:" << person[g].Name << "\n";
cout << "年龄:" << person[g].Age << "\n";
cout << "性别:" << person[g].Sex << "\n";
cout << "地址:" << person[g].Address <<"\n";
//cout << "药物价格:" << person[g].pill_price << "\n";
//cout << "挂号费:" << person[g].doctor_price << "\n" ;
}
void print_doctor(int g) {
cout << "名字:" << doctor[g].Name << "\n";
cout << "年龄:" << doctor[g].Age << "\n";
cout << "性别:" << doctor[g].Sex << "\n";
cout << "地址:" << doctor[g].Address <<"\n";
cout << "special:" << special[doctor[g].specialty] << "\n";
cout << "该医生挂号费:" << doctor[g].office_vist_fee << "\n";
}
int find_person(string name) {
int id = -1;
for(int i = 0;i < now_sum_person;++i) {
if(person[i].Name == name && person[i].flag == 1) {
id = i;
}
}
return id;
}
void find_all_person() {
for(int i = 0;i < now_sum_person;++i) {
if(person[i].flag == 0) {
continue;
}
cout << "名字:" << person[i].Name << "\n";
cout << "年龄:" << person[i].Age << "\n";
cout << "性别:" << person[i].Sex << "\n";
cout << "地址:" << person[i].Address <<"\n";
//cout << "药物价格:" << person[i].pill_price << "\n";
//cout << "挂号费:" << person[i].doctor_price << "\n" ;
cout << ".........................................................." << "\n";
}
}
void find_all_doctor() {
for(int i = 0;i < now_sum_doctor;++i) {
if(doctor[i].flag == 1) {
cout << "名字:" << doctor[i].Name << "\n";
cout << "年龄:" << doctor[i].Age << "\n";
cout << "性别:" << doctor[i].Sex << "\n";
cout << "地址:" << doctor[i].Address <<"\n";
cout << "该医生挂号费:" << doctor[i].office_vist_fee << "\n";
cout << "special:" << special[doctor[i].specialty] << "\n";
cout << ".........................................................." << "\n";
}
}
}
int find_doctor(string name) {
int id = -1;
for(int i = 0;i < now_sum_doctor;++i) {
if(doctor[i].Name == name && doctor[i].flag == 1) {
id = i;break;
}
}
return id;
}
void read_person() {
ifstream s ;
now_sum_person = 0;
s.open("C:\\Users\\lyslyslys\\Desktop\\person.txt", ios::in);
while(s >> person[now_sum_person].Name >> person[now_sum_person].Age >> person[now_sum_person].Sex >> person[now_sum_person].Address >> person[now_sum_person].pill_price >> person[now_sum_person].doctor_price >> person[now_sum_person].flag >> person[now_sum_person].id_doctor) {
now_sum_person++;
}
}
void read_doctor() {
ifstream s ;
now_sum_doctor = 0;
s.open("C:\\Users\\lyslyslys\\Desktop\\Doctor.txt", ios::in);
while(s >> doctor[now_sum_doctor].Name >> doctor[now_sum_doctor].Age >> doctor[now_sum_doctor].Sex >> doctor[now_sum_doctor].Address >> doctor[now_sum_doctor].office_vist_fee >> doctor[now_sum_doctor].flag >> doctor[now_sum_doctor].specialty) {
now_sum_doctor++;
}
}
void init() {
special[1] = "内科医生", special[2] = "儿科医生", special[3] = "产科医生", special[4] = "全科医生";
read_person();
read_doctor();
}
void add_person() {
while("orz") {
printf("请输入你的名字:");
cin >> person[now_sum_person].Name;
printf("请输入你的年龄:");
int hh;
cin >> hh;
if(hh < 200 && hh > 0) {
person[now_sum_person].Age = hh;
}
else {
printf("输出错误重新输入!\n");continue;
}
printf("请输入你的性别:1.男 2.女");
int s;
cin >> s;
if(s == 1) {
person[now_sum_person].Sex = "男";
}
else if(s == 2) {
person[now_sum_person].Sex = "女";
}
else {
printf("输出错误重新输入!\n");continue;
}
printf("请输入你的地址:");
cin >> person[now_sum_person].Address;
//printf("请输入你的药价:");
person[now_sum_person].pill_price = 0;
//printf("请输入你的挂号费:");
person[now_sum_person].doctor_price = 0;
//printf("请输入你的指导医生:");
person[now_sum_person].flag = 1;
now_sum_person++;
break;
}
}
void add_doctor() {
while("orz") {
printf("请输入你的名字:");
cin >> doctor[now_sum_doctor].Name;
printf("请输入你的年龄:");
int hh;
cin >> hh;
if(hh < 200 && hh > 0) {
doctor[now_sum_doctor].Age = hh;
}
else {
printf("输出错误重新输入!\n");continue;
}
printf("请输入你的性别:1.男 2.女");
int s;
cin >> s;
if(s == 1) {
doctor[now_sum_doctor].Sex = "男";
}
else if(s == 2) {
doctor[now_sum_doctor].Sex = "女";
}
else {
printf("输出错误重新输入!\n");continue;
}
printf("请输入你的地址:");
cin >> doctor[now_sum_doctor].Address;
printf("请输入你的挂号费:");
cin >> doctor[now_sum_doctor].office_vist_fee;
printf("请输入你的specialty:1.内科医生 2.儿科医生 3.产科医生 4.全科医生:");
int h;
cin >> h;
doctor[now_sum_doctor].specialty = h;
doctor[now_sum_doctor].flag = 1;
now_sum_doctor++;
break;
}
}
void delete_person(int id) {
person[id].flag = 0;
}
void delete_doctor(int id) {
doctor[id].flag = 0;
}
void update_person(int id) {
print_person(id);
printf("请输入你要修改的东西:1.名字 2.年龄 3.性别 4.地址 其他数字.退出\n");
int n;
cin >> n;
if(n == 1) {
string s;
printf("请输入你要修改成的名字:");
cin >> s;
person[id].Name = s;
}
else if(n == 2) {
int age;
printf("请输入你要修改成的年龄:");
cin >> age;
person[id].Age = age;
}
else if(n == 3) {
string xingbi;
printf("请输入你要修改成的性别:");
cin >> xingbi;
person[id].Sex = xingbi;
}
else if(n == 4) {
string address;
printf("请输入你要修改成的地址:");
cin >> address;
person[id].Address = address;
}
else{
return;
}
}
void update_doctor(int id) {
print_doctor(id);
printf("请输入你要修改的东西:1.名字 2.年龄 3.性别 4.地址 5挂号费 其他数字.退出\n");
int n;
cin >> n;
if(n == 1) {
string s;
printf("请输入你要修改成的名字:");
cin >> s;
doctor[id].Name = s;
}
else if(n == 2) {
int age;
printf("请输入你要修改成的年龄:");
cin >> age;
doctor[id].Age = age;
}
else if(n == 3) {
string xingbi;
printf("请输入你要修改成的性别:");
cin >> xingbi;
doctor[id].Sex = xingbi;
}
else if(n == 4) {
string address;
printf("请输入你要修改成的地址:");
cin >> address;
doctor[id].Address = address;
}
else if(n == 5) {
double office_vist_fee;
printf("请输入你要修改成的挂号费:");
cin >> office_vist_fee;
doctor[now_sum_doctor].office_vist_fee = office_vist_fee;
}
else{
return;
}
}
void save_person() {
std::ofstream outfile("C:\\Users\\lyslyslys\\Desktop\\person.txt");
for(int i = 0;i < now_sum_person;++i) {
outfile << person[i].Name<<" " << person[i].Age<<" " << person[i].Sex<<" " << person[i].Address <<" "<< person[i].pill_price<<" " << person[i].doctor_price <<" "<< person[i].flag <<" "<< person[i].id_doctor <<"\n";
}
outfile.close();
}
void save_doctor() {
std::ofstream outfile("C:\\Users\\lyslyslys\\Desktop\\doctor.txt");
for(int i = 0;i < now_sum_doctor;++i) {
outfile << doctor[i].Name <<" "<< doctor[i].Age <<" "<< doctor[i].Sex <<" "<< doctor[i].Address <<" "<< doctor[i].office_vist_fee <<" "<< doctor[i].flag << " " <<doctor[i].specialty <<"\n";
}
outfile.close();
}
void print_person_alllist() {
for(int i = 0;i < now_sum_person;++i) {
if(person[i].flag == 0 || person[i].pill_price == 0 || person[i].doctor_price == 0) {
continue;
}
cout << "名字:" << person[i].Name << "\n";
cout << "年龄:" << person[i].Age << "\n";
cout << "性别:" << person[i].Sex << "\n";
cout << "地址:" << person[i].Address <<"\n";
cout << "药物价格:" << person[i].pill_price << "\n";
cout << "挂号费:" << person[i].doctor_price << "\n" ;
printf("指导医师:\n");
cout << "名字:" << doctor[person[i].id_doctor].Name << "\n";
cout << "年龄:" << doctor[person[i].id_doctor].Age << "\n";
cout << "性别:" << doctor[person[i].id_doctor].Sex << "\n";
cout << "地址:" << doctor[person[i].id_doctor].Address <<"\n";
cout << "该医生挂号费:" << doctor[person[i].id_doctor].office_vist_fee << "\n";
}
}
void find_list(string name) {
int id = -1;
for(int i = 0;i < now_sum_person;++i) {
if(person[i].flag == 1 && person[i].Name == name && person[i].pill_price != 0 && person[i].doctor_price != 0) {
id = i;
}
}
if(id == -1) {
printf("未找到!");return;
}
for(int i = id ;i <= id;++i) {
if(person[i].flag == 0 || person[i].pill_price == 0 || person[i].doctor_price == 0) {
continue;
}
cout << "名字:" << person[i].Name << "\n";
cout << "年龄:" << person[i].Age << "\n";
cout << "性别:" << person[i].Sex << "\n";
cout << "地址:" << person[i].Address <<"\n";
cout << "药物价格:" << person[i].pill_price << "\n";
cout << "挂号费:" << person[i].doctor_price << "\n" ;
printf("指导医师:\n");
cout << "名字:" << doctor[person[i].id_doctor].Name << "\n";
cout << "年龄:" << doctor[person[i].id_doctor].Age << "\n";
cout << "性别:" << doctor[person[i].id_doctor].Sex << "\n";
cout << "地址:" << doctor[person[i].id_doctor].Address <<"\n";
cout << "该医生挂号费:" << doctor[person[i].id_doctor].office_vist_fee << "\n";
}
}
void all_person_price() {
int sum;
for(int i = 0;i < now_sum_person;++i) {
if(person[i].flag == 1) {
sum += person[i].pill_price + person[i].doctor_price;
}
}
printf("总价格为%d\n", sum);
}
void add_list() {
printf("请输入患者的名字:");
string name1;
cin >> name1;
int id = find_person(name1);
if(id == -1) {
printf("未找到!"); return ;
}
printf("请输入患者就诊医生的名字:");
string name2;
cin >> name2;
int id2 = find_doctor(name2);
if(id == -1) {
printf("未找到这个医生!"); return ;
}
printf("请输入患者的药价:");
cin >> person[id].pill_price;
person[id].doctor_price = doctor[id2].office_vist_fee;
person[id].id_doctor = id2;
}
void menu()
{
system("cls");
cout << "***************************" << endl;
cout << "1.医生操作" << endl;
cout << "2.患者操作" << endl;
cout << "3.患者清单操作" << endl;
cout << "0.结束程序" << endl;
cout << "***************************" << endl;
}
void Dmenu()
{
system("cls");
cout << "***************************" << endl;
cout << "1.查询所有的医生信息" << endl;
cout << "2.按名查找医生" << endl;
cout << "3.增加医生" << endl;
cout << "4.修改医生信息" << endl;
cout << "5.删除医生信息" << endl;
cout << "6.返回上一层" << endl;
cout << "***************************" << endl;
}
void Pmenu()
{
system("cls");
cout << "***************************" << endl;
cout << "1.查询所有的患者信息" << endl;
cout << "2.按名查找患者" << endl;
cout << "3.增加患者" << endl;
cout << "4.修改患者信息" << endl;
cout << "5.删除患者信息" << endl;
cout << "6.返回上一层" << endl;
cout << "***************************" << endl;
}
void Bmenu()
{
system("cls");
cout << "***************************" << endl;
cout << "1.查询所有的患者清单" << endl;
cout << "2.查找某个患者清单" << endl;
cout << "3.增加清单" << endl;
cout << "4.计算所有患者的总费用" << endl;
cout << "5.返回上一层" << endl;
cout << "***************************" << endl;
}
int main() {
init();
while("orz") {
menu();
int n;
cin >> n;
if(n == 1) {
while("orz") {
Dmenu();
int s;
cin >> s;
if(s == 1) {
find_all_doctor();
}
else if(s == 2) {
printf("请输入你要查找的医生的名字:");
string name;
cin >> name;
int id = find_doctor(name);
if(id == -1) {
printf("未找到!");
}
else {
print_doctor(id);
}
}
else if(s == 3) {
add_doctor();
}
else if(s == 4) {
printf("请输入你要修改的医生的名字:");
string name;
cin >> name;
int id = find_doctor(name);
if(id == -1) {
printf("未找到!");
}
else {
update_doctor(id);
}
}
else if(s == 5) {
printf("请输入你要删除的医生的名字:");
string name;
cin >> name;
int id = find_doctor(name);
if(id == -1) {
printf("未找到!");
}
else{
delete_doctor(id);
}
}
else {
break;
}
system("pause");
}
}
else if(n == 2) {
while("orz") {
Pmenu();
int s;
cin >> s;
if(s == 1) {
find_all_person();
}
else if(s == 2) {
string name;
printf("请输入你要查找的患者的姓名:");
cin >> name;
int id = find_person(name);
if(id == -1) {
printf("未找到!");
}
else{
print_person(id);
}
}
else if(s == 3) {
add_person();
}
else if(s == 4) {
printf("请输入你要修改的患者的名字:");
string name;
cin >> name;
int id = find_person(name);
if(id == -1) {
printf("未找到!");
}
else{
update_person(id);
}
}
else if(s == 5) {
printf("请输入你要删除的患者的名字:");
string name;
cin >> name;
int id = find_person(name);
if(id == -1) {
printf("未找到!");
}
else{
delete_person(id);
}
}
else {
break;
}
system("pause");
}
}
else if(n == 3) {
while("orz") {
Bmenu();
int s;
cin >> s;
if(s == 1) {
print_person_alllist();
}
else if(s == 2) {
printf("请输入你要查找的患者的名字:");
string name;
cin >> name;
find_list(name);
}
else if(s == 3) {
add_list();
}
else if(s == 4) {
all_person_price();
}
else {
break;
}
system("pause");
}
}
else {
break;
}
}
save_doctor();
save_person();
return 0;
}
效果:
之后账单操作等就不一一展示了