第二十九次作业,电子词典和学生信息

代码

  1 #include <stdio.h>
  2 #include <sqlite3.h>
  3 #include <stdlib.h>
  4 int xiugai(sqlite3 *db);
  5 int shang(sqlite3 *db);
  6 int shanchu(sqlite3 *db);
  7 int  chaxun(sqlite3 *db);
  8 int main(int argc, const char *argv[])
  9 {
 10     //创建数据库并打开
 11     sqlite3 *db;
 12     if(sqlite3_open("./pp.db",&db)!=SQLITE_OK)
 13     {
 14         printf("创建失败\n");
 15         return -1;
 16 
 17     }
 18     //创建表格
 19     char tab[128]="create table if not exists student(id int,name char,scor float)";
 20     char *erro;
 21     int hh=sqlite3_exec(db,tab,NULL,NULL,&erro);
 22     if(hh!=SQLITE_OK)
 23     {
 24         printf("%s\n",tab);
 25     }
 26     //功能选择
 27     int a=0;
 28     while(1)
 29 
 30     {
 31         fprintf(stderr,"---------------------------\n");
 32         fprintf(stderr,"--------1 上传数据--------\n");
 33         fprintf(stderr,"--------2 删除数据--------\n");
 34         fprintf(stderr,"--------3 修改数据--------\n");
 35         fprintf(stderr,"--------4 查询数据--------\n");
 36         fprintf(stderr,"--------5 退出------------\n");
 37         fprintf(stderr,"---------------------------\n");
 38         int temp;
 39         fprintf(stderr,"请选择你的功能>>");
 40         scanf("%d",&temp);
 41         switch(temp)
 42         {
 43         case 1:
 44             shang(db);
 45             printf("上传成功\n");
 46             break;
 47         case 2:                                                                                           
 48             shanchu(db);
 49             printf("删除成功\n");
 50             break;
 51         case 3:
 52             xiugai(db);
 53             printf("修改成功\n");
 54             break;
 55         case 4:
 56             chaxun(db);
 57             break;
 58         case 5:
 59             a=1;
 60             break;
 61         default:
 62             printf("输入有错误请重新输入\n");
 63             break;
 64 
 65         }
 66         if(a==1)
 67         {
 68             break;
 69 
 70         }
 71         if(temp!=4)
 72         {
 73         system("clear");
 74         }
 75 
 76     }
 77     if(sqlite3_close(db)!=SQLITE_OK)
 78     {
 79         printf("关闭失败\n");
 80         return -1;
 81 
 82     }
 83 
 84     return 0;
 85 }
 86 
 87 /*
 88  * function:    上传数据
 89  * @param [ in] 
 90  * @param [out] 
 91  * @return      
 92  */
 93 int shang(sqlite3 *db)
 94 {
 95     int id;
 96     char name[128];
 97     float scor;
 98     fprintf(stderr,"请输入id>>");
 99     scanf("%d",&id);
100     getchar();
101     fprintf(stderr,"请输入姓名>>");
102     scanf("%s",name);
103     getchar();
104     fprintf(stderr,"请输入成绩>>");
105     scanf("%g",&scor);
106     getchar();
107     char tab[128]="";
108     sprintf(tab,"insert into student values(%d,'%s',%g)",id,name,scor);
109     char *erro;
110     int hh=sqlite3_exec(db,tab,NULL,NULL,&erro);
111     if(hh!=SQLITE_OK)
112     {
113         printf("%s\n",tab);
114     }
115 }
116 /*
117  * function:    删除数据
118  * @param [ in] 
119  * @param [out] 
120  * @return      
121  */
122 int shanchu(sqlite3 *db)
123 {
124     int id;
125     char name[128];
126     float scor;
127     int hh;
128     char tab[128]="";
129     fprintf(stderr,"请输入你要删除的数据的方式\n");
130     printf("----------------------\n");
131     printf("---------1 id----------\n");
132     printf("---------2 name--------\n");
133     printf("---------3 scor--------\n");
134     printf("----------------------\n");
135     scanf("%d",&hh);
136     switch(hh)
137     {
138     case 1:
139         fprintf(stderr,"请输入id>>");
140         scanf("%d",&id);
141         getchar();
142         sprintf(tab,"delete from student where id=%d ",id);
143         break;
144     case 2:
145         fprintf(stderr,"请输入姓名>>");
146         scanf("%s",name);
147         getchar();
148         sprintf(tab,"delete from student where name=%s ",name);
149         break;
150     case 3:
151         fprintf(stderr,"请输入成绩>>");
152         scanf("%g",&scor);
153         getchar();
154         sprintf(tab,"delete from student where scor=%g",scor);
155         break;
156     default:
157         printf("输入有错误请重新输入\n");
158         return -1;
159     }
160     char *erro;
161     int h=sqlite3_exec(db,tab,NULL,NULL,&erro);
162     if(h!=SQLITE_OK)
163     {
164         printf("%s\n",tab);
165     }
166 
167 }
168 /*
169  * function:    修改数据
170  * @param [ in] 
171  * @param [out] 
172  * @return      
173  */
174 int xiugai(sqlite3 *db)
175 {
176     int id;
177     char name[128];
178     float scor;
179     int hh;
180     char tab[128]="";
181     fprintf(stderr,"请输入你要修改的成绩的方式\n");
182     printf("----------------------\n");
183     printf("---------1 id----------\n");
184     printf("---------2 name--------\n");
185     printf("----------------------\n");
186     scanf("%d",&hh);
187     switch(hh)
188     {
189     case 1:
190         fprintf(stderr,"请输入id>>");
191         scanf("%d",&id);
192         getchar();
193         fprintf(stderr,"请输入成绩>>");
194         scanf("%g",&scor);
195         sprintf(tab,"update student set scor=%g where id=%d",scor,id);
196         break;
197     case 2:
198         fprintf(stderr,"请输入姓名>>");
199         scanf("%s",name);
200         getchar();
201         fprintf(stderr,"请输入成绩>>");
202         scanf("%g",&scor);
203         sprintf(tab,"update student set scor=%g where name=%s",scor,name);
204         break;
205     default:
206         printf("输入有错误请重新输入\n");
207         return -1;
208     }
209     char *erro;
210     int h=sqlite3_exec(db,tab,NULL,NULL,&erro);
211     if(h!=SQLITE_OK)
212     {
213         printf("%s\n",tab);
214     }
215 }
216 int  chaxun(sqlite3 *db)
217 {
218     char pp[]="select * from student";
219     char **xin=NULL;
220     int hang;
221     int lie;
222     int res=sqlite3_get_table(db,pp,&xin,&hang,&lie,NULL);
223     if(res!=SQLITE_OK)
224     {
225         printf("查询错误\n");
226         return -1;
227     }
228     int i=0;
229     for(;i<(hang+1)*lie;i++)
230     {
231         printf("%s\t",xin[i]);
232         if((i+1)%lie==0)
233         {
234             putchar(10);
235         }
236     }
237     return 0;
238 }

运行效果

  1 #include <stdio.h>
  2 #include <sqlite3.h>
  3 #include <stdlib.h>
  4 #include <string.h>
  5 int xiugai(sqlite3 *db);
  6 int shang(sqlite3 *db);
  7 int shanchu(sqlite3 *db);
  8 int  chaxun(sqlite3 *db);
  9 int main(int argc, const char *argv[])
 10 {
 11     //创建数据库并打开
 12     sqlite3 *db;
 13     if(sqlite3_open("./jb.db",&db)!=SQLITE_OK)
 14     {
 15         printf("失败\n");
 16         return -1;
 17 
 18     }
 19     //创建表格
 20     char tab[128]="create table if not exists cidian(name char ,stats char)";
 21     char *erro;
 22     int hh=sqlite3_exec(db,tab,NULL,NULL,&erro);
 23     if(hh!=SQLITE_OK)
 24     {
 25         printf("创建失败\n");
 26         return -1;
 27     }
 28     char buf[128];
 29 
 30     FILE* fp=fopen("./dict.txt","r");
 31     if(fp==NULL)
 32     {
 33         printf("打开失败\n");
 34         return -1;
 35     }
 36     char na[128];
 37     char shu[128];
 38     int temp=0;
 39     int i=0;
 40     int kong=0;
 41     int h;
 42     int count=0;
 43     int yi=0;
 44     int er=0;
 45     int san=0;
 46     while(1)
 47     {
 48 
 49         char tab[128];
 50         bzero(buf,sizeof(buf));
 51         bzero(na,sizeof(buf));
 52         bzero(shu,sizeof(buf));
 53         bzero(tab,sizeof(tab));
 54         int bb=0;
 55         char* res=fgets(buf,sizeof(buf)-1,fp);
 56         count++;
 57         if(res==NULL)
 58         {
 59             break;
 60         }
 61         /// printf("读出来的%ld\n",strlen(res));
 62         //  if(count>50)
 63         //  {
 64         //      break;
 65         //  }
 66         buf[strlen(res)-1]='\0';
 67         //      printf("buf来的%ld\n",strlen(buf));
 68 
 69         for(i=0;i<strlen(buf);i++)
 70         {
 71             if(buf[i]==' ')
 72             {
 73                 temp++;
 74                 if(temp==2)
 75                 {
 76                     if(buf[i+1]!=' ')
 77                     {
 78                         temp=2;
 79                         kong=i;
 80                         break;
 81                     }
 82                 }
 83                 if(temp==3)
 84                 {
 85                     if(buf[i+1]==' ')
 86                     {
 87                         temp=4;
 88                         kong=i+1;
 89                         break;
 90                     }
 91                     temp=3;
 92                     kong=i;
 93                     break;
 94 
 95                 }
 96             }
 97         }
 98         if(temp==3)
 99         {
100             for(int b=0;b<kong-2;b++)
101             {
102                 na[b]=buf[b];
103             }
104             na[kong]='\0';
105 
106             strncpy(shu,buf+(kong+1),strlen(buf)-strlen(na)-3);
107             temp=0;
108             int i=0;
109             int len = strlen(na);
110             for (int i = 0; i < len; i++) {
111                 if (na[i] == '\'')
112                 {
113                     memmove(&na[i + 1], &na[i], len - i + 1);
114                     na[i] = '\'';
115                     i++;
116                     len++;
117                 }
118             }
119             sprintf(tab,"insert into cidian values('%s','%s')",na,shu);
120             h=sqlite3_exec(db,tab,NULL,NULL,NULL);
121             if(h!=SQLITE_OK)
122             {
123                 printf("发送失败111%s%d\n",buf,count);
124                 printf("nale=%ld shulen=%ld",strlen(na),strlen(shu));
125                 printf("na=%s shu=%s\n",na,shu);
126 
127             }
128 
129             yi++;
130 
131         }
132         if(temp==4)
133         {
134             for(int c=0;c<kong-2;c++)
135             {
136                 na[c]=buf[c];
137             }
138             na[kong]='\0';
139             strncpy(shu,buf+(kong+1),strlen(buf)-strlen(na)-3);
140             temp=0;
141             sprintf(tab,"insert into cidian values('%s','%s')",na,shu);
142             h=sqlite3_exec(db,tab,NULL,NULL,NULL);
143             if(h!=SQLITE_OK)
144             {
145                 printf("发送失败125\n");
146 
147             }
148             for (int i = 0; i < len; i++) {
149                 if (na[i] == '\'')
150                 {
151                     memmove(&na[i + 1], &na[i], len - i + 1);
152                     na[i] = '\'';
153                     i++;
154                     len++;
155                 }
156             }
157 
158             er++;
159         }
160         if(temp==2)
161         {
162             for(int c=0;c<kong-1;c++)
163             {
164                 na[c]=buf[c];
165             }
166             na[kong-1]='\0';
167             strncpy(shu,buf+(kong+1),strlen(buf)-strlen(na)-2);
168             temp=0;
169             sprintf(tab,"insert into cidian values('%s','%s')",na,shu);
170             h=sqlite3_exec(db,tab,NULL,NULL,NULL);
171             if(h!=SQLITE_OK)
172             {
173                 printf("发送失败149\n");
174 
175             }
176             for (int i = 0; i < len; i++) {
177                 if (na[i] == '\'')
178                 {
179                     memmove(&na[i + 1], &na[i], len - i + 1);
180                     na[i] = '\'';
181                     i++;
182                     len++;
183                 }
184             }
185 
186 
187             san++;
188         }
189 
190 
191         //  printf("%d %s buf的长度%ld\n",count,buf,strlen(buf));
192         //printf(" %d 读出来的%s ==%ld %s ==%ld\n", count,na,strlen(na),shu,strlen(shu));
193 
194     }
195     printf("count=%d\n",count);
196     printf("he=%d\n",yi+er+san);
197     if(count==(yi+er+san))
198     {
199         printf("相等%d\n",count);
200 
201     }
202 
203 
204     return 0;
205 
206 }                                                                                                                                               
                                                                                                                     

 运行效果

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值