本文主要是用C语言有关内容实现图书信息管理系统,主要使用了文件、函数、指针、清屏等有关内容。图书信息则包括书名,ISBN码,出版社,价格,出版年月,图书数量,所属学科以及主编等。围绕以上内容设计了此系统,主要提供以下内容:
(1)用户注册账号,登陆系统。
(2) 添加图书信息。
(3)遍历图书。
(4)按ISBN号或书名查询图书。
(5)按ISBN号或所属学科查询图书。
(6)求全部图书的价值。
#include
#include
#include
#include //定义字符数组
#include
#define N 20 //宏定义
//图书信息
struct book
{
char num[N]; //ISBN号
char name[N]; //书名
char xue[N]; //所属学科
char zhubian[N];//主编
double price; //价格
char she[N]; //出版社
char yue[N]; //出版年月
int n; //数量
struct book *p; //结构指针
};
struct book su; //结构体变量
void cal (int sel); //功能
void tsmenu(); //添加图书信息
void jmenu(); //遍历
void lmenu(); //按ISBN号查询
void main1(); //按书名查询
void tsmain(); //按ISBN号(学科)删除图书
void zjts(); //求全部图书的价值
void jmain(); //用户登录
void xinjian(); //用户注册
void zxc(); //主目录
int condition=0; //登录状态
int main()
{
int n;
while(condition==0)
{
printf("*******欢迎登录图书信息管理系统*******\n");
printf("******** 1.注册 2.登录 ********\n");//登陆界面
printf("******** 请输入序号: ********\n");
scanf("%d",&n);
if(n==1)
xinjian();
else if(n==2)
jmain();
else{
system("cls");
printf("******* 输入错误,请重新输入 ********\n");
}
}
return 0;
}
//主目录
void zxc()
{
system("cls");
int sel;
printf("********欢迎登录图书信息管理系统********");
printf("\n****** 1.添加图书信息 *****\n");
printf("\n****** 2.遍历 ******\n");
printf("\n ****** 3.按ISBN号查询 ******\n");
printf("\n ****** 4.按书名查询 ****** \n");//系统主界面
printf("\n****5.按ISBN号(所属学科)删除图书****\n");
printf("\n ****** 6.求全部图书的价值 ******\n");
printf("\n ****** 7.退出 ******\n");
printf("\n****** 请选择: ******\n");
scanf("%d",&sel);
if(sel<1||sel>8){
printf("*** 你输入的序号有误,请重新输入 ***\n") ;
zxc();
}
else
cal(sel);
}
void cal(int sel)
{
switch(sel){
case 1:
tsmenu();
break;
case 2:
jmenu();
break;
case 3:
lmenu();
break;
case 4:
main1();
break;
case 5:
tsmain();
break;
case 6:
zjts();
break;
case 7:
condition=0;
break;
}
}
//用户注册
void xinjian()
{
FILE *fp;//文件指针
char zhanghao[N];
char password[N],password1[N];
if ((fp=fopen("C:\\Users\\某某\\Desktop\\实践作业\\账号密码.txt","a"))==NULL)
{
printf("file open error!\n");
exit(0);
}
for(;;)
{
printf("\n*请输入账号(九位数)密码(六位数)(注册)*\n");
printf("****** 请输入: ******\n");
scanf("%s %s",zhanghao,password);
system("pause");
system("cls");
printf("****** 再次输入密码: ******\n");
scanf("%s",password1);
if(strcmp(password,password1)==0)
{
system("cls");
printf("****** 创建成功 ******\n");
fprintf(fp,"%s %s\n",zhanghao,password);
fclose(fp);
jmain();
}
else
{
system("pause");
system("cls");
printf("****两次输入密码不一致,请重新输入****\n");
break;
}
}
}
//用户登录
void jmain()
{
int aa=0;//登录状态
char deng1[N],deng2[N],deng3[N],deng4[N];
int cc;
FILE *fp;
if((fp=fopen("C:\\Users\\Administrator\\Desktop\\实践作业\\账号密码.txt","r"))==NULL){
printf("File open error!\n");//文件地址需要根据自己电脑上的实际地址填写
exit(0);
}
printf("****** 请输入账号和密码(登录): ******\n");
scanf("%s%s",deng1,deng2);
while(1){
while(!feof(fp)){
fscanf(fp,"%s%s",deng3,deng4);
if((strcmp(deng1,deng3)==0)&&(strcmp(deng2,deng4)==0)){
printf("****** 登录成功! ******\n");
fclose(fp);
zxc();
aa=1;
}
}
if(aa==0){
system("cls");
printf("输入错误,重新输入请按1,返回上一级请按2\n");
printf("****** 请输入你的选择 : ******\n");
scanf("%d",&cc);
if(cc==1)
jmain();
else
xinjian();
}
}
}
//添加图书信息
void tsmenu()
{
system("cls");
int xx;
FILE *fp;
if((fp=fopen("C:\\Users\\某某\\Desktop\\实践作业\\图书信息.txt","a"))==NULL)
{
printf("file open error!\n");
exit(0);
}
printf("****** 请输入图书ISBN号: ******\n");
scanf("%s",su.num);
printf("****** 请输入图书书名: ******\n");
scanf("%s",su.name);
printf("****** 请输入图书所属学科:******\n");
scanf("%s",su.xue);
printf("****** 请输入图书主编: ******\n");
scanf("%s",su.zhubian);
printf("****** 请输入图书价格: ******\n");
scanf("%lf",&su.price);
printf("****** 请输入图书出版社: ******\n");
scanf("%s",su.she);
printf("****** 请输入图书出版年月:******\n");
scanf("%s",su.yue);
printf("****** 请输入图书数量: ******\n");
scanf("%d",&su.n);
fprintf(fp,"%s %s %s %s %lf %s %s %d\n",su.num,su.name,su.xue,su.zhubian,su.price,su.she,su.yue,su.n);
if(fclose(fp)){
printf("Can not close the file!\n");
exit(0);
}
while(1){
system("cls");
printf("添加完毕,返回上一级请按1,继续添加请按2\n");
scanf("%d",&xx);
if(xx==1)
zxc();
else if(xx==2)
tsmenu();
else
printf("****** 输入错误,请重新输入 ******\n");
}
}
//图书价值
void zjts()
{
system("cls");
int q=0,i;
FILE *fp;
double sum;
sum=0;
if((fp=fopen("C:\\Users\\某某\\Desktop\\实践作业\\图书信息.txt","r"))==NULL){
printf("file open error!\n");
exit(0);
}
while(!feof(fp))
{
fscanf(fp,"%s %s %s %s %lf %s %s %d",su.num,su.name,su.xue,su.zhubian,&su.price,su.she,su.yue,&su.n);
sum+=su.price*su.n;
}
fclose(fp);
printf("图书的价值为%.2lf元\n",sum);
system("pause");
zxc();
}
//删除图书
void tsmain()
{
system("pause");
system("cls");
int n=0,i=0;
struct book m[20];
struct book m2[20];
FILE *fp,*fp1;
char b[20];
if((fp=fopen("C:\\Users\\Administrator\\Desktop\\实践作业\\图书信息.txt","r"))==NULL){
printf("file open error");
exit(0);
}
printf("请输入图书ISBN码或所属学科\n");
scanf("%s",b);
while(!feof(fp))
{
fscanf(fp,"%s%s%s%s%lf%s%s%d",m[n].num ,m[n].name,m[n].xue,m[n].zhubian, &m[n].price, m[n].she, m[n].yue, &m[n].n);
if(strcmp(m[n].xue,b)!=0&&strcmp(m[n].num,b)!=0 )
{
strcpy(m2[i].num ,m[n].num);
strcpy(m2[i].name,m[n].name );
strcpy(m2[i].xue ,m[n].xue );
strcpy(m2[i].zhubian,m[n].zhubian );
m2[i].price =m[n].price ;
strcpy(m2[i].she ,m[n].she );
strcpy(m2[i].yue ,m[n].yue );
m2[i].n =m[n].n ;
i++;
}
n++;
}
fclose(fp);
if((fp=fopen("图书信息.txt","w"))==NULL){
printf("file open error");
exit(0);
}
int j;
for(j=0;j<i-1;j++)
{
fprintf(fp,"%s %s %s %s %.0lf %s %s %d\n",m2[j].num ,m2[j].name,m2[j].xue,m2[j].zhubian, m2[j].price, m2[j].she, m2[j].yue, m2[j].n);
}
fclose(fp);
printf("删除成功!");
system("pause");
system("cls");
zxc();
}
//遍历
void jmenu()
{
FILE *fp;
if ((fp=fopen ("图书信息.txt","r"))==NULL){
printf("File open error!\n");
exit (0);
}
while(!feof (fp))
{
fscanf (fp,"%s %s %s %s %lf %s %s %d",su.num,su.name,su.xue,su.zhubian,&su.price,su.she,su.yue,&su.n);
printf("%s %s %s %s %lf %s %s %d\n",su.num,su.name,su.xue,su.zhubian,su.price,su.she,su.yue,su.n);
}
if (fclose(fp)){
printf ("Can not close the file! \n");
exit (0);
}
system("pause") ;
zxc();
}
//按ISBN号查询图书
void lmenu()
{
system("cls");
FILE *fp;
int flag=0;
char fnum[N];
printf("请输入ISBN码\n");
scanf("%s",fnum);
if ((fp=fopen("C:\\Users\\Administrator\\Desktop\\实践作业\\图书信息.txt","r"))==NULL){
printf("File open error!\n");
exit (0);
}
while(!feof(fp))
{
fscanf(fp,"%s %s %s %s %lf %s %s %d",su.num,su.name,su.xue,su.zhubian,&su.price,su.she,su.yue,&su.n);
if(strcmp(su.num,fnum)==0){
printf("%s %s %s %s %.2f %s %s %d\n",su.num,su.name,su.xue,su.zhubian,su.price,su.she,su.yue,su.n);
flag=flag+1;
}
}
if(flag==0)
printf("没有此ISBN号!\n");
if (fclose(fp)){
printf ("Can not close the file! \n");
exit (0);
}
system("pause");
zxc();
}
//按书名查询图书
void main1()
{
system("cls");
FILE *fp;
int flag=0;
char fname[N];
printf("请输入图书书名\n");
scanf("%s",fname);
if ((fp=fopen ("C:\\Users\\Administrator\\Desktop\\实践作业\\图书信息.txt","r"))==NULL){
printf("File open error!\n");
exit (0);
}
while(!feof (fp))
{
fscanf (fp,"%s %s %s %s %lf %s %s %d",su.num,su.name,su.xue,su.zhubian,&su.price,su.she,su.yue,&su.n);
if(strcmp(su.name,fname)==0){
printf("%s %s %s %s %.2f %s %s %d\n",su.num,su.name,su.xue,su.zhubian,su.price,su.she,su.yue,su.n);
flag=flag+1;
}
}
if(flag==0)
printf("没有这本书!\n");
if (fclose(fp)){
printf ("Can not close the file! \n");
exit (0);
}
system("pause");
zxc();
}