图书管理小系统
Posted starry
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图书管理小系统相关的知识,希望对你有一定的参考价值。
昨天一朋友要我帮她写个“图书管理小系统”,一时嘴贱就答应了。
要求如下:
看着还可以,昨晚把基本框架写了下,今天写了一下午,接近600行,总算写完了。由于她明天就要交,我就赶了点,很多地方还没写好。
但总体来说也让我对文件输出输入有了更进一步的了解了,不过没有用结构体指针,用了的话应该可以 节约很多内存。看以后有没有时间
去完善它吧。
发几个界面看看:
先把代码贴下:
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <stddef.h> 4 #include <stdlib.h> 5 #include <string.h> 6 #include <windows.h> 7 #define MAX 20 8 struct Borrow{ 9 char name[MAX]; //用户名 10 int num; // 借书数量 11 int number[MAX]; //书的编号 12 char book[MAX][MAX]; //书名 13 }bor[5000]; 14 15 struct Student{ 16 char name[MAX]; //用户名 17 char password[MAX]; //密码 18 //Borrow book; //借书信息 19 char sex[MAX]; //性别 20 //struct student *next; //结构体指针 21 }stu[5000]; 22 23 struct Book{ 24 int number; //编号 25 char bookName[MAX]; //书名 26 int num; //书的数量 27 }book[10000]; 28 //stu *head; //指针头 29 int i, j, l, n, flag, cnt, k, MAX_BOR, MAX_BOOK; 30 void regist(){ //注册功能 31 system("cls"); 32 FILE *fin,*fout; 33 fin = fopen("user.txt","r+"); 34 char s[20],ss[20],sss[10]; 35 if(fin!=NULL){ 36 while(fscanf(fin,"%s %s %s",stu[i].name,stu[i].password,stu[i].sex)!=EOF){ 37 i++; 38 } 39 } 40 fclose(fin); 41 fout = fopen("user.txt","a+"); 42 system("cls"); 43 do{ 44 printf("请输入用户名:"); 45 scanf("%s",s); 46 for(j = 0; j < i; j ++){ 47 if(!strcmp(s,stu[j].name)){ 48 system("cls"); 49 printf("该用户名已经注册了!"); 50 goto tt; 51 } 52 } 53 printf("\\n请输入密码:"); 54 scanf("%s",ss); 55 printf("\\n请输入性别(男或女):"); 56 scanf("%s",sss); 57 fprintf(fout,"%s\\t%s\\t%s\\n",s,ss,sss); 58 break; 59 tt:; 60 }while(1); 61 fclose(fout); 62 } 63 64 void login(){ //登入功能 65 n = 3; 66 char s[20],ss[20]; 67 FILE *fin; 68 fin = fopen("user.txt","r+"); 69 i = 0; 70 while(fscanf(fin,"%s %s %s",stu[i].name,stu[i].password,stu[i].sex)!=EOF){ 71 i++; 72 } 73 fclose(fin); 74 flag = 0; 75 system("cls"); 76 do{ 77 printf("\\n\\n\\n\\t\\t请输入用户名:"); 78 scanf("%s",s); 79 printf("\\n\\t\\t请输入密码 :"); 80 scanf("%s",ss); 81 for(j = 0; j < i; j ++){ 82 if(!strcmp(s,stu[j].name)&&!strcmp(ss,stu[j].password)){ 83 cnt = j; //标记登入的用户下标 84 flag = 1; 85 break; 86 } 87 } 88 if(flag)break; 89 system("cls"); 90 printf("用户名或密码错误!\\n"); 91 }while(n--); 92 93 } 94 95 void print(){ //显示用户借书信息 96 void loadBor(); 97 loadBor(); 98 for(j = 0; j < MAX_BOR; j ++){ 99 if(!strcmp(stu[cnt].name,bor[j].name)){ 100 break; 101 } 102 } 103 if(j == MAX_BOR){ 104 printf("|\\t\\t\\t\\t\\t借书为0。|\\n"); 105 }else{ 106 printf("|\\t\\t已经借的书为:\\t\\t\\t|\\n"); 107 if(bor[j].num == 0){ 108 printf("|\\t\\t\\t借书为0.\\t\\t|\\n"); 109 }else{ 110 for(l = 0; l < bor[j].num; l ++){ 111 printf("|\\t\\t%d\\t%s\\t\\t|\\n",bor[j].number[l],bor[j].book[l]); 112 } 113 } 114 printf("|\\t\\t\\t\\t\\t\\t|\\n"); 115 116 } 117 printf("|_______________________________________________|\\n\\n"); 118 } 119 120 void loadBor(){ //加载借书信息 121 FILE *fin; 122 fin = fopen("borrow.txt","r+"); 123 k = 0; 124 while(fscanf(fin,"%s %d",bor[k].name,&bor[k].num)!=EOF){ 125 for(j = 0; j < bor[k].num; j++){ 126 fscanf(fin,"%d %s",&bor[k].number[j],bor[k].book[j]); 127 // printf("%s\\t",bor[k].book[j]); 128 } 129 k++; 130 } 131 MAX_BOR = k; 132 fclose(fin); 133 } 134 135 void loadBook(){ //加载图书信息 136 FILE *fin; 137 fin = fopen("book.txt","r+"); 138 k = 0; 139 while(fscanf(fin,"%d %s %d",&book[k].number,book[k].bookName,&book[k].num)!=EOF){ 140 k++; 141 } 142 MAX_BOOK = k; 143 fclose(fin); 144 } 145 146 void writeBor(){ //将借书信息写入文件 147 FILE *fp; 148 fp = fopen("borrow.txt","w"); 149 for(j = 0; j < MAX_BOR; j ++){ 150 fprintf(fp,"%s\\t%d\\t",bor[j].name,bor[j].num); 151 for(k = 0; k < bor[j].num; k ++){ 152 fprintf(fp,"%d\\t%s\\t",bor[j].number[k],bor[j].book[k]); 153 } 154 fprintf(fp,"\\n"); 155 } 156 fclose(fp); 157 } 158 159 void writeBook(){ //将图书信息写入文件 160 FILE *fp; 161 fp = fopen("book.txt","w"); 162 for(j = 0; j < MAX_BOOK; j ++){ 163 fprintf(fp,"%d\\t%s\\t%d\\n",book[j].number,book[j].bookName,book[j].num); 164 } 165 fclose(fp); 166 } 167 168 void printFun(){ //显示界面 169 system("cls"); 170 printf(" _______________________________________________ \\n"); 171 printf("|\\t\\t欢迎进入图书管理系统!\\t\\t|\\n"); 172 printf("|\\t<1>还书\\t\\t"); 173 printf("<2>借书\\t\\t\\t|\\n"); 174 printf("|\\t\\t\\t\\t\\t\\t|\\n"); 175 printf("|\\t<3>查询图书\\t"); 176 printf("<4>删除图书\\t\\t|\\n"); 177 printf("|\\t\\t\\t\\t\\t\\t|\\n"); 178 printf("|\\t<5>添加图书\\t"); 179 printf("<6>修改图书\\t\\t|\\n"); 180 printf("|\\t\\t\\t\\t\\t\\t|\\n"); 181 printf("|\\t<7>显示图书\\t"); 182 printf("<8>刷新\\t\\t\\t|\\n"); 183 printf("|\\t\\t\\t\\t\\t\\t|\\n"); 184 printf("|\\t<9>退出\\t\\t\\t\\t\\t|\\n"); //退出 185 printf("|_______________________________________________|\\n\\n"); 186 } 187 188 void move(){ //还书功能 189 system("cls"); 190 print(); 191 int m; 192 loadBor(); 193 for(m = 0; m < MAX_BOR; m ++){ 194 if(!strcmp(stu[cnt].name,bor[m].name)){ 195 break; 196 } 197 } 198 if(m== MAX_BOR || bor[m].num == 0){ 199 printf("你当前的借书量为0,不需要还书\\n按任意键继续..."); 200 getchar(); 201 getchar(); 202 return; 203 } 204 printf("请输入还书的书号:"); 205 int num; 206 char s[MAX]; 207 scanf("%d",&num); 208 for(j = 0; j < bor[m].num; j ++){ 209 if(num == bor[m].number[j]){ 210 strcpy(s,bor[m].book[j]); 211 break; 212 } 213 } 214 if(j != bor[m].num){ 215 for(; j < bor[m].num-1; j ++){ 216 bor[m].number[j] = bor[m].number[j+1]; 217 strcpy(bor[m].book[j],bor[m].book[j+1]); 218 } 219 bor[m].num--; 220 writeBor(); 221 loadBook(); 222 for(k = 0; k < MAX_BOOK; k ++){ 223 if(num == book[k].number){ 224 book[k].num++; 225 break; 226 } 227 } 228 if(k == MAX_BOOK){ 229 book[k].number = num; 230 strcpy(book[k].bookName,s); 231 book[k].num = 1; 232 MAX_BOOK++; 233 } 234 writeBook(); 235 }else{ 236 printf("请输入正确的书号!\\n"); 237 getchar(); 238 getchar(); 239 move(); 240 return; 241 } 242 243 } 244 245 void take(){ //借书功能 246 loadBook(); 247 system("cls"); 248 printf("请输入要借的书的书号:"); 249 int num; 250 scanf("%d",&num); 251 int m; 252 for(m = 0; m < MAX_BOOK; m ++){ 253 if(num == book[m].number){ 254 break; 255 } 256 } 257 if(m == MAX_BOOK){ 258 printf("你输入的书号有误。。。。\\n"); 259 getchar(); 260 return; 261 } 262 if(book[m].num != 0){ 263 printf("书号:%d\\t书名:“%s”借书成功!!!\\n",book[m].number,book[m].bookName); 264 book[m].num--; 265 writeBook(); 266 for(j = 0; j < MAX_BOR; j ++){ 267 if(!strcmp(stu[cnt].name,bor[j].name))break; 268 } 269 if(j == MAX_BOR){ 270 strcpy(bor[j].name,stu[cnt].name); 271 bor[j].num = 0; 272 MAX_BOR++; 273 } 274 bor[j].number[bor[j].num] = num; 275 strcpy(bor[j].book[bor[j].num],book[m].bookName); 276 bor[j].num++; 277 writeBor(); 278 }else{ 279 printf("你想借的“%s”已经被借完了!!!",book[m].bookName); 280 } 281 getchar(); 282 } 283 284 void check(){ //查询图书 285 loadBook(); 286 system("cls"); 287 int choice; 288 printf(" ___________________________________________ \\n"); 289 printf("|\\t\\t查询图书\\t\\t |\\n"); 290 printf("|\\t\\t\\t\\t\\t |\\n"); 291 printf("|\\t\\t\\t\\t\\t |\\n"); 292 printf("|\\t书号【1】\\t书名【2】\\t |\\n"); 293 printf("|\\t\\t\\t\\t\\t |\\n"); 294 printf("|\\t\\t\\t\\t\\t |\\n"); 295 printf("|___________________________________________|\\n"); 296 printf("\\n请输入(0退出):"); 297 scanf("%d",&choice); 298 if(choice == 1){ 299 int num; 300 printf("请输入书号:"); 301 scanf("%d",&num); 302 for(j = 0; j < MAX_BOOK; j ++){ 303 if(num == book[j].number)break; 304 } 305 if(j == MAX_BOOK){ 306 printf("书号为%d的图书不存在!!!",num); 307 }else{ 308 printf("\\n书号为%d的信息如下:\\n",num); 309 printf("\\n\\t图书名字为:%s\\n\\n\\t储存数量为:%d\\n\\n",book[j].bookName,book[j].num); 310 } 311 }else if(choice == 2){ 312 char s[MAX]; 313 printf("请输入书名:"); 314 scanf("%s",s); 315 for(j = 0; j < MAX_BOOK; j ++){ 316 if(!strcmp(s,book[j].bookName))break; 317 } 318 if(j == MAX_BOOK){ 319 printf("书名为“%s”的图书不存在!!!",s); 320 }else{ 321 printf("书名为“%s”的信息如下\\n",book[j].bookName); 322 printf("\\t书号为:%d\\n\\t储存数量为:%d\\n",book[j].number,book[j].num); 323 } 324 } 325 getchar(); 326 } 327 328 void dele(){ //删除图书 329 system("cls"); 330 printf(" ___________________________________________ \\n"); 331 printf("|\\t\\t删除图书\\t\\t |\\n"); 332 printf("Java开发 | 图书管理系统 | 小程序 | 小练习