发现了一个很不错的微信小明孝程序源码。
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
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)