ImageVerifierCode 换一换
格式:DOCX , 页数:41 ,大小:254.32KB ,
资源ID:8344536      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8344536.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电费代缴系统.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电费代缴系统.docx

1、电费代缴系统河南城建学院软件实习2任务书设计题目 电费代缴系统 学生班级 学生学号 学生姓名 同 组 人 指导老师 计算机科学与工程系 2010-9-10目录软件实习2任务书 - 0 -一: 前言 - 2 -二: 系统环境 - 2 -三: 设计目的 - 2 -四: 总体设计 - 3 -1.客户端页面 - 3 -2.客户端,中间件和服务器联系 - 3 -五: 详细设计 - 4 -(1)基本功能 - 4 -1.1查询费用 - 4 -(2) 服务器的开发 - 4 -2.1服务端的开发 - 4 -2.2 客户端的开发 - 5 -2.3套接字 - 5 -六: 调试与测试 - 6 -一生成数据库(sour

2、ce *.sh) - 6 -二程序的编译和运行 - 6 -三多任务模式与启动相关服务 - 6 -四相关操作 - 7 -五返回结果信息 - 8 -七: 设计中遇到的问题及解决方法: - 9 -八: 源程序清单 - 9 -81数据库文件 - 9 -8.2客户端程序 - 10 -8.3中间件程序 - 16 -8.4服务器 - 22 -8.5服务器 - 27 -九: 心得体会 - 32 -十:参考文献 - 33 -电费代缴系统一: 前言近年来,随着高科技技术的告诉发展,传统的手工操作系统为主的电费缴纳的管理方式,因其信息反应慢,工作效率低,管理质量差,备受广大服务者争议。在计算机信息技术飞速发展与广泛

3、应用的今天,这种落后的管理方式与时代的步伐已显得格格不入,对电费缴纳系统实现智能化,信息管理化,是信息时代对现代社会电费管理工作提出的严峻要求。为了更好的提供电费代缴服务,为了使电费管理更加科学,更严谨,同时更具有操作性,节省操作人员的劳动,电费缴纳系统必须与先进技术相结合,应用先进的网络管理技术来操作电费管理系统,从而使其为人们提供更方便,更快捷的电费管理服务。二: 系统环境在Linux环境下,使用GNU C或GNU C+,在UNIX/Linux make开发工具的的管理和控制下,利用UNIX/Linux Socket库在网络的底层进行开发设计。电费缴费系统是基于UNIX Socket和My

4、SQL数据库设计一个交易型中间件系统。在Linux环境下使用GNUC或者GNU C+,在Linux make开发工具的管理和控制下,利用Linux系统提供的Socket库和MySQL数据库在网络底层开发交易型中间件,同时简要介绍了客户端和服务器的工作模式。此模拟电费交费系统采用“客户端中间件服务器”模式,其中主要包括三大部分: 客户端(Client),中间件(Middleware)和服务器端(Server)。客户端(Client)主要实现用户管理、查询、交易(交费,购物等),撤销和统计等功能;中间件(Middleware)要完成与客户要求相符的功能是本地的本地处理,否则发往服务器端接受客户端数

5、据,组织服务器端所需数据,重组服务端返回数据,并返回给客户方;服务器端(Server)主要实现客户端或中间件提出的业务请求并做好留迹工作三: 设计目的对电费查询与缴费业务进行了系统全面的分析研究。针对现有系统中实时性不足而造成用户欠费太多使公司企业蒙受损失的问题。采用开发工具Linux+Mysql进行系统设计。设计系统能够提供对点费信息输入、查询、编辑、打印以及话费统计各明细项目的数据编辑,自动计算出电费的各项合计数据;可自主设定条件从而达到数据的多角度查询功能;方便导入、导出数据及输出报表。四: 总体设计1.客户端页面 2.客户端,中间件和服务器联系五: 详细设计(1)基本功能1.1查询费用

6、 客户到柜台缴纳费用,客户首先用账号及密码登陆系统,然后登陆电表序列号和银行账号,中间件根据用户提供的电表序列号码把“查询费用”指令存入数据库。中间件检测到查询费用指令,把查询费用指令组成数据包发送到服务器中。服务器把查询费用的结果返回中间件,确认信息后,从接收表中检测返回结果中间件,并监控因错误操作并返回结果。 服务器从接收表中查询到“查询费用”指令,把查询费用指令填入数据库得到查询费用指令后从主数据库查询用户的费用信息。服务器如果因错误没有得到查询结果,把返回结果系统错误,并显示出来。 1.2缴纳费用 客户端发出“缴纳费用”指令存入中间件。中间件检测到“缴纳费用”指令,把“缴纳费用”指令组

7、成数据包放入缓冲区,然后发送给服务器。 服务器把“缴纳费用”的指令填入接收,并返回确认信息。中间件在得到确认信息后,从接收表中检测返回结果给客户端,并监控错误无返回结果的情况。 服务器从接收表中查询到“缴纳费用”指令,把“缴纳费用”指令填入数据库。得到“缴纳费用” 后从主数据库进行处理,并把银行数据库中所缴的费用扣除,结果填入数据库。 “服务器处理系统”如果因为错误没有得到结果,把返回结果“系统错误”填入发送错误信息给中间件,然后中间件把信息返回给用户。 1.3 查询信息通过用户名和电表序列号进行查询,录入正确则返回用户信息,反之,退出系统。1.4 退出系统客户端发送退出系统请求,经中间件确认

8、。然后客户端退出系统并关闭连接。(2) 服务器的开发2.1服务端的开发服务器主要包含守候进程(daemon),也叫精灵进程,或服务器进程,是生存期长的一种进程。它们常常在系统引导装入时起动,在系统关闭时终止。因为它们没有控制终端,所以说它们是在后台运行的。它等待客户机与其联系,提出某种类型的服务要求。服务对客户机服务可将结果或信息返回给客户机(双向),也可不返回(单向)。2.2 客户端的开发打开一通信通道,并连接到服务器所在主机的特定端口。向服务器发服务请求,等待并接收应答;请求结束后关闭通信通道。客户是交易的发起者。实现功能与服务器方同。2.3套接字 1.流式套接字(SOCK-STREAM)

9、:提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复地发送,且按发送顺序接收。内设流量控制,避免数据流超限;数据被看作是字节流,无长度限制。文件传送协议(FTP)即使用流式套接字。数据报式套接字(SOCK-DGRAM) :提供了一个无连接服务。数据包以独立包形式被发送,不提供无错保证,数据可能丢失或重复,并且接收顺序混乱。原始式套接字(SOCK-RAW):该接口允许对较低层协议,如IP、ICMP直接访问。常用于检验新的协议实现或访问现有服务中配置的新设备。基本套接字系统调用 创建套接字socket() 地址绑定bind() 建立连接connect()与accept()监听连接liste

10、n() 数据传输send()/write()与recv()/read() 关闭套接字close() 2.错误处理利用函数的返回值来判断函数执行是否正确。使用mysql提供的错误号和错误信息: 错误号:unsigned int mysql_errno(MYSQL *mysql) 错误信息:char *mysql_error(MYSQL *mysql)六: 调试与测试 一生成数据库(source *.sh)二程序的编译和运行编译:cc o client client.c -L/usr/lib/mysql lmysqlclient;cc o middle middle.c -L/usr/lib/my

11、sql lmysqlclient;cc o bank bank.c -L/usr/lib/mysql lmysqlclient;cc o meter meter.c -L/usr/lib/mysql lmysqlclient;运行:./middle middle;./meter Meter;./bank Bank;./client middle myhttp;三多任务模式与启动相关服务四相关操作现金交易:网上交易:查询:五返回结果信息七: 设计中遇到的问题及解决方法:(1) 对Mysql 数据库不够了解,对很多数据结构和算法也理解不够牢固,因此我们参考了Linux+php+Mysql基础与提高

12、这本书,学到一些关于Mysql的基础知识,才使工作能顺利的进行下去。(2) 对套接字这样的概念不是很清楚,在老师的辅导和互联网的帮助下,了解了一些这方面的知识,才使我们的设计开展下来。(3) 以前对服务器,客户端只是了解理论知识,这次而要自己动手来开发服务器,这对我们来说,是一个巨大的挑战,服务器就是一个进程,确切的说是一个守候进程,要实现它的功能,是不容易的事情,你要学会套接字,地址转换,服务器相关的数据结构和算法才能进行开发和设计。(4) 还是很多基础的东西没有掌握好,基本的算法也没有完全掌握,参考了教科书的相关内容后,才开始了我们的课程设计。(5) 在数据库的编写时,很多要用到的数据类型

13、而我们又没有学过的,只能借助互联网的强大功能了,由此,我们也学到了很多相关的知识。八: 源程序清单81数据库文件BANK.SHdrop database if exists bank;create database bank;use bank;create table information( number char(19) not null,passwd char(10),name char(20),money float(10,10);insert into information(number,passwd,name,money)values(061407344,123456,zpf,1

14、000);insert into information(number,passwd,name,money)values(061407342,123456,zxl,1000);insert into information(number,passwd,name,money)values(061407340,123456,yxl,1000);Meter.SHdrop database if exists meter;create database meter;use meter;create table meter(number char(11),name char(30),money floa

15、t(10,10);insert into meter(number,name,money)values(001,zpf,50);insert into meter(number,name,money)values(002,zxl,22);insert into meter(number,name,money)values(003,yxl,20);MIDDLE.SHdrop database if exists middle;create database middle;use middle; create table information(service int,port char(20),

16、ip char(20);insert into information(service,port,ip)values(1,Meter,myhttp);insert into information(service,port,ip)values(2,Bank,myhttp);USERS.SHdrop database if exists users;create database users;use users;create table users(name char(20),passwd char(10);insert into users(name,passwd)values(hello,w

17、orld);8.2客户端程序 Client.C#include #include #include #include #include #include #include #include #include #include #include #include #define ECHOFLAGS (ECHO | ECHOE | ECHOK | ECHONL)int set_disp_mode(int option);int getpasswd(char* passwd, int size);int main(int argc,char *argv) char name10,passwd10,c

18、hoose; char send_buf1024=; char tmp1024,meter30,number30,pswd10,money30,myl_buf1024,fd_buf1024; char log=clt.log; int connect_fd; int ret; int i; int port; int len; int fd; MYSQL mysql; MYSQL_ROW row; MYSQL_RES *result; struct servent *sp; struct hostent *hp; static struct sockaddr_in srv_addr; if(m

19、ysql_init(&mysql)=NULL) fprintf(stderr,Error in mysql_init!n); exit(-1); if(!mysql_real_connect(&mysql,localhost,root,0,users,0,NULL,0) fprintf(stderr,Error in connection: %s %dn,mysql_error(&mysql),mysql_errno(&mysql); mysql_close(&mysql); exit(-2); system(clear); if(fd=open(log,O_WRONLY|O_CREAT|O_

20、APPEND,0644)=-1) fprintf(stderr,Log file %s open error!an,log); exit(-1); clear: printf(Enter the user name:); scanf(%s,name); getchar(); set_disp_mode(0); getpasswd(passwd,sizeof(passwd); set_disp_mode(1); system(clear); sprintf(myl_buf,select * from users where name=%s,name); if(mysql_query(&mysql

21、,myl_buf)!=0) fprintf(stderr,Error in query: %s %dn,mysql_error(&mysql),mysql_errno(&mysql); mysql_close(&mysql); exit(-3); if(result=mysql_store_result(&mysql)=NULL) fprintf(stderr,Error in store_result: %s %dn,mysql_error(&mysql),mysql_errno(&mysql); mysql_free_result(result);mysql_close(&mysql);

22、exit(-4); ; if(mysql_num_rows(result)=0) printf(use dont exist!n); goto clear; row=mysql_fetch_row(result); if(strcmp(row1,passwd)!=0) printf(The passwd is not turen); goto clear; if(sp=getservbyname(argv1,tcp)=NULL) fprintf(stderr,Error:getservbyname); exit(-1); if(hp=gethostbyname(argv2)=0) fprint

23、f(stderr,Error:gethostbyname); exit(-2); memset(&srv_addr,0,sizeof(srv_addr); srv_addr.sin_family=AF_INET; bcopy(hp-h_addr,&srv_addr.sin_addr,hp-h_length); srv_addr.sin_port=sp-s_port;clen: connect_fd=socket(PF_INET,SOCK_STREAM,0); if(connect_fd0) printf(Message from middle: %sn,send_buf); close(connect_fd); switch(send_buf0) case 0: sprintf(fd_buf,%-10s%-20s%-20s0kn,name,meter,money); write(fd,fd_buf,strlen(fd_buf); printf(OPTION SUCCESSFULLYn); printf(Please Enter any key to return.n); getchar(); strcpy(send_buf,); goto clen; break; case 1:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1