资源描述
计算机科学与技术学院
《C高级语言程序设计》课程设计报告
( 2014/2015 学年 第 1 学期)
学生姓名:高攀
学生专业:网络工程
学生班级: 132002
学生学号: 201320030206
指导教师: 张荣国
2015年 1 月 9 日
计算机科学与技术学院
课程设计任务书
课程设计名称
C高级语言程序设计课程设计
课程设计题目
小区物业费管理
学生姓名
高攀
专业班级
网络工程132002
学号
201320030206
课程设计任务内容
[问题描述]
针对小区物业费管理,应用C语言程序设计的基本理论和方法,从对问题的分析研究开始,到编程调试结束的整个过程进行分析和设计,具体包括以下几点.
[基本要求]
(1)了解程序设计的方法和步骤,对小区物业费管理进行分析研究。
(2) 收集小区物业费管理过程中所需要的信息,如户主名称、户主住址、收费项目、管理单位、收费日期,收费价格等。
(3) 系统以菜单方式工作,可以进行:物业费信息录入功能、物业费信息的显示、物业费信息的删除、物业费信息的修改功能、物业费信息查询功能(如给定人名查询物业费信息,给定管理单位查询某月的收费信息)、物业费的统计功能(如按月、按年对物业费进行统计)等,所有录入的信息要以数据文件的形式存放.
(4)画流程图:将主函数和每个功能模块的函数的流程图分别画出来;
(5) 编写程序代码,对每个模块实现的功能进行详细的说明, 对程序中使用的变量予以说明,对程序中主要语句的功能予以说明;
(6)提交课程设计报告。
[测试要求]
(1)设计的程序能够方便地运行,达到设计的目的;
(2)每个模块都要用不少于20条的实际数据加以测试,并给出测试结果;
(3)用户界面友好,功能明确,操作方便。
指导教师: 张荣国
时 间:2014年 12 月 13日
计算机科学与技术学院
课程设计成绩评审表
课程设计名称
《C高级语言程序设计》课程设计
课程设计题目
小区物业费管理
学生姓名
高攀
专业班级
网络工程132002班
同组人
学号
201320030206
指导教师
张荣国
设计成绩
评价内容
签 字:
时 间: 年 月 日
目录
第一章 设计问题描述与分析。。。。。。.。。.。。..。。。.。.。。.。。。..。1
1。1物业收费项目。.。.。。。..。.。。。。。。.。.....。。.。。.。。。。1
1.2 实现对物业信息的录入,删除的功能...。。.。。...。。1
1。3系统目标分析。。。。.。.。...。...。.。.。。...。。..。。。。。.1
1。4 整体模块。。..。。。.。。.。。。...。。.。。。。。.。。。。.。。。.。。。2
1.5 相应菜单信息栏..。。.。。。。.。。。。。。.。。。。。。。。。。。..。。3
1。6 操作选项。。...。。..。。..。。。。。。。。。.。...。。。。。。。.。.。3
第二章 算法设计与流程图..。.。。。。。。。。...。。.。。。.。。.。.。.。。..4
2。1 算法设计.。.。。。。..。。..。。...。.。。。。。.。。。.。。。。。.。。4
2。1。1 主函数..。。。。.。..。。。。。...。。.。。。。...。。。.....。。。.。。.。.。..4
2。1。2 物业信息。.。。.。。..。。.。。。.。。.。。。。。。。。.。。.。。.。。...。..。...5
2。2 流程图。.。。.。.。.。。。。。......。。。.。。。。。..。。。。.。。。。6
2。2。1主函数。.。。。。.。。。.。。....。。...。。。.。。。.。。。。。.。。。。.。.....。。6
2。2。2 物业信息。.。.。.。。...。.。.。。。.。。.。.。。。。。。.。.。..。。...。。。。。7
第三章 程序设计编码与测试。。.。。..。。.。.。。.。。.。。。.。....。.。.8
3。1首次登录界面...。。。。.。。。..。.。。。。.....。..。.。.。....。。。。。。。.8
3。2修改密码 。...。。。。.。。。.。。.。.。.。.。。。...。..。.。。...。。。.。.。.12
3.3 进入系统。...。。。。。。.。。。...。。。。。。。。。。.。..。.。。。。.14
3.3。1进入菜单选项。....。。..。...。.。。。.。.。。。.。.。..。。。.。。.。。.。。14
3。3。2信息录入.。.。..。.。.。.。。。....。。。。.。。.。。。.。。。。。..。.。...。。17
3。3.3增加数据。。。。.。...。..。。.。..。.。。.。。。...。。。.。。。.。。.。。。.。。20
3。3。4修改数据.。。.。.。。。。。。。。..。。.。。。。。。....。.。.。.。.。。。..。.。。22
3。3。5信息查询。。。。.。。。。。。。.。..。.。。。。..。。..。..。。。.。..。.。。.。。。27
3。3.6 信息删除。.。...。.。.。.。.。。。。.。。...。。。。。.。。..。。。。。。。。。。。32
3。3.7退出系统 .。..。。。。。.。.。。.。。....。。。.。。。。。.。。..。....。.。.。36
第四章 心得体会。.。。。。.。。。。。。.。。.。。.。...。。。。。。38
附件:流程图与代码。.。..。。。。...。。.。..。。。...。.。。..。.。..。.。。。39
附件一 流程图 .。。。.。..。。..。。。.。。.。。。。。。。。。....。。.。。。.。。.。.。39
附表1 主函数。。。.。。。.。。。。.。。。。。.。。。..。。.。..。。。。...。.。。。.。.。.。。39
附表2 物业信息模块..。。。。...。。..。。。..。.。。.。..。。。.。。。。..。。....。40
附件二 代码..。。..。。。。.。。。.。。。。。.。..。。.。。。.。。..。。。。.。。。。。。。.。41
第一章 设计问题描述与分析
1.问题描述
本物业管理系统能够提供物业费的查询,输入,删除,插入,修改等操作.其业务如下图所示.
小区物业收费管理系统
物业费项目
垃圾费
报警费
清理费
停车费
水
电费
图1—1 物业收费项目
1。1物业费收费项目
实现对水费的录入,管理和查询的功能物业收费项目基本信息
包括(水电费,垃圾费,停车费,报警费,清理费,)
1。2实现对物业费的录入,删除和查询的功能。
物业费包括(物业费ID、业主ID、收费标准、计费起始日期、计费终止日期、应收金额、实收金额、本年余额、是否收缴、收费日期、累计缴费)
1.3系统目标分析
数据流程分析
本系统包括以下外部实体.
业主:接收系统生成的缴费单。
物业中心:负责业主信息登记,录入业主每月水表及煤气表读数及计费标准.
小区收费系统数据流程图如下
图 1—3 小区收费系统数据流程图
1.4整体模块
模块功能实现对模块信息简单的描述,模块图如下所示;
界面 菜单选项 菜单信息功能菜单 操作
各对应子程序
输入,
增加,
删除,查找,插入等操作
各种物业项目的ID,收费标准,收费日期,是否缴费等
基本信息
水费,电费,煤气费
公共区域维修费
等项目ID
进入
(用户ID
密码)
物
业
项
目
图 1—4 小区收费系统过程流程图
1。5相应菜单信息栏
信息选项
A,水电费
B,垃圾费
C,煤气费
D,停车费
E,报警费
F,公共水电费
G,清理费
提示“请输入您要进入的标号:”
输入标号: A---I (判断)
图 1-5 物业菜单选项
1.6操作选项
操作选项
1,输入
2,增加
3,修改
4,查询
5,删除
6,退出
提示“请输入您要执行的标号:”
输入标号:1--6 (判断进入)
图 1—6 操作选项功能
第二章 算法设计与流程图
2。1算法设计
开始
2。1。1主函数
Y
相应 操作选项
号码是否有效
N
输入密码
执行子程序
是否正确
输入操作号
结束
N
选择菜单函数
物业项目
Y
进入菜单函数
Y
标号是否有效
Y
输入选项
N
N
输入标号
进入菜单函数系统
图 2—1 主函数流程图
2。1。2物业信息
开始
输入一个数
判断是否有效
YN
进入菜单函数
输入z
判断是否有效
n
y
进入功能模块函数
执行相应功能
结束
图 2—2 物业信息模块
2。2流程图
2.1。2主函数
开始
Y
操作选项
k是否有效
N
mima
执行子程序
Key==
Mima?
Cin>>k
结束
N
选择物业项目
Main_menu()
Y
Y
Cin>>p
w是否有效
Y
N
Cin>>w
Y
进入系统
图2—3 主函数流程图
2。2.2物业信息模块
开始
输入z
z>=’a’&&z<=’i’?
N
Y
Main_menu()
输入z
x=’1’&&x=’6’
n
y
Fun()
结束
图 2-4 物业信息模块流程图
第三章 程序设计编码与测试
程序代码与测试描述
3.1首次登陆界面
主函数为密码函数,进入系统时提示输入管理员密码.若是首次登陆提示预设密码,输入预设密码,正确即可显示下一指令。如图3—1
图 3—1 管理员登陆界面
int Key()
{
char mima[20],key[20];char yu_mima[20]="12345”;
int flag;int p;char w; int j;
ifstream in;
ofstream out;
fstream f; //输入输出对象
cout〈〈” **************************************** ”〈<endl; //登录界面
cout<〈” 欢迎登陆小区物业资费管理系统 "〈<endl;
cout〈〈” **************************************** ”<<endl〈〈endl;
do{
flag=0;
cout〈<"请输入管理员密码:”〈〈endl;
in。clear();
in.open("F:\\a。txt",ios::in);
if(in。fail())
j=1;
else
j=2;
switch(j)
{
case 1: //首次登录
{
cout〈<endl<〈" 首次登陆,您的预设密码为:12345:”〈<endl〈〈endl;
cout〈〈"请输入:”;
cin〉〉mima ;
cout〈〈endl;
if(strcmp(yu_mima,mima)==0)
flag=1;
cout〈<” 密码正确,请输入下一步指令:”〈<endl〈<endl;
}break;
case 2:
{char odd_mima[20];
f。open("F:\\a.txt”,ios::in);
f>>odd_mima;
cin〉〉mima; //从文件中输出,并比较
if(strcmp(odd_mima,mima)==0)
{
flag=1;
cout<〈” 密码正确,请输入下一步指令:”〈〈endl〈<endl;
}
else
do
{ cin〉〉mima;
if(strcmp(odd_mima,mima)==0)
flag=1;
else
flag=0;
cout〈〈” 密码错误,请重新输入"<〈endl〈〈endl;
} while(flag==0);break;
}
in.close();
if (flag==0)
cout<<” 密码有误,请重新输入”〈<endl<<endl;
}while (flag==0);
cout<〈” **************************”〈<endl;
cout<〈” * 0。修改密码 *"〈<endl;
cout〈〈" * 1。进入系统 *”<〈endl;
cout<〈” * 2。退出系统 *"〈<endl;
cout〈<” **************************”<〈endl;
do
{cout〈<" 请输入你的指令(0 ~ 2):”<〈endl;
cin〉>p;
switch(p)
{
case 0: //修改密码
{
cout〈〈”请输入新密码:"〈<endl;
cin〉〉key;
out.open("F:\\a。txt",ios::out);
out。clear();
out〈<key;
out.close();
}break;
case 1: charges_menu();break; //进入系统
case 2: //退出系统
{
cout〈<"谢谢使用小区物业资费管理系统! ”〈〈endl<〈endl〈〈” 拜拜,欢迎下次进入”<〈endl〈〈endl;
exit(0);
}break;
default : cout〈<" 输入指令有误,请重新输入:”〈<endl〈〈endl;break;
}
}while (p〈0||p〉2);
cout〈〈” 你想继续其他操作吗? y / n :”<〈endl<〈" ";
do{
cin〉〉w;
cout<〈endl;
if(w=='n’ ) exit(0);
if(w!=’y' && w!=’n')
cout〈〈" 指令有误!请重新输入: ”〈<endl;
}while (flag==0);
if (w=='y')
{
cout〈<” 请输入操作代码: 0 修改密码”<〈endl;
cout〈<" 1 进入系统"〈〈endl;
cout〈<” 2 退出系统”<<endl;
}
}while (w=='y');
cin>>p;
return p;
} //密码函数
int main()
{
Key();
return 0;
}
3。2修改密码
将初始密码改为自己想设置的密码,并保存;下次登陆识别更改的密码.如下图3—2,3—3。
图 3-2 修改密码
图 3-3密码保存到文件中
case 0: //修改密码
{
cout〈<"请输入新密码:”〈〈endl;
cin〉〉key;
out.open("F:\\a.txt",ios::out);
out。clear();
out〈〈key;
out.close();
}break;
case 1: charges_menu();break; //进入系统
case 2: //退出系统
{
cout<<”谢谢使用小区物业资费管理系统! ”〈〈endl<<endl〈<” 拜拜,欢迎下次进入"<〈endl〈〈endl;
exit(0);
}break;
default : cout〈〈" 输入指令有误,请重新输入:"〈〈endl<〈endl;break;
}
}while (p〈0||p〉2);
3。3进入系统
3.3。1进入菜单选项
根据收费项目菜单选项提示,输入相应编号,进入系统.如图3—3
图 3—3 系统菜单编号
输入编号后,会有物业功能选项提示,如3-4图.
图 3-4 物业功能选项显示
代码如下:
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. 清理费 * ”<<endl;
cout〈〈" * f。 水电费 * ”〈〈endl;
cout〈〈" 请输入你要进入菜单选项的编号(a~j): ”;
char p;
cin〉>p;
cout〈<endl;
do
{cin>>p;
cout<<" 选项错误!请重新输入:";
}while(p〈='a’&& p>=’i');
switch(p)
{
case 'a': fun(); break;
case ’b': fun();break;
case 'c': fun();break;
case ’d’: fun();break;
case ’e’: fun();break;
case ’f': fun();break;
case ’g': fun();break;
case 'h’:fun();break; //读出物业费收费项目
}
}
3.3.2 信息录入
输入标号,进入信息录入模块,输入信息,系统自动保存到文件中。如图3—5 ,3—6。
图3—5 信息录入
图 3—6 信息存入文件
代码如下:
case ’1’ :
{ char name [20];
char ID_num[10];
char biaozhun[5];
char this_num[5];
char last_num[5];
char gave_charge[5];
char vir_charge[5];
char use_num[5];
char state_date[20];
char end_date[20];
char odd_charge[5];
char wh_charge[2];
char acc_charge[5];char c;
ofstream out;
out.open(”dat”, ios::out|ios::app);
do{
cout<<” 请输入物业名:” ;
cin〉〉name;
cout<〈” 请输入物业ID : ”;
cin〉〉ID_num;
cout〈〈" 请输入标准 : ”;
cin>〉biaozhun;
cout〈〈" 请输入本月读数: ”;
cin〉>this_num;
cout〈<" 请输入上月读数: ”;
cin>〉last_num;
cout〈<” 请输入应收金额:”;
cin〉>gave_charge;
cout〈〈" 请输入实收金额:";
cin〉>vir_charge;
cout〈<” 请输入使用数: ”;
cin〉>use_num;
cout<〈” 请输入计费起始日期:”;
cin〉>state_date;
cout〈<" 请输入计费终止日期:";
cin〉〉end_date;
cout<〈" 请输入本月余额:”;
cin〉>odd_charge;
cout〈<”请输入是否缴费:";
cin〉〉wh_charge;
cout<〈" 请输入累计金额:”;
cin〉>acc_charge;
cout〈〈endl;
out〈〈setw(20)<<name〈〈setw(10)〈〈ID_num〈〈setw(5)<<biaozhun<<setw(5)〈<this_num
〈〈setw(5)〈<last_num〈〈setw(5)〈〈gave_charge〈<setw(5)〈〈vir_charge〈〈setw(5)
<〈use_num〈<setw(20)<<state_date〈〈setw(20)〈〈end_date〈〈setw(5)〈〈odd_charge〈〈setw(5)
<<wh_charge〈<setw(5)〈<acc_charge; //物业费信息 文件输入
cout〈<" 数据输入成功,想继续其他操作吗? y / n :"<〈endl〈〈" ”;
cin〉〉c;
cout<〈endl;
do{
if (c!=’y’ && c !='n’)
{
cout〈<” 指令错误!请重新输入 !”〈〈endl〈<” ”;
char c;
cin>〉c;
}
else flag=1;
}while(flag==0);
}while(c==’y’);
out。close();
break;
} break;
3。3。3增加数据
输入菜单编号2,进入增加数据函数中,根据提示,输入要添加的数据,添加后系统会自动保存到文件夹中。如图3-7 ,3—8。
图 3-7 增加数据
图 3—8 添加的数据保存到文件中
代码如下:
case ’2’: //增加数据
{ char name [20];
char ID_num[10];
char biaozhun[5];
char this_num[5];
char last_num[5];
char gave_charge[5];
char vir_charge[5];
char use_num[5];
char state_date[20];
char end_date[20];
char odd_charge[5];
char wh_charge[2];
char acc_charge[5];char c;
out。open("dat" ,ios::app);
do
{
cout<〈” 请输入用户名:" ;
cin〉〉name;
cout<〈” 请输入用户ID : ”;
cin>〉ID_num;
cout〈〈" 请输入标准 : ";
cin〉〉biaozhun;
cout<〈” 请输入本月读数: ”;
cin〉〉this_num;
cout<〈" 请输入上月读数: ”;
cin>>last_num;
cout〈<” 请输入应收金额:";
cin>〉gave_charge;
cout<<" 请输入实收金额:”;
cin>〉vir_charge;
cout<〈" 请输入使用数: ”;
cin〉〉use_num;
cout〈〈” 请输入计费起始日期:";
cin〉>state_date;
cout<〈” 请输入计费终止日期:";
cin>〉end_date;
cout〈<” 请输入本月余额:”;
cin〉〉odd_charge;
cout<〈"请输入是否缴费:”;
cin>>wh_charge;
cout<〈” 请输入累计金额:";
cin〉〉acc_charge;
out〈〈setw(20)〈〈name〈〈setw(10)〈<ID_num〈<setw(5)<〈biaozhun〈〈setw(5)〈〈this_num
〈〈setw(5)〈<last_num〈<setw(5)〈<gave_charge〈<setw(5)〈〈vir_charge〈<setw(5)
<<use_num〈〈setw(20)<<state_date<〈setw(20)〈〈end_date〈<setw(5)〈〈odd_charge<<setw(5)
〈<wh_charge〈<setw(5)〈〈acc_charge; //物业费信息插入 文件输入
cout〈<” 数据输入成功,想继续其他操作吗? y / n :”<〈endl<<” ";
cin〉〉c;
cout<<endl;
do{
if (c!=’y' && c !=’n’)
{
cout〈〈” 指令错误!请重新输入 !"〈<endl〈<” ”;
char c;
cin〉>c;}
else flag=1;
}while(flag==0);
}while(c=='y’);
out。close();
break;
3.3。4修改数据
输入标号3,根据提示输入你要修改的用户名,再根据格式输入新的数据.数据输入后,系统自动保存到文件中。如图3—9.
图3-9 修改信息
代码如下:
case '3’: //物业费信息修改
{char name [20];
char ID_num[10];
char biaozhun[5];
char this_num[5];d
char last_num[5];
char gave_charge[5];
char vir_charge[5];
char use_num[5];
char state_date[20];
char end_date[20];
char odd_charge[5];
char wh_charge[2];
char acc_charge[5];char c;
char na[20];
char ID[10];
char biao[20];
char tn[5];
char ln[5];
char gc[5];
char vc[5];
char un[5];
char sd[20];
char ed[20];
char oc[5];
char wc[2];
char ac[5];
do
{
int flag=0;
cout〈<"请输入你要修改的用户名:"<〈endl;
cin〉〉na;
cout<<endl;
f.open(”dat",ios::in|ios::out);
f。seekg(0,ios::beg);
f.clear();
while (!f。eof())
{
f>〉name;
if(strcmp(name,na)==0)
{
flag=1;
cout<<” 请输入用户名名:” ;
cin>〉na;
cout〈〈” 请输入用户ID : ";
cin〉>ID;
cout〈〈” 请输入标准 : ”;
cin〉>biao;
cout〈<" 请输入本月读数: ”;
cin>〉tn;
cout<〈” 请输入上月读数: ";
cin>〉ln;
cout〈〈” 请输入应收金额:";
cin>>gc;
cout〈〈” 请输入实收金额:";
cin〉>vc;
cout<〈" 请输入使用数: ”;
cin>>un;
cout〈〈" 请输入计费起始日期:”;
cin〉〉sd;
cout〈〈” 请输入计费终止日期:”;
cin〉〉ed;
cout〈<” 请输入本月余额:”;
cin〉>oc;
cout〈〈”请输入是否缴费:”;
cin>>wc;
cout〈<" 请输入累计金额:”;
cin〉〉ac;
cout〈<endl;
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);
strcpy(end_date,ed);
strcpy(odd_charge,oc);
strcpy(wh_charge,wc);
strcpy(acc_charge,ac);
f.seekp(0,ios::cur);
f〈〈setw(20)〈〈na〈<setw(10)〈〈ID〈〈setw(5)〈<biao<〈setw(5)〈〈tn
〈<setw(5)<〈ln<〈setw(5)〈<gc〈〈setw(5)〈<vc<〈setw(5)
〈〈un<<setw(20)〈〈sd〈<setw(20)〈<ed<〈setw(5)〈〈oc<〈
setw(2)〈〈wc〈<setw(5)〈<ac; //物业信息修改插入 文件输入
cout〈〈” 修改成功! "〈〈endl<〈endl;break;
}
}
f.close();
if(flag==0)
cout〈〈”你要修改的物业不存在! "〈〈endl<<endl;
cout〈〈" 你想继续修改吗? y/n :”〈〈endl;
cin〉〉c;
cout〈〈endl;
if(c==’n' ) break;
if(c!=’y’&& c!='n')
cout〈〈” 指令错误! 请重新输入:”〈〈endl<〈” ”;
cin>>c;
}while (c=='y’);
break;}
3.3.5信息查询
输入标号4,进入信息显示模块,选择你想查询的方式进行查询。根据提示输入想要查找的用户或编号,系统会自动显示信息。如图 3-11 ,3—12.
图 3—11 信息显示
图 3—12 文件中的信息
代码如下:
case '4': //信息查询
{ char name [20];
char ID_num[10];
char biaozhun[5];
char this_num[5];
char last_num[5];
char gave_charge[5];
char vir_charge[5];
char use_num[5];
char state_date[20];
char end_date[20];
char odd_charge[5];
char wh_charge[2];
char acc_charge[5];char c;
cout〈〈" 请选择你要查询的方式: ”〈〈endl〈<endl<〈” 1。按用户名查找"<<endl
<<endl〈<” 2。按ID号查询”〈〈en
展开阅读全文