1、课程设计电费管理系统一、系统功能分析与设计1、 总体设计。 电费管理主要完成供电公司对其客户进行开户、销户、用电计费统计等相关业务。涉及的主要信息包括:客户姓名,身份证号、住址、电表号、电表读数,日期等 主要有开户,销户,过户,计费,查询等业务。2.详细设计共有九个调用函数,分别是主菜单,计数读入文件函数,保存文件函数,开户函数,销户函数,过户函数,计费函数,查询函数,退出系统函数。1. void fun1(struct dianfei *p)开户业务函数2. voidfun2(struct dianfei *p)销户业务3.void fun3(struct dianfei *p)过户业务4.
2、void fun4(struct dianfei *p)计算业务5.void fun5(struct dianfei *p)查询业务二、 程序代码与界面。1、 程序代码#include#include#include/*头文件*/#define N 1000/*可以存入的客户信息个数*/#define P 0.55/*峰时电费单价*/#define Q 0.35/*谷时电费单价*/int load();/*计算存入客户个数*/ void menu();/*调用菜单函数*/void save(int n);/*保存入文件函数*/void fun1(struct dianfei *p);void
3、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;/*地址*/ unsigned int dbh;/*电表号*/ float f
4、sds7;/*峰时读数*/ float gsds7;/*谷时读数*/ struct date timeofenter; /*嵌套函数*/ float df6;/*费用*/kehuN;/*结构体数组*/void main() menu();void menu() struct dianfei *p; p=kehu; char c; int i; do system(color B5); system(cls); for(i=0;i80;i+) printf(*); printf(t : 开户业务 n); printf(t : 销户业务 n); printf(t : 过户业务 n); printf
5、(t : 计费业务 n); printf(t : 查询业务 n); printf(t : 退出系统 n); printf(t n); printf(t 请选择输入选项123456:n); printf(t 输入:); do c=getchar(); while(c!=1&c!=2&c!=3&c!=4&c!=5&c!=6); getchar(); switch(c) case 1: fun1(p); break; case 2: fun2(p); break; case 3: fun3(p); break; case 4: fun4(p); break; case 5: fun5(p); bre
6、ak; case 6: fun6(p);exit(0); printf( 按任意键返回主菜单:n); getchar(); while(1); int load() /*计算存入客户个数*/ FILE *fp;/*文件指针*/ int i; if (fp=fopen(G:应数111-沈一.txt,rb)=NULL)/*以只读方式打开一个二进制文件*/ printf(文件打开错误!); return 0; for (i=0;!feof(fp);i+) fread(&kehui,sizeof(struct dianfei),1,fp);/*数据块读写函数*/ fclose(fp);/*关闭函数*/
7、 return(i-1);void save(int n)/*保存入文件函数*/ FILE *fp; int i,m=1; if (fp=fopen(G:应数111-沈一.txt,wb)=NULL)/*以只写方式打开一个二进制文件*/ printf(文件打开错误!n); exit(1); for (i=0;iname); printf(tt身份证号:); scanf(%s,p-sfz); printf(tt住址:); scanf(%s,p-zz); printf(tt电表号:); scanf(%d,&p-dbh); p-fsds0=0; p-gsds0=0; printf(tt日期:); sc
8、anf(%d%d%d,&(*p).timeofenter.year,&(*p).timeofenter.month,&(*p).timeofenter.day); printf(tt请输入峰时读数: ); scanf(%f,%f,%f,%f,%f,%f,&p-fsds0,&p-fsds1,&p-fsds2,&p-fsds3,&p-fsds4,&p-fsds5); getchar(); printf(tt请输入谷时读数: ); scanf(%f,%f,%f,%f,%f,%f,&p-gsds0,&p-gsds1,&p-gsds2,&p-gsds3,&p-gsds4,&p-gsds5); getch
9、ar(); fwrite(p,sizeof(struct dianfei),1,fp); fclose(fp); getchar(); printf(tt是否输入下一条记录? Y or N.n); printf(tt输入:); scanf(%c,&a); if(a=Y|a=y) b=1;p+; else menu(); while(b=1);void fun2(struct dianfei *p)/*销户业务*/ system(color D5); system(cls); printf(*欢迎使用销户业务*n); int i,n,q=-1; n=load(); char m; char sf
10、20; printf(n请输入要撤销客户的身份证号:); gets(sf); for(i=0;isfz)=0) q=i; printf(客户姓名:%sn身份证号:%sn住址:%sn电表号:%dn,(p+i)-name,(p+i)-sfz,(p+i)-zz,(p+i)-dbh); printf(日期:%d年%d月%d日n,kehui.timeofenter.year,kehui.timeofenter.month,kehui.timeofenter.day); printf(n是否要删除此记录: Y or Nn); scanf(%c,&m); getchar(); if(m=y|m=Y) if(
11、q=-1) printf(n无此客户记录(%s),sf); else for(i=q;in;i+) kehui=kehui+1; printf(n成功删除此记录(%s)!n,sf); else menu(); save(n-1);void fun3(struct dianfei *p)/*过户业务*/ system(color E2); system(cls); printf(*欢迎使用过户业务*n); char a,b10,e10,z20,aa20; char v,q,m,n,s,c20; unsigned int f,bb; int i,nn,yy,rr; n=load(); printf
12、(选择方式登录:A.姓名。B.身份证号。C.电表号。n); printf(请输入:); scanf(%c,&a); getchar(); switch(a) case A: printf(输入姓名:); gets(b); for(i=0;iname)=0) printf(客户姓名:%sn,(p+i)-name); printf(此信息是否修改? Y or Nn); scanf(%c,&v); getchar(); if(v=Y|v=y) printf(修改后为:); gets(e); strcpy(*(p+i).name,e); printf(身份证号:%sn,(p+i)-sfz); prin
13、tf(此信息是否修改? Y or Nn); scanf(%c,&q); getchar(); if(q=Y|q=y) printf(修改后为:); gets(c); strcpy(p+i)-sfz,c); printf(住址:%sn,(p+i)-zz); printf(此信息是否修改? Y or Nn); scanf(%c,&m); getchar(); if(m=Y|m=y) printf(修改后为:); gets(z); strcpy(p+i)-zz,z); printf(电表号:%dn,(p+i)-dbh); printf(此信息是否修改? Y or Nn); scanf(%c,&n);
14、 getchar(); if(n=Y|n=y) scanf(修改后为%d,&f); (p+i)-dbh=f; printf(日期:%d年%d月%d日n,kehui.timeofenter.year,kehui.timeofenter.month,kehui.timeofenter.day); printf(此信息是否修改? Y or Nn); scanf(%c,&s); getchar(); if(s=Y|s=y) scanf(修改后为%d年%d月%d日,&nn,&yy,&rr); kehui.timeofenter.year=nn; kehui.timeofenter.month=yy; k
15、ehui.timeofenter.day=rr; break; save(n); printf(客户姓名:%sn身份证号:%sn住址:%sn电表号:%dn,(p+i)-name,(p+i)-sfz,(p+i)-zz,(p+i)-dbh); printf(日期:%d年%d月%d日n,kehui.timeofenter.year,kehui.timeofenter.month,kehui.timeofenter.day); break; case B: printf(输入身份证号:); gets(aa); for(i=0;isfz)=0) printf(客户姓名:%sn,(p+i)-name);
16、printf(此信息是否修改? Y or Nn); scanf(%c,&v); getchar(); if(v=Y|v=y) printf(修改后为:); gets(e); strcpy(*(p+i).name,e); printf(身份证号:%sn,(p+i)-sfz); printf(此信息是否修改? Y or Nn); scanf(%c,&q); getchar(); if(q=Y|q=y) printf(修改后为:); gets(c); strcpy(p+i)-sfz,c); printf(住址:%sn,(p+i)-zz); printf(此信息是否修改? Y or Nn); scan
17、f(%c,&m); getchar(); if(m=Y|m=y) printf(修改后为:); gets(z); strcpy(p+i)-zz,z); printf(电表号:%dn,(p+i)-dbh); printf(此信息是否修改? Y or Nn); scanf(%c,&n); getchar(); if(n=Y|n=y) scanf(修改后为%d,&f); (p+i)-dbh=f; printf(日期:%d年%d月%d日n,kehui.timeofenter.year,kehui.timeofenter.month,kehui.timeofenter.day); printf(此信息是
18、否修改? Y or Nn); scanf(%c,&s); getchar(); if(s=Y|s=y) scanf(修改后为%d年%d月%d日,&nn,&yy,&rr); kehui.timeofenter.year=nn; kehui.timeofenter.month=yy; kehui.timeofenter.day=rr; break; save(n); printf(客户姓名:%sn身份证号:%sn住址:%sn电表号:%dn,(p+i)-name,(p+i)-sfz,(p+i)-zz,(p+i)-dbh); printf(日期:%d年%d月%d日n,kehui.timeofenter
19、.year,kehui.timeofenter.month,kehui.timeofenter.day); break; case C: printf(输入电表号:); scanf(%lf,&bb); getchar(); for(i=0;idbh) printf(客户姓名:%sn,(p+i)-name); printf(此信息是否修改? Y or Nn); scanf(%c,&v); getchar(); if(v=Y|v=y) printf(修改后为:); gets(e); strcpy(*(p+i).name,e); printf(身份证号:%sn,(p+i)-sfz); printf(
20、此信息是否修改? Y or Nn); scanf(%c,&q); getchar(); if(q=Y|q=y) printf(修改后为:); gets(c); strcpy(p+i)-sfz,c); printf(住址:%sn,(p+i)-zz); printf(此信息是否修改? Y or Nn); scanf(%c,&m); getchar(); if(m=Y|m=y) printf(修改后为:); gets(z); strcpy(p+i)-zz,z); printf(电表号:%dn,(p+i)-dbh); printf(此信息是否修改? Y or Nn); scanf(%c,&n); ge
21、tchar(); if(n=Y|n=y) scanf(修改后为%d,&f); (p+i)-dbh=f; printf(日期:%d年%d月%d日n,kehui.timeofenter.year,kehui.timeofenter.month,kehui.timeofenter.day); printf(此信息是否修改? Y or Nn); scanf(%c,&s); getchar(); if(s=Y|s=y) scanf(修改后为%d年%d月%d日,&nn,&yy,&rr); kehui.timeofenter.year=nn; kehui.timeofenter.month=yy; kehui.timeofenter.day=rr; break; save(n); printf(客户姓名:%sn身份证号:%sn住址:%sn电表号:%dn,(p+i)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1