《C++程序设计》课程设计.doc_第1页
《C++程序设计》课程设计.doc_第2页
《C++程序设计》课程设计.doc_第3页
《C++程序设计》课程设计.doc_第4页
《C++程序设计》课程设计.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+程序设计课程设计 水电管理系统指导教师 :设计成员 :班 级 :设计时间 :2010年11月 15 日C+程序设计课程设计任务书适用专业:过程控制设计题目:水电管理系统一、已知技术参数或设计前提 1、拖欠的的水或电费信息繁多。 2、每个用户都有自己的姓名、水电编号等信息。 3、若有新客户则可添加其信息。 4、若客户信息填写有误,可以修改其信息。二、设计内容及要求 1、实现用户的信息录入,输入的信息如下:顾客姓名、水或电类别、水或电价格、拖欠数量。 2、实现用户的信息查询,能够按客户的姓名或水电编号进行查询。 3、实现用户的信息输出,主要让用户输出已存档的顾客信息。4、实现用户的信息修改,修改已存档用户的姓名、水电类别、水电价格、拖欠数量。 5、实现用户的信息删除,主要让用户删出已存档的顾客的信息。6、实现系统的自动维护功能。三、程设计工作计划 1、确定题目,成立设计小组,做用户分析。(9月16日)2、查阅资料,进行问题分析,制定方案,确定成员分工。(9月17日-9月20日)3、根据方案编写程序并进行调试。(10月15日)4、撰写设计说明书,完成设计。(11月1日)5、提交设计内容,答辩。四、相关教材及参考书目1、编著。C+语言及其程序设计教程。北京:电子工业出版社,1992;2、编著。Visual C+程序设计。北京:北京大学出版社,1994;3、主编。C+程序设计语言。北京:清华大学出版社,1995;4、Herbert Schildt.Schildts Expert C+。McGraw-hill,1996;5、主编。C+程序设计教程。北京:高等教育出版社,2004。 指导教师签字:迟立颖 系主任 签字: 2010年10月16日目 录一、需求分析3二、成员分工3三、系统功能模块图3四、软硬件环境3五、模块功能实现4六、系统使用说明6七、源程序12八、结束语12九、参考文献12一、需求分析本系统为水电管理系统,用于登记每日售出的水或电信息的录入,查询,更改。由于每日售出的水或电信息繁多,故此系统可以解决售出的水或电的信息问题。又可以减速少工作人员的工作量,节约了时间。二、成员的分工说明李 莹:编写部分程序说明书,负责输入输出功能的实现。胡 琪:编写部分程序说明书,负责管理查询部分的功能实现。蔡仲彬:编写部分程序说明书,负责水电信息修改和删除功能实现。黄少君:编写部分程序说明书,负责管理信息录入部分的功能实现。三、系统功能模块图水电管理系统水或电信息录入模块水或电信息查询模块水或电信息修改模块水或电信息输出模块水或电信息删除模块 按顾客姓名查询按水或电编号查询 四、系统的软硬件环境1、软件环境WindowsXP、Visual C+6.02、硬件环境CPU(AMD 4000+)、内存(1G)、硬盘(160G)五、功能模块实现及函数分析1、类结构:shuidianClass Shuidian类,此类的设计是遵循面向对象编程原理,主要是针对用户的个人信息进行操作,设计共分为两个部分,公有部分和私有部分。公有部分:对象的功能函数,包括:shuidian(); /构造函数shuidian(); /析构函数void enter();/信息录入函数void display();/信息输出函数void setsno(int temp); /设置水电编码int getsno(); /获取水电编码 char *getname(); /获取姓名void change(); /修改函数void del(); /删除函数void read(); /读取函数void write(); /写入函数int tuiqian_jine(); /拖欠总额计算函数私有部分:对象的一些属性信息 包括:int maxnum; /最大值char price6;/单位价格char name10;/登记名字char lei;/水或电分类int sno; /水电编号char tuoqian10; 2、模块设计分析(1)登记信息录入模块input():1)首先调用enter()函数。2、录入模块是以类的成员enter()为基础的,首先建立txt文件,然后通过屏幕输入输出,对类实例的各个数据成员赋值,待一起都输入完毕,将数据以shuidian类的大小为单位,存储到txt文件中,这样便完成了一次输入过程。(2)登记信息查询模块search ():1、查询模块是以查询模块和输入模块为基础的,前一部分就是查找模块的内容,很容易理解,首先要找到它,这就要对存储文件shuidian.txt进行遍历,寻找要检索对象。(3)登记信息修改模块change() :1、输入修改登记的序号。2、利用这个登记好到文件里进行查找如果存在将要更改的信息再写到文件里。检索不 到该登记号就输出“没有你所要修改的登记信息!”。(4)已登记水电信息查询模块search():1、先定义输出文件流。2、根据登记序号进行遍历。3、如果找到指定的登记序号,则调用hcx输出器对应的登记信息。(5)登记信息输出模块output(): 1、先定义输出文件流。2、打开文件。输出登记的户主姓名、水或电分类、水电编号、单位价格、拖欠数量、拖欠金额信息,如果还没有向文件中输入信息则输出 “还没有输入登记信息” 如果已经输入了显示登记信息个数。退出系统,正确程序再继续运行。六、程序的使用说明1、进入界面2信息录入3.信息查询4.信息输出5.信息修改6.信息删除及系统维护七、程序源代码#include#include#include#include#include#includeint icc(char* c)int i = 0;int sum = 0;while(ci != 0)sum *= 10;sum += (ci+ - 0);return sum;class shuidianpublic:shuidian();shuidian();void enter();/信息录入函数void display();/信息输出函数void setsno(int temp);int getsno(); char *getname();void change();void del();void read();void write();int tuiqian_jine();private:int maxnum;char price6;/单位价格char name10;/登记名字char lei;/水或电分类int sno; /水电编号char tuoqian10;shuidian:shuidian()shuidian:shuidian()int shuidian:getsno()return sno;void shuidian:setsno(int temp)sno=temp;char *shuidian:getname()return name;void shuidian:enter()int i = 0;/char l;ifstream ffile(max.txt,ios:binary|ios:nocreate);if(ffile)ffile.read(char *)&maxnum,sizeof maxnum);elsemaxnum=1000;ffile.close();sno=maxnum+;ofstream file(max.txt);file.write(char *)&maxnum,sizeof maxnum);file.close();cout请输入信息:endl;cout户主姓名:name;cout水或电分类(w水e电):lei;coutsno;while(i = 0)if(lei = w)|(lei = e)i = 1;elsecout输入错误,重新输入lei;cout单位价格:price; cout拖欠数量:tuoqian;int shuidian:tuiqian_jine()int p,t;p = icc(this-price);t = icc(this-tuoqian);return (p*t);void shuidian:change()cout请输入要修改的信息:endl;cout信息是不是要改写(Y/N)ch;if(ch=Y|ch=y)cout请输入新名称:name;cout水或电分类:lei;cout价格:price; cout拖欠数量:tuoqian;cout你刚刚输入的信息如下:tuiqian_jine();coutsetw(8)namesetw(8);if(lei = w)cout水;elsecout电;coutsetw(12)snosetw(12)pricesetw(12)tuoqiansetw(10)tjendl;shuidian information;void menu()cout $endl;coutsetw(40)欢迎进入水电管理系统endl;cout $endl; coutsetw(26)1.信息录入 setw(26)2.信息查询 endl; coutsetw(26)3.信息输出 setw(26)4.信息修改 endl;coutsetw(26)5.信息删除 setw(26)6.系统维护 endl;coutsetw(38)0.退出系统 endl; cout $endl; cout请选择:;void read()ifstream afile(shuidian.txt,ios:nocreate);afile.read(char *)&information,sizeof information);void write()ofstream bfile(shuidian.txt,ios:app);bfile.write(char *)&information,sizeof information);void input()char ch;information.enter(),write();cout你还要输入下一户主的信息吗?(Y/N)ch;if(ch=Y|ch=y) input(); void search()cout请输入你的查询类型:(1.水电编号 2.户主信息)j;while(j!=1&j!=2)cout错误请重新选择!j;if(j=1)cout请输入你要查找的水电编号:i;if(j=2)cout请输入你要查找的户主姓名:ch1;ifstream dfile(shuidian.txt,ios:nocreate);while(dfile.good()dfile.read(char *)&information,sizeof information);if(i=information.getsno()|strcmp(information.getname(),ch1)=0)coutsetw(8)户主姓名setw(12)水或电分类setw(12)水电编号setw(12)单位价格setw(10)拖欠数量setw(10)拖欠金额endl; information.display(); i=0; k=0; m=1;return;if(m!=1)cout没有找到你要查询的户主的信息!endl;void change()int ch,p=0,l=0;cout请输入你要修改的水电编号:ch;ifstream efile(shuidian.txt,ios:nocreate);while(efile.good()efile.seekg(sizeof(information)*p);if(efile.read(char *) &information,sizeof information)if(ch=information.getsno() coutsetw(8)户主姓名setw(12)水或电分类setw(12)水电编号setw(12)单位价格setw(10)拖欠数量setw(10)拖欠金额endl;information.display();ch=0;information.change();ofstream ffile(shuidian.txt,ios:nocreate|ios:in);ffile.seekp(sizeof(information)*p);ffile.write(char *) &information,sizeof information);ffile.close();l+;return;p+;efile.close();if(l!=1)cout没有你所要修改的信息!endl;void del()int l = 0,p = 0; char ch10;cout请输入你要删除的顾客姓名:ch;ifstream hfile(shuidian.txt,ios:nocreate);while(hfile.good()hfile.seekg(sizeof(information)*p);if(hfile.read(char *) &information,sizeof information)if(!strcmp(information.getname(),ch)coutsetw(8)户主姓名setw(12)水或电分类setw(12)水电编号setw(12)单位价格setw(10)拖欠数量setw(10)拖欠金额endl;information.display();/information.del();ofstream ffile(shuidian.txt,ios:nocreate|ios:in);ffile.seekp(sizeof(information)*p);ffile.write(char *) &information,sizeof information);ffile.close();l+;return;p+;hfile.close();if(l!=1)cout没有你所要删除的信息!endl;void update()cout维护完成!endl;void output()int i=0;ifstream efile(shuidian.txt,ios:nocreate);while(efile)if(efile.read(char *)&information,sizeof information)if(*information.getname() !=0)coutsetw(8)户主姓名setw(12)水或电分类setw(12)水电编号setw(12)单位价格setw(10)拖欠数量setw(10)拖欠金额endl;information.display(); i+;if(i!=0)cout一共有i个信息endl;getchar();elsecout还没有输入信息.ch;switch(ch)case 0: exit(0);break;case 1: input();break;case 2: search();break;case 3: output();break; case 4: change();break;case 5: del();break;case 6: update();break;default:coutendl;cout输入无效请重新输入endl;break;coutendl;while(0);void main()menu();doselect();coutendl;coutsetw(10)1.信息录入 ; coutsetw(26)2.信息查询 ; coutsetw(26)3.信息输出 endl;coutsetw(10)4.信息修改 ;coutsetw(26)5.信息删除 ;coutsetw(26)6.系统维护 endl;coutsetw(10)0.退出系统 endl; cout请选择: ;while(1);八、结束语1. 程序运用了类(class) 类是一中复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。 同时用了类的成员:公有的(public)和私有的(private):2. 循环语句 While循环语句在此程序中的功能:计算中给出的表达式,其值为非零,则执行循环题,否则推出循环体。用此程序在输入运动员信息时,如输入信息不相符则出现 “错误请重新输入!”。 3. 应用了指和对象引用 指向数据成员的指针格式为:类型说明类名:*指针名(参数表) 使用指针可实现传址调用,利用它可实现函数之间的信息传递,同时使用对象指针实参仅将对象的地址值传给形参,而不进行副本的拷贝,这样可以提高运行效率,减少时空开销。4. 磁盘文件使用 (1) 打开文件前,先说明一个fstream类的对象,再使用成员函数open()打开指定的文件,文件被打开后,才可以对文件进行读写操作。如,以输出方式打开一个文件的方法如下:fstream outfile;otfile.open(“f1.tex”,ios:out);其中,outfile是fstream类的一个对象。打开函数open()有两个参数:第一个参数是要被打开的文件名,使用文件名时包含路径名和扩展名

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论