C语言程序设计课程设计 - (物业管理系统 - 纯C)

数据结构 专栏收录该内容
13 篇文章 0 订阅

本套代码分享了我大一C语言实训时最后的 C语言课程设计,第一次接触编程能力还很弱,欢迎拍砖提议。。


额。。。2019.7.7更,最近好多人都在问我代码的问题,大多是大一的,可能C语言语法还不是太熟悉,代码很难复现出来。(看来又到实训期了。。。)

现在做下补充:

1、开发环境:本人大一的时候还是用的visual studio 2015(没在VC++6.0上做测试,咱也不知道。。。咱也不敢问,都9102年了,为何还用VC++6.0。。。)下载visual studio 系列的就好,不用纠结2010 2015 2017的版本。

 2、项目目录结构,num1.h是声明了各种函数还有结构体,Utils.c是各个函数的实现,Main.c是整个程序执行文件(直接运行MainR.c就好了)

 3、文件找不到问题:(请查看Utils.c下所有出现路径的地方,改成正确的路径。ps:output.txt还是要有的哈)

 4、最后考虑到大多是大一的,源码就不挂在GitHub上了,放百度云里了

链接:https://pan.baidu.com/s/1sUd7mhFKR-9eRrpLSwO38A 
提取码:fgtx 
复制这段内容后打开百度网盘手机App,操作更方便哦

 下载后食用方法:

1)依次点击:文件->打开->项目解决方案

2) 找到下载的文件,双击进去,选中Project3.sln,点击打卡就完成了


 

问题描述及设计要求:

住户信息包括:户主姓名、性别、身份证号、联系电话、楼号、单元号、房号、住房面积,每平方米物业费、应缴纳物业费。试设计一物业费管理系统,使之能提供以下功能:

(1)新住户信息的添加(信息不包括应缴纳物业费),可连续添加多名住户的信息;

(2)修改住户信息的功能,输入将修改住户的姓名,读出该住户信息,要求对此进行确认,以决定是否修改,将修改后的信息写到文件中;

(3)删除住户信息的功能,要求同(2);

(4)缴费功能,计算住户的物业费,如果该住户之前的物业费未交清,则本月物业费与之前拖欠费用进行累加,为该用户应缴纳的物业费;根据用户缴纳金额,修改“应缴纳物业费”;

(5)排序功能,按拖欠款项多少,对所有用户信息进行从大到小排序,并输出排序结果;

(6)用菜单进行管理;

(7)只有正确输入用户名密码才能使用此系统;

(8)所有内容能够保存到文件中。下次进入系统是从文件中读取原有信息。

最终效果展示:

完整代码: (按工程文件建立就好一个.h两个.c,includ时修改为自己的文件名)


typedef struct people
{
	char name[10]; //姓名
	char sex[10];  //性别
	char IDnumber[20];//身份证号
	char phone[15];   // 手机号
	int building; //楼号
	int roomID;   //房号
	float roomarea;  //住房面积
	float areamoney; //每平方米物业费
	int owemoney;  //拖欠的物业费的月数


}people;  //定义别名people



void MM_pass();//密码判定函数
void UI_show();//进入界面 UI 实现
void NEW_in(); //新用户信息添加
void OLD_adjust();//修改住户信息的功能
void OLD_delete(); //删除住户信息的功能
void OLD_putmoney();//缴费功能,计算住户的物业费
void OLD_showmoney();//排序功能,按拖欠款项多少,对所有用户信息进
int NEW_oj();//判断文件是否为空
void EXIT();// 退出



//各种UI
void UI_show1();
void UI_show2();
void UI_show3();
void UI_show4();
void UI_show5();
#define _CRT_SECURE_NO_WARNINGS 
#include"num1.h"
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>
#include<malloc.h> // malloc()等

//=======================================================================
//密码判定函数
void MM_pass() 
{
	//首先进行用户名判断,当存在此用户名后 再进行与该用户名 匹配的密码 判断 。当密码输入3次错误时 退出程序
	int count = 0, a, i;
	char MM[10] = { "passkey" }, MI[10]; //密码存放
	char UW[10] = { "hello" }, UU[10]; //用户名存放
	//-------------------------------------------------------------	
	for (i = 0; i<8; i++)                    //UI欢迎界面
	{
		printf("\n");
	}
	for (i = 0; i<30; i++)
	{
		printf(" ");
	}
	printf("欢迎进入物业管理系统\n");
//-------------------------------------------------------------------------------	
	while (1)			//进入循环				//判断用户名是否存在
	{
		for (i = 0; i<30; i++)
		{
			printf(" ");
		}
		printf("请输入用户名:");  //提示输入用户名
		gets_s(UU);       //键盘得到 用户名

		if (strcmp(UW, UU) == 0)    //如果用户名存在 则判断密码是否正确
		{
		
			for (i = 0; i<30; i++)
			{
				printf(" ");
			}
			printf("请输入密码:");
			for (count = 0; count<3; count++)   //判断密码是否正确
			{

				gets_s(MI);
				a = strcmp(MM, MI);
				if (a == 0)                    // 如果比对 成功
				{
					system("cls");
					return ;                 //返回值,结束此函数
				}
				if (count == 0 || count == 1) //比对不成功
				{
					for (i = 0; i<30; i++)
					{
						printf(" ");
					}
					printf("请输入密码:"); //提示重新输入密码
				}
			}
			//由于执行过count++ 则count为3
			if (count >= 3)                    //密码输错3次 程序锁定 错误判定
			{
				for (i = 0; i<25; i++)
				{
					printf(" ");
				}
				printf("密码3输入错误,程序锁定,退出重试。\n");
				getchar();
				exit(0);
			}
			
		}
		else
		{
			for (i = 0; i<30; i++)
			{
				printf(" ");
			}
			printf("查无此用户!\n");
			
		}
	}

	
	
}

//=======================================================================
//进入界面 UI 实现
void UI_show()       
{
	int i, j;
//--------------------------------------------------------------------
	printf("\n");
	for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量 
	{
		printf("=");
	}
	printf("\n");
	for (i = 0; i < 30; i++)
	{
		printf(" ");
	}
	printf("欢迎进入物业费管理系统");
	for (i = 0; i < 30; i++)
	{
		printf(" ");
	}
	printf("\n");
	for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量 
	{
		printf("=");
	}
	//实现上方欢迎界面
//--------------------------------------------------------------------
	printf("\n\n\n");
	for (i = 0; i < 33; i++)                          //以下实现  菜单界面功能选择
	{
		printf(" ");
	}
	printf("请选择以下功能:\n");
	for (i = 0; i < 33; i++)
	{
		printf(" ");
	}
	printf("1、添加新住户信息\n");
	for (i = 0; i < 33; i++)
	{
		printf(" ");
	}
	printf("2、修改旧住户信息\n");
	for (i = 0; i < 33; i++)
	{
		printf(" ");
	}
	printf("3、删除住户信息\n");

	for (i = 0; i < 33; i++)
	{
		printf(" ");
	}
	printf("4、缴费功能\n");

	for (i = 0; i < 33; i++)
	{
		printf(" ");
	}
	printf("5、排序功能\n");

	for (i = 0; i < 33; i++)
	{
		printf(" ");
	}
	printf("6、退出系统\n");

	printf("\n\n");

	for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量 
	{
		printf("=");
	}
	printf("\n\n");
	for (i = 0; i < 33; i++)
	{
		printf(" ");
	}
	printf("请选择:");
	//实现界面UI

}

//=======================================================================
//新用户信息添加  1、
void NEW_in()
{
	FILE *fp = NULL; //定义文件指针   C:\Users\Administrator\Desktop
	fp = fopen("C:\\Users\\Administrator\\Desktop\\output.txt", "a");//以追加的方式打开 文件
	if (fp == NULL)
	{
		printf("\n出现未知错误!按任意键退出.....\n");
		exit(0);		
	}	
	int build,room, ownmonth;
	float  area, money;
	char numcn[10],numcs[12], id[22], phone[15];
	char ch;
	system("cls"); //清屏	
	UI_show1();  // 界面显示
	while (1)     //进入循环体,直到接收到用户 跳出循环
	{
		printf("请输入姓名:");
		scanf("%s", numcn);
		printf("请输入性别:");
		scanf("%s", numcs);
		printf("请输入身份证号:");
		scanf("%s", id);
		printf("请输入联系电话:");
		scanf("%s", phone);
		printf("请输入楼号:");
		scanf("%d", &build);
		printf("请输入房号:");
		scanf("%d", &room);
		printf("请输入住房面积:");
		scanf("%f", &area);
		printf("请输入每平方米物业费:");
		scanf("%f", &money);
		printf("请输入用户本月之前所拖欠物业费的月份(0代表不拖欠):");
		scanf("%d", &ownmonth);
			//缓冲区保存到文件
		fprintf(fp, "%s  %s  %s  %s  %d  %d  %f  %f  %d\n", numcn,numcs,id,phone,build,room,area,money,ownmonth );
				
		do           // 接收字符 判断是否 继续录入用户信息
		{
			printf("是否继续录入?请选择(Y/N)");
			getchar();   //接收 回车键
			scanf("%c", &ch);

		} while ((ch != 'Y') && (ch != 'y') && (ch != 'n') && (ch != 'N'));

		if ((ch == 'n') || (ch == 'N'))
		{
			fclose(fp);  //如果用户 输入N 则保存 并退出程序
			break;
		}
	}
}

//=========================================================================
void OLD_adjust()		   //修改住户信息的功能 2、
	//    先将硬盘文件中数据 保存到 内存缓冲区中,找到要修改的用户信息,修改后 重新写入文档
{
	system("cls");        //清屏
	people peopleI[10000];//建立结构体 数组
	int number = 0, sign = 0,i=1,a,test;
	char name[10],ch;  
	FILE *fp = NULL;  //文件指针
	UI_show2();       //UI调用
	fp = fopen("C:\\Users\\Administrator\\Desktop\\output.txt", "r+");     //以读写的方式打开文件
	if (fp == NULL)                                                      // 错误检测
	{
		printf("文件打开失败!请先添加用户信息!\n");
		return;
		//	exit(0);
	}

	printf("请输入要修改的住户姓名:");
	scanf("%s", name);
	while(!feof(fp))  //从文件中读取
	{
		fscanf(fp, "%s%s%s%s%d%d%f%f%d", peopleI[i].name, peopleI[i].sex, peopleI[i].IDnumber,peopleI[i].phone,&peopleI[i].building, &peopleI[i].roomID, &peopleI[i].roomarea, &peopleI[i].areamoney,&peopleI[i].owemoney);
	//	fread(&peopleI[i],sizeof(struct people),1,fp);
		//数据每次  读取一行		
		i++;     //记录行的个数
	}
	///-----------------------------------	
	//printf("%f\n", peopleI[1].owemoney);

	printf("\n");
	i--;
	test = i;  //保存 数据的行数
	for (; i >=0; i--)
	{
		a = strcmp(name, peopleI[i].name);  //比较 输入的用户名  和文件中的用户名
		if (a==0)
		{
			sign = 1;  //判断 赋值1  代表找到 该数据
			printf("姓名%s,性别%s,身份证号%s,联系方式%s,楼号%d,房号%d,住房面积%f,每平物业费%f\n拖欠的物业费的月数%d\n", peopleI[i].name, peopleI[i].sex, peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].building, peopleI[i].roomID, peopleI[i].roomarea, peopleI[i].areamoney, peopleI[i].owemoney);
			do   // 友情提示 选择
			{
				printf("你确定要修改该用户的信息吗?(Y/N):");
				getchar();
				scanf("%c", &ch);

			} while ((ch != 'Y') && (ch != 'y') && (ch != 'n') && (ch != 'N'));
			if ((ch == 'y') || (ch == 'Y'))  //如果 选y则 录入信息
			{
				printf("请输入姓名:");
				scanf("%s", &peopleI[i].name);
				printf("请输入性别:");
				scanf("%s", &peopleI[i].sex);
				printf("请输入身份证号:");
				scanf("%s", &peopleI[i].IDnumber);
				printf("请输入联系电话:");
				scanf("%s", &peopleI[i].phone);
				printf("请输入楼号:");
				scanf("%d", &peopleI[i].building);
				printf("请输入房号:");
				scanf("%d", &peopleI[i].roomID);
				printf("请输入住房面积:");
				scanf("%f", &peopleI[i].roomarea);
				printf("请输入每平方米物业费:");
				scanf("%f", &peopleI[i].areamoney);
				printf("请输入用户本月之前所拖欠物业费的月份(0代表不拖欠):");
				scanf("%d", &peopleI[i].owemoney);

				printf("修改成功!");
				fclose(fp);  //关闭文件
				fp = fopen("C:\\Users\\Administrator\\Desktop\\output.txt", "w");
				for (i = 1; i < test; i++) //将内存中 修改过的信息 重新写入文件
				{
					fprintf(fp, "%s  %s  %s  %s  %d  %d  %f  %f  %d\n", peopleI[i].name, peopleI[i].sex, peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].building, peopleI[i].roomID, peopleI[i].roomarea, peopleI[i].areamoney, peopleI[i].owemoney);
				}
				fclose(fp);
				break; //跳出 for循环
			}
			else  //假如不修改信息  再次写入文件
			{
				//for (i = 1; i < test; i++) //将内存中 修改过的信息 重新写入文件
				//{
				//	fprintf(fp, "%s  %s  %s  %s  %d  %d  %f  %f  %d\n", peopleI[i].name, peopleI[i].sex, peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].building, peopleI[i].roomID, peopleI[i].roomarea, peopleI[i].areamoney, peopleI[i].owemoney);
				//}
				fclose(fp);
				break;
			}
		}
	}
	if (sign == 0)
	{
		printf("没找到该用户!\n请按任意键继续....");
		getchar();
	}
}

//===============================================================================
//删除住户信息的功能 3、
void OLD_delete() 
{

	//  先将硬盘文件中数据 保存到 内存缓冲区中,找到要删除的用户信息,删除后 重新写入文档
		system("cls");  //清屏
		people peopleI[10000];//建立结构体 数组
		int number = 0, len = 0, sign = 0, i = 1, a, test,j,p;
		char name[10], ch,newname[10];
		FILE *fp = NULL;  //文件指针
		UI_show3();
		
		fp = fopen("C:\\Users\\Administrator\\Desktop\\output.txt", "r");
		
		if (fp == NULL)
		{
			printf("未找到文件!");
			return;    //返回 main函数
		}

		printf("请输入要删除的住户姓名:");
		scanf("%s", name);
		while (!feof(fp))  //从文件中读取,文件中数据转移到内存数组中区
		{					//!feof(fp)只要文件不到末尾 就一直读下去
			fscanf(fp, "%s%s%s%s%d%d%f%f%d", peopleI[i].name, peopleI[i].sex, &peopleI[i].IDnumber, &peopleI[i].phone, &peopleI[i].building, &peopleI[i].roomID, &peopleI[i].roomarea, &peopleI[i].areamoney,&peopleI[i].owemoney);
			i++;
		}
		///------------------------------------	
		fclose(fp);  //保存文件 
		
		printf("\n");
		i--;   
		test = i;  //保存 行数
		for (; i >= 0; i--)
		{
			a = strcmp(name, peopleI[i].name);  //比较 输入的用户名  和文件中的用户名
			if (a == 0)   //找到相应位置   
			{
				sign = 1;  // 标志 是否找到 数据
				printf("姓名%s,性别%s,身份证号%s,联系方式%s,楼号%d,房号%d,住房面积%f,每平物业费%f,拖欠的物业费的月数%d\n", peopleI[i].name, peopleI[i].sex, peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].building, peopleI[i].roomID, peopleI[i].roomarea, peopleI[i].areamoney, peopleI[i].owemoney);
				//显示出要修改的信息
				do
				{
					printf("你确定要删除该用户的信息吗?(Y/N):");
					getchar();
					scanf("%c", &ch);

				} while ((ch != 'Y') && (ch != 'y') && (ch != 'n') && (ch != 'N'));
				if ((ch == 'y') || (ch == 'Y'))  //假如 确定
				{
				
					
					printf("删除成功!");
					fp = fopen("C:\\Users\\Administrator\\Desktop\\output.txt", "w");  //以写的方式打开,源文件被清除
					for (j = 1; j <test; j++)  //重新写入文件  
					{
						if (j == i) // 不写入 第i个数据
						{
							//操作为空 
						}
						else //否则  写入文件
						fprintf(fp, "%s  %s  %s  %s  %d  %d  %f  %f  %d\n", peopleI[j].name, peopleI[j].sex, peopleI[j].IDnumber, peopleI[j].phone, peopleI[j].building, peopleI[j].roomID, peopleI[j].roomarea, peopleI[j].areamoney, peopleI[j].owemoney);
					}

				
					fclose(fp);  //关闭  保存缓冲区 文件
				}
				else    //假如不修改信息  再次写入文件

				{
					fp = fopen("C:\\Users\\Administrator\\Desktop\\output.txt", "w");  //以写的方式打开,源文件被清除
					for (i = 1; i < test; i++) //将内存中 修改过的信息 重新写入文件
					{
						fprintf(fp, "%s  %s  %s  %s  %d  %d  %f  %f  %d\n", peopleI[i].name, peopleI[i].sex, peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].building, peopleI[i].roomID, peopleI[i].roomarea, peopleI[i].areamoney, peopleI[i].owemoney);
					}
					fclose(fp);
					

				}
			}

		}

		if (sign == 0)   //判断为未找到用户
		{
			
			printf("没找到该用户!\n请按回车键返回菜单选项.....");
			getchar();
			

		}


	


}
//================================================================================================
//缴费功能,计算住户的物业费 4、
void OLD_putmoney()
{
	//  先将硬盘文件中数据 保存到 内存缓冲区中,找到要缴费的用户信息,判断是否 要缴纳费用
	//  如果要缴纳费用 则 显示   应收费用=住房面积*每平方米物业费+ 拖欠的物业费的月数*住房面积*每平方米物业费
	//  读取 实际收取的费用。 则 修改文件中 拖欠物业费的月数, 拖欠物业费的月数=-1  代表本月已经缴纳了物业费用
	system("cls");  //清屏
	people peopleI[10000];//建立结构体 数组
	int sign = 0, i = 1, a, test;
//	float aa;
	char name[10], ch;
	UI_show4();
	FILE *fp = NULL;  //文件指针
	fp = fopen("C:\\Users\\Administrator\\Desktop\\output.txt", "r");  //读取信息
	if (fp == NULL)
	{
		printf("\n出现未知错误!按任意键退出.....\n");
		getchar();
		exit(0);
	}
	printf("请输入要缴费的住户姓名:");
	scanf("%s", name);	
	while (!feof(fp))  //从文件中读取,文件中数据转移到内存数组中区
	{					//!feof(fp)只要文件不到末尾 就一直读下去
		fscanf(fp, "%s%s%s%s%d%d%f%f%d", peopleI[i].name, peopleI[i].sex, &peopleI[i].IDnumber, &peopleI[i].phone, &peopleI[i].building, &peopleI[i].roomID, &peopleI[i].roomarea, &peopleI[i].areamoney, &peopleI[i].owemoney);
		i++;
	}
	printf("\n");
	i--;
	test = i;
	for (; i >= 1; i--) //  查找
	{
		a = strcmp(name, peopleI[i].name);  //比较 输入的用户名  和文件中的用户名
		if (a == 0)   //找到相应位置   
		{
			sign = 1;  // 标志 是否找到 数据
			printf("请您核对缴费人的信息:\n\n");
			if (peopleI[i].owemoney == -1)
			{
				printf("姓名%s,性别%s,身份证号%s,联系方式%s,楼号%d,房号%d,住房面积%f,每平物业费%f\n本月之前拖欠物业费的月数0\n", peopleI[i].name, peopleI[i].sex, peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].building, peopleI[i].roomID, peopleI[i].roomarea, peopleI[i].areamoney, peopleI[i].owemoney);
				printf("\n");
				printf("\n用户该月已经缴纳物业费用!\n请按回车键返回菜单选项.....");
				getchar();
				return;
			}
			else
			{
				printf("姓名%s,性别%s,身份证号%s,联系方式%s,楼号%d,房号%d\n住房面积%f,每平物业费%f,本月之前拖欠物业费的月数%d\n", peopleI[i].name, peopleI[i].sex, peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].building, peopleI[i].roomID, peopleI[i].roomarea, peopleI[i].areamoney, peopleI[i].owemoney);
				printf("\n");
				printf("\n该用户应该缴纳的物业费为:%f 元\n", (peopleI[i].owemoney + 1)*(peopleI[i].roomarea*peopleI[i].areamoney));

			}
				//显示出信息
			/*if (peopleI[i].owemoney == -1)
			{
				
			}*/
		//	printf("\n该用户应该缴纳的物业费为:%f 元\n",(peopleI[i].owemoney+1)*(peopleI[i].roomarea*peopleI[i].areamoney));
			do
			{
				printf("是否为该用户缴费?(Y/N):");
				getchar();
				scanf("%c", &ch);

			} while ((ch != 'Y') && (ch != 'y') && (ch != 'n') && (ch != 'N'));
			if ((ch == 'y') || (ch == 'Y'))
			{
				//计算 并 修改  用户所拖欠的月数
				peopleI[i].owemoney = -1;
				printf("缴费成功!\n请按回车键返回菜单选项.....");
				fclose(fp); //先关闭 文件  再以写的权限打开  清空源文件 
				fp = fopen("C:\\Users\\Administrator\\Desktop\\output.txt", "w");
				for (i = 1; i < test; i++) //重新写入
				{
					fprintf(fp, "%s  %s  %s  %s  %d  %d  %f  %f  %d\n", peopleI[i].name, peopleI[i].sex, peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].building, peopleI[i].roomID, peopleI[i].roomarea, peopleI[i].areamoney, peopleI[i].owemoney);
				}
				fclose(fp);
				getchar();
				return;
			}						
		}
	}
	if (sign == 0)   //判断为未找到用户
	{
		printf("没找到该用户!\n请按回车键返回菜单选项.....");
		getchar();
		getchar();
	}
	
}
//========================================================================================
void OLD_showmoney()//排序功能,按拖欠款项多少,对所有用户信息进大到小排序  5、
{

	//读取到内存缓冲区   对peopleI[i].owemoney 用户所欠费用 的数据进行冒泡排序 并从大到小打印到屏幕中
	system("cls");  //清屏
	people peopleI[10000];//建立结构体 数组
	people tt[1]; //临时变量 交换整个 用户的信息
	//comper *p;
	int number = 0, len = 0, sign = 0, i = 1, a, test, j, p,money[1000],t;
	char name[10], ch, newname[10];

	UI_show5();
	FILE *fp = NULL;  //文件指针

	fp = fopen("C:\\Users\\Administrator\\Desktop\\output.txt", "r+");
	while (!feof(fp))  //从文件中读取,文件中数据转移到内存数组中区
	{					//!feof(fp)只要文件不到末尾 就一直读下去
		fscanf(fp, "%s%s%s%s%d%d%f%f%d", peopleI[i].name, peopleI[i].sex, &peopleI[i].IDnumber, &peopleI[i].phone, &peopleI[i].building, &peopleI[i].roomID, &peopleI[i].roomarea, &peopleI[i].areamoney, &peopleI[i].owemoney);
		i++;
	}

	printf("\n");
	i--;
	test = i;
	//对owemoney 的大小进行 经典冒泡排序

	for(i=1;i<test;i++)
		for (j = 1; j < test - i; j++)
		{
			if (peopleI[j].owemoney < peopleI[j+1].owemoney)
			{
				tt[0] = peopleI[j];
				peopleI[j] = peopleI[j + 1];
				peopleI[j + 1]= tt[0];

			}
		}

	for (i = 1; i < test; i++)   //将信息 从大到小 打印到屏幕
	{
		if (peopleI[i].owemoney == -1)
		{
			printf("姓名%s,性别%s,身份证号%s,联系方式%s,楼号%d,房号%d,住房面积%f,每平物业费%f\n本月之前拖欠物业费的月数0,现在拖欠的物业费用0\n", peopleI[i].name, peopleI[i].sex, peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].building, peopleI[i].roomID, peopleI[i].roomarea, peopleI[i].areamoney, peopleI[i].owemoney);
			printf("\n");
		}
		else
		{
			printf("姓名%s,性别%s,身份证号%s,联系方式%s,楼号%d,房号%d,住房面积%f,每平物业费%f\n本月之前拖欠物业费的月数%d,现在拖欠的物业费用%f\n", peopleI[i].name, peopleI[i].sex, peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].building, peopleI[i].roomID, peopleI[i].roomarea, peopleI[i].areamoney, peopleI[i].owemoney, (peopleI[i].owemoney + 1)*(peopleI[i].roomarea*peopleI[i].areamoney));
			printf("\n");
		}
	}
	printf("请按任意键返回菜单选项......\n");
}
//================================================================================
int NEW_oj()//判断文件是否为空
{
	FILE *fp;

	fp = fopen("C:\\Users\\Administrator\\Desktop\\output.txt", " r");
	if (fp == NULL)
	{
		fp = fopen("C:\\Users\\Administrator\\Desktop\\output.txt", " w");
	}
	
	if (fgetc(fp) == EOF)
	{
		fclose(fp);
		return 0;
	}
	else
	{
		return 1;
		fclose(fp);
	}
}



//================================================================================
void EXIT() // 退出
{ 
	char ch;
	do
	{
		printf("你确定退出吗?(Y/N):");
		getchar();
		scanf("%c", &ch);

	} while ((ch != 'Y') && (ch != 'y') && (ch != 'n') && (ch != 'N'));

	if ((ch == 'y') || (ch == 'Y'))
	{
		exit(0);
	}


}

//===================================================================================
//      各种UI
void UI_show1()
{
	int i;
	for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量 
	{
		printf("=");
	}
	printf("\n");
	for (i = 0; i < 15; i++)
	{
		printf(" ");
	}
	printf("你正在添加用户信息,请根据提示输入用户信息。\n");
	for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量 
	{
		printf("=");
	}
	printf("\n");

}
void UI_show2()
{
	int i;
	for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量 
	{
		printf("=");
	}
	printf("\n");
	for (i = 0; i < 15; i++)
	{
		printf(" ");
	}
	printf("你正在修改用户信息,请根据提示输入用户信息。\n");
	for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量 
	{
		printf("=");
	}
	printf("\n");

}
void UI_show3()
{
	int i;
	for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量 
	{
		printf("=");
	}
	printf("\n");
	for (i = 0; i < 15; i++)
	{
		printf(" ");
	}
	printf("你正在删除用户信息,请根据提示输入用户信息。\n");
	for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量 
	{
		printf("=");
	}
	printf("\n");
}
void UI_show4()
{
	int i;
	for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量 
	{
		printf("=");
	}
	printf("\n");
	for (i = 0; i < 15; i++)
	{
		printf(" ");
	}
	printf("你正在使用缴费功能,请根据提示输入用户信息。\n");
	for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量 
	{
		printf("=");
	}
	printf("\n");

}
void UI_show5()
{
	int i;
	for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量 
	{
		printf("=");
	}
	printf("\n");
	for (i = 0; i < 15; i++)
	{
		printf(" ");
	}
	printf("你正在使用排序功能。\n");
	for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量 
	{
		printf("=");
	}
	printf("\n");
}

 

#define _CRT_SECURE_NO_WARNINGS  //取消安全检查
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>
#include"num1.h"
//以上包含必须的头文件


int main()
{
	//system("mode con cols=80 lines=25");//设置窗口大小  cols 行  
	//system("color D7");//设置颜色
	int pan,p;
	//MM_pass();// 调用 密码程序 输入3次密码错误 程序锁定
	
	
	while (1)
	{
		
		p=NEW_oj();//判断用户文件是否为空
		if (p == 0)
		{
			printf("\n\n查询文件中未存在用户信息,请先进行用户信息录入!!!");
			printf("\n请按回车键,进入用户信息添加系统.....");
			getchar();
			NEW_in();
		}
		system("cls");  //清屏
		UI_show();    //调用 界面UI 显示
		scanf("%d", &pan);
		switch (pan)
		{
		case 1:NEW_in(); break;//新用户信息添加
		case 2:OLD_adjust(); break;//修改住户信息的功能
		case 3:OLD_delete(); break;//删除住户信息的功能
		case 4:OLD_putmoney(); break;//缴费功能,计算住户的物业费
		case 5:OLD_showmoney(); break;//排序功能,按拖欠款项多少,对所有用户信息进行排序
		case 6:EXIT(); break;//退出
		default:printf("\n\t\t\t输入错误! 按回车键返回重新选择");//按键错误反馈
		}
		getchar();
		getchar();
		system("cls");//清屏
	}
	system("pause"); 
	return 0;
}


 

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值