1、 - 1 - 一、系统功能分析与设计 1、总体设计。 电费管理主要完成供电公司对其客户进行开户、销户、用电计费统计等相关业务。 涉及的主要信息包括:客户姓名,身份证号、住址、电表号、电表读数,日期等 主要有开户,销户,过户,计费,查询等业务。 开始 主函数 菜单 用户输入操作符 开 户 业 务 销 户 业 务 过 户 业 务 计 费 业 务 查 询 业 务 退 出 系 统 调 用 开 户 业 务 函 数 调 用 销 户 业 务 函 数 调 用 过 户 业 务 函 数 调 用 计 费 业 务 函 数 调 用 查 询 业 务 函 数 调 用 退 出 系 统 函 数 - 2 - 2.详细设计 共有九
2、个调用函数,分别是主菜单,计数读入文件函数,保存文件函数, 开户函数,销户函数,过户函数,计费函数,查询函数,退出系统函数。 1. void fun1(struct dianfei *p)开户业务函数 以追加方式打开一个二进制文件, 仅在文件末尾写数 客户输入详细信息(姓名,身份证号, 住址,电表号,日期,峰值、谷值读数) 是否输入下一条信息 Y 将客户输入的信息存入文件 N 回到菜单 - 3 - 2. voidfun2(struct dianfei *p)销户业务 输入客户的身份证号 显示出客户的所有信息 是否此客户的所有信息 Y 删除信息(结构体数组中从要删除 的客户开始后一个客户信息全部
3、赋 给前一个客户的信息) N 回 到 主 菜 单 调用保存数据函数 save - 4 - 3.void fun3(struct dianfei *p)过户业务 选择登录方式:A.姓名。B.身份证号。C.电表号。 A B C 输入姓名 输入身份证号 输入电表号 N 显示用户信息 询问是否修改 输入新值,并新值覆盖旧值 回到主菜单 调用保存数据函数 save Y - 5 - 4.void fun4(struct dianfei *p)计算业务 输出客户信息 输入客户的身份证号 根据峰时谷时读数 计算两个月的费用 显示一年的费用数据 回到主菜单 - 6 - 5.void fun5(struct di
4、anfei *p)查询业务 选择方式查询:A.姓名。B.身份证号。C.电表号。 输入姓名 输入身份证号 输入电表号 A B C 显示客户所有信息 回到主菜单 - 7 - 二、程序代码与界面。 1、程序代码 #include #include #include/*头文件*/ #define N 1000/*可以存入的客户信息个数*/ #define P 0.55/*峰时电费单价*/ #define Q 0.35/*谷时电费单价*/ int load();/*计算存入客户个数*/ void menu();/*调用菜单函数*/ void save(int n);/*保存入文件函数*/ void fu
5、n1(struct dianfei *p); void fun2(struct dianfei *p); void fun3(struct dianfei *p); void fun4(struct dianfei *p); void fun5(struct dianfei *p); void fun6(struct dianfei *p); struct date int year;/*年*/ int month;/*月*/ int day;/*日*/ ; struct dianfei char name10;/*姓名*/ char sfz20;/*身份证号*/ char zz20;/*地址
6、*/ unsigned int dbh;/*电表号*/ float fsds7;/*峰时读数*/ float gsds7;/*谷时读数*/ struct date timeofenter; /*嵌套函数*/ float df6;/*费用*/ kehuN;/*结构体数组*/ void main() menu(); - 8 - void menu() struct dianfei *p; p=kehu; char c; int i; do system(“color B5“); system(“cls“); for(i=0;isfz); printf(“tt 住址:“); scanf(“%s“,p-zz); printf(“tt 电表号:“); scanf(“%d“, p-fsds0=0; p-gsds0=0; printf(“tt 日期:“); scanf(“%d%d%d“, printf(“tt 请输入峰时读数: “); scanf(“%f,%f,%f,%f,%f,%f“, getchar