// 全部代码请咨询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
房屋销售/楼盘管理信息系统(c课设/大作业)
最新推荐文章于 2023-04-14 06:15:00 发布