开源微信小程序--借书系统

开源微信小程序--借书系统,第1张

发现了一个很不错的微信小明孝程序源码。

weapp-library:提供在线借书功能的开源小程序项目。连接读者与图书馆,实现图书借阅线上化。界面风兆世格良好,功能完整。具有注册登录、图书搜索、书单系统、订单管理等功能。这是一个完整的小程序项目,包括了前后端的开发,并且撰写了完善的文档,适合初学者学习。

文档真的是很完善,可以看出作者是真的费心了。

在线借书平台小程序——我的——组件展示

本项目采用三层架构,从上族槐肢至下分为界面层、业务逻辑层(Controller)、数据访问层(Eloquent\Model)。通过 Slim 框架完全实现 前后端分离 ,前后端通过HTTPS协议进行通信,传输数据格式为JSON。业务逻辑层提供了RESTful风格的API。

源码地址:https://github.com/imageslr/weapp-library

源代码如下:

#include<iostream>

#include<iomanip>

#include<string>

#include<fstream>

#include<stdio.h>

using namespace std

const   int   maxb=10000   //最多的图书

class   book//图书类

{

int   tag   //删除标记1:已删0:未棚余滑删

int   number   //isbn书号

char   name[20]   //书名

char author[10]//主编

char number2[10]//版次

char position[20]//出版社

char time[20]//出版年

void   addbook(int n,char *na,char *au,char *n2,char *da,char *ti,int pr)   //增加图毁好书  

{

tag=0

number=n

price=pr

strcpy(name,na)

strcpy(author,au)

strcpy(number2,n2)

strcpy(position,da)

strcpy(time,ti)

onshelf=1

}  

扩展资料

1、源程序中,很链腊多符号都是成对匹配出现的,为避免遗漏必须配对使用的符号。

2、用花括号括起来的部分,但从程序结构清晰,便于阅读、理解、维护的角度出发,建议在书写程序时应遵循以下规则,以养成良好的编程习惯。

3、一个说明或一条语句占一行,与该结构开始处的左花括号对齐。

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include <string.h>

typedef int BOOL

typedef struct bookinfo

{

char number[15]/*产品编号*/

char name[30]/*产品名称*/

float price/*单价*/

char auther[20]/*作者*/

BOOL isExit/*存在状态*/

char lendername[20]/*借书人姓名*/

char lendersex[2]/*借书人性别*/

char lendernum[15]/*借书人学号*/

}BOOKINFO

void menu()

{

printf("\n\n\n\n\n\n\n")

printf("\t\t\t图书管理系统\n")

printf("\t\t\t1:新进图书基本信息的输入\n")

printf("\t\t\t2:显示全部记录\n")

printf("\t\t\t3:根据图书名称查询图书基本信息\n")

printf("\t\t\t4:根据图书名称对撤销的图书信息进行删除\n")

printf("\t\t\t5:按照图书名称从小大到排序\n")

printf("\t\t\t6:统计某价格以上的图书数量\n")

printf("\t\t\t7:列出所有未借出去的图书信息\n")

printf("\t\t\t8:退出\n")

}

void choice_1_input_new()/*输入新进的图书信息*/

{

char choice

FILE *p

BOOKINFO newbook

system("cls")

while(1)

{

printf("输入图书编号:")

gets(newbook.number)

printf("输入图书名称:")

gets(newbook.name)

printf("输入图书单价:")

scanf("%f",&newbook.price)

while(getchar()!='\n')

printf("输入图书的作者:")

gets(newbook.auther)

printf("输入借书人姓名:")

gets(newbook.lendername)

printf("输入借书人性别:")

gets(newbook.lendersex)

printf("输入借书人学号:")

gets(newbook.lendernum)

printf("是否保存该条书目?(Y/N)\n")

if(choice=='Y'||choice=='y')

{

newbook.isExit=1/*将图书状态设置成1,表示没有借出*/

p=fopen("c:\\bookinfo.data","ab")

fwrite(&newbook,sizeof(BOOKINFO),1,p)

fclose(p)

printf("\n该条书目已添加到c:\\bookinfo.data文件中!\n")

}

else

{

printf("源晌\n本条书目未保存!\n")

}

printf("\n是否继做裂迅续添加书纯此目?(Y/N)\n")

while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')

if(choice=='Y'||choice=='y')

continue

else

break

}

}

void choice_2_display_all()/*显示全部图书信息*/

{

FILE *p

int n

BOOKINFO bookinfo[100]

int booknumber=0

system("cls")

p=fopen("c:\\bookinfo.data","rb")

while(!feof(p))

{

fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p)

booknumber++

}

/*booknumber--使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/

fclose(p)

booknumber--

if(booknumber==0)

{

printf("没有任何图书信息!\n\n")

}

else

{

n=0

printf(" 图书信息如下\n")

printf(" 图书信息| 借书人信息 \n")

printf("编号 名称单价作者图书状态 | 姓名性别学号\n")

while(n<booknumber)

{

printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",

bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,

bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,

bookinfo[n].lendersex,bookinfo[n].lendernum)

n++

}

}

printf("\n\n按任意键回到主菜单!\n")

}

void choice_3_search_according_name()/*根据图书名称显示图书的信息*/

{

char search[20]=""/*search用来存放要查询的书名*/

int n

FILE *p

char choice

BOOKINFO bookinfo[100]

int booknumber=0

system("cls")

p=fopen("c:\\bookinfo.data","rb")

while(!feof(p))

{

fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p)

booknumber++

}

booknumber--/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/

fclose(p)

while(1)

{

printf("输入要查询的书本名称:")

gets(search)

if(booknumber==0)

{

printf("书库中没有任何信息!\n\n")

printf("按任意键回到主菜单!\n\n")

getch()

break

}/*if结束*/

else

{

for(n=0n<booknumbern++)

if(strcmp(bookinfo[n].name,search)==0)

{

printf("该书的详细信息如下:\n")

printf(" 图书信息| 借书人信息 \n")

printf("编号 名称单价作者图书状态 | 姓名性别学号\n")

printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",

bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,

bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,

bookinfo[n].lendersex,bookinfo[n].lendernum)

break

}

if(n>=booknumber)

printf("没有查找该书的任何信息!\n")

printf("\n\n是否继续查询?(Y/N)\n")

choice=getch()

while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')

choice=getch()

if(choice=='Y'||choice=='y')

continue

else

break

}/*else结束*/

}/*while(1)结束*/

}

void choice_4_delete_according_name()/*根据图书名称对图书信息进行删除*/

{

char search[20]=""/*search用来存放要删除的书名*/

int n,i

FILE *p

char choice

BOOKINFO bookinfo[100]

int booknumber

system("cls")

while(1)

{

printf("输入要删除的书本名称:")

gets(search)

p=fopen("c:\\bookinfo.data","rb")

booknumber=0

while(!feof(p))

{

fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p)

booknumber++

}

booknumber--/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/

fclose(p)

if(booknumber==0)

{

printf("书库中没有任何信息!\n\n")

printf("按任意键回到主菜单!\n\n")

getch()

break

}/*if结束*/

else

{

for(n=0n<booknumbern++)

if(strcmp(bookinfo[n].name,search)==0)

{

break

}

if(n>=booknumber)

printf("没有查找该书的任何信息!\n")

else

{

printf("是否确认需要删除该条书目?(Y/N)")

choice=getch()

while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')

choice=getch()

if(choice=='Y'||choice=='y')

{

for(i=ni<booknumber-1i++)

bookinfo[i]=bookinfo[i+1]

booknumber--

p=fopen("c:\\bookinfo.data","wb")

for(n=0n<booknumbern++)

fwrite(&bookinfo[n],sizeof(BOOKINFO),1,p)

fclose(p)

printf("删除成功!\n")

}

else

printf("\n\n该条书目没有被删除!")

}

printf("\n\n是否继续进行删除 *** 作?(Y/N)\n")

choice=getch()

while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')

choice=getch()

if(choice=='Y'||choice=='y')

continue

else

break

}/*else结束*/

}/*while(1)结束*/

}

void choice_5_sort_according_name()/*根据图书名称排序*/

{

FILE *p

int m,n

BOOKINFO temp

BOOKINFO bookinfo[100]

int booknumber

p=fopen("c:\\bookinfo.data","rb")

booknumber=0

system("cls")

while(!feof(p))

{

fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p)

booknumber++

}

booknumber--/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/

fclose(p)

if(booknumber==0)

{

printf("没有任何图书信息!\n\n")

}

else

{

for(m=0m<booknumber-1m++)

for(n=m+1n<booknumbern++)

if(strcmp(bookinfo[m].name,bookinfo[n].name)>0)

{

temp=bookinfo[m]

bookinfo[m]=bookinfo[n]

bookinfo[n]=temp

}

p=fopen("c:\\bookinfo.data","wb")

for(m=0m<booknumberm++)

fwrite(&bookinfo[m],sizeof(BOOKINFO),1,p)

fclose(p)

printf("\n\n完成排序!\n\n")

}

printf("按任意键回到主菜单!\n")

getch()

}

void choice_6_display_high_price()/*根据价格列出图书信息*/

{

float price

FILE *p

int n

int count=0

BOOKINFO bookinfo[100]

int booknumber

system("cls")

printf("请输入价格:")

scanf("%f",&price)

p=fopen("c:\\bookinfo.data","rb")

booknumber=0

while(!feof(p))

{

fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p)

booknumber++

}

booknumber--/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/

fclose(p)

if(booknumber==0)

{

printf("没有任何图书信息!\n\n")

}

else

{

for(n=0n<booknumbern++)

{

if(bookinfo[n].price>=price)

count++

}

if(count==0)

printf("书库中没有比%.1f$价格高的图书!",price)

else

{

printf(" 价格高于%.1f$的图书信息如下\n",price)

printf(" 图书信息| 借书人信息 \n")

printf("编号 名称单价作者图书状态 | 姓名性别学号\n")

for(n=0n<booknumbern++)

{

if(bookinfo[n].price>=price)

printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",

bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,

bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,

bookinfo[n].lendersex,bookinfo[n].lendernum)

}

}

}

printf("\n\n按任意键回到主菜单!\n")

getch()

}

void choice_7_display_according_exitflag()/*根据存在状态列出图书信息*/

{

FILE *p

int n

int count=0

BOOKINFO bookinfo[100]

int booknumber

system("cls")

booknumber=0

p=fopen("c:\\bookinfo.data","rb")

while(!feof(p))

{

fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p)

booknumber++

}

booknumber--

fclose(p)

if(booknumber==0)

{

printf("书库中没有任何书目存在!\n")

}

else

{

for(n=0n<booknumbern++)

if(bookinfo[n].isExit==1)

count++

if(count==0)

printf("书库中的书籍全部借出!\n")

else

{

printf("书库中未被借出的图书信息如下:\n\n")

printf(" 图书信息| 借书人信息 \n")

printf("编号 名称单价作者图书状态 | 姓名性别学号\n")

for(n=0n<booknumbern++)

if(bookinfo[n].isExit==1)

{

printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",

bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,

bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,

bookinfo[n].lendersex,bookinfo[n].lendernum)

}

}

}

printf("\n按任意键返回主菜单!\n")

getch()

}

void main()

{

char choice

clock_t tm

FILE *p

if((p=fopen("c:\\bookinfo.data","rb"))==NULL)

{

p=fopen("c:\\bookinfo.data","wb")

fclose(p)

}

while(1)

{

system("cls")

menu()

choice=getch()

switch(choice)

{

case '1':choice_1_input_new()break/*输入新进的图书信息*/

case '2':choice_2_display_all()break/*显示全部图书信息*/

case '3':choice_3_search_according_name()break/*根据图书名称显示图书的信息*/

case '4':choice_4_delete_according_name()break/*根据图书名称对图书信息进行删除*/

case '5':choice_5_sort_according_name()break/*根据图书名称排序*/

case '6':choice_6_display_high_price()break/*根据价格列出图书信息*/

case '7':choice_7_display_according_exitflag()break/*根据存在状态列出图书信息*/

case '8':printf("\n\n\t\t\t谢谢使用,再见!\n\t\t\t按任意键退出!\n")getch()return

default:

printf("\n\n\t\t\t请输入菜单中的数字!(1~8)")

tm=clock()

while(clock()<tm+1800)

break

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12473823.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存