c语言课程设计报告物业费管理系统.docx
- 文档编号:7536301
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:10
- 大小:124.57KB
c语言课程设计报告物业费管理系统.docx
《c语言课程设计报告物业费管理系统.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告物业费管理系统.docx(10页珍藏版)》请在冰豆网上搜索。
c语言课程设计报告物业费管理系统
计算机程序设计基础(C语言)
课程设计说明书
设计题目:
物业费管理系统
班级:
姓名:
学号:
2021年4月
设计任务书
完成小区物业费用管理系统设计。
功能要求:
(1)新住户信息的添加。
(户主姓名、性别、身份证号、联系电话、楼号、
单元号、房号、平米数、每平米物业价格、应缴纳物业费)
(2)修改住户信息的功能。
(3)删除住户信息的功能。
(4)应缴物业费自动生成。
每月1号,自动生成本月份的物业费。
如果该
住户之前的物业费未交清,则本月物业费与之前拖欠费用进行累加,为该用户应
缴纳的物业费。
(5)缴费功能。
根据用户缴纳金额,修改“应缴纳物业费”。
(6)统计功能:
能够按楼号分类统计所有未交清物业费的记录。
能够按拖
欠款项多少,对所有用户信息进行从大到小排序。
(7)用菜单进行管理
一、需求分析
完成小区物业费用管理系统设计。
功能要求:
(1)将新住户信息的添加到文件中。
(建立结构体,包括户主姓名、性别、身份证号、联系电话、楼号、单元号、房号、平米数、每平米物业价格、应缴纳物业费)
(2)修改住户信息的功能。
(3)删除住户信息的功能。
(4)计算物业费,物业费=本月物业费+之前拖欠的物业费
(5)缴费功能。
根据用户缴纳金额,修改“应缴纳物业费”。
(6)统计功能:
计算拖欠款项,并对所有用户信息进行从大到小排序。
(7)用菜单进行管理
二、总体设计
(一)总体思路:
用选择语句实现各个功能,每一个功能可以用一个函数实现,因此还需要编辑几个函数。
(二)完整过程:
用NEW_oj()函数判断文件是否为空,若是,则用UI_show()函数输入用户信息,若不为空,清屏并转入菜单。
输入一个整型数,用switch函数选择功能,
1进入NEW_in()函数添加新用户信息,
2进入OLD_adjust()函数修改住户信息,
3进入OLD_delete()函数删除住户信息,
4进入OLD_putmoney()函数进行缴费功能,计算住户的物业费,
5进入OLD_showmoney()函数,进行排序功能,按拖欠款项多少,对所有用户信息进行排序,
6进入voidEXIT()函数,退出程序
若输入其他,则反馈错误
实现完功能后清屏并用system("pause")返回菜单。
(三)函数定义:
voidUI_show()
定义整型变量i,j。
换行,用for循环输入75个“=”,换行,用for循环输入30个空格,输入字符串“欢迎进入物业费管理系统”,用for循环输入30个空格,换行,用for循环输入75个“=”,换3行,用for循环输入33个空格,输入字符串“请选择以下功能:
”,换行,用for循环输入33个空格,输入字符串“1、添加新住户信息”,换行。
用for循环输入33个空格,输入字符串“1、添加新住户信息”,换行,
用for循环输入33个空格,输入字符串“2、修改旧住户信息”,换行,
用for循环输入33个空格,输入字符串“3、删除住户信息”,换行,
用for循环输入33个空格,输入字符串“4、缴费功能”,换行,
用for循环输入33个空格,输入字符串“5、排序功能”,换行,
用for循环输入33个空格,输入字符串“6、退出系统”,换两行,
用for循环输入75个“=”,换两行,用for循环输入33个空格,输入字符串“请选择:
”。
voidNEW_in()1、新用户信息添加
定义文件指针fp,用fopen以追加a的方式打开文件,若地址错误,则反馈错误并退出。
定义整型数据build,unit,room,ownmonth;浮点型变量area,money;字符数组numcn[10],numcs[12],id[22],phone[15];字符变量ch;
system("cls")清屏,调用函数UI_show1()进入界面
用while
(1)进入循环体,直到接收到用户跳出循环
对上述变量进行输入,用
fprintf(fp,"%s%s%s%s%d%d%d%f%f%d\n",numcn,numcs,id,phone,build,unit,room,area,money,ownmonth)将数据从缓冲区保存到文件。
用do循环询问是否继续输入:
输入字符ch,若为不为“n”“N”“y”“Y”则进入循环重新发文,若为“n”或“N”则用fclose(fp)函数保存并退出,用break退出while
(1)循环,若为“y”或“Y”则进入while
(1)的下一次循环。
voidOLD_adjust()2、修改住户信息的功能
清屏,建立结构体数组peopleI[10000],定义变量intnumber=0,sign=0,i=1,a,test;
charname[10],ch;建立文件指针fp,调用UI_show2()函数进入界面,用
fp=fopen("C:
\\Users\\Administrator\\Desktop\\output.txt","r+");以读写的方式打开文件
若地址错误,则反馈并用exit(0)退出。
输入修改用户的姓名字符数组name,用while(!
feof(fp))将用户信息全部写入,用fscanf读入信息,每读入一个用户的信息整型变量i自增一次。
换行,i自减一次,赋值给test。
用for循环,strcmp函数比较name和文件中的名字,若找到则将1赋值给sign,用printf函数输出文件中该用户的信息
用do循环询问是否修改信息,输入字符ch,若ch不是“y”“Y”“n”“N”则重新询问,若ch是“y”或“Y”则用scanf输入信息,fclose(fp)关闭文件
用fopen以只写w的方式打开文件,用for循环,用fprintf将内存中修改后的信息重新写入文件,fclose(fp)关闭文件,break关闭for循环。
若ch为“n”或“N”则用for循环,用fprintf再次写入文件,fclose关闭文件,break跳出for循环
若没找到名字则反馈未找到,
voidOLD_delete()3、删除住户信息的功能
清屏,建立结构体数组peopleI[10000],定义变量intnumber=0,len=0,sign=0,i=1,a,test,j,p;charname[10],ch,newname[10];建立文件指针fp,用UI_show3()函数进入界面
用fopen函数以只读r的方式打开文件,若地址错误,则反馈错误并退出。
输入删除用户的姓名字符数组name,用while(!
feof(fp))将用户信息全部写入,用fscanf读入信息,每读入一个用户的信息整型变量i自增一次。
,fclose(fp)关闭文件。
换行,i自减一次,赋值给test。
用for循环,strcmp函数比较name和文件中的名字,若找到则将1赋值给sign,用printf函数输出文件中该用户的信息。
用do循环询问是否修改信息,输入字符ch,若ch不是“y”“Y”“n”“N”则重新询问,若ch是“y”或“Y”则用scanf输入字符串“删除成功”。
用fopen以只写w的方式打开文件,用for循环for(j=1;j Fclose关闭文件。 若ch为“y”或“H”,用fopen以只写的方式打开文件,用fprintf写入文件,fclose关闭文件 若未找到用户,则用printf输出“没找到该用户! \n请按回车键返回菜单选项.....” voidOLD_putmoney()4、缴费功能,计算住户的物业费 清屏,建立结构体数组peopleI[10000],定义变量intsign=0,i=1,a,test;charname[10],ch;用UI_show4()函数进入页面,建立文件指针fp,用fopen以只读r的方式打开文件,如果fp==NULL(地址错误),用printf函数输出“\n出现未知错误! 按任意键退出.....\n”,用exit(0)退出 用scanf输入用户姓名的字符串,变量为name,用while(! feof(fp))将文件中的数据全部读取,读取用fscanf,每读取一个用户整型变量i自增一次,换行,i自减一次,并赋值给test。 用for循环,strcmp函数比较name和文件中的名字,若找到则将1赋值给sign,若用户拖欠的月数为-1即本月已缴纳物业费,则用printf函数输出改用户信息,换行并用printf输出以缴纳物业费。 若拖欠月份不为-1则用printf输出用户信息,换行,printf输出该用户应该缴纳的物业费,公式为(peopleI[i].owemoney+1)*(peopleI[i].roomarea*peopleI[i].areamoney) 用do循环询问是否缴费,输入字符变量ch,若不为“n”“N”“y”“Y”则重新发问,若ch为“y”或“Y”,将-1赋值给peopleI[i].owemoney,printf输出缴费成功,fclose关闭文件,用fopen以只写w的方式打开文件,用for循环,用fprintf将用户信息重新写入,fclose关闭文件 若未找到用户,则用printf输出未找到用户 voidOLD_showmoney()5、排序功能,按拖欠款项多少,对所有用户信息进大到小排序 清屏,建立结构体数组peopleI[10000],tt[1],定义变量intnumber=0,len=0,sign=0,i=1,a,test,j,p,money[1000],t;charname[10],ch,newname[10];用UI_show5()函数进入页面,建立文件指针fp,用fopen以读写r+的方式打开文件,用while(! feof(fp))将用户信息全部写入,用fscanf读入信息,每读入一个用户的信息整型变量i自增一次。 ,fclose(fp)关闭文件。 换行,i自减一次,赋值给test。 用for循环对owemoney的大小进行冒泡排序,用for循环将信息从大到小打印到屏幕。 若peopleI[i].owemoney==-1,则printf输出用户信息和“本月之前拖欠物业费的月数0,现在拖欠的物业费用0”,否则输出用户信息并计算拖欠物业费用,计算公式为(peopleI[i].owemoney+1)*(peopleI[i].roomarea*peopleI[i].areamoney),换行,printf输出“请按任意键返回菜单选项......”。 voidEXIT()6、退出 定义字符变量ch,用do循环询问是否退出,scanf输入ch,若不为“y”“Y”“n”“N”则重新发问,若为“y”或“N”则exit(0)退出 intNEW_oj()判断文件是否为空 建立文件指针fp,用fopen以只读r的方式打开文件,若地址出错,用fopen以只写w的方式打开文件。 用fgets读入文件,若失败则fclose关闭文件,返回值为0;若成功则返回值为1,fclose关闭文件。 三、详细设计 typedefstructpeople建立名为people的结构体类型 voidUI_show()进入菜单 voidNEW_in()添加新用户信息 voidOLD_adjust()修改住户信息 voidOLD_delete()删除住户信息 voidOLD_putmoney()缴费功能,计算住户的物业费 voidOLD_showmoney()排序功能,按拖欠款项多少,对所有用户信息进行排序 intNEW_oj()判断文件是否为空 voidEXIT()退出 voidUI_show1(); voidUI_show2(); voidUI_show3(); voidUI_show4(); voidUI_show5();设计各个界面 UI_show()函数进入菜单。 以选择结构进行不同功能: 1进入NEW_in()函数添加新用户信息, 2进入OLD_adjust()函数修改住户信息, 3进入OLD_delete()函数删除住户信息, 4进入OLD_putmoney()函数进行缴费功能,计算住户的物业费, 5进入OLD_showmoney()函数,进行排序功能,按拖欠款项多少,对所有用户信息进行排序, 6进入voidEXIT()函数,退出程序 四、程序运行结果测试与分析 主菜单 1、用户信息输入 2、修改信息 3、删除信息 4、缴费功能 5、排序功能 6、退出系统 五、结论与心得 (一)、学会了菜单的制作方法,加深对菜单的理解。 开始对菜单的制作无从下手,主要不知道如何将菜单与系统的功能联系起来,怎么通过菜单实现各个功能。 可以用选择语句来实现不同的功能,而选择这一过程是通过输入不同的信息实现的,在此过程中菜单的作用就是为输入什么信号提供向导。 (二)、能更加熟练的使用结构体 (三)、加深对数据文件的理解,能够粗略的使用数据文件,学会怎么添加、修改、删除数据。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 物业 管理 系统