天津市工程建设交易服务中心网站,果酷网的网站建设简介,wordpress登录名,wordpress模板在哪个文件夹一、项目要求#xff1a; 1.登录注册功能#xff0c;不能重复登录#xff0c;重复注册。用户信息也存储在数据库中。 2.单词查询功能 3.历史记录功能#xff0c;存储单词#xff0c;意思#xff0c;以及查询时间#xff0c;存储在数据库 4.基于TCP#xff0c;支持多客户…一、项目要求 1.登录注册功能不能重复登录重复注册。用户信息也存储在数据库中。 2.单词查询功能 3.历史记录功能存储单词意思以及查询时间存储在数据库 4.基于TCP支持多客户端连接 5.采用数据库保存用户信息与历史记录 6.将dict.txt的数据导入到数据库中保存。 7.返回上级、按下ctrlc退出客户端后该用户退出登录 二、格式要求 1.main函数只跑逻辑不允许跑功能代码 2.功能代码封装成函数
三、项目功能 1.注册 2.登录 3.查询单词 4.查看历史记录 5.退出登录
四、框架设计
4.1服务器设计 4.2客户端设计 五、功能说明
5.1用户注册 输入用户名和密码插入用户表中用户名不能和已有用户名字冲突否则失败。
5.2用户登录 输入用户名和密码通过遍历表中数据核对数据信息成功转到第二个操作界面。
5.3查询单词 输入单词在词典文件中查找存在得到单词解释并且将查询记录保存到记录表中。
5.4查询历史记录 遍历记录表中数据将用户查询的时间和单词打印到终端上。
5.5多进程实现TCP并发
六、具体代码
head.h
#ifndef __HEAD_H__
#define __HEAD_H__#include stdio.h
#include sqlite3.h
#include string.h
#include sys/types.h
#include sys/socket.h
#include netinet/in.h
#include arpa/inet.h
#include stdlib.h
#include unistd.h
#include signal.h
#include sys/wait.h
#include time.h#define PORT 8808
#define IP 127.0.0.1
#define ERR_MSG(msg) { fprintf(stderr,__%d__,__LINE__); perror(msg); }int put_dict(sqlite3 *db);
void handler(int sig);
int do_register(sqlite3 *db,char *buf);
void do_register_cli(char *buf);
int Register(sqlite3 *db,char *buf);
void do_login(char *buf);
int Login(sqlite3 *db,char *buf);
int do_select_user(sqlite3 *db,char *name);
int do_insert(sqlite3 *db,char *words,char *mean,char *save_buf);
int Search(sqlite3 *db,char *buf,char *save_buf);
int Search_res(sqlite3 *db,char *buf,char *save_buf);
int deal_cli_msg(int newfd,struct sockaddr_in cin,sqlite3 *db);#endifdictionary.c功能函数
#include head.h//导入词典
int put_dict(sqlite3 *db)
{//创建并打开一个数据库if(sqlite3_open(./dict.db,db) ! SQLITE_OK){printf(sqlite3_open:%s %d __%d__\n,\sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);return -1;}//创建一个表格 create table stu (id int,name char,score float);//数据库中sql语句怎么写这里就怎么写char sql[128] create table dict (word char,mean char);;char* errmsg NULL;if(sqlite3_exec(db,sql,NULL,NULL,errmsg) ! SQLITE_OK){fprintf(stderr,sqlite3_open:%s %d __%d__\n,\errmsg,sqlite3_errcode(db),__LINE__);return -1;}//打开文件FILE* fp fopen(./dict.txt,r);if(NULL fp){perror(fopen);return -1;}//循环读取文件中的数据一行一行的读取char buf[256] ;char word[32] ;char mean[200] ;int count 1;int i 0;char* ptr NULL;while(1){if(fgets(buf,sizeof(buf),fp) NULL)break;buf[strlen(buf)-1] 0;//分离单词和意思bzero(word,sizeof(word));bzero(mean,sizeof(mean));//获取 子串在buf中的地址ptr strstr(buf, );if(NULL ptr){printf(没有找到对应子串\n);break;}strncpy(word,buf,ptr-buf); // 子串前面是单词strcpy(mean,ptr3); // 子串后面是意思//插入到数据库中sprintf(sql,insert into dict values(\%s\,\%s\);,word,mean);if(sqlite3_exec(db,sql,NULL,NULL,errmsg) ! SQLITE_OK){printf(sqlite3_exec failed:%s __%d__\n,errmsg,__LINE__);return -1;}}printf(数据库建立成功\n);//关闭文件fclose(fp);//关闭数据库if(sqlite3_close(db) ! SQLITE_OK){fprintf(stderr,sqlite3_close:%s %d __%d__\n,\sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);return -1;}return 0;
}//捕获信号
void handler(int sig)
{while(waitpid(-1, NULL, WNOHANG) 0);
}//实现注册功能
int do_register(sqlite3 *db,char *buf)
{//打开数据库if(sqlite3_open(./dict.db,db) ! SQLITE_OK){fprintf(stderr,sqlite3_open: %s __%d__\n,sqlite3_errmsg(db),__LINE__);return -1;}//创建一个表char sql[128] create table if not exists user (name char,passwd char);;char *errmsg NULL;if(sqlite3_exec(db,sql,NULL,NULL,errmsg) ! SQLITE_OK){fprintf(stderr,sqlite3_exec: %s __%d__\n,errmsg,__LINE__);return -1;}char *name buf2;char *passwd buf2strlen(buf2)1;if(do_select_user(db,name) 1){if(sqlite3_close(db) ! SQLITE_OK){printf(sqlite3_close failed:%s __%d__\n, sqlite3_errmsg(db), __LINE__);return -1;}return 1;}sprintf(sql,insert into user values (%s,%s);,name,passwd);if(sqlite3_exec(db,sql,NULL,NULL,errmsg) ! SQLITE_OK){fprintf(stderr,sqlite3_exec: %s __%d__\n,errmsg,__LINE__);return -1;}printf(register success...\n);//关闭数据库释放对应的内存空间if(sqlite3_close(db) ! SQLITE_OK){printf(sqlite3_close failed:%s __%d__\n, sqlite3_errmsg(db), __LINE__);return -1;}return 0;
}//客户端注册函数
void do_register_cli(char *buf)
{char name[32] ;char passwd[32] ;printf(请输入您的用户名);scanf(%s,name);getchar();printf(请输入您的密码);scanf(%s,passwd);getchar();sprintf(buf,%s%c%s%c%s,1,0,name,0,passwd);
}//实现注册功能
int Register(sqlite3 *db,char *buf)
{//打开数据库if(sqlite3_open(./dict.db,db) ! SQLITE_OK){fprintf(stderr,sqlite3_open: %s __%d__\n,sqlite3_errmsg(db),__LINE__);return -1;}//创建一个表char sql[128] create table if not exists user (name char,passwd char);;char *errmsg NULL;if(sqlite3_exec(db,sql,NULL,NULL,errmsg) ! SQLITE_OK){fprintf(stderr,sqlite3_exec: %s __%d__\n,errmsg,__LINE__);return -1;}char *name buf2;char *passwd buf2strlen(buf2)1;if(do_select_user(db,name) 1){if(sqlite3_close(db) ! SQLITE_OK){printf(sqlite3_close failed:%s __%d__\n, sqlite3_errmsg(db), __LINE__);return -1;}return 1;}sprintf(sql,insert into user values (%s,%s);,name,passwd);if(sqlite3_exec(db,sql,NULL,NULL,errmsg) ! SQLITE_OK){fprintf(stderr,sqlite3_exec: %s __%d__\n,errmsg,__LINE__);return -1;}printf(register success...\n);//关闭数据库释放对应的内存空间if(sqlite3_close(db) ! SQLITE_OK){printf(sqlite3_close failed:%s __%d__\n, sqlite3_errmsg(db), __LINE__);return -1;}return 0;
}//登录函数
void do_login(char *buf)
{char name[32] ;char passwd[32] ;printf(请输入用户名);scanf(%s,name);getchar();printf(请输入密码);scanf(%s,passwd);getchar();sprintf(buf,%s%c%s%c%s,2,0,name,0,passwd);
}//实现登录功能
int Login(sqlite3 *db,char *buf)
{//打开数据库if(sqlite3_open(./dict.db,db) ! SQLITE_OK){fprintf(stderr,sqlite3_open: %s __%d__\n,sqlite3_errmsg(db),__LINE__);return -1;}char sql[128] create table if not exists user (name char,passwd char);;char *errmsg NULL;if(sqlite3_exec(db,sql,NULL,NULL,errmsg) ! SQLITE_OK){fprintf(stderr,sqlite3_exec: %s __%d__\n,errmsg,__LINE__);return -1;}strcpy(sql,select * from user;);char **pres NULL;int row,column;if(sqlite3_get_table(db,sql,pres,row,column,errmsg) ! SQLITE_OK){fprintf(stderr,sqlite3_exec: %s __%d__\n,errmsg,__LINE__);return -1;}char *name buf2;char *passwd buf2strlen(buf2)1;for(int i2;i(row1)*column;i){if(strcmp(pres[i],name) 0 strcmp(pres[i1],passwd) 0){printf(login success...\n);if(sqlite3_close(db) ! SQLITE_OK){printf(sqlite3_close failed:%s __%d__\n, sqlite3_errmsg(db), __LINE__);return -1;}return 2;}}//关闭数据库释放对应的内存空间if(sqlite3_close(db) ! SQLITE_OK){printf(sqlite3_close failed:%s __%d__\n, sqlite3_errmsg(db), __LINE__);return -1;}return 3;
}//查找用户名是否存在
int do_select_user(sqlite3 *db,char *name)
{char sql[128] select name from user;;char **pres NULL;int row,column;char *errmsg NULL;if(sqlite3_get_table(db,sql,pres,row,column,errmsg) ! SQLITE_OK){fprintf(stderr,sqlite3_exec: %s __%d__\n,errmsg,__LINE__);return -1;}for(int i1;i(row1)*column;i){if(strcmp(pres[i],name) 0){fprintf(stderr,sqlite3_exec: name already existss\n);return 1;}}return 0;
}//实现查询功能函数
int do_insert(sqlite3 *db,char *words,char *mean,char *save_buf)
{//获取当前时间戳time_t t;struct tm *infoNULL;char mytime[128] ;t time(NULL);info localtime(t);sprintf(mytime,%d-%02d-%02d %02d:%02d:%02d,info-tm_year1900,info-tm_mon1,info-tm_mday,info-tm_hour,info-tm_min,info-tm_sec);//打开数据库if(sqlite3_open(./dict.db,db) ! SQLITE_OK){fprintf(stderr,sqlite3_open: %s __%d__\n,sqlite3_errmsg(db),__LINE__);return -1;}//创建一个表char sql[128] create table if not exists history (name char,word char,mean char,time char);;char *errmsg NULL;char *name save_buf;if(sqlite3_exec(db,sql,NULL,NULL,errmsg) ! SQLITE_OK){fprintf(stderr,sqlite3_exec: %s __%d__\n,errmsg,__LINE__);return -1;}//插入查询记录sprintf(sql,insert into history values (\%s\,\%s\, \%s\,\%s\);,name,words, mean,mytime);if(sqlite3_exec(db, sql, NULL, NULL, errmsg) ! SQLITE_OK){printf(sqlite3_exec failed:%s __%d__\n, errmsg, __LINE__);return -1;}printf(do_insert success...\n);
}//查询单词
int do_search(sqlite3 *db,char *buf,char *save_buf)
{//打开数据库if(sqlite3_open(./dict.db,db) ! SQLITE_OK){fprintf(stderr,sqlite3_open: %s __%d__\n,sqlite3_errmsg(db),__LINE__);return -1;}char sql[128] select * from dict;;char **pres NULL;int row,column;char *errmsg NULL;if(sqlite3_get_table(db,sql,pres,row,column,errmsg) ! SQLITE_OK){fprintf(stderr,sqlite3_get_table: %s __%d__\n,errmsg,__LINE__);return -1;}char *words buf2;for(int i0;i(row1)*column;i){if(strcmp(pres[i],words) 0){//若查询成功则将该单词插入记录do_insert(db,words,pres[i1],save_buf);bzero(buf, sizeof(buf));sprintf(buf,\t%s\t\t%s\t,pres[i],pres[i1]);if(sqlite3_close(db) ! SQLITE_OK){printf(sqlite3_close failed:%s __%d__\n, sqlite3_errmsg(db), __LINE__);return -1;}return 4;}}//关闭数据库释放对应的内存空间if(sqlite3_close(db) ! SQLITE_OK){printf(sqlite3_close failed:%s __%d__\n, sqlite3_errmsg(db), __LINE__);return -1;}return 5;
}//查询记录函数
int do_search_res(sqlite3 *db,char *buf,char *save_buf)
{//打开数据库if(sqlite3_open(./dict.db,db) ! SQLITE_OK){fprintf(stderr,sqlite3_open: %s __%d__\n,sqlite3_errmsg(db),__LINE__);return -1;}char sql[128] create table if not exists history (name char,word char,mean char,time char);;char *errmsg NULL;if(sqlite3_exec(db,sql,NULL,NULL,errmsg) ! SQLITE_OK){fprintf(stderr,sqlite3_exec: %s __%d__\n,errmsg,__LINE__);return -1;}char msg[128] ;strcpy(sql,select * from history;);char **pres NULL;int row,column;if(sqlite3_get_table(db,sql,pres,row,column,errmsg) ! SQLITE_OK){fprintf(stderr,sqlite3_get_table: %s __%d__\n,errmsg,__LINE__);return -1;}bzero(buf,sizeof(buf));for(int i4;i(row1)*column;i){if(i%40 strcmp(save_buf,pres[i]) 0){sprintf(msg,%s\t%s\t%s\t%s\n,pres[i],pres[i1],pres[i2],pres[i3]);strcat(buf,msg);}}if(strlen(buf)!0)*(bufstrlen(buf)-1) 0;//关闭数据库释放对应的内存空间if(sqlite3_close(db) ! SQLITE_OK){printf(sqlite3_close failed:%s __%d__\n, sqlite3_errmsg(db), __LINE__);return -1;}if(strlen(buf) 0)return 7;return 6;
}
//服务器子进程处理客户端信息
int deal_cli_msg(int newfd,struct sockaddr_in cin,sqlite3 *db)
{int flag 0;char buf[128] ;char save_buf[128] ;ssize_t res 0;int f_res -1;while(1){bzero(buf, sizeof(buf));//接收数据res recv(newfd, buf, sizeof(buf), 0);if(res 0){ERR_MSG(recv);return -1;}else if(0 res){printf([%s : %d] client offline\n,inet_ntoa(cin.sin_addr), ntohs(cin.sin_port));break;}//调用功能函数if(strcmp(buf,1) 0)f_res Register(db,buf); //注册else if(strcmp(buf,2) 0){f_res Login(db,buf); //登录strcpy(save_buf,buf2); //将用户名另存}else if(strcmp(buf,3) 0){f_res do_search(db,buf,save_buf); //查询单词}else if(strcmp(buf,4) 0)f_res do_search_res(db,buf,save_buf); //查询记录//发送数据if(0 f_res){bzero(buf, sizeof(buf));strcpy(buf,[注册成功!]);}else if(1 f_res){bzero(buf, sizeof(buf));strcpy(buf,[对不起注册失败该用户名已存在!]);}else if(2 f_res){bzero(buf, sizeof(buf));strcpy(buf,[登录成功!]);}else if(3 f_res){bzero(buf, sizeof(buf));strcpy(buf,[对不起登录失败该用户名/密码不存在!]);}else if(5 f_res){bzero(buf, sizeof(buf));strcpy(buf,[对不起无法查找找到该单词!]);}else if(7 f_res){bzero(buf, sizeof(buf));strcpy(buf,[对不起该用户没有历史记录!]);}if(send(newfd, buf, sizeof(buf), 0) 0){ERR_MSG(send);return -1;}}close(newfd);return 0;
}
服务器Ser.c
#include head.h
int main(int argc, const char *argv[])
{sqlite3 *db NULL;if(signal(17, handler) SIG_ERR){ERR_MSG(signal);return -1;}//导入词典 put_dict(db);//创建流式套接字int sfd socket(AF_INET,SOCK_STREAM,0);if(sfd 0){ERR_MSG(socket);return -1;}//设置允许端口号复用int reuse 1;if(setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, reuse, sizeof(reuse)) 0) { perror(setsockopt);return -1;}//绑定服务器IP和端口号struct sockaddr_in sin;sin.sin_family AF_INET;sin.sin_port htons(PORT);sin.sin_addr.s_addr inet_addr(IP);if(bind(sfd,(struct sockaddr *)sin,sizeof(sin)) 0){ERR_MSG(bind);return -1;}//将套接字设置为被动监听状态if(listen(sfd,10) 0){ERR_MSG(listen);return -1;}int newfd -1;struct sockaddr_in cin;socklen_t addrlen sizeof(cin);//从已完成连接的队列中获取一个客户端信息生成一个新的文件描述符while(1){newfd accept(sfd,(struct sockaddr *)cin,addrlen);if(newfd 0){ERR_MSG(accept);return -1;}printf([%s : %d] connect success...\n,inet_ntoa(cin.sin_addr), ntohs(cin.sin_port));if(0 fork()){close(sfd);deal_cli_msg(newfd,cin,db);exit(0);}close(newfd);}close(sfd);return 0;
}客户端Cli.c
#include head.hint main(int argc, const char *argv[])
{sqlite3 *db NULL;//创建流式套接字int cfd socket(AF_INET, SOCK_STREAM, 0);if(cfd 0){ERR_MSG(socket);return -1;}printf(cfd %d\n, cfd);//绑定客户端的的IP和端口---非必须绑定//若不绑定则操作系统会给客户端绑定上客户端所在的主机IP,以及随机端口(49152~65535)//填充服务器的地址信息结构体真实的地址信息结构体根据地址族指定//AF_INET: man 7 ip //要连接哪个服务器就填对应服务器的IP和端口struct sockaddr_in sin;sin.sin_family AF_INET; //必须填AF_INETsin.sin_port htons(PORT); //端口号: 填服务器绑定端口号sin.sin_addr.s_addr inet_addr(IP); //IP地址服务器绑定的IP地址//连接服务器if(connect(cfd, (struct sockaddr*)sin, sizeof(sin)) 0){ERR_MSG(connect);return -1;}printf(connect success\n);ssize_t res 0;char buf[128] ;char buf1[128] ;char save_buf[128] ;char choose 0;while(1){system(clear);printf(-----------------------\n);printf(---------1.注册--------\n);printf(---------2.登录--------\n);printf(---------3.退出--------\n);printf(-----------------------\n);printf(请输入您需要执行的操作);choose getchar();while(getchar() ! 10);switch(choose){case 1://注册函数do_register_cli(buf);break;case 2://登录函数do_login(buf);break;case 3://退出函数goto END;default:printf(对不起您的输入有误请重新输入\n);}//发送数据if(send(cfd,buf,sizeof(buf),0) 0){perror(send);return -1;}//接受数据bzero(buf,sizeof(buf));res recv(cfd,buf,sizeof(buf),0);if(res 0){perror(recv);return -1;}else if(0 res){printf([%s : %d] server offline\n,IP,PORT);break;}printf(%s\n,buf);strcpy(save_buf,buf);while(strcmp(save_buf,[登录成功!]) 0){system(clear);printf(--------------------------\n);printf(-------1.查找单词---------\n);printf(-------2.查找历史记录-----\n);printf(-------3.退出登录---------\n);printf(--------------------------\n);printf(请输入您要执行的操作);choose getchar();while(getchar() ! 10);// bzero(buf,sizeof(buf));// fgets(buf,sizeof(buf),stdin);// buf[strlen(buf)-1] 0;char words[20] ;switch(choose){case 1:{while(1){bzero(buf,sizeof(buf));printf(请输入您要查找的单词(输入 \#\ 结束));scanf(%s,words);getchar();if(strcmp(words,#) 0)break;sprintf(buf,%s%c%s%c,3,0,words,0);//发送数据if(send(cfd,buf,sizeof(buf),0) 0){perror(send);return -1;}//接收查询单词结果bzero(buf,sizeof(buf));res recv(cfd,buf,sizeof(buf),0);if(res 0){perror(recv);return -1;}else if(0 res){printf([%s : %d] server offline\n,IP,PORT);// break;goto END;}printf(%s\n,buf);}}break;case 2://登录函数{sprintf(buf,%s%c,4,0);//发送数据if(send(cfd,buf,sizeof(buf),0) 0){perror(send);return -1;}//接受查询单词结果bzero(buf,sizeof(buf));res recv(cfd,buf,sizeof(buf),0);if(res 0){perror(recv);return -1;}else if(0 res){printf([%s : %d] server offline\n,IP,PORT);goto END;// break;}printf(%s\n,buf);}break;case 3:goto END1;default:printf(对不起您的输入有误请重新输入\n);}printf(输入任意字符清屏);while(getchar() ! 10);}
END1:printf(输入任意字符清屏);while(getchar() ! 10);}
END://关闭所有文件描述符close(cfd);return 0;
}
文章转载自: http://www.morning.qgfhr.cn.gov.cn.qgfhr.cn http://www.morning.qjngk.cn.gov.cn.qjngk.cn http://www.morning.jokesm.com.gov.cn.jokesm.com http://www.morning.ailvturv.com.gov.cn.ailvturv.com http://www.morning.gxklx.cn.gov.cn.gxklx.cn http://www.morning.lysrt.cn.gov.cn.lysrt.cn http://www.morning.klzt.cn.gov.cn.klzt.cn http://www.morning.ybnps.cn.gov.cn.ybnps.cn http://www.morning.wcft.cn.gov.cn.wcft.cn http://www.morning.horihe.com.gov.cn.horihe.com http://www.morning.pjyrl.cn.gov.cn.pjyrl.cn http://www.morning.dxxnq.cn.gov.cn.dxxnq.cn http://www.morning.fbdtd.cn.gov.cn.fbdtd.cn http://www.morning.qrdkk.cn.gov.cn.qrdkk.cn http://www.morning.jbtwq.cn.gov.cn.jbtwq.cn http://www.morning.kfmnf.cn.gov.cn.kfmnf.cn http://www.morning.rrcxs.cn.gov.cn.rrcxs.cn http://www.morning.gkgb.cn.gov.cn.gkgb.cn http://www.morning.gnmhy.cn.gov.cn.gnmhy.cn http://www.morning.slqgl.cn.gov.cn.slqgl.cn http://www.morning.qlck.cn.gov.cn.qlck.cn http://www.morning.tmjhy.cn.gov.cn.tmjhy.cn http://www.morning.qswws.cn.gov.cn.qswws.cn http://www.morning.pkdng.cn.gov.cn.pkdng.cn http://www.morning.qnrpj.cn.gov.cn.qnrpj.cn http://www.morning.rtsx.cn.gov.cn.rtsx.cn http://www.morning.dhyzr.cn.gov.cn.dhyzr.cn http://www.morning.bdfph.cn.gov.cn.bdfph.cn http://www.morning.wpxfk.cn.gov.cn.wpxfk.cn http://www.morning.gpsr.cn.gov.cn.gpsr.cn http://www.morning.qyhcm.cn.gov.cn.qyhcm.cn http://www.morning.hxcrd.cn.gov.cn.hxcrd.cn http://www.morning.dnpft.cn.gov.cn.dnpft.cn http://www.morning.ttaes.cn.gov.cn.ttaes.cn http://www.morning.ypfw.cn.gov.cn.ypfw.cn http://www.morning.cknsx.cn.gov.cn.cknsx.cn http://www.morning.gqryh.cn.gov.cn.gqryh.cn http://www.morning.srnth.cn.gov.cn.srnth.cn http://www.morning.zntf.cn.gov.cn.zntf.cn http://www.morning.xblrq.cn.gov.cn.xblrq.cn http://www.morning.fzwf.cn.gov.cn.fzwf.cn http://www.morning.stsnf.cn.gov.cn.stsnf.cn http://www.morning.qmxsx.cn.gov.cn.qmxsx.cn http://www.morning.kxxld.cn.gov.cn.kxxld.cn http://www.morning.mhwtq.cn.gov.cn.mhwtq.cn http://www.morning.lgphx.cn.gov.cn.lgphx.cn http://www.morning.jkcnq.cn.gov.cn.jkcnq.cn http://www.morning.kwqt.cn.gov.cn.kwqt.cn http://www.morning.nytgk.cn.gov.cn.nytgk.cn http://www.morning.cykqg.cn.gov.cn.cykqg.cn http://www.morning.wrtxk.cn.gov.cn.wrtxk.cn http://www.morning.gmgyt.cn.gov.cn.gmgyt.cn http://www.morning.yqzyp.cn.gov.cn.yqzyp.cn http://www.morning.djpgc.cn.gov.cn.djpgc.cn http://www.morning.incmt.com.gov.cn.incmt.com http://www.morning.pkdng.cn.gov.cn.pkdng.cn http://www.morning.wmhqd.cn.gov.cn.wmhqd.cn http://www.morning.wqkzf.cn.gov.cn.wqkzf.cn http://www.morning.mnjyf.cn.gov.cn.mnjyf.cn http://www.morning.znmwb.cn.gov.cn.znmwb.cn http://www.morning.jpjpb.cn.gov.cn.jpjpb.cn http://www.morning.rxgnn.cn.gov.cn.rxgnn.cn http://www.morning.dbjyb.cn.gov.cn.dbjyb.cn http://www.morning.xkjqg.cn.gov.cn.xkjqg.cn http://www.morning.nkkpp.cn.gov.cn.nkkpp.cn http://www.morning.wfhnz.cn.gov.cn.wfhnz.cn http://www.morning.prsxj.cn.gov.cn.prsxj.cn http://www.morning.ljllt.cn.gov.cn.ljllt.cn http://www.morning.tbkqs.cn.gov.cn.tbkqs.cn http://www.morning.bqdpy.cn.gov.cn.bqdpy.cn http://www.morning.mgnrc.cn.gov.cn.mgnrc.cn http://www.morning.ypnxq.cn.gov.cn.ypnxq.cn http://www.morning.fbrshjf.com.gov.cn.fbrshjf.com http://www.morning.bfwk.cn.gov.cn.bfwk.cn http://www.morning.ymwcs.cn.gov.cn.ymwcs.cn http://www.morning.dyxlm.cn.gov.cn.dyxlm.cn http://www.morning.qbwmz.cn.gov.cn.qbwmz.cn http://www.morning.bfbl.cn.gov.cn.bfbl.cn http://www.morning.jhrlk.cn.gov.cn.jhrlk.cn http://www.morning.plfrk.cn.gov.cn.plfrk.cn