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

2024-03-22 08:30

本文主要是介绍C语言程序设计课程设计 - (物业管理系统 - 纯C),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本套代码分享了我大一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;  //定义别名peoplevoid 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为3if (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\Desktopfp = 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;
}


 

这篇关于C语言程序设计课程设计 - (物业管理系统 - 纯C)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/834937

相关文章

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

Go语言使用sync.Mutex实现资源加锁

《Go语言使用sync.Mutex实现资源加锁》数据共享是一把双刃剑,Go语言为我们提供了sync.Mutex,一种最基础也是最常用的加锁方式,用于保证在任意时刻只有一个goroutine能访问共享... 目录一、什么是 Mutex二、为什么需要加锁三、实战案例:并发安全的计数器1. 未加锁示例(存在竞态)

C语言自定义类型之联合和枚举解读

《C语言自定义类型之联合和枚举解读》联合体共享内存,大小由最大成员决定,遵循对齐规则;枚举类型列举可能值,提升可读性和类型安全性,两者在C语言中用于优化内存和程序效率... 目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.2.1 特点11.2.2 特点21.2.3 特点31.3 联合体的大小1

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

Go语言使用select监听多个channel的示例详解

《Go语言使用select监听多个channel的示例详解》本文将聚焦Go并发中的一个强力工具,select,这篇文章将通过实际案例学习如何优雅地监听多个Channel,实现多任务处理、超时控制和非阻... 目录一、前言:为什么要使用select二、实战目标三、案例代码:监听两个任务结果和超时四、运行示例五

C语言中%zu的用法解读

《C语言中%zu的用法解读》size_t是无符号整数类型,用于表示对象大小或内存操作结果,%zu是C99标准中专为size_t设计的printf占位符,避免因类型不匹配导致错误,使用%u或%d可能引发... 目录size_t 类型与 %zu 占位符%zu 的用途替代占位符的风险兼容性说明其他相关占位符验证示

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

C语言进阶(预处理命令详解)

《C语言进阶(预处理命令详解)》文章讲解了宏定义规范、头文件包含方式及条件编译应用,强调带参宏需加括号避免计算错误,头文件应声明函数原型以便主函数调用,条件编译通过宏定义控制代码编译,适用于测试与模块... 目录1.宏定义1.1不带参宏1.2带参宏2.头文件的包含2.1头文件中的内容2.2工程结构3.条件编