酒店客房预订管理系统简单实现

酒店客房预订管理系统

纯java实现,通过IO流对本地文件进行读取操作

  • 需求分析
  1. 入住客人信息管理
    管理所有入住客人的基本信息,包括开房登记、退房结账、查询、客人延期续费、按姓名详细查询等
  2. 客人预订信息管理
    管理所有预订客户的基本信息,包括预订房间、取消预订、查询全部等
  3. 房间信息管理
    管理所有房间的基本信息,包括房间信息的添加、删除、排序、修改、查询等,包括查询时的排序,房间状态跟随开房登记、退房结账、预订房间、取消预订等操作实时变化。
  4. 历史客人管理
    管理所有在本店入住和预订的客户,包括所有的开房登记、预订房间,用于查询历史客人列表使用
  5. 注册登录信息管理
    管理所有用户和管理员的基本信息,包括用户的注册、登录,管理员的注册、登录等
  6. 文件信息管理
    管理所有要存储的信息,包括入住客人、预订客人、历史客人、房间信息的存储读取,如没有文件自动创建文件,也可以对指定文件进行读取等
  • 主要内容
    要求使用Java语言开发一个简单的酒店客房预订管理系统。
    数据:
    住店管理:客人姓名、证件号码、房号、入住时期、预计离开日期、结账离开日期、应付金额
    客人信息:姓名、性别、证件类型、证件号码、联系电话
    房间信息:房号、房类型、价格、押金、房状态
    预订房间:客人姓名、性别、房类型、房号、价格、证件类型、证件号码、联系电话、入住日期、预计离开日期

    基本功能:

  1. 房间信息管理:增加,删除,查询,排序
  2. 客人信息管理:开房,退房,预订,退订,查询,续费
  3. 注册登录:客人注册、登录,管理员注册、登录
  4. 文件管理:所有信息的存储、读取,按文件路径读取
  • 思路
    使用了集合LinkedList与动态数组ArrayList,客人信息和预定的客人信息与房间信息有嵌套关系,客人信息与预定的客人信息的对象的引用变量定义为房间信息的属性,存到集合LinkedList中,使用对象流存储读取,登陆注册分别用ArrayList存储便于登录时账号密码校对。
  • 运行截图
    在这里插入图片描述在这里插入图片描述
  • 主要代码
	public boolean addroom(Room room) throws IOException {
		boolean a=false;
		if(!chachong(room)) {
		rooms.add(room);
		Io.writer(rooms);
		a=true;
	
		}
		return a;
	}
	
	public boolean deleteroom(int num) throws IOException {
		boolean a=false;
		Iterator<Room> iterator = rooms.iterator();
		while(iterator.hasNext()) {
			if(iterator.next().num==num) {
				iterator.remove();
				Io.writer(rooms);
				a=true;
				break;
			}
		}
		return a;
	}
	
	public boolean chaxunroom() {
		boolean a=false;
		if(rooms.size()!=0) {
			Iterator<Room> iterator = rooms.iterator();
			Collections.sort(rooms);
			while(iterator.hasNext()) {
				System.out.println(iterator.next().toString());
			}
			a=true;
		}
		return a;
	}
	
	public boolean chachong(Room room) {
		boolean a=false;
		Iterator<Room> iterator = rooms.iterator();
		while(iterator.hasNext()) {
			if(room.num==iterator.next().num) {
				a=true;
				break;
			}
		}
		return a;
	}
	
	public boolean kaifang(Guest guest,int num) throws IOException {
		boolean a=true;
		if(rooms.size()!=0) {
		for (Room room : rooms) {
			if(num==room.num) {
				if(room.state.equals("空闲")) {
				room.setState("售出");
				System.out.println("您所选择的房间价格为"+room.price);
				room.guest=guest;
				guests.add(guest);
				Io.writerlishi(guests);
				Io.writer(rooms);
				break;
				}else {
					a=false;
				}
			}
		}
		}else {
			a=false;
		}
		return a;
	}
	public boolean chaxunguest(String name){
		boolean a=false;
		for(Room room:rooms) {
			if(room.guest!=null&&room.guest.name!=null) {
				a=true;
				System.out.println(room.guest.toString());
				break;
			}
		}
		return a;
	}
	
	public boolean chaxunallguest() {
		boolean a = true;
		if (rooms.size() != 0) {
			for(Room room:rooms) {
				if(room.guest!=null&&room.guest.name!=null) {
					a=true;
					System.out.println(room.guest.toString());
				}
			}
		} else {
			a = false;
		}
		return a;
	}
	
	public boolean yuding(Guest yuding,int num) throws IOException {
		boolean a=true;
		if(rooms.size()!=0) {
		for (Room room : rooms) {
			if(num==room.num) {
				if(room.state.equals("空闲")) {
				room.setState("预订");
				System.out.println("您所选择的房间押金为"+room.deposit);
				room.yuding=yuding;
				guests.add(yuding);
				Io.writerlishi(guests);
				Io.writer(rooms);
				break;
				}else {
					a=false;
				}
			}
		}
		}else {
			a=false;
		}
		return a;
	}
	
	public boolean quxiao(String id) throws IOException {
		boolean a = false;
		for (Room room : rooms) {
				if (room.yuding!=null&&room.yuding.name!=null&&room.yuding.id.equals(id)) {
					a = true;
					room.yuding=null;
					room.setState("空闲");
					Io.writer(rooms);
					break;
				}
		}
		return a;
	}
	
	public boolean chaxunallyuding() {
		boolean a = true;
		if(rooms.size()!=0) {
		for(Room room:rooms) {
			if(room.yuding!=null&&room.yuding.name!=null) {
				a=true;
				System.out.println(room.yuding.toString());
			}
		} 
		}else {
			a = false;
		}
		return a;
	}
	
	public boolean xiugai(String name,String fdate) throws IOException {
		boolean a=false;
		for(Room room:rooms) {
			if(room.guest!=null&&room.guest.name!=null&&room.guest.name.equals(name)) {
				a=true;
				room.guest.fdate=fdate;
				Io.writer(rooms);
				break;
			}
		}
		return a;
	}
	
	@Override
	public int compareTo(Room room) {
		if(this.num!=room.num) {
			return this.num-room.num;
		}else {
			return this.price-room.price;
		}
	}
	
	public void read() throws ClassNotFoundException, IOException {
		rooms=Io.reader();
		guests=Io.readerlishi();
	}
	
	public boolean chaxunlishi() {
		boolean a = true;
		Iterator<Guest> iterator = guests.iterator();
		if(guests.size()!=0) {
		while(iterator.hasNext()) {
			System.out.println(iterator.next());
		}
		}else {
			a = false;
		}
		return a;
	}
  • IO流对文件进行读取
public static void writer(List<Room> rooms) throws IOException{
		File file=new File("D:\\1.txt");
		if(!file.getParentFile().exists()) {
			file.getParentFile().mkdir();
		}
		if(!file.exists()) {
			file.createNewFile();
		}
		FileOutputStream out = new FileOutputStream(file);
		ObjectOutputStream outputstream = new ObjectOutputStream(out);
		outputstream.writeObject(rooms);
		outputstream.close();
		}
public static List<Room> reader() throws IOException, ClassNotFoundException {
		File file=new File("D:\\1.txt");
		if(!file.getParentFile().exists()) {
			file.getParentFile().mkdir();
		}
		if(!file.exists()) {
			file.createNewFile();
		}
		LinkedList<Room> rooms = new LinkedList<Room>();
		LinkedList<Room> a = new LinkedList<Room>();
		FileInputStream in = new FileInputStream(file);
		if(file.length()!=0) {
		ObjectInputStream inputstream = new ObjectInputStream(in);
		rooms = (LinkedList<Room>)inputstream.readObject();
		a=rooms;
		inputstream.close();
		}
		return a;
	}

点击查看:酒店客房预订管理系统源代码

  • 15
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
酒店客房预定管理系统5.2五大功能模块的实现 5.2.1客户类: class customer { private: int tag; //删除标记 1:已删 0:未删 int no; //客户编号 char name[10]; //客户姓名 int borbook[Maxbor]; //所订房间 public: customer() {} char *getname() {return name;}//获取姓名 int gettag() {return tag;} //获取删除标记 int getno() {return no;} //获取客户编号 void setname(char na[]) //设置姓名 { strcpy(name,na); } void delbook(){ tag=1; } //设置删除标记 1:已删 0:未删 void addcustomer(int n,char *na) //增加客户 { tag=0; no=n; strcpy(name,na); for(int i=0;i<Maxbor;i++) borbook[i]=0; } void borrowbook(int bookid) //预订操作 { for(int i=0;i<Maxbor;i++) { if (borbook[i]==0) { borbook[i]=bookid; return; } } } int retbook(int bookid) //退订操作 { for(int i=0;i<Maxbor;i++) { if(borbook[i]==bookid) { borbook[i]=0; return 1; } } return 0; } void disp() //读出客户信息 { cout << setw(5) << no <<setw(10) << name<<"\t 客房编号:["; for(int i=0;i<Maxbor;i++) if(borbook[i]!=0) cout << borbook[i]; cout << "]"<<endl; } }; 5.2.2客户库类: class RDatabase { private: int top; //客户记录指针 customer read[Maxr]; //客户记录 public: RDatabase() //构造函数,将customer.txt读到read[]中 { customer s; top=-1; fstream file("customer.txt",ios::in); //打开一个输入文件 while (1) { file.read((char *)&s,sizeof(s)); if (!file)break; top++; read[top]=s; } file.close(); //关闭 customer.txt } void clear() //删除所有客户信息 { top=-1; } int addcustomer(int n,char *na) //添加客户时先查找是否存在 { customer *p=query(n); if (p==NULL) { top++; read[top].addcustomer(n,na); return 1; } return 0; } customer *query(int customerid) //按编号查找 { for (int i=0;i<=top;i++) if (read[i].getno()==customerid && read[i].gettag()==0) { return &read[i]; } return NULL; } void disp() //输出所有客户信息 { for (int i=0;i<=top;i++) read[i].disp(); } void customerdata(); //客户库维护 ~RDatabase() //析构函数,将read[]写到customer.txt文件中 { fstream file("customer.txt",ios::out); for (int i=0;i<=top;i++) if (read[i].gettag()==0) file.write((char *)&read[i],sizeof(read[i])); file.close(); } }; 5.2.3客房类: class Book { private: int tag; //删除标记 1:已删 0:未删 int no; //客房编号 char name[20]; //客房描述 int onshelf; //是否预订 1:空房 2:已预订 public: Book(){} char *getname() { return name; } //获取姓名 int getno(){ return no; } //获取客房编号 int gettag(){ return tag; } //获取删除标记 void setname(char na[]) //设置客房描述 { strcpy(name,na); } void delbook(){ tag=1;} //删除客房 void addbook(int n,char *na) //增加客房 { tag=0; no=n; strcpy(name,na); onshelf=1; } int borrowbook() //预订操作 { if (onshelf==1) { onshelf=0; return 1; } return 0; } void retbook() //退订操作 { onshelf=1; } void disp() //输出客房 { cout << setw(6) << no << setw(18) << name << setw(10) <<(onshelf==1? "空房":"已预订") <<endl; } }; 5.2.4客房库类: class BDatabase { private: int top; //客房记录指针 Book book[Maxb]; //客房记录 public: BDatabase() //构造函数,将book.txt读到book[]中 { Book b; top=-1; fstream file("book.txt",ios::in); while (1) { file.read((char *)&b,sizeof(b)); if (!file) break; top++; book[top]=b; } file.close(); } void clear() //全删 { top=-1; } int addbook(int n,char *na) //增加客房 { Book *p=query(n); if (NULL==p) { top++; book[top].addbook(n,na); return 1; } return 0; } Book *query(int bookid) //查找客房 { for (int i=0;i<=top;i++) if (book[i].getno()==bookid &&book[i].gettag()==0) { return &book[i]; } return NULL; } void bookdata(); //客房库维护 void disp() { for (int i=0;i<=top;i++) if (book[i].gettag()==0) book[i].disp(); } ~BDatabase() //析构函数,将book[]写到book.txt文件中 { fstream file("book.txt",ios::out); for (int i=0;i<=top;i++) if (book[i].gettag()==0) file.write((char *)&book[i],sizeof(book[i])); file.close(); } };
包含数据库,导入可用;包括管理员和用户两个模块; 其中管理员模块的主要功能有: (1)登录:管理员可通过该模块进入系统。 (2)搜索订单:管理员可以通过下单人、预订房间的类型、住店时间、离店时间进行单条件或任意组合的多条件查询订单。 (3)处理订单:管理员可对订单做出处理。例如有客人预订的资源,可以将订单处理为成功预订。 (4)搜索会员:管理员可以通过会员名、手机号进行单条件查询或组合多条件查询会员。 (5)查看会员信息:管理员可以查看会员的详细信息但不能修改。 (6)查看房间信息:管理员可以查看房间的状态以及描述等详细信息。 (7)修改房间信息:管理员可以修改房间状态、修改房间的价格等详细信息。 会员模块的主要功能包括: (1)注册登录:游客可以进行注册升级为会员便于登录系统预订房间。 (2)修改信息:登录后会员可以修改自己的基本信息,例如联系方式、邮箱、昵称等,同时还可以修改登录密码。 (3)浏览预订房间:会员登录后可以浏览房间信息,查看房间的类型及、描述以及价格并根据自己的需要下订单。 (4)查看订单处理结果:会员登录后可以查看自己已提交订单的处理情况。 (5)查看历史订单:会员登录后可以查看过去的订单的详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值