版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、【海南大学】信息分析与设计设计说明书中国移动手机缴费管理系统专业:指导教师:班级:学号:姓名:同组人:信息管理与信息系统计算机与信息工程学院2012 年 5 月 17 日刖言近年来,随着中国的市场经济的高速发展的情况下, 社会上出现了很多新消 费模式,由此移动通信行业衍生出很多新的业务,具体情况可总结为以下几点:人们生活水平的提高,消费项目,服务种类的增加,产生了各种各样好收费 项目。在这追求效率的时代,社会需要方便和快捷的缴费方式。 通信行业竞争 的日益激烈,移动通信的服务意识越来越高, 通过各种服务吸引用户,已成为通 信公司重要的竞争手段。在当今网络社会,技术成熟,发挥网络技术优势,利用
2、网络实现快捷缴费已经成为可能。利用电子商务网络以及众多的营业网点实时收费,在几乎不增加系统负担的情况既可缓解目前收费单位营业厅的紧张状况, 又方便用户缴费,提高了费用回收率。刖言系统环境总体设计详细设计调试与测试目录.3.4.8设计中遇到的问题及解决方法源程序清单总结,收获与体会参考文献10.11.282825手机缴费系统系统环境在Linux环境下,使用GNU C或GNU C+,在UNIX/Linux make开发工具 的的管理和控制下,利用 UNIX/Linux Socket库在网络的底层进行开发设计。二、设计目的对移动通信话费查询与缴费业务进行了系统全面的分析研究。针对现有系统中实时性不足
3、而造成用户欠费太多使公司企业蒙受损失的问题。采用开发工具Linux+Mysql进行系统设计。基于 UNIX Socket和MySQL数据库,设计一个交 易型中间件系统。提供通讯转发和协议转换的桥梁作用。 例如电子商务、银行代 理业务软件等都是这种类型软件这里的中间件是指交易型中间件。交易型中间件是指用在不同行业、不同部门间的通讯转发和协议转换的软的件, 在不同的行业、 不同的系统间。这里主要是利用 UNIX系统提供的Socket库在网络底层,开发 交易型中间件。本设计系统能够通过两种方式提供对移动话费信息输入、 查询、编辑以及话 费统计各明细项目的数据编辑,自动计算出话费的各项合计数据;可自主
4、设定条 件从而达到对话费数据的多角度查询功能;方便导入、导出数据及输出报表。总体设计程序设计组成框图实现工具及方法基本功、Linux +Mysql+ VMware Workstation现金支付客户端向中间件发送请求,中间件收到请求后,接收客户方数 据;组织服务器S1方所需数据;重组服务方返回数据,并返回给客户方;留迹;本地业务统计。网上缴费客户端向中间件发送请求,中间件收到请求后,接收客户方数 据;组织服务器S2方所需数据;重组服务方返回数据,并返回给客户方;留迹;本地业务统计。话费查询客户端向中间件发送请求,中间件收到请求后,到数据库里去 寻找用户相关交费的表,再返回给客户端,体现在用户面
5、前。退出系统当完成一次交易时,就可以退出系统。(1)中间件模型(2)流程图四、详细设计1基本功能1.1现金支付选择现金支付方式后,输入用户的手机号码和欲交中间件收到请求后,客户到操作台缴纳费用,的话费,客户端根据用户提供的手机号码向中间件发送请求,接收客户方数据;组织服务器 S1方所需数据;重组服务方返回数据,并返回给 客户方。1.2网上缴费客户到操作台缴纳费用,选择网上缴费方式后,输入用户的银行卡号、手机 号码和欲交的花费,客户端根据用户提供的手机号码向中间件发送请求,中间件收到请求后,接收客户方数据;组织服务器 S2方所需数据;重组服务方返回数 据,并返回给客户方。1.3查询通过输入手机号
6、码就可以得到手机用户的基本信息,包含用户名,手机号, 手机余额。1.4退出2、函数说明mysql_init(&mysql); /初始化数据结构mysql_real_connect(&mysql,localhost,root,0,mydb,0,NULL,0); / 连接数据库 mysql_query(&mysql,SELECT * FROM person);/ 执行查询语句 mysql_query result=mysql_store_result(&m ysql); 保存结果int socket(int domain, int type, int protocol);/ 仓J建套接字int b
7、in d(i nt sockfd,c onst struct sockaddr *my_addr, i nt addrle n);/ 绑定本地地址 int listen(int s,int backlog);/ 监听连接int connect(int sockfd,const structct sockaddr * server_addr, socklen_t addrlen);建立本地系统和外部系统之间的连接int acce pt(i nt s, struct sockaddr *addr, sockle n_t addrle n);服务器调用,从等待从编号为s的套接字上接受客户连接请求。s
8、end()/write 与 recv()/read();/数据传输 struct serve nt *getservb yp ort(i nt p ort, const char *p rotocal);得到服务器端口号相关的数据结构struct sockaddr_i n / port No. /IP addr.short int sin_family; / AF_INETun sig ned short int sin_p ort; struct in addr sin addr;/ IP socket 地址3、模块介绍一个中间件以及两个服务器组成,两个服务器本系统主要是由一个客户机,分别负
9、责手机直接缴费和网上银行缴费。以下即是每个模块间的联系图:总体联系图(1)客户机:只负责发送和接收请求信息,此模块的目的就是将信息呈现给用 户看,并提供相应的操作选择。此模块处理信息的过程较简单, 原理如基本功能 的现金支付所述,在此不再多做介绍。(2)中间件:与客户机和服务器相连接,通过判断倒数第二个字符来判断选择哪个服务器,具体的是把客户端发来的信息转发给哪个服务器。通过服务器反馈 回来信息的特殊字符来判断此信息是由哪个服务器发送而来。简单来说,中间件在整个分布式系统中起数据总线的作用,将各种异构系统通过中间件有机地结合 成一个整体。(3) 服务器:本系统有两个服务器,手机服务器(S2)和
10、银行服务器(S1)1)手机服务器在这一部分,需要实现的功能是直接缴费。它的过程是接收从中间件过来的信息, 在手机服务器的客户账户上相应加上对应的话费,即更新手机服务器数据库。更新成功直接之后,将缴费成功的信息传回中间件。具体流程如下:现金缴纳话费工作流程图注:直接现金缴纳,不需要通过银行服务器。从客户端开始流程,最后更新手机 服务器数据库,即缴费成功。2)银行服务器在银行服务器这一块,需要实现的功能是手机网上缴费。 它的过程是接收从中间 件过来的信息,在客户所输入的银行账户上扣除相应的手机费用;如果在手机的服务器那一块出现问题,缴费不成功,银行服务器还负责把之前所扣除的话费给 加上,具体实现流
11、程如下:6:虚线表示在手机服务器出错,缴费失败,向银行服务器返回所交的话费。六、调试与测试6.1调试方法:(1)把数据库文件导入数据库#mysql#mysql#mysql#mysql-u root c1.sh-u root vmiddl.sh-u root s1.sh-u root s2.sh(2) 启动Mysql数据(以bank为例)#show database;#use bank;#show tables;#select * from in formatio n;(3) 对程序进行编译连接#gcc-oc1c1.c-L/usr/lib/mysql-lmysqlclie nt#gcc-om1m
12、1.c-L/usr/lib/mysql-lmysqlclie nt#gcc-os1s1.c-L/usr/lib/mysql-lmysqlclie nt#gcc-os2s2.c-L/usr/lib/mysql-lmysqlclie nt(4)创建服务端口#ivi /etc/services进入新创建三个名字zhongjrworl500/tcp501/tcp502/tcpx保存并退出vi 创建一个域名#ivi /etc/hosts进入新创建一个域名 保存并退出vi(5)运行程序#./m1 x切换到终端2#./s1 world切换到终端3#./s2 zhongjr切换到终端
13、4#./m1 xmyhtt pmyhttp6.2测试结果及简单分析1、现金支付 Z.online4, exitchoose your option :1input your telephone number:input the money you want to submit:123 SUCCESSFULLYEnter any key to retLim.缴费后手机服务器接受信息,对用户手机费用进行操作,操作后用户手机费 用增加123元。2、 input your phone number:159935S0115input the money you uiant to
14、 submit : 100 SUCCESSFULLYEnter any key to return.网上银行缴费,银行服务器与手机服务器都对信息有相应的操作,缴费得到确认成功后,银行卡上减去100元,手机话费加上100元。3、查询bel lo logiin sucessf u 1 ly1. cashZ.OYiline3 .search4.exitFlease choose your opt ion :3Flease Enter your plione number :he information of the is 1Szhongjr!136
15、3,0000000000:0 沪1巴ase Entry any key to continue*输入手机用户,查询用户的基本信息。信息“ 1zhongjr|1363.0000000000”目对应的意思是“ 操作类型|手机号I用户名I手机余额I终止传递信息”4、客户日志文件root!?locaIhost zJrl 1ftcat c1t.loLOG OUT SUCES3FULLYhe 1 lo1593353011510Skbcllo15993590115330khello159935901151000khe 1 lo158835501151230
16、k】trootl? loca Ihost zjrl Iff cat mid , log;IESSAGEESSAGEESSAGEESSAGEESSAGEESSAGEESSAGEESSAGEESSAGEESSAGEESSAGEESSAGEESSAGEESSAGEESSAGEFROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROMCLIErfT:3!CL IEMTTISi1SPHONEzBieSCLIEPfT:! 1505764820 I lZ34asdf S30 115993590
17、115! 2 !BANK : 0 ! 50576.4820 ! 30 115993530115 J1!PHONE:0i0:CL IENT:4 1JPHDHE:1Izhongjr!1140.0000000000!0 CLIENT:!:505764820:1234asdf!100115333530115!2S BANK:S!50S764820i100 115993590115!1!PHONESBiCL IENT:3!158935901151123!1!PH0N:S;3iCLlEMT:111FHQNE:1i15993590
18、115 i zhongjr i1363.0080000000 i06服务器日志文件S1rootOlocaIhostzjr1 Iffcatsi. log505764820 30DES505764820 100DES3505764820 300DES】505764820 300ADD JrootelocaIhostzjrlJffcatsl, log505764820 30DES】505764820 100DES505764820 300DES3505764820 300ADD七、(1)(2)(3)设计中遇到的问题及解决方法。对Mysql数据库不够了解,对很多数据结构和算法也理解不够牢固,因 此我们
19、参考了Linux+php+Mysql基础与提高这本书,学到一些关于 Mysql的基础知识,才使工作能顺利的进行下去。对套接字这样的概念不是很清楚, 在老师的辅导和互联网的帮助下,了解 了一些这方面的知识,才使我们的设计开展下来。以前对服务器,客户端只是了解理论知识,这次而要自己动手来开发服务 器,这对我们来说,是一个巨大的挑战,服务器就是一个进程,确切的说 是一个守候进程,要实现它的功能,是不容易的事情,你要学会套接字, 地址转换,服务器相关的数据结构和算法才能进行开发和设计。还是很多基础的东西没有掌握好, 基本的算法也没有完全掌握,参考了教 科书的相关内容后,才开始了我们的课程设计。在数据库
20、的编写时,很多要用到的数据类型而我们又没有学过的,只能借助互联网的强大功能了,由此,我们也学到了很多相关的知识。八、源程序清单客户机以及两个服务器都会用到strs plit ()函数,作用是分解字符串。void strs plit(char *s,ehar *v,char d)int i,j,l;j=0;vj=s;l=strle n(s);for(i=0;il;i+)if(*(s+i)!=T) continue;else *(s+i)=0;v+j=s+i+1;1、客户机#i nclude#in elude以下是每个模块中将实现其功能的部分重要代码。#in elude#in elude #in
21、elude#in elude#in elude#in elude#in elude#in elude#in elude#in elude#defi ne intintintECHOFLAGS (ECHO | ECHOE | ECHOK | ECHONL) set_disp_mode( int option);getpasswd( char * passwd, int size);main( int arge, char *argv)int choose;char n ame10, passwd10;char sen d_buf1024=;chartmp 1024, pho ne30, nu m
22、ber30, pswd10,mo ney30,myl_buf1024,fd_buf1024; char log=elt.log;int conneet_fd;intret;inti;intport;intlen;intfd;MYSQL mysql;MYSQL_ROW row;serve ntsp;*hp;sockaddr_ in srv_addr;MYSQL_RES *result; structhoste nt structstructstaticif (mysql_init(&mysql)=NULL)fprin tf(stderr,Error in mysql_ in it!n);exit
23、(-1);if (!mysql_real_connect(&mysql,localhost,root,0,users,0,NULL,0) fprin tf(stderr,Error in conn ecti on: %s%dn,mysql_err or(&mysql),mysql_err no(&mysql);mysql_close(&m ysql); exit(-2);system(clear);clear:prin tf(E nter the user n ame:);sca nf(%s, name);getchar();set_disp_mode(0);getpasswd(passwd,
24、 sizeof (passwd);set_disp_mode(1);system(clear);sprin tf(myl_buf,select * from users where n ame=%s, name); if (mysql_query(&mysql,myl_buf)!=0)fprin tf(stderr,Error in query: %s%dn,mysql_err or(&mysql),mysql_err no(&mysql); mysql_close(&m ysql); exit(-3);if (result=mysql_store_result(&mysql)=NULL)fp
25、rin tf(stderr,Error in store_result: %s%dn,mysql_err or(&mysql),mysql_err no(&mysql);ifmysql_free_result(result);mysql_close(&m ysql); exit(-4);(mysql_ nu m_rows(result)=0) prin tf(use dont exist!n ”); goto clear;row=mysql_fetch_row(result);if(strcm p( row1, passwd)!=0)prin tf(The p asswd is not tur
26、en); goto clear;if (sp=getservbyname(argv1,tcp)=NULL) fprin tf(stderr,Error:getservb yn ame);ifexit(-1);(hp=gethostb yn ame(argv2)=0) fprin tf(stderr,Error:gethostb yn ame); exit(-2);memset(&srv_addr,0, sizeof (srv_addr);srv_addr.s in _family=AF_INET;bcopy(hp-h_addr, &srv_addr.s in _addr,h p-h_le ng
27、th);srv_addr.s in_port=sp-s_port;clen:conn ect_fd=socket( PF_INET,SOCK_STREAM,0);if (connect_fd0)p error(ca nnot create com muni cati on socket);return 1;ret=connect(connect_fd,(struct sockaddr*)&srv_addr, sizeof (srv_addr);if (ret=-1)p error(ca nnot conn ect to the server);close(c onn ect_fd);retur
28、n 1;system(clear);prin tf(%s logi n sucessfullyn, name);prin tf(1.cash2.o niin en);prin tf(3.search4.exitn);printf(P lease choose your op tio n :);scan f(%d,&choose);switch (choose)case 1:printfCP lease input your tele phone nu mber:); scan f(%s, phon e);printfCP lease input the money you want to su
29、bmit:); sca nf(%s,m on ey);getchar();strcat(se nd_buf,31 );strcat(se nd_buf, phon e);strcat(se nd_buf, |); strcat(se nd_buf,m on ey);strcat(se nd_buf,|1|); break;case 2:printf(P lease input your phone nu mber:);scan f(%s, phon e);printf(P lease input your bank nu mber:);sca nf(%s, nu mber);getchar()
30、;set_disp_mode(0);getpasswd(pswd, sizeof (pswd);set_disp_mode(1);prin tf(n);printf(P lease input the money you want to submit:); sca nf(%s,m on ey);getchar();strcat(se nd_buf,11 );strcat(se nd_buf, nu mber);strcat(se nd_buf, |);strcat(se nd_buf, pswd);strcat(se nd_buf, |); strcat(se nd_buf,m on ey);
31、strcat(se nd_buf, |); strcat(se nd_buf, phon e);strcat(se nd_buf, |); strcat(se nd_buf,2|);break;case 3:printfCP lease En ter your phone nu mber:);scan f(%s, phon e);getchar();strcat(se nd_buf, 4| );strcat(se nd_buf, phon e);strcat(se nd_buf,|11);break;case 4:strc py(se nd_buf,3|);break;default :pri
32、n tf( Please En ter 1,2,3,4!n); prin tf(E nter Any key to continu e.); getcharO;goto clen;write(c onn ect_fd,se nd_buf,strle n(sen d_buf)+1);len=read(c onn ect_fd,se nd_buf,1024);close(c onn ect_fd);switch (send_buf0)case 0:if (fd=open(log,O_WRONLY|O_CREAT|O_APPEND,0644)=-1)fprin tf(stderr,Log file
33、%s open error!an,log); exit(-1);sprin tf(fd_buf,%-10s%-20s%-20s0kn, name, pho ne,mo ney); write(fd,fd_buf,strle n(fd_buf);close(fd);printf(OP TION SUCCESSFULLY n);printf(P lease En ter any key to return.n);getchar();strc py (se nd_buf,);goto clen;break ;case 1:prin tf(the in formatio n of the is %sn
34、 ,se nd_buf); printf(P lease Entry any key to continu e.n); strc py (se nd_buf,);getchar(); goto clen;break ;case 3:if (fd=open(log,O_WRONLY|O_CREAT|O_APPEND,0644)=-1)fprin tf(stderr,Log file %s open error!an,log);exit(-1);sprin tf(fd_buf,%s LOG OUT SUCESSFULLY, phon e); write(fd,fd_buf,strle n(fd_b
35、uf);close(fd);prin tf(SUCCESSFULLY LOGOUT!n);break ;case 5:if (fd=open(log,O_WRONLY|O_CREAT|O_APPEND,0644)=-1)fprin tf(stderr,Log file %s open error!an,log);exit(-1);BANK NUMBERsprin tf(fd_buf,%-10s%-20s%-20sFALSEWRONG!n, name, pho ne,mo ney);write(fd,fd_buf,strle n(fd_buf);close(fd);prin tf(THE BAN
36、K NUMBER IS NOT EXIST n);printf(P lease Check itn);printf(pl ease En ter any key to continu e.n); getchar();strcpy(send_buf,);goto clen;case 8:if (fd=open(log,O_WRONLY|O_CREAT|O_APPEND,0644)=-1)fprin tf(stderr,Log file %s open error!an,log); exit(-1);PH ONE NUMBERsprin tf(fd_buf,%-10s%-20s%-20sFALSE
37、WRONG!n, name, pho ne,mo ney);write(fd,fd_buf,strle n(fd_buf);close(fd);prin tf(THE PH ONE USER ISNT EXISTn);printf(P lease Check itn);printf(P lease En ter any key to continu e.n); getchar();strcpy(send_buf,);goto clen;break ;case 9:if (fd=open(log,O_WRONLY|O_CREAT|O_APPEND,0644)=-1) fprin tf(stder
38、r,Log file %s open error!an,log);exit(-1);BANK P ASSWDsprin tf(fd_buf,%-10s%-20s%-20sFALSEWRONG!n, name, pho ne,mo ney);write(fd,fd_buf,strle n(fd_buf);close(fd);prin tf(The p asswd wrongn ”);printf(P lease En ter any key to continu e.n); getchar();strcpy(send_buf,);goto clen;case 7:if (fd=open(log,
39、O_WRONLY|O_CREAT|O_APPEND,0644)=-1) fprin tf(stderr,Log file %s open error!an,log);exit(-1);NOTsprin tf(fd_buf,%-10s%-20s%-20sFALSEENOUGH!n, name, pho ne,mo ney);write(fd,fd_buf,strle n(fd_buf);close(fd);prin tf(NOt En ough MOn eyn);printf(P lease En ter any key to continu e.n);getchar();strcpy(send
40、_buf,);goto clen;default : break;close(c onn ect_fd);return 0;int set_disp_mode( int option)int err;struct termios term;if (tcgetattr(STDIN_FILENO,&term)=-1)p error(Ca nnot get the attributi on of the term in al); return 1;if (option)term.c_lflag|=ECHOFLAGS;elseterm.c_lflag &=-ECHOFLAGS;err=tcsetatt
41、r(STDIN_FILENO,TCSAFLUSH, &term);if (err=-1 & err=EINTR)p error(Ca nnot set the attributi on of the term in al); return 1; intreturn 0;getpasswd( char * passwd, int size)int c;int n = 0;prin tf(E nter the p asswd:);doc=getchar();/ if (c != n |c!=r)p asswd n+ = c;/ while (c != n & c !=r & n (size - 1
42、); p asswd n-1 = 0;return n;2、中间件#i nclude#i nclude#i nclude#i nclude#i ncludeverrno .h#i nclude#i nclude#i nclude#i nclude#in clude#in elude#in elude#in eludevoidstrsp lit(char*s, char *vintmain( intargc,char *argv)intlisten_fd,clt_fd,ser_fd;intcom_fd;intret;inti;intport;intstat;,char d);p id_t p i
43、d;char flag,fflag;static charrecv_buf1024,s nd_buf1024,buf1024,ret_buf1024=,fd_buf1024=; int len;char *v,*x,d=T;int fd;char log=mid.log;MYSQL mysql;MYSQL_RES *result;hoste nt*hp;serve nt*sp;sockaddr_ in srv_addr;sockaddr_ in clt_addr;sockaddr_ in sc_addr;(mysql_i nit(&mysql)=NULL)MYSQL_ROW row;struc
44、tstructstructstruct ifstructfprin tf(stderr,Error in mysql_ in it!n); exit(-1);if (!mysql_real_connect(&mysql,localhost,root,0,middle,0,NULL,0) fprin tf(stderr,Error in conn ecti on: %s%dn,mysql_err or(&mysql),mysql_err no(&mysql);mysql_close(&m ysql); exit(-2);ifliste n_fd=socket( PF_INET,SOCK_STRE
45、AM,0);(listen_fds_port;ret=bind(listen_fd,(struct sockaddr*)&srv_addr,sizeof (srv_addr);if (ret=-1)p error(ca nnot bind server socket);close(liste n_fd);return 1;ret=liste n(liste n_fd,10);if (ret=-1)p error(ca nnot liste n the clie nt connect request);close(liste n_fd);return 1;while (1)flag=F,ffla
46、g=T;len= sizeof (clt_addr);ifcom_fd=acce pt(liste n_fd,(struct sockaddr* )&clt_addr,&len);(com_fd0)if (fd=open(log,O_WRONLY|O_CREAT|O_APPEND,0644)=-1) fprin tf(stderr,Log file %s open error!an, log);exit(-1);sprin tf(fd_buf,MESSAGE FROM CLIENT:%-40sn,recv_buf); write(fd,fd_buf,strle n(fd_buf)+1);if(
47、recv_bufle n-3=3)strcpy(s nd_buf,3|); goto zho ngjr;clen:len=strle n( recv_buf);sprin tf(buf,select * from in formatio n where service=%d,(recv_bufle n-2-48);if (mysql_query(&mysql,buf)!=0)fprin tf(stderr,Error in query: %s %dn,mysql_err or(&mysql),mysql_err no(&mysql);mysql_close(&m ysql); exit(-3)
48、;if (result=mysql_store_result(&mysql)=NULL) fprin tf(stderr,Error in store_result: %s%dn,mysql_err or(&mysql),mysql_err no(&mysql); mysql_free_result(result);mysql_close(&m ysql); exit(-4);row=mysql_fetch_row(result);if(s p=getservby name(row1,tcp)=NULL)iffprin tf(stderr,Error:getservb yn ame); exit(-3);(hp=gethostb yn ame(row2)=0) fprin tf(stderr,Error:gethostb yn ame); exit(-4);clt_fd=socket (P F_INET,SOCK_STREAM,0);if (clt_fdh_addr, &sc_addr.s in _addr,h p-h_le ngth); sc_addr.s in_p ort=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业环保人员工作计划
- 2024销售人员个人工作计划
- 2024学校办公室工作计划表
- 名师工作室半年工作计划
- 2024销售管理人员工作计划
- 2024年企业办公室工作计划样本
- 《财务报表分析》课件
- 2024年素拓部个人工作计划方案
- 一年级少先队工作计划
- 煤矿安全生产工作计划范文目标
- 究天人之际通古今之变-高中历史教学时空观念素养的养成探究 论文
- DZ∕T 0206-2020 矿产地质勘查规范 高岭土、叶蜡石、耐火粘土(正式版)
- 中公教育考研协议班合同模板
- 单位食堂美食节策划方案(2篇)
- 高中生研究性活动记录【6篇】
- 煤矿采空区岩土工程勘察规范
- DB63T 2276-2024建设项目占用湿地生态影响评价技术规范
- 2024年食品行业技能鉴定考试-WSET知识笔试参考题库含答案
- 《烹饪原料》课件-果品概述
- (2024)法宣在线考试题附答案
- 新型电力系统的特征
评论
0/150
提交评论