unix课程设计基于中间件的图书管理系统内容摘要:

加了 break 语句,成功的解决了错误。 其次原先若输入比菜单中选项大的数字,系统没有识别错误,继续执行。 为了解决这个错误,我在客户端的主菜单部分添加了 ifelse语句,对字符进行判断和错误处理,成功的解决了该错误。 其实设计中遇到的问题远比这多很多,因为掌握知识的程度不同,各种各样的编程问题都会遇到, 我 们 坚持不懈,通过不断的学习和查阅资料、向老师请教,最后通过 努力 完成了任务。 23 七、源程序清单 数据库代码 编写脚本文件 ,并在脚本中编写如下内容: create database library。 use library。 create table books( id char(10) not null primary key, name char(50) not null, writer char(50), storage char(10) )。 create table reader( id char(10) not null primary key, name char(50) not null, password char(15), enable char(2) default 1 )。 create table admi ( id char(10) not null primary key, name char(50) not null, password char(15) )。 create table borrow ( r_id char(10) not null, b_id char(10) not null, b_date date, status char(2), primary key(b_id,r_id), foreign key(b_id) references books(id) on delete cascade on update cascade, foreign key(r_id) references reader(id) on delete cascade on update cascade )。 insert into books values (1,book1,a,5)。 insert into books values (2,book2,b,6)。 insert into books values (3,book3,c,6)。 insert into books values (4,book4,d,10)。 insert into books values (5,book5,e,9)。 insert into books values (6,book6,f,4)。 insert into books values (7,book7,g,7)。 insert into reader values (00000,youke,123,1)。 insert into admi values (11111,root,123)。 24 服务器代码 include include include include sys/ include sys/ include i/ include includemysql/ include define rec_length 20 getm(char buf[],char result[][10][50]) //change format { char *ip=NULL,*op=NULL,*temp=NULL,*p=NULL,*tmp=NULL。 int i=0,j=0,n=0。 temp=(char *)malloc(strlen(buf))。 strcpy(temp,buf)。 p=temp。 strtok_r(temp,。 ,amp。 op)。 while((tmp=strtok_r(NULL,。 ,amp。 op))!=NULL) { p=tmp。 while((tmp=strtok_r(p,amp。 ip))!=NULL) { strcpy(result[i][j],tmp)。 p=NULL。 j++。 } i++。 j=0。 } free(temp)。 } int opdb(char *cmd,char *p,int flag) //operate database { MYSQL mysql。 MYSQL_RES *result。 MYSQL_ROW row。 int i,j,n=0。 char buf[256]。 if(mysql_init(amp。 mysql)==NULL) { printf(db init error!\n)。 return 1。 } 25 printf(Init db successfully!\n)。 if(!mysql_real_connect(amp。 mysql,localhost,root,0,library,0,NULL,0)) { printf(Connect error!\n)。 mysql_close(amp。 mysql)。 return 1。 } printf(Connect db successfully!\n)。 printf(cmd=%s\n,cmd)。 if(mysql_query(amp。 mysql,cmd)!=0) { printf(query database wrong!\n)。 mysql_close(amp。 mysql)。 return 1。 } if(flag==1) { printf(bbbbbbbbbbbbb\n)。 if((result=mysql_store_result(amp。 mysql))==NULL) { mysql_free_result(result)。 mysql_close(amp。 mysql)。 return 1。 } n=mysql_num_rows(result)。 } i=0。 j=0。 if(p!=NULL) { bzero(buf,sizeof(buf))。 while((row=mysql_fetch_row(result))) { strcat(buf,。 )。 strcat(buf,row[0])。 for(i=1。 imysql_num_fields(result)。 i++) { strcat(buf,)。 strcat(buf,row[i])。 } } sprintf(p,%d%s,n,buf)。 } if(flag==1) { printf(aaaaaaaaaaaaaaaaaaaaa\n)。 26 mysql_free_result(result)。 } mysql_close(amp。 mysql)。 printf(opdb successfully!\n)。 printf(n=%d\n,n)。 return n。 } checkstat(char id[]) { char cmd1[128],cmd2[128],cmd[128],buf[10]。 sprintf(cmd1,select * from borrow where to_days(now())to_days(b_date)30amp。 amp。 r_id=\%s\,id)。 sprintf(cmd2,select * from borrow where r_id=\%s\,id)。 if((opdb(cmd1,NULL,1)==0)amp。 amp。 (opdb(cmd2,NULL,1)4)) { sprintf(cmd,update reader set enable=\1\ where id=\%s\,id)。 opdb(cmd,NULL,0)。 } else { sprintf(cmd,update reader set enable=\0\ where id=\%s\,id)。 opdb(cmd,NULL,0)。 } printf(Check ok!\n)。 } main(int argc, char **argv ) { struct sockaddr_in sin。 struct servent *sp。 int s,ns,pid。 char buf[1024]。 char *service。 if(argc!=1) service=argv[1]。 else { fprintf(stderr,NO service assigned!\nUsage:\n)。 fprintf(stderr,\t%s server_name!\n,argv[0])。 fprintf(stderr,Note: server_name is defined in file /etc/services\n)。 exit(1)。 } if((sp=getservbyname(service,tcp))==NULL){ fprintf(stderr,Error: getservbyname)。 exit(5)。 } if((s=socket(AF_INET,SOCK_STREAM,0))==1){ fprintf(stderr,Error: socket create)。 27 exit(6)。 } bzero(amp。 sin,sizeof(sin))。 =sps_port。 if(bind(s,(struct sockaddr *)amp。 sin,sizeof(sin))==1){ fprintf(stderr,Error: bind)。 close(s)。 exit(6)。 } if(listen(s,5)==1){ fprintf(stderr,Error: listen)。 close(s)。 exit(6)。 } while(1){ fprintf(stderr,\n\t\t\t Now wait connect ...\n)。 if((ns=accept(s,0,0))==1) { // wait a connection */ fprintf(stderr,error: accept)。 continue。 } if((pid=fork())==1){ // coned, and then create child proc fprintf(stderr,server: fork error!)。 close(s)。 exit(1)。 } if(pid!=0){ //parent proce, nothing to do, and to the next loop close(ns)。 wait(0)。 continue。 } if(pid==0){ // entered c。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。