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。unix课程设计基于中间件的图书管理系统
相关推荐
附近供水供电充足,土地大致可分三大块(分别为 4亩、 3 亩、 3 亩),可以灵活规划。 空地上有 200 棵核桃树和 100 棵板栗树,还饲养着300 百只土鸡。 石关村昆百大珠宝城及周边别墅区的建设, 有更多的富人居住,也属于目标群体,这些富人可能已经厌恶了都市的烦闷,希望体验更好的生活,家庭农场是个不错的选择,可以很好的放松身心。 第五节项目建设提出的依据
年来,全县人民以经济建设为中心,大胆改革,艰苦创业,经 6 济建设成效显著,综合经济实力显著增强。 据本县 2020 年国民经济统计资料,全县地区生产总产值 亿 元,其中第一产业 亿 元、第二产业 亿 元、第三产业 亿 元。 2020 年全县农作物播种面积 19080hm2,粮食作物播种面积 17445hm2,粮食总产量 63048t,播种面积平均单产。 境内长邯铁路(境内长 42km)
%,优良率 100%,工程竣工质量保“优良”。 2、组织措施: 建立以工程项目经理为主的质量保证体系。 采取由项目经理领导,现场技术负责人中间控制,专职质量检查员负责的三级管理机构,建立横向各专业之间,纵向从领 导到施工班组之间的质量管理网络: 3、本工程所采用验收规范、质量检验标准: GBJ5016992 《电气装置安装工程接地装置施工及验收规范》 GBJ5016892
回路,本机振荡的电压由 T2 的初级的抽头引出,通过 C2耦合到 VT 1 的发射极上。 混频电路由 VT l、 T3 的初级线圈等组成,是共发射极电路。 其工作过程是: (磁性天线接收的电台信号 )通过输入调谐电路接收到的电台信号,通过 Tl 的次级线圈 Lcd 送到 VT l 的基极, 太原科技大学课程设计说明书(模电) 10 本机振荡信号又通过 C2 送到 VT l 和发射极
路大中修工程项目部 安全技术交底书 建筑机械安全技术交底 安装机械设备名称: 振捣棒 安全技术交底内容 在使用前检查部件和软轴接线是否正确,试运转后方可使用。 单设电源线和电源箱,箱内要在漏电保护器,电机外壳做好接零保护工作,两人操作,一人持棒,一人看电视,不得拖 拉。 电机如果放在架子上不准拖拉,防止电机与软轴拖开,电机跌落砸人或摔坏电机。 随机用的电缆线不得捆在架管或钢筋上,防止破损漏电。
作为体育的主体设施,我们期待新的体育建筑能够加强XX 适应未来城市变化的能力,为社会的发展做出应有贡献。 体育中心的设计,一是适度超前,二要近远结合。 既充分考虑它未来 3040 年的城市发展,科学规划,合理布局,留有余地,避免重复建设,贯彻建设“节约型”社会的宗旨,又要从实际出发,充分考虑近期用地,有利于主体设施及配套项目的建设。 同时,中心体育场馆和设施是为大众服务的健身场所