房屋销售/楼盘管理信息系统(c课设/大作业)

// 全部代码请咨询qq 3233963554
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_N 40                    //系统所能存储数据的最大值:可根据需要修改 

//楼盘销售结构体 
struct building {
	char bNumber[10];                   //楼编号 
	char uNumber[10];                   //单元号
	char fNumber[10];                   //房间号
	char orientation[10];               //朝向
	char houseType[10];                 //户型
	double unitPrice;                   //单价
	double area;                        //面积
	double totalPrice;                  //总价 
	double successPrice;                //成交额 
	char soldStatus[10];                //售出状态
	char salesMan[10];                  //业务员 
};

//全局变量定义
struct building b[MAX_N];         //楼盘销售结构体数组 
int n;                            //系统当前存储数据的值

//函数声明
void read();                     //外部读入
void write();                    //外部写出
void insert();                   //录入
void del();                      //删除
void update();                   //修改
void display();                  //显示
void selectMenu();               //查询菜单
void selectByOrientation();      //通过朝向、户型进行查询 
void selectByArea();             //通过建筑面积范围进行查询 
void selectByNoSell();           //通过未售出房源进行查询 
void mainMenu();                 //主菜单

int main() {
	mainMenu();
	return 0;
} 

void read() {
	FILE *fp = fopen("building.txt", "r");  //文件打开
	//判断文件打开是否正确 
	if (!fp) {
		printf("文件打开错误!\n");
		exit(1);
	}
	int cnt = 0;
	//从头到位读入文件内容 
	while (!feof(fp)) {
		fscanf(fp, "%s%s%s%s%s%lf%lf%lf%lf%s%s", b[cnt].bNumber, b[cnt].uNumber, b[cnt].fNumber, b[cnt].orientation, 
		b[cnt].houseType, &b[cnt].unitPrice, &b[cnt].area, &b[cnt].totalPrice, &b[cnt].successPrice, b[cnt].soldStatus, 
		b[cnt].salesMan);
		cnt++;
	}
	n = cnt;
	fclose(fp);	
}
void write() {
	FILE *fp = fopen("building.txt", "w");
	if (!fp) {
		printf("文件打开错误!\n");
		exit(1);
	}
	//将内部数据写出到文件 
	for (int i = 0; i < n; i++) {
		if (i == n - 1) {
			fprintf(fp, "%s\t%s\t%s\t%s\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%s\t%s", b[i].bNumber, b[i].uNumber, b[i].fNumber, b[i].orientation, 
			b[i].houseType, b[i].unitPrice, b[i].area, b[i].totalPrice, b[i].successPrice, b[i].soldStatus, b[i].salesMan);
		} else {
			fprintf(fp, "%s\t%s\t%s\t%s\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%s\t%s\n", b[i].bNumber, b[i].uNumber, b[i].fNumber, b[i].orientation, 
			b[i].houseType, b[i].unitPrice, b[i].area, b[i].totalPrice, b[i].successPrice, b[i].soldStatus, b[i].salesMan);
		}
	}
	fclose(fp);
}
void insert() {
	int choice;           //是否继续输入的标志 
	FILE *fp = fopen("building.txt", "a");
	if (!fp) {
		printf("文件打开错误!\n");
		exit(1);
	}
	while (1) { 
		printf("输入格式: 楼编号 单元号 房间号 朝向 户型 单价 面积 成交额 售出状态 业务员<enter>\n");
		scanf("%s%s%s%s%s%lf%lf%lf%s%s", b[n].bNumber, b[n].uNumber, b[n].fNumber, b[n].orientation, b[n].houseType, 
		&b[n].unitPrice, &b[n].area, &b[n].successPrice, b[n].soldStatus, b[n].salesMan);
		b[n].totalPrice = b[n].unitPrice * b[n].area;
		fprintf(fp, "\n%s\t%s\t%s\t%s\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%s\t%s", b[n].bNumber, b[n].uNumber, b[n].fNumber, b[n].orientation, 
		b[n].houseType, b[n].unitPrice, b[n].area, b[n].totalPrice, b[n].successPrice, b[n].soldStatus, b[n].salesMan);
		n++;
		printf("是否继续输入(1.YES 2.NO)?: ");
		scanf("%d", &choice);
		if (choice == 1) {
			continue ;
		}
		break;
	}
	fclose(fp);

}
void del() {
	char delBNumber[10] = {"\0"};        //待输入的楼编号
	char delUNumber[10] = {"\0"};        //待输入的单元号
	char delFNumber[10] = {"\0"};        //待输入的房间号
	int flag = 0;                        //是否找到查询数据的标志
	printf("输入格式: 楼编号 单元号 房间号<enter>\n");
	scanf("%s%s%s", delBNumber, delUNumber, delFNumber);
	for (int i = 0; i < n; i++) {
		if ((!strcmp(b[i].bNumber, delBNumber)) && (!strcmp(b[i].uNumber, delUNumber)) && (!strcmp(b[i].fNumber, delFNumber))) {
			//找到数据,执行删除操作
			for (int j = i; j < n - 1; j++) {
				b[j] = b[j + 1];
			} 
			flag = 1;
		}
	}
	if (flag) {
		n--;
		printf("删除成功!\n");
	} else {
		printf("未找到待删除数据,请检查输入!\n");
	}
}
void update() {
	char updateBNumber[10] = {"\0"};        //待输入的楼编号
	char updateUNumber[10] = {"\0"};        //待输入的单元号
	char updateFNumber[10] = {"\0"};        //待输入的房间号
	int flag = 0;                        //是否找到查询数据的标志
	printf("输入格式: 楼编号 单元号 房间号<enter>\n");
	scanf("%s%s%s", updateBNumber, updateUNumber, updateFNumber);
	for (int i = 0; i < n; i++) {
		if ((!strcmp(b[i].bNumber, updateBNumber)) && (!strcmp(b[i].uNumber, updateUNumber)) && (!strcmp(b[i].fNumber, updateFNumber))) {
			//找到数据,执行修改操作 
			printf("请输入新的对应数据: \n");
			printf("输入格式: 楼编号 单元号 房间号 朝向 户型 单价 面积 成交额 售出状态 业务员<enter>\n");
			scanf("%s%s%s%s%s%lf%lf%lf%s%s", b[i].bNumber, b[i].uNumber, b[i].fNumber, b[i].orientation, b[i].houseType, 
			&b[i].unitPrice, &b[i].area, &b[i].successPrice, b[i].soldStatus, b[i].salesMan);
			b[i].totalPrice = b[i].unitPrice * b[i].area;
			flag = 1;
		}
	}
	if (flag) {
		printf("修改成功!\n");
	} else {
		printf("未找到待删除数据,请检查输入!\n");
	}
}
void display() {
	//判断当前系统是否有数据 
	if (!n) {
		printf("暂无数据!\n");
		return ;
	} else {
		printf("%-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s\n", "楼编号", "单元号", "房间号", "朝向", "户型", "单价", 
		"面积", "总价", "售出状态", "业务员");
	}
	//遍历数组,输出信息 
	for (int i = 0; i < n; i++) {
		printf("%-10s %-10s %-10s %-10s %-10s %-10.1f %-10.1f %-10.1f %-10s %-10s\n", b[i].bNumber, b[i].uNumber, b[i].fNumber, b[i].orientation, 
		b[i].houseType, b[i].unitPrice, b[i].area, b[i].totalPrice, b[i].soldStatus, b[i].salesMan);
	}
}
void selectByOrientation() {
	char str1[10] = {"\0"};           //待查询的朝向
	char str2[20] = {"\0"};           //待查询的户型 
	printf("请输入朝向: ");
	scanf("%s", str1);
	printf("%-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s %-10s\n", "楼编号", "单元号", "房间号", "朝向", "户型", "单价", 
	"面积", "总价", "售出状态", "业务员");
	for (int i = 0; i < n; i++) {
		if (!strcmp(str1, b[i].orientation)) {
			//找到,输出相关数据 
			printf("%-10s %-10s %-10s %-10s %-10s %-10.1f %-10.1f %-10.1f %-10s %-10s\n", b[i].bNumber, b[i].uNumber, b[i].fNumber, b[i].orientation, 
			b[i].houseType, b[i].unitPrice, b[i].area, b[i].totalPrice, b[i].soldStatus, b[i].salesMan);
			
		}
	}
	//条件动态添加 
	int choice;
	printf("请选择是否输入户型继续查询(1.是 2.退出): ");
	scanf("%d", &choice);
	if (choice == 1) {
		printf("请输入户型: ");
		scanf("%s", str2);
		for (int i = 0; i < n; i++) {
			if ((!strcmp(str1, b[i].orient

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

五弦奏南风

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

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

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

打赏作者

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

抵扣说明:

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

余额充值