1、计算机科学与技术学院C高级语言程序设计课程设计报告 ( 2014/2015 学年 第 1 学期)学生姓名:高攀学生专业:网络工程学生班级: 132002学生学号: 201320030206指导教师: 张荣国 2015年1月9日计算机科学与技术学院课程设计任务书课程设计名称C高级语言程序设计课程设计课程设计题目小区物业费管理学生姓名高攀专业班级网络工程132002学号201320030206课程设计任务内容问题描述针对小区物业费管理,应用C语言程序设计的基本理论和方法,从对问题的分析研究开始,到编程调试结束的整个过程进行分析和设计,具体包括以下几点.基本要求(1)了解程序设计的方法和步骤,对小区
2、物业费管理进行分析研究。(2) 收集小区物业费管理过程中所需要的信息,如户主名称、户主住址、收费项目、管理单位、收费日期,收费价格等。(3) 系统以菜单方式工作,可以进行:物业费信息录入功能、物业费信息的显示、物业费信息的删除、物业费信息的修改功能、物业费信息查询功能(如给定人名查询物业费信息,给定管理单位查询某月的收费信息)、物业费的统计功能(如按月、按年对物业费进行统计)等,所有录入的信息要以数据文件的形式存放.(4)画流程图:将主函数和每个功能模块的函数的流程图分别画出来;(5) 编写程序代码,对每个模块实现的功能进行详细的说明, 对程序中使用的变量予以说明,对程序中主要语句的功能予以说
3、明;(6)提交课程设计报告。测试要求(1)设计的程序能够方便地运行,达到设计的目的; (2)每个模块都要用不少于20条的实际数据加以测试,并给出测试结果; (3)用户界面友好,功能明确,操作方便。指导教师: 张荣国 时 间:2014年 12 月 13日计算机科学与技术学院课程设计成绩评审表课程设计名称C高级语言程序设计课程设计课程设计题目小区物业费管理学生姓名高攀专业班级 网络工程132002班同组人学号201320030206指导教师张荣国设计成绩评价内容签 字: 时 间: 年 月 日目录第一章 设计问题描述与分析。.。.。.。.。.。.。.。1 1。1物业收费项目。.。.。.。.。.。.。
4、.。.。11.2 实现对物业信息的录入,删除的功能.。.。.。11。3系统目标分析。.。.。.。.。.。.。.。.。.11。4 整体模块。.。.。.。.。.。.。.。.。21.5 相应菜单信息栏.。.。.。.。.。31。6 操作选项。.。.。.。.。.。.。.。3第二章 算法设计与流程图.。.。.。.。.。.。.。.。.4 2。1 算法设计.。.。.。.。.。.。.。.。.。42。1。1 主函数.。.。.。.。.。.。.。.。.。.。.42。1。2 物业信息。.。.。.。.。.。.。.。.。.。.。.。.5 2。2 流程图。.。.。.。.。.。.。.。.。62。2。1主函数。.。.。.。.。.
5、。.。.。.。.。.。6 2。2。2 物业信息。.。.。.。.。.。.。.。.。.。.。.。.。.。7第三章 程序设计编码与测试。.。.。.。.。.。.。.。.。.。.83。1首次登录界面.。.。.。.。.。.。.。.。.。.83。2修改密码 。.。.。.。.。.。.。.。.。.。.。.。.。.。.123.3 进入系统。.。.。.。.。.。.。.14 3.3。1进入菜单选项。.。.。.。.。.。.。.。.。.。.。.。.。14 3。3。2信息录入.。.。.。.。.。.。.。.。.。.。.。.。.。17 3。3.3增加数据。.。.。.。.。.。.。.。.。.。.。.。.。20 3。3。4修改数据
6、.。.。.。.。.。.。.。.。.。.。.。.。22 3。3。5信息查询。.。.。.。.。.。.。.。.。.。.。.。27 3。3.6 信息删除。.。.。.。.。.。.。.。.。.。.。32 3。3.7退出系统 .。.。.。.。.。.。.。.。.。.。.。.。36第四章 心得体会。.。.。.。.。.。.。38附件:流程图与代码。.。.。.。.。.。.。.。.。.。.。.。39附件一 流程图 .。.。.。.。.。.。.。.。.。.。.。39 附表1 主函数。.。.。.。.。.。.。.。.。.。.。.。.。39 附表2 物业信息模块.。.。.。.。.。.。.。.。.。.。40附件二 代码.。.。.
7、。.。.。.。.。.。.。.。.。41第一章 设计问题描述与分析1.问题描述本物业管理系统能够提供物业费的查询,输入,删除,插入,修改等操作.其业务如下图所示.小区物业收费管理系统物业费项目垃圾费报警费清理费停车费水电费 图11 物业收费项目1。1物业费收费项目实现对水费的录入,管理和查询的功能物业收费项目基本信息包括(水电费,垃圾费,停车费,报警费,清理费,)1。2实现对物业费的录入,删除和查询的功能。 物业费包括(物业费ID、业主ID、收费标准、计费起始日期、计费终止日期、应收金额、实收金额、本年余额、是否收缴、收费日期、累计缴费)1.3系统目标分析数据流程分析本系统包括以下外部实体.业主
8、:接收系统生成的缴费单。物业中心:负责业主信息登记,录入业主每月水表及煤气表读数及计费标准.小区收费系统数据流程图如下 图 13 小区收费系统数据流程图1.4整体模块 模块功能实现对模块信息简单的描述,模块图如下所示;界面 菜单选项 菜单信息功能菜单 操作各对应子程序输入,增加,删除,查找,插入等操作各种物业项目的ID,收费标准,收费日期,是否缴费等基本信息水费,电费,煤气费公共区域维修费等项目ID进入(用户ID密码) 物业项目 图 14 小区收费系统过程流程图1。5相应菜单信息栏 信息选项 A,水电费 B,垃圾费 C,煤气费 D,停车费 E,报警费 F,公共水电费 G,清理费 提示“请输入您
9、要进入的标号:” 输入标号: A-I (判断)图 1-5 物业菜单选项1.6操作选项 操作选项 1,输入 2,增加 3,修改 4,查询 5,删除 6,退出 提示“请输入您要执行的标号:” 输入标号:1-6 (判断进入)图 16 操作选项功能第二章 算法设计与流程图2。1算法设计 开始2。1。1主函数Y 相应 操作选项号码是否有效N输入密码 执行子程序是否正确输入操作号 结束N 选择菜单函数 物业项目Y 进入菜单函数 Y标号是否有效Y输入选项NN输入标号 进入菜单函数系统 图 21 主函数流程图2。1。2物业信息 开始输入一个数判断是否有效 YN 进入菜单函数输入z判断是否有效ny 进入功能模块
10、函数 执行相应功能 结束图 22 物业信息模块2。2流程图2.1。2主函数 开始Y 操作选项k是否有效Nmima 执行子程序Key=Mima?Cink 结束N 选择物业项目 Main_menu()Y YCinpw是否有效YNCinw Y 进入系统 图23 主函数流程图2。2.2物业信息模块 开始输入zz=a&z=i? NY Main_menu()输入zx=1&x=6ny Fun() 结束 图 2-4 物业信息模块流程图第三章 程序设计编码与测试 程序代码与测试描述 3.1首次登陆界面主函数为密码函数,进入系统时提示输入管理员密码.若是首次登陆提示预设密码,输入预设密码,正确即可显示下一指令。如
11、图31 图 31 管理员登陆界面int Key()char mima20,key20;char yu_mima20=12345”;int flag;int p;char w; int j;ifstream in;ofstream out;fstream f; /输入输出对象cout” * ”endl; /登录界面cout” 欢迎登陆小区物业资费管理系统 endl;cout” * ”endlendl;doflag=0;cout请输入管理员密码:”endl;in。clear();in.open(F:a。txt,ios::in); if(in。fail()j=1;elsej=2;switch(j)c
12、ase 1: /首次登录coutendl 首次登陆,您的预设密码为:12345:”endlendl;cout请输入:”;cinmima ;coutendl;if(strcmp(yu_mima,mima)=0)flag=1;cout” 密码正确,请输入下一步指令:”endlodd_mima; cinmima; /从文件中输出,并比较if(strcmp(odd_mima,mima)=0)flag=1;cout” 密码正确,请输入下一步指令:”endlendl;elsedo cinmima; if(strcmp(odd_mima,mima)=0)flag=1;elseflag=0;cout” 密码错
13、误,请重新输入endlendl; while(flag=0);break;in.close();if (flag=0)cout” 密码有误,请重新输入”endlendl;while (flag=0); cout” *”endl; cout” 0。修改密码 *endl; cout * 1。进入系统 ”endl; cout” 2。退出系统 *endl; cout” *”endl; do cout 请输入你的指令(0 2):”p; switch(p) case 0: /修改密码 cout”请输入新密码:endl; cinkey; out.open(F:a。txt,ios:out); out。clea
14、r(); outkey; out.close(); break; case 1: charges_menu();break; /进入系统 case 2: /退出系统 cout谢谢使用小区物业资费管理系统! ”endlendl” 拜拜,欢迎下次进入”endlendl; exit(0); break; default : cout 输入指令有误,请重新输入:”endlendl;break; while (p0|p2); cout” 你想继续其他操作吗? y / n :”endl ; do cinw; coutendl; if(w=n ) exit(0); if(w!=y & w!=n) cout
15、指令有误!请重新输入: ”endl; while (flag=0); if (w=y) cout” 请输入操作代码: 0 修改密码”endl; cout 1 进入系统endl; cout” 2 退出系统”p;return p; /密码函数int main()Key();return 0;3。2修改密码将初始密码改为自己想设置的密码,并保存;下次登陆识别更改的密码.如下图32,33。 图 3-2 修改密码 图 3-3密码保存到文件中 case 0: /修改密码 cout请输入新密码:”endl; cinkey; out.open(F:a.txt,ios::out); out。clear(); o
16、utkey; out.close(); break; case 1: charges_menu();break; /进入系统 case 2: /退出系统 cout”谢谢使用小区物业资费管理系统! ”endlendl” 拜拜,欢迎下次进入endlendl; exit(0); break; default : cout 输入指令有误,请重新输入:endlendl;break; while (p0p2);3。3进入系统 3.3。1进入菜单选项 根据收费项目菜单选项提示,输入相应编号,进入系统.如图33 图 33 系统菜单编号输入编号后,会有物业功能选项提示,如3-4图. 图 3-4 物业功能选项显示
17、代码如下:void charges_menu () /物业项目cout” * endl;cout 欢迎进入小区物业管理资费系统 ”endl;cout” * ”endl;cout” * ”endl;cout” 物业费收费项目菜单选项提示 ”endl;cout * a。 垃圾费 * ”endl;cout b. 供暖费 endl;cout” * c。 停车费 endl;cout d. 报警费 ”endl;cout” e. 清理费 * ”p;coutp;cout=i); switch(p) case a: fun(); break; case b: fun();break; case c: fun()
18、;break; case d: fun();break; case e: fun();break; case f: fun();break; case g: fun();break; case h:fun();break; /读出物业费收费项目3.3.2 信息录入 输入标号,进入信息录入模块,输入信息,系统自动保存到文件中。如图35 ,36。 图35 信息录入 图 36 信息存入文件代码如下:case 1 : char name 20;char ID_num10;char biaozhun5;char this_num5;char last_num5;char gave_charge5;cha
19、r vir_charge5;char use_num5;char state_date20;char end_date20;char odd_charge5;char wh_charge2;char acc_charge5;char c;ofstream out;out.open(”dat”, ios::out|ios:app);docout” 请输入物业名:” ;cinname;coutbiaozhun;cout 请输入本月读数: ”;cinthis_num;coutlast_num;coutgave_charge;cout 请输入实收金额:;cinvir_charge;coutuse_nu
20、m;coutstate_date;cout 请输入计费终止日期:;cinend_date;coutodd_charge;cout”请输入是否缴费:;cinwh_charge;coutacc_charge;coutendl;outsetw(20)namesetw(10)ID_numsetw(5)biaozhunsetw(5)this_numsetw(5)last_numsetw(5)gave_chargesetw(5)vir_chargesetw(5)use_numsetw(20)state_datesetw(20)end_datesetw(5)odd_chargesetw(5)wh_charg
21、esetw(5)acc_charge; /物业费信息 文件输入cout 数据输入成功,想继续其他操作吗? y / n :endl ”;cinc;coutendl;doif (c!=y & c !=n)cout” 指令错误!请重新输入 !”endlc;else flag=1;while(flag=0);while(c=y);out。close();break; break;3。3。3增加数据 输入菜单编号2,进入增加数据函数中,根据提示,输入要添加的数据,添加后系统会自动保存到文件夹中。如图3-7 ,38。 图 3-7 增加数据 图 38 添加的数据保存到文件中代码如下:case 2: /增加数
22、据 char name 20;char ID_num10;char biaozhun5;char this_num5; char last_num5;char gave_charge5;char vir_charge5;char use_num5;char state_date20;char end_date20;char odd_charge5;char wh_charge2;char acc_charge5;char c;out。open(dat ,ios:app);docout” 请输入用户名: ;cinname;coutID_num;cout 请输入标准 : ;cinbiaozhun;
23、cout” 请输入本月读数: ”;cinthis_num;coutlast_num;coutgave_charge;coutvir_charge;coutstate_date;coutend_date;cout” 请输入本月余额:”;cinodd_charge;coutwh_charge;cout” 请输入累计金额:;cinacc_charge; outsetw(20)namesetw(10)ID_numsetw(5)biaozhunsetw(5)this_numsetw(5)last_numsetw(5)gave_chargesetw(5)vir_chargesetw(5)use_numse
24、tw(20)state_datesetw(20)end_datesetw(5)odd_chargesetw(5)wh_chargesetw(5)acc_charge; /物业费信息插入 文件输入 cout” 数据输入成功,想继续其他操作吗? y / n :”endl” ;cinc;coutendl;doif (c!=y & c !=n)cout” 指令错误!请重新输入 !endlc;else flag=1;while(flag=0);while(c=y);out。close();break;3.3。4修改数据 输入标号3,根据提示输入你要修改的用户名,再根据格式输入新的数据.数据输入后,系统自
25、动保存到文件中。如图39. 图3-9 修改信息代码如下:case 3: /物业费信息修改 char name 20;char ID_num10;char biaozhun5;char this_num5;d char last_num5;char gave_charge5;char vir_charge5;char use_num5;char state_date20;char end_date20;char odd_charge5;char wh_charge2;char acc_charge5;char c;char na20; char ID10; char biao20; char t
26、n5; char ln5; char gc5; char vc5; char un5; char sd20; char ed20; char oc5; char wc2; char ac5; do int flag=0; cout请输入你要修改的用户名:endl; cinna; coutname; if(strcmp(name,na)=0) flag=1;coutna; cout” 请输入用户ID : ; cinID;cout” 请输入标准 : ”;cinbiao;couttn;coutln;cout” 请输入应收金额:;cingc;cout” 请输入实收金额:;cinvc;coutun;co
27、ut 请输入计费起始日期:”;cinsd;cout” 请输入计费终止日期:”;cined;coutoc;cout”请输入是否缴费:”;cinwc;cout 请输入累计金额:”;cinac; coutendl;strcpy (name ,na);strcpy( ID_num ,ID); strcpy(biaozhun ,biao); strcpy (this_num, tn); strcpy(last_num, ln); strcpy(gave_charge,gc); strcpy(vir_charge, vc); strcpy(use_num,un); strcpy(state_date,sd
28、); strcpy(end_date,ed); strcpy(odd_charge,oc); strcpy(wh_charge,wc); strcpy(acc_charge,ac); f.seekp(0,ios:cur); fsetw(20)nasetw(10)IDsetw(5)biaosetw(5)tnsetw(5)lnsetw(5)gcsetw(5)vcsetw(5)unsetw(20)sdsetw(20)edsetw(5)ocsetw(2)wcsetw(5)ac; /物业信息修改插入 文件输入 cout” 修改成功! endlendl;break; f.close(); if(flag=
29、0) cout”你要修改的物业不存在! endlendl; cout 你想继续修改吗? y/n :”endl; cinc; coutendl; if(c=n ) break; if(c!=y& c!=n) cout” 指令错误! 请重新输入:”endlc; while (c=y); break;3.3.5信息查询 输入标号4,进入信息显示模块,选择你想查询的方式进行查询。根据提示输入想要查找的用户或编号,系统会自动显示信息。如图 3-11 ,312. 图 311 信息显示 图 312 文件中的信息代码如下:case 4: /信息查询 char name 20;char ID_num10;char biaozhun5;char this_num5; char last_num5;char gave_charge5;char vir_charge5;char use_num5;char state_date20;char end_date20;char odd_charge5;char wh_charge2;char acc_charge5;char c; cout 请选择你要查询的方式: ”endlendl” 1。按用户名查找endlendl” 2。按ID号查询”en