本文目录一览:
- 1、用C语言编写图书资料信息管理系统,很急···
- 2、c语言图书管理系统
- 3、C语言图书管理系统
- 4、求用C语言设计的图书管理系统
- 5、如何使用C语言编写图书管理系统?
- 6、一个简单的图书管理系统,C语言
用C语言编写图书资料信息管理系统,很急···
/*好吧,其实你可以上网看看,那么多的,你可以自己修改下*/
#include stdio.h
#include malloc.h
#include string.h
#include stdlib.h
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
char name[20];
long int num;
char sex[4];
int age;
char address[30];
double tele_num;
char aihao[20];
struct student *next;
};//定义一个结构题
int TOTAL_NUM = 0;//学生总数
struct student *head = NULL;
void welcome (); //欢迎界面
void mainmenu (); //主界面
void record (); //记录数据
void insert(struct student *stu); //插入数据
void display(struct student *stu); //显示一个学生的信息
void displayAll (); //显示所有学生的信息
void query_by_num (); //按学号查询学生信息
void readData (); //读取文件里学生的信息
void writeData (); //向文件写入学生信息
void freeAll (); //清空链表内容
void del (); //删除学生信息
void change (); //更改学生信息
void devise (struct student *p); //选择更改内容
int main (void)
{
welcome ();
//显示主菜单
mainmenu ();
return 0;
}
//显示欢迎信息
void welcome ()
{
printf ("+----------------------------------------------------+\n");
printf ("| |\n");
printf ("| 欢迎使用网络工程学院信息安全092班学生信息管理系统 |\n");
printf ("| |\n");
printf ("+----------------------------------------------------+\n");
}
//系统主菜单
void mainmenu ()
{
int choice;
choice = -1;
readData ();
printf ("\n温馨提示:为保证您的操作得到保存,请按正常顺序退出系统^_^\n");
do
{
printf ("\n\n\n");
printf ("\t\t\t--------------------------------------------\n");
printf ("\t\t\t+ 信息安全092班学生信息管理系统 |\n");
printf ("\t\t\t--------------------------------------------\n");
printf ("\t\t\t+ [1]----录入学生信息 |\n");
printf ("\t\t\t+ [2]----浏览学生信息 |\n");
printf ("\t\t\t+ [3]----查询学生信息 |\n");
printf ("\t\t\t+ [4]----删除学生信息 |\n");
printf ("\t\t\t+ [5]----修改学生信息 |\n");
printf ("\t\t\t+ [0]----退出系统 |\n");
printf ("\t\t\t+*·*·*·*·*·*·*·*·*·*·*·*·*·*·*|\n");
printf ("\t\t\t--------------------------------------------\n");
printf ("请输入您的选择:");
scanf ("%d", choice);
switch (choice)
{
case 0:
writeData ();
freeAll ();
exit (0);
case 1:
record ();
break;
case 2:
displayAll ();
break;
case 3:
query_by_num ();
break;
case 4:
del ();
break;
case 5:
change ();
break;
default:
printf ("\n无效选项!");
break;
}
}
while (choice != 0);
}
//录入学生信息
void record ()
{
struct student *p0;
p0 = (struct student *)malloc(LEN);
printf ("请输入学生的姓名:");
scanf ("%s",p0-name);
printf ("请输入学生的学号:");
scanf ("%ld",p0-num);
printf ("请输入学生的性别:");
scanf ("%s",p0-sex);
printf ("请输入学生的年龄:");
scanf ("%d",p0-age);
printf ("请输入学生的地址:");
scanf ("%s",p0-address);
printf ("请输入学生的电话:");
scanf ("%lf",p0-tele_num);
printf ("请输入学生的爱好:");
scanf ("%s",p0-aihao);
insert (p0);
printf ("该学生的信息为:\n");
printf ("-------------------------------------------------------------------------------\n");
printf ("姓名\t学号\t\t年龄\t性别\t地址\t\t电话\t\t爱好\n");
display (p0);
}
void insert (struct student *stu)
{
struct student *p0, *p1, *p2;
p1 = head;
p0 = stu;
if (head == NULL)
{
head = p0;
p0-next = NULL;
}
else
{
while ((p0-num p1-num)(p1-next != NULL))
{
p2 = p1;
p1 = p1-next;
}
if (p0-num = p1-num)
{
if (head == p1)
head = p0;
else
p2-next = p0;
p0-next = p1;
}
else
{
p1-next = p0;
p0-next = NULL;
}
}
TOTAL_NUM++;
}
void display (struct student *p)
{
printf ("%s\t%ld\t%d\t%s\t%s\t\t%.0f\t%s\n", p-name, p-num, p-age, p-sex, p-address, p-tele_num, p-aihao);
}
//浏览学生信息
void displayAll()
{
struct student *p;
printf("学生总数:%d\n", TOTAL_NUM);
p = head;
if (head != NULL)
{
printf("\n姓名\t学号\t\t年龄\t性别\t地址\t\t电话\t\t爱好\n");
printf("-------------------------------------------------------------------------------\n");
do
{
display(p);
p = p-next;
}
while(p != NULL);
}
printf ("\n");
}
//按学号查询学生信息
void query_by_num ()
{
int num;
struct student *p1;
printf("请输入学生的学号:");
scanf("%ld", num);
if(head==NULL)
{
printf("无学生记录!\n");
return;
}
p1 = head;
while (num!=p1-num p1-next!=NULL)
p1 = p1-next;
if (num == p1-num)
{
printf ("姓名\t学号\t\t年龄\t性别\t地址\t\t电话\t\t爱好\n");
printf ("-------------------------------------------------------------------------------\n");
display (p1);
}
else
printf ("没有该学生记录,请核对!");
}
//写入文件
void writeData ()
{
FILE* fp;//文件指针
struct student *p;
fp = fopen("1.txt", "w");
if (!fp)
{
printf("文件打开错误!");
return;
}
fprintf(fp,"%d\n", TOTAL_NUM);
for(p = head; p!= NULL; p= p-next)
{
fprintf(fp,"%s\t%ld\t%s\t%d\t%s\t%.0f\t%s\n", p-name, p-num, p-sex, p-age, p-address, p-tele_num, p-aihao);
}
fclose (fp);
}
void freeAll ()
{
struct student *p1, *p2;
p1 = p2=head;
while(p1)
{
p2=p1-next;
free (p1);
p1 = p2;
}
}
//读取文件
void readData ()
{
FILE* fp;//文件指针
struct student *p1, *p2;
fp = fopen("1.txt", "r");
if (!fp)
{
printf("文件打开错误!");
return;
}
fscanf(fp,"%d\n", TOTAL_NUM);
head = p1 = p2 = (struct student *)malloc(LEN);
fscanf(fp,"%s\t%ld\t%s\t%d\t%s\t%lf\t%s\n", p1-name, p1-num, p1-sex, p1-age, p1-address, p1-tele_num, p1-aihao);
while(!feof(fp))
{
p1 = (struct student *)malloc(LEN);
fscanf(fp,"%s\t%ld\t%s\t%d\t%s\t%lf\t%s\n", p1-name, p1-num, p1-sex, p1-age, p1-address, p1-tele_num, p1-aihao);
p2-next = p1;
p2 = p1;
}
p2-next = NULL;
fclose(fp);
}
//删除学生信息
void del ()
{
struct student *p1, *p2;
long int num;
if (head == NULL)
{
printf("无学生记录!\n");
return;
}
printf("请输入您要删除的学生的学号:");
scanf("%ld", num);
p1 = head;
while (num != p1-num p1-next != NULL)
{
p2 = p1;
p1 = p1-next;
}
if(num == p1-num)
{
if(p1 == head)
head = p1-next;
else p2-next = p1-next;
free(p1);
TOTAL_NUM--;
}
else
printf("没有该学生记录,请核对!\n");
}
//修改学生信息
void change ()
{
struct student *p1, *p2;
long int num;
if (head == NULL)
{
printf ("无学生记录!\n");
return;
}
printf ("请输入您要修改的学生的学号:");
scanf ("%ld", num);
p1 = head;
while (num != p1-num p1-next != NULL)
{
p2 = p1;
p1 = p1-next;
}
if(num == p1-num)
devise (p1);
else
printf("没有该学生记录,请核对!\n");
}
void devise (struct student *p)
{
int choice;
choice = -1;
do
{
printf("请选择您要修改的学生的信息内容:\n");
printf("+----------------------+\n");
printf("| 姓名 请按 1 |\n");
printf("| 学号 请按 2 |\n");
printf("| 性别 请按 3 |\n");
printf("| 年龄 请按 4 |\n");
printf("| 地址 请按 5 |\n");
printf("| 电话 请按 6 |\n");
printf("| 爱好 请按 7 |\n");
printf("| 取消 请按 0 |\n");
printf("+----------------------+\n");
printf("请输入您的选择:");
scanf("%d", choice);
switch (choice)
{
case 0:
return;
case 1:
printf("请输入新姓名:");
scanf("%s", p-name);
break;
case 2:
printf("请输入新学号:");
scanf("%d", p-num);
break;
case 3:
printf("请输入新性别:");
scanf("%s", p-sex);
break;
case 4:
printf("请输入新年龄:");
scanf("%s", p-age);
break;
case 5:
printf("请输入新地址:");
scanf("%s", p-address);
break;
case 6:
printf("请输入新电话:");
scanf("%lf", p-tele_num);
break;
case 7:
printf("请输入新爱好:");
scanf("%s", p-aihao);
break;
default:
printf("\n无效选项!");
break;
}
}
while(choice != 0);
}
c语言图书管理系统
这不是按你这个要求的图书管理系统,不过你可以修改一下,你自己看下吧。
#include stdio.h
#include string.h
#include stdlib.h
//
#define MAXSIZE 100 //最大值定义为100
#define LIST_INIT_SIZE 100//图书证使用者最大值定义为100
//借书人的结构体
typedef struct Boro//借书行为
{
char BNum[20];//借书的书号
char RetDate[8];//归还日期
struct Boro *next;
}Bor;
typedef struct LinkBook
{
Bor *next;//该图书证的借书行为
char CNum[20];//证号
int Total;//借书的数量
}lend[LIST_INIT_SIZE];//借书人数组
//图书的结构体信息
typedef struct LNode
{
char CardNum[20];//图书证号
struct LNode *next;
}LinkList; //借书人
typedef struct book
{//每种图书需要登记的内容包括书号ISBN、书名、作者、出版社、总库存量和现库存量。
char num[20];//书号
char name[20];//书名
char auth[20];//作者
char pub[20];//出版社
int TotNum;//总库存
int NowNum;//现库存
LinkList *next;//借了该书的人
}ook[MAXSIZE];
//
int Retotal;//读者数量
int total; //定义外部变量.书的种类数
//
//结构体初始化
void InitBo(ook boo) //初始化图书信息
{
for(int i=0;iMAXSIZE;i++)
{
boo[i].NowNum=0;
boo[i].TotNum=0;
boo[i].next=NULL;
}
}
void InitRe(lend Lin) //初始化借阅者信息
{
for(int i=0;iLIST_INIT_SIZE;i++)
Lin[i].next=NULL;
}
//
int mid=0;//外部函数mid,用来返回查找到的位置
bool BinarySearch(ook boo,char SearchNum[]) //二分法查找比较书号
{ //用bool函数,但由于函数不能有两个返回值,所以设置一个外部变量mid,用来返回查找到的位置
int low=0,high=total-1;
int found=0;
while(low=high)
{
mid=(low+high)/2; //中间点
if(strcmp(boo[mid].num,SearchNum)==0) //书号相同
{
found=1;
return true;
}//查找成功
if(strcmp(boo[mid].num,SearchNum)!=0)//书号不同
high=mid-1;
else low=mid+1;
}
if(found==0)
return false; //查找失败
}
void Buy(ook boo, char BuyNum[])
{//1、 采编入库:新购入一种书,如果该书在图书账目中已经存在,则将其库存量增加(包
//括总库存量和现库存量),如果该书不存在,则在图书账目中增加一种书,总库存量和现库存量均为1。
if(BinarySearch(boo,BuyNum)) //如果书库中有此书
{
boo[mid].TotNum++; //总库存加1
boo[mid].NowNum++; //现库存加1
printf("入库成功.\n");
printf("已更改书库中该书的信息。编号 %s 的书 %s 作者是 %s ,出版社是 %s ,目前的总库存是 %d ,现库存是 %d 。\n",boo[mid].num,boo[mid].name,boo[mid].auth,boo[mid].pub,boo[mid].TotNum,boo[mid].NowNum);
}
if(!BinarySearch(boo,BuyNum))
{
int i;
for(i=total;imidtotal;i--) //插在适合位置 保持有序
boo[i]=boo[i-1]; //空出插入位置
printf("该书在书库中不存在。设立新书目,请补全书的详细信息。\n");
strcpy(boo[i].num,BuyNum);
printf("该书购入的数量是:");
scanf(" %d",boo[i].NowNum);
boo[i].TotNum=boo[i].NowNum;
printf("该书的名字是:");
scanf(" %s",boo[i].name);
printf("该书的作者是:");
scanf(" %s",boo[i].auth);
printf("该书的出版社是:");
scanf(" %s",boo[i].pub);//补全信息
boo[i].next=NULL;
total++;//总量+1
printf("已增加该书的信息。编号 %s 的书 %s 作者是 %s ,出版社是 %s ,目前的总库存是 %d ,现库存是 %d 。\n",boo[i].num,boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum,boo[i].NowNum);
printf("入库成功.\n");
}
}
void Delete(ook boo,char DeleteNum[])
{//2、 清空库存:某一种书已无保留价值,将它从图书账目中注销。
if(BinarySearch(boo,DeleteNum)==false||total==0) //如果无此书
printf("书库中没有该书.\n");
if(BinarySearch(boo,DeleteNum))//若有
{
if(!boo[mid].next)
{
int j;
for( j=mid;jtotal;j++)
boo[j]=boo[j+1];
strcpy(boo[j].num,boo[j+1].num);
strcpy(boo[j].name,boo[j+1].name);
strcpy(boo[j].auth,boo[j+1].auth);
strcpy(boo[j].pub,boo[j+1].pub);
boo[j].TotNum=boo[j+1].TotNum;
boo[j].NowNum=boo[j+1].NowNum;
printf("已成功删除该书.\n");
}
else printf("该书有借阅者,无法删除。\n");
}
}
void Borrow(ook boo,lend Lin,char BorrowNum[],char CaNum[])
{//3、 借阅:如果一种书的现库存量大于零,则借出一本书,将现库存量减1,
//并登记借阅者的图书证号和归还期限。
Bor *p,*q;
LinkList *m,*n;
if(!BinarySearch(boo,BorrowNum)||total==0) //如果没有找到此书
printf("书库里没这书。\n");//如果有这书
if(BinarySearch(boo,BorrowNum)) //书库里有
{
if(boo[mid].NowNum0) //看现库存是否大于0
{
boo[mid].NowNum--;//借出一本,少1
if(boo[mid].next==NULL) //若该书信息下显示该种书还没被人借过
{
m=(LinkList *)malloc(sizeof(LNode));//分配
boo[mid].next=m;//该图书信息中的链表的第一个结点
strcpy(m-CardNum,CaNum);
m-next=NULL;//后一个结点为空
}
else //如果已经有人在借这书了
{
m=boo[mid].next;
while(m-next) //遍历到最后一个结点
m=m-next;
n=(LinkList *)malloc(sizeof(LNode));//分配空间,增加1个结点
m-next=n;
strcpy(n-CardNum,CaNum);//记录证号
n-next=NULL;
}
int i=0;
for(i=0;iRetotal;i++)//
{
if(!strcmp(Lin[i].CNum,CaNum))//如果已经有该图书证的信息
{
p=Lin[i].next;
while(p-next)p=p-next;//遍历到最后一个结点
q=(Bor *)malloc(sizeof(Boro));//分配空间
p-next=q;
strcpy(q-BNum,BorrowNum); //记录书号
printf("输入归还日期:");
scanf("%s",q-RetDate);
q-next=NULL;
printf("借阅成功.\n");
break; //找到证了就跳出循环
}
}
if(i==Retotal)//如果没有这张证的信息
{
strcpy(Lin[i].CNum,CaNum); //记录证号
p=(Bor *)malloc(sizeof(Boro)); //分配空间
Lin[i].next=p;
strcpy(p-BNum,BorrowNum);
printf("输入归还日期:");
scanf(" %s",p-RetDate);
p-next=NULL;
Retotal++; //借阅证号信息总数加1
printf("借阅成功.\n");
}
}
else printf("借阅失败.该书现在库存为0.\n");
}
}
void Return(ook boo,lend Lin,char ReturnNum[],char BorrowerNum[])
{//4、 归还:注销对借阅者的登记,改变该书的现存量。
Bor *p,*q;
LinkList *m,*n;
int flag=0;//设置一个参数
if(!BinarySearch(boo,ReturnNum)||!total) //没书
printf("书库中无此书.\n");
if(BinarySearch(boo,ReturnNum)) //有书
{
m=boo[mid].next;
if(!strcmp(m-CardNum,BorrowerNum)) //如果是第一个借的人还的
{
boo[mid].NowNum++; //现库存加1
boo[mid].next=m-next; //删除结点
free(m); //释放该结点的空间空间
}
else
{
while(m-next) //查找归还者的借阅者结点
{
if(!strcmp(m-next-CardNum,BorrowerNum)) //如果找到
{
n=m-next; //n为归还者的借阅结点
m-next=n-next; //m指向归还者的借阅结点的下一结点
free(n); //释放空间
boo[mid].NowNum++; //现库存加1
break;
}
m=m-next;
}
}
}
//在借阅者表里查找借阅者信息
for(int i=0;iRetotal;i++)
{
if(!strcmp(Lin[i].CNum,BorrowerNum)) //如果找到借阅者
{
p=Lin[i].next;
if(!strcmp(p-BNum,ReturnNum)) //如果是归还的是借的第一本书
{
Lin[i].next=p-next; //指向下一借书结点
free(p); //释放结点空间
printf("成功归还该书.\n");
flag=1;
break;
}
else //找不到
{
while(p-next) //找到归还书的借书结点
{
if(!strcmp(p-next-BNum,ReturnNum)) //如果找到
{
q=p-next; //q为归还书的借书结点
p-next=q-next; //p指向下一借书结点
free(q); //释放空间
printf("成功归还该书.\n");
flag=1;
break;
}
p=p-next;
}
}
}
}
for(int k=0;kRetotal;k++)
if(!Lin[k].next)
{
int j;
for(j=k;jRetotal;j++)
Lin[j]=Lin[j+1]; //其后都往前移一位,覆盖掉当前信息
strcpy(Lin[j].CNum," "); //删除图书证号
Retotal--; //图书证数减1
} //删除当前状态下没借书的图书证的信息,节省空间
if(flag==0) printf("无该证信息.\n");
}
//5、 查找:实现按三种查询条件之一查找:按书号查找、
//按书名查找、按作者查找。注:可不实现组合查找,即几个条件组合查找。
void SearchByNum(ook boo,char SeaNum[])
{//BY NUM 根据书号查找
LinkList *p;
p=boo[mid].next;
if(BinarySearch(boo,SeaNum)==false)printf("对不起,未找到您想查找的书。\n");//二分查找 没找到
else//找到了的话
{
{
printf("┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┓\n");
printf("┃ 书号 ┃ 书名 ┃ 作者 ┃ 出版社 ┃ 现库存 ┃ 总库存 ┃\n");
printf("┣━━━━━━━╋━━━━━━━╋━━━━━━━━╋━━━━━━━━╋━━━━━╋━━━━━┫\n");
printf("┃%14s┃%14s┃%16s┃%16s┃%10d┃%10d┃\n",boo[mid].num,boo[mid].name,boo[mid].auth,boo[mid].pub,boo[mid].NowNum,boo[mid].TotNum);
printf("┗━━━━━━━┻━━━━━━━┻━━━━━━━━┻━━━━━━━━┻━━━━━┻━━━━━┛\n");
if(boo[mid].next!=NULL)
{
printf("┏━━━━━━━┓\n");
printf("┃ 已借该书的 ┃\n");
printf("┃ 图书证号 ┃\n");
while(p)
{
printf("┣━━━━━━━┫\n");
printf("┃%14s┃\n",p-CardNum);
p=p-next;
}
printf("┗━━━━━━━┛\n");
}
}
while(p)
{
printf(" %s ",p-CardNum);//在按书号查找的函数里也显示借了这本书的借阅者的证号
p=p-next;
}
printf(" \n");
}//显示查找的书籍的信息
}
void SearchByName(ook boo)
{//BY NAME 根据书名查找
char SeaName[20];
printf("输入想查找的书的书名:\n");
scanf(" %s",SeaName);
printf("找到符合该书名的书的详细信息如下:\n");
for(int i=0;itotal;i++)
{
if(strcmp(SeaName,boo[i].name)==0)//如果书名一样
{
printf("书号:%s\n书名:%s\n作者:%s\n出版社:%s\n总库存量:%d\n现库存量:%d\n\n",boo[i].num,boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum,boo[i].NowNum);
}//显示符合信息的所有书籍的信息
}
}
void SearchByAuth(ook boo)
{// BY AUTH 根据作者查找
char SeaAuth[20];
printf("输入想查找的书的作者:\n");
scanf(" %s",SeaAuth);
printf("找到符合该作者的书的详细信息如下:\n");
for(int i=0;itotal;i++)
{
if(strcmp(SeaAuth,boo[i].auth)==0)//如果作者一样
{
printf("书号:%s\n书名:%s\n作者:%s\n出版社:%s\n总库存量:%d\n现库存量:%d\n\n",boo[i].num,boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum,boo[i].NowNum);
}//显示符合信息的所有书籍的信息
}
}
//6、 查看:可查看某图书证号的借阅者借阅的全部图书,可查看全部超期未还的图书。
void ViewCard(ook boo,lend Lin)
{//查看某图书证号的借阅者借阅的全部图书
char Num[20];
printf("请输入您所想要查看的图书证号:\n");
scanf(" %s",Num);
Bor *p;
int qqq=0;
for(int i=0;iRetotal;i++)
{
if(strcmp(Lin[i].CNum,Num)==0) //找到该证
{
printf("这个证借的书有:\n");
p=Lin[i].next;
while(p)
{
printf(" %s ",p-BNum); //书号
p=p-next;
}
printf("\n");
qqq=1;
break;
}
}
if(qqq==0)
printf("该证不存在.\n");
}
void ViewBook(ook boo,lend Lin)
{//查看全部超期未还的图书
char date[8];
Bor *p;
printf("请输入日期(请按格式20060605输入):\n");
scanf(" %s",date);
printf("所有超期未还的书有:\n");
for(int i=0;iRetotal;i++)
{
p=Lin[i].next;
while(p)//当p不空时
{
if(strcmp(p-RetDate,date)0) //超过日期
{
printf("书号为 %s 证号为 %s 应归还日期为 %s \n",p-BNum,Lin[i].CNum,p-RetDate);
}//显示所有超期未还的书的信息
p=p-next;
}
}
}
void Menu() //菜单
{
printf("┏—————————————————M E N U————————————————┓\n");
printf("│ │\n");
printf("│ 1. 采编入库:新购入一种书,如果该书在图书账目中已经存在, │\n");
printf("│ 则将其库存量增加(包括总库存量和现库存量)。 │\n");
printf("│ 如果该书不存在,则在图书账目中增加一种书, │\n");
printf("│ 总库存量和现库存量均为输入的数字。 │\n");
printf("│ 2. 清空库存:某一种书已无保留价值,将它从图书账目中注销。 │\n");
printf("│ 3. 借阅:如果一种书的现库存量大于零,则借出一本书,将现库存量减1, │\n");
printf("│ 并登记借阅者的图书证号和归还期限。 │\n");
printf("│ 4. 归还:注销对借阅者的登记,改变该书的现存量。 │\n");
printf("│ 5. 按书号查找。 │\n");
printf("│ 6. 按书名查找。 │\n");
printf("│ 7. 按作者查找。 │\n");
printf("│ 8. 查看某图书证号的借阅者借阅的全部图书。 │\n");
printf("│ 9. 查看全部超期未还的图书。 │\n");
printf("│ 0. 退出图书管理系统。 │\n");
printf("│ │\n");
printf("┗—————————————请 选 择 你 需 要 的 操 作————————————┛\n");
}
void main()
{
ook Bo;
lend Lin;
char BNum[20];
char CNum[20];
printf("-----------------------欢 迎 进 入 图 书 管 理 系 统!---------------------------\n\n");
int choice=10;
int SearchCho=10,ViewCho=10;
while(choice!=0)
{
Menu();//显示菜单
scanf(" %d",choice);
switch(choice)
{
case 1://采编入库
printf("请输入入库的书的书号:");
scanf(" %s",BNum);
Buy(Bo,BNum);
break;
case 2://清空库存
printf("请输入想要清除的书的书号:");
scanf(" %s",BNum);
Delete(Bo,BNum);
break;
case 3://借阅
printf("请输入想要借阅的书的书号:\n");
scanf(" %s",BNum);
printf("请输入图书证号:");
scanf(" %s",CNum);
Borrow(Bo,Lin,BNum,CNum);
break;
case 4://归还
printf("请输入想要归还的书的书号:\n");
scanf(" %s",BNum);
printf("请输入图书证号:");
scanf(" %s",CNum);
Return(Bo,Lin,BNum,CNum);
break;
case 5://查找//根据书号查找
printf("请输入书号:");//输入书号查找
scanf(" %s",BNum);
SearchByNum(Bo,BNum);
break;
case 6://根据书名查找
SearchByName(Bo);
break;
case 7://根据作者查找
SearchByAuth(Bo);
break;
case 8://查看某图书证所借的所有书
ViewCard(Bo,Lin);
break;
case 9: //查看全部超期未还的书
ViewBook(Bo,Lin);
break;
case 0://退出系统
exit(0);break;
default:printf("输入错误!\n");exit(0);break;
}
}
}
C语言图书管理系统
#includestdio.h
#includestring.h
#includeconio.h
#includestdlib.h
#includewindows.h
#define LL sizeof(BOOK_TYPE)
int maininterface();
void infor_input();
void refer();
void refer_1();
void refer_2();
void modify();
void delete();
void findbook();
void findbook1();
void findbook2();
void devise();
void main()
{
int a=0;
do
{
a=maininterface();
switch(a)
{
case 1:system("CLS");infor_input();break;
case 2:system("CLS");refer();break;
case 3:system("CLS");modify();break;
case 4:system("CLS");delete();break;
case 5:exit(0);
default:system("CLS");printf("\n\n\n\n\t\t\t无此操作,请按任意键返回:\n");getch();system("CLS");
}
}while(a!=6);
}
int maininterface()
{
int n;
printf("\n\n\n\t\t------------欢迎进入图书登记管理系统!-----------\n");
printf("\n\t\t\t\t1:录入图书信息\n");
printf("\n\t\t\t\t2:查询信息\n");
printf("\n\t\t\t\t3:修改图书信息\n");
printf("\n\t\t\t\t4:删除图书信息\n");
printf("\n\t\t\t\t5:退出系统\n");
printf("\n\t\t\t请输入1--5,其他输入非法!\n");
scanf("%d",n);
return n;
}
typedef struct
{
int month;
int day;
int year;
}DATES;
DATES day;
typedef struct books
{
char bookname[50];
char ISBN[50];
char author[50];
char publisher[50];
float money;
DATES day;
int count;
struct books *next;
}BOOK_TYPE;
BOOK_TYPE ts;
struct books *head = NULL;
void infor_input()
{
FILE *fp;
int n=0;
BOOK_TYPE ts;
printf("---------------图书资料基本信息录入--------------\n");
do
{
printf("请输入书名\n");
scanf("%s",ts.bookname);
printf("请输入ISBN\n");
scanf("%s",ts.ISBN);
printf("请输入作者\n");
scanf("%s",ts.author);
printf("请输入出版社\n");
scanf("%s",ts.publisher);
printf("请输入定价\n");
scanf("%f",ts.money);
printf("请输入出版日期\n");
scanf("%d/%d/%d",ts.day.month,ts.day.day,ts.day.year);
printf("请输入数量\n");
scanf("%d",ts.count);
printf("\n\t\t\t请选择(1:确定\t2:取消\t0:重新输入):");
scanf("%d",n);
}while(n==0);
if(n==1)
{
if((fp=fopen("book.txt","a"))==NULL) /* 若"book.txt"文件不存在,则以创建方式打开文件 */
{
fp=fopen("book.txt","w+");
}
fwrite(ts,LL,1,fp); /* 将输入的图书信息写入磁盘文件"book.txt" */
fclose(fp);
}
system("CLS");
printf("输入成功!\n");
printf("请选择(1:返回主界面\t2:输入另一本图书信息\t0:退出系统):\n");
scanf("%d",n);
switch(n)
{
case 1:system("CLS");break;
case 2:system("CLS");infor_input();break;
case 0:break;
default:printf("无此操作,按任意键返回\n");getch();system("CLS");break;
}
}
void refer()
{
int n;
printf("1:根据ISBN号,找出图书信息\n");
printf("2:根据出版社名称,找出所有图书信息\n");
printf("3:根据书名,找出图书信息\n");
printf("4:统计书籍总数\n");
printf("5:统计书籍总金额和平均价格\n");
printf("0:返回\n");
printf("请输入0--5,其他输入非法!\n");
scanf("%d",n);
switch(n)
{
case 1:system("CLS");findbook();break;
case 2:system("CLS");findbook1();break;
case 3:system("CLS");findbook2();break;
case 4:system("CLS");refer_1();break;
case 5:system("CLS");refer_2();break;
case 0:system("CLS");break;
default:printf("无此操作\n");break;
}
}
struct books *read_1()
{
FILE *fp;
struct books *p1,*p2,*head;
fp=fopen("book.txt","r");
head=p1=(BOOK_TYPE *)malloc(LL);
fread(p1,LL,1,fp);
while(feof(fp)==0)
{
p2=(BOOK_TYPE *)malloc(LL);
fread(p2,LL,1,fp);
p1-next=p2;
p1=p2;
}
p1-next=NULL;
fclose(fp);
return head;
}
void refer_1()
{
struct books *head,*p,*d;
struct books *read_1();
int total=0;
head=read_1();
for(p=head;p-next!=NULL;d=p,p=p-next,free(d))
{
total=total+p-count;
}
printf("书籍总数:%d\n",total);
printf("按任意键返回");getch();system("CLS");
}
void refer_2()
{
int num=0;
struct books *head,*p1,*p2;
struct books *read_1();
float total=0,average=0;
head=read_1();
for(p1=head;p1-next!=NULL;p2=p1,p1=p1-next,free(p2))
{
num=num+p1-count;
total=total+p1-money*p1-count;
}
average=total/num;
printf("书籍总金额:%.2f\n",total);
printf("书籍平均价格:%.2f\n",average);
printf("按任意键返回");getch();system("CLS");
}
void findbook()
{
FILE *fp;
char ISBN[50];
int i;
fp=fopen("book.txt","r");
printf("请输入书的ISBN号\n");
scanf("%s",ISBN);
for(i=0;fread(ts,LL,1,fp)!=0;i++)
{
if(strcmp(ISBN,ts.ISBN)==0)
printf("这本书的详细资料为:%s %s %s %s %f %d/%d/%d %d\n按任意键返回\n",ts.bookname,ts.ISBN,ts.author,ts.publisher,ts.money,ts.day.month,ts.day.day,ts.day.year,ts.count);
}
printf("没有你所需要的书籍");
fclose(fp);
}
void findbook1()
{
FILE *fp;
char publisher[50];
int i;
fp=fopen("book.txt","r");
printf("请输入书的publisher\n");
scanf("%s",publisher);
for(i=0;fread(ts,LL,1,fp)!=0;i++)
{
if(strcmp(publisher,ts.publisher)==0)
printf("这本书的详细资料为:%s %s %s %s %f %d/%d/%d %d\n按任意键返回\n",ts.bookname,ts.ISBN,ts.author,ts.publisher,ts.money,ts.day.month,ts.day.day,ts.day.year,ts.count);
}
printf("没有你所需要的书籍");
fclose(fp);
}
void findbook2()
{
FILE *fp;
char bookname[50];
int i;
fp=fopen("book.txt","r");
printf("请输入书的bookname\n");
scanf("%s",bookname);
for(i=0;fread(ts,LL,1,fp)!=0;i++)
{
if(strcmp(bookname,ts.bookname)==0)
printf("这本书的详细资料为:%s %s %s %s %f %d/%d/%d %d\n按任意键返回\n",ts.bookname,ts.ISBN,ts.author,ts.publisher,ts.money,ts.day.month,ts.day.day,ts.day.year,ts.count);
}
printf("没有你所需要的书籍");
fclose(fp);
}
void delete()
{
struct books *p1, *p2;
char ISBN[50];
int e=0;
if(head == NULL)
{
printf("无书籍记录");
return;
}
printf("请输入您要删除的书籍的ISBN:\n");
scanf("%s",ISBN);
p1 = head;
while(ISBN != p1-ISBN p1-next != NULL)
{
p2 = p1;
p1 = p1-next;
}
if(ISBN == p1-ISBN)
{
if(p1 == head)
head = p1-next;
else p2-next = p1-next;
free(p1);
e--;
}
else
printf("没有该书籍记录,请核对!\n");
}
void modify()
{
struct books *p1, *p2;
char ISBN[50];
if(head == NULL)
{
printf("无书籍记录!\n");
return;
}
printf("请输入您要修改的书籍的ISBN\n:");
scanf("%s",ISBN);
p1 = head;
while(ISBN != p1-ISBN p1-next != NULL)
{
p2 = p1;
p1 = p1-next;
}
if(ISBN == p1-ISBN)
devise(p1);
else
printf("没有该学生记录,请核对!\n");
}
void devise(struct books *p)
{
int choice;
choice = -1;
do
{
printf("请选择您要修改的书籍的信息内容:\n");
printf("+----------------------+\n");
printf("| 书名 请按 1 |\n");
printf("| ISBN 请按 2 |\n");
printf("| 作者 请按 3 |\n");
printf("|出版社请按 4 |\n");
printf("| 定价 请按 5 |\n");
printf("| 出版日期 请按 6 |\n");
printf("| 数量 请按 7 |\n");
printf("| 取消 请按 0 |\n");
printf("+----------------------+\n");
printf("请输入您的选择:");
scanf("%d", choice);
switch(choice)
{
case 0:
return;
case 1:
printf("请输入新书名 :");
scanf("%s", p-bookname);
break;
case 2:
printf("请输入新ISBN:");
scanf("%s", p-ISBN);
break;
case 3:
printf("请输入新作者:");
scanf("%s", p-author);
break;
case 4:
printf("请输入新出版社:");
scanf("%s", p-publisher);
break;
case 5:
printf("请输入新定价:");
scanf("%d", p-money);
break;
case 6:
printf("请输入新出版日期 :");
scanf("%ld", p-day.month,day.day,day.year);
break;
case 7:
printf("请输入新数量:");
scanf("%s", p-count);
break;
default:
printf("\n无效选项!");
break;
}
}
while(choice != 0);
}
求用C语言设计的图书管理系统
#includestdio.h
#includestring.h
#includeconio.h
#includestdlib.h
#includectype.h
#define STACK_INIT_SIZE 10
#define OK 1
#define TRUE 1
#define FALSE 0
#define ERROR 0
struct student /*定义学生类型,用于存放借出的书籍*/
{
int carnum;
char lendbook[10];
}student[1000];
struct employ /*定义职工类型*/
{
int employnum;
char employname[15];
int employage;
char employsex[2];
char employleve[10];
long int employtage;
}employ[50];
struct book /*定义书的类型*/
{
int booknum;
char bookname[10];
char bookcreat[10];
int turefalse; /*用于借书和还书模块判断一本书是否借出的条件*/
}book[1000];
struct car /*借书卡的数据类型*/
{
int carnum;
char studentname[10];
int studentclass;
}car[100];
huanbook() /*还书函数*/
{
FILE *fp,*fp2; /*定义两个文件指针,fp2用于修改数据时设立临时文件用,防止数据遭破坏*/
int i,n;
int carnum;
char lendbook[10];
printf("请你输入你的卡号\n");
scanf("%d",carnum);
fp=fopen("car.txt","r"); /*读取卡号记录*/
for(i=0;fread(car[i],sizeof(struct car),1,fp)!=0;i++) /*for循环判断卡号是否存在*/
{
if(car[i].carnum==carnum) /*卡号存在,进入下一循环*/
{
n=i;
fclose(fp);
printf("请输入你要还的书的名字\n");
scanf("%s",lendbook);
fp=fopen("record.txt","r");
for(i=0;fread(student[i],sizeof(struct student),1,fp)!=0;i++) /*判断是否借阅了输入的书*/
{
if(strcmp(student[i].lendbook,lendbook)==0) /*借阅了该书,进入下一循环,否则出错显示*/
{
fclose(fp);
fp=fopen("record.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(student[i],sizeof(struct student),1,fp)!=0;i++)
{
if(strcmp(student[i].lendbook,lendbook)==0)
{
continue; /*删除还掉的书的借书记录*/
}
fwrite(student[i],sizeof(struct student),1,fp2); /*写入原来没还的书的记录*/
}
fclose(fp);
fclose(fp2);
fp=fopen("record.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(student[i],sizeof(struct student),1,fp2)!=0;i++)
{
fwrite(student[i],sizeof(struct student),1,fp); /*将借书记录信息写回*/
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w"); /*清临时文件的记录*/
fclose(fp2);
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(book[i],sizeof(struct book),1,fp)!=0;i++) /*将书的记录写入临时文件,防止因为修改信息破坏以前的记录*/
{
if(i==n)
{
book[i].turefalse=1;
fwrite(book[i],sizeof(struct book),1,fp2); /*将还的书的原来状态设为无人借阅的*/
continue;
}
fwrite(book[i],sizeof(struct book),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(book[i],sizeof(struct book),1,fp2)!=0;i++)
{
fwrite(book[i],sizeof(struct book),1,fp); /*将临时文件写回*/
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w"); /*清临时文件*/
fclose(fp2);
printf("还书完毕,按任意键返回\n");
getch();
return 1;
}
}
printf("你没有借这样的书,任意键返回\n"); /*出错提示*/
fclose(fp);
getch();
return 0;
}
}
printf("系统没这样的卡,和管理员联系,按任意键返回\n"); /*出错提示*/
fclose(fp);
getch();
}
findbook()
{
FILE *fp;
char bookname[10];
int ture,i;
fp=fopen("book.txt","r");
printf("请输入你要查找的书名\n");
scanf("%s",bookname);
for(i=0;fread(book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(bookname,book[i].bookname)==0)
{
if(book[i].turefalse==1)
{
printf("这本书的详细资料是:%d %s %s 此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);
}
else {printf("这本书已经有人借出\n");fclose(fp);return 0;}
fclose(fp);
return FALSE;
}
}
printf("没有你要查询的书籍\n");
fclose(fp);
return FALSE;
}
findbook1()
{
FILE *fp;
char bookcreat[10];
int ture,i;
fp=fopen("book.txt","r");
printf("请输入你要查找的作者名\n");
scanf("%s",bookcreat);
for(i=0;fread(book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(bookcreat,book[i].bookcreat)==0)
{
if(book[i].turefalse==1)
{
printf("这本书的详细资料是:%d %s %s 此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);
}
else {printf("这本书已经有人借出\n");fclose(fp);return 0;}
fclose(fp);
return FALSE;
}
}
printf("没有你要查询的书籍\n");
fclose(fp);
return FALSE;
}
lendcount()
{
FILE *fp;
int i,n=0;
fp=fopen("record.txt","r");
for(i=0;fread(student[i],sizeof(struct student),1,fp)!=0;i++)
{
printf("卡号:%d 借出的书籍:%s \n",student[i].carnum,student[i].lendbook);
n=n+1;
}
fclose(fp);
printf("目前共有%d本书借出\n",n);
printf("按任意键\n");
getch();
return n;
}
chabook()
{
char ch5;
do
{
printf("---------------欢迎进入图书查询系统!--------------\n");
printf(" 1:按书名查找\n");
printf(" 2:按作者查找\n");
printf(" 0:返回\n");
printf("请输入0--2,其他输入非法!\n");
scanf("%s",ch5);
switch(ch5)
{
case '1':findbook();getch();break;
case '2':findbook1();getch();break;
case '0':break;
default:printf("无此操作\n");getch();break;
}
}while(ch5!='0');
return FALSE;
}
lendbook()
{
FILE *fp,*fp2;
int i,n;
int carnum;
printf("请你输入你的卡号\n");
scanf("%d",carnum);
fp=fopen("car.txt","r");
for(i=0;fread(car[i],sizeof(struct car),1,fp)!=0;i++)
{
if(car[i].carnum==carnum)
{
n=i;
fclose(fp);
printf("请输入你要借阅的书的名字\n");
scanf("%s",student[n].lendbook);
fp=fopen("book.txt","r");
for(i=0;fread(book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(book[i].bookname,student[n].lendbook)==0)
{
if(book[i].turefalse==0) {printf("对不起,此书有人借出,请借其他书\n");fclose(fp);getch();return;}
else
fclose(fp);
fp=fopen("record.txt","a+");
student[n].carnum=carnum;
fwrite(student[n],sizeof(struct student),1,fp);
fclose(fp);
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(book[i].bookname,student[n].lendbook)==0)
{
book[i].turefalse=0;
fwrite(book[i],sizeof(struct book),1,fp2);
continue;
}
fwrite(book[i],sizeof(struct book),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(book[i],sizeof(struct book),1,fp2)!=0;i++)
{
fwrite(book[i],sizeof(struct book),1,fp);
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w");
fclose(fp2);
printf("借书完毕,按任意键返回\n");
getch();
return;
}
}
printf("不存在这样的书,任意键返回\n");
fclose(fp);
getch();
return;
}
}
printf("你的卡号不存在,请申请新卡,按任意键返回\n");
fclose(fp);
getch();
}
carcount()
{
FILE *fp;
int i,n=0;
fp=fopen("car.txt","r");
for(i=0;fread(car[i],sizeof(struct car),1,fp)!=0;i++)
{
printf("第%d张卡卡号:%d 姓名:%s 班级:%d\n",i+1,car[i].carnum,car[i].studentname,car[i].studentclass);
n=n+1;
}
fclose(fp);
printf("目前共有%d本书\n",n);
printf("按任意键\n");
getch();
}
delcar()
{
FILE *fp,*fp2;
int i;
int carnum;
char choice;
fp=fopen("car.txt","r");
fp2=fopen("bookl.txt","w");
printf("请输入你要删除的卡号\n");
printf("如果你输入的卡号存在,系统自动删除该信息!如果不存在,系统不做任何改动\n");
scanf("%d",carnum);
for(i=0;fread(car[i],sizeof(struct car),1,fp)!=0;i++)
{
if(car[i].carnum!=carnum)
{
fwrite(car[i],sizeof(struct car),1,fp2);
}
}
fclose(fp);
fclose(fp2);
printf("是否真的要删除该卡?删除后该书籍的所有信息将无法恢复《Y/N》\n");
scanf("%s",choice);
if(choice=='y'||choice=='Y')
{
fp=fopen("car.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(car[i],sizeof(struct car),1,fp2)!=0;i++)
{
fwrite(car[i],sizeof(struct car),1,fp);
}
fclose(fp);
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("按任意键返回\n");
getch();
return;
}
else
{
printf("按任意键返回\n");
getch();
return;
}
}
addcar()
{
FILE *fp;
int i=0;
fp=fopen("car.txt","a+");
printf("请你输入卡号\n");
scanf("%d",car[i].carnum);
printf("请你输入学生姓名\n");
scanf("%s",car[i].studentname);
printf("请你输入班级\n");
scanf("%d",car[i].studentclass);
fwrite(car[i],sizeof(struct car),1,fp);
fclose(fp);
printf("输入完毕,任意键返回\n");
getch();
}
changemploy()
{
FILE *fp,*fp2;
char employname[10],choice;
int i;
fp=fopen("employ.txt","r");
fp2=fopen("bookl.txt","w");
printf("请你输入要修改的职工的名字\n");
scanf("%s",employname);
for(i=0;fread(employ[i],sizeof(struct employ),1,fp)!=0;i++)
{
if(strcmp(employ[i].employname,employname)==0)
{
printf("你所要修改的职工的资料如下,请选择你要修改的内容\n");
printf("职工号:%d职工名:%s 年龄:%d 性别:%s 学历:%s 工资:%d\n",employ[i].employnum,employ[i].employname,employ[i].employage,employ[i].employsex,employ[i].employleve,employ[i].employtage);
printf("2:修改职工名\n");
printf("3:修改职工年龄\n");
printf("4:修改职工工资\n");
printf("5:修改职工学历\n");
printf("请输入1-5:");
scanf("%s",choice);
switch(choice)
{
case '1':
{
printf("请输入新的职工号\n");
scanf("%d",employ[i].employnum);
fwrite(employ[i],sizeof(struct employ),1,fp2);
}break;
case '2':
{
printf("请输入新的职工姓名\n");
scanf("%s",employ[i].employname);
fwrite(employ[i],sizeof(struct employ),1,fp2);
}break;
case '3':
{
printf("请输入新的年龄\n");
scanf("%d",employ[i].employage);
fwrite(employ[i],sizeof(struct employ),1,fp2);
}break;
case '4':
{
printf("请输入新的职工工资\n");
scanf("%d",employ[i].employtage);
fwrite(employ[i],sizeof(struct employ),1,fp2);
}break;
case '5':
{
printf("请输入新的职工学历\n");
scanf("%s",employ[i].employleve);
fwrite(employ[i],sizeof(struct employ),1,fp2);
}
default:printf("没有这样的操作");break;
}
continue;
}
fwrite(employ[i],sizeof(struct employ),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("employ.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(employ[i],sizeof(struct employ),1,fp2)!=0;i++)
{
fwrite(employ[i],sizeof(struct employ),1,fp);
}
fclose(fp);
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("按任意键返回\n");
getchar();
return;
}
delemploy()
{
FILE *fp,*fp2;
int i;
char employname[10],choice;
fp=fopen("employ.txt","r");
fp2=fopen("bookl.txt","w");
printf("请输入你要删除的职工名\n");
printf("如果你输入的职工存在,系统自动删除该信息!如果不存在,系统不做任何改动\n");
scanf("%s",employname);
for(i=0;fread(employ[i],sizeof(struct employ),1,fp)!=0;i++)
{
if(strcmp(employname,employ[i].employname)!=0)
{
fwrite(employ[i],sizeof(struct employ),1,fp2);
}
}
fclose(fp);
fclose(fp2);
printf("是否真的要删除该职工信息?删除后的所有信息将无法恢复《Y/N》\n");
scanf("%s",choice);
if(choice=='y'||choice=='Y')
{
fp=fopen("employ.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(employ[i],sizeof(struct employ),1,fp2)!=0;i++)
{
fwrite(employ[i],sizeof(struct employ),1,fp);
}
fclose(fp);
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("按任意键返回\n");
getch();
return TRUE;
}
else
{
printf("按任意键返回\n");
getch();
return FALSE;
}
}
employcount()
{
FILE *fp;
int i,n=0;
fp=fopen("employ.txt","r");
for(i=0;fread(employ[i],sizeof(struct employ),1,fp)!=0;i++)
{
printf("第%d职工的信息如下:\n职工号:%d 职工名:%s 年龄:%d 性别:%s 学历:%s 工资:%d\n",n+1,employ[i].employnum,employ[i].employname,employ[i].employage,employ[i].employsex,employ[i].employleve,employ[i].employtage);
n++;
}
fclose(fp);
printf("目前共有%d个职工\n",n);
printf("按任意键返回\n");
}
addemploy()
{
FILE *fp;
char choice='y';
int i=1;
fp=fopen("employ.txt","a+");
while(choice=='y'||choice=='Y')
{
printf("请你输入职工号码\n");
scanf("%d",employ[i].employnum);
printf("请你输入职工名\n");
scanf("%s",employ[i].employname);
printf("请输入职工年龄\n");
scanf("%d",employ[i].employage);
printf("请你输入性别\n");
scanf("%s",employ[i].employsex);
printf("请你输入职工的学历水平\n");
scanf("%s",employ[i].employleve);
printf("请输入职工的工资\n");
scanf("%d",employ[i].employtage);
fwrite(employ[i],sizeof(struct employ),1,fp);
printf("是否要输入下个职工信息?\n");
scanf("%s",choice);
}
printf("按任意键返回\n");
fclose(fp);
}
addbook()
{
FILE *fp;
int i=0;
char choice='y';
fp=fopen("book.txt","a+");
while(choice=='y'||choice=='Y')
{
printf("请你输入第%d本书的序号\n",i+1);
scanf("%d",book[i].booknum);
printf("请你输入书名\n");
scanf("%s",book[i].bookname);
printf("请你输入书的作者\n");
scanf("%s",book[i].bookcreat);
printf("请设为1或0,1代表书还没人借,0表示书已经借出,设其他值,程序运行时无法得出正常结果\n");
printf("请你设定书的状态\n");
scanf("%d",book[i].turefalse);
fwrite(book[i],sizeof(struct book),1,fp);
printf("是否要输入下本书\n");
scanf("%s",choice);
}
fclose(fp);
}
bookcount()
{
FILE *fp;
int i,n=0;
fp=fopen("book.txt","r");
for(i=0;fread(book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(book[i].booknum!=0strlen(book[i].bookname)!=0strlen(book[i].bookcreat)!=0)
{
printf("第%d本书序号:%d 书名:%s 作者:%s 状态:%d\n",i+1,book[i].booknum,book[i].bookname,book[i].bookcreat,book[i].turefalse);
n=n+1;
}
}
fclose(fp);
printf("目前共有%d本书\n",n);
printf("按任意键\n");
}
delbook()
{
FILE *fp,*fp2;
int i;
char bookname[10],choice;
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
printf("请输入你要删除的书名\n");
printf("如果你输入的书名存在,系统自动删除该信息!如果不存在,系统不做任何改动\n");
scanf("%s",bookname);
for(i=0;fread(book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(bookname,book[i].bookname)!=0)
{
fwrite(book[i],sizeof(struct book),1,fp2);
}
}
fclose(fp);
fclose(fp2);
printf("是否真的要删除该书籍?删除后该书籍的所有信息将无法恢复《Y/N》\n");
scanf("%s",choice);
if(choice=='y'||choice=='Y')
{
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(book[i],sizeof(struct book),1,fp2)!=0;i++)
{
fwrite(book[i],sizeof(struct book),1,fp);
}
fclose(fp);
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("按任意键返回\n");
getch();
return;
}
else
{
printf("按任意键返回\n");
getch();
return;
}
}
changebook()
{
FILE *fp,*fp2;
char bookname[10],choice;
int i;
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
printf("请你输入要修改的书籍的书字\n");
scanf("%s",bookname);
for(i=0;fread(book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(book[i].bookname,bookname)==0)
{
printf("你所要修改的书的资料如下,请选择你要修改的内容\n");
printf("序号:〈%d〉 书名:〈%s〉 作者:〈%s〉 \n",book[i].booknum,book[i].bookname,book[i].bookcreat);
printf("1:修改书的序号\n");
printf("2:修改书名\n");
printf("3:修改作者\n");
printf("请输入1-3:");
scanf("%s",choice);
switch(choice)
{
case '1':
{
printf("请输入新的序号\n");
scanf("%d",book[i].booknum);
fwrite(book[i],sizeof(struct book),1,fp2);
}break;
case '2':
{
printf("请输入新的书名\n");
scanf("%s",book[i].bookname);
fwrite(book[i],sizeof(struct book),1,fp2);
}break;
case '3':
{
printf("请输入新的作者\n");
scanf("%s",book[i].bookcreat);
fwrite(book[i],sizeof(struct book),1,fp2);
}break;
defaut:printf("没有这样的操作");break;
}
continue;
}
fwrite(book[i],sizeof(struct book),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(book[i],sizeof(struct book),1,fp2)!=0;i++)
{
fwrite(book[i],sizeof(struct book),1,fp);
}
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("按任意键返回\n");
getchar();
return;
}
main()
{
char ch1,ch2,ch3,ch4,ch5;
do
{
printf("\t\t请你选择操作类型:\n");
printf(" 1:查阅图书\n");
printf(" 2:借阅图书\n");
printf(" 3:管理系统\n");
printf(" 4:还书\n");
printf(" 0:退出\n");
printf("请输入0--4\n");
scanf("%s",ch1);
switch(ch1)
{
case '1':chabook();break;
case '2':lendbook();;break;
case '3':{
do
{
printf("---------------欢迎进入管理系统!--------------\n");
printf(" 1:增加图书\n");
printf(" 2:删除图书\n");
printf(" 3:修改图书资料\n");
printf(" 4:书籍统计\n");
printf(" 5:职工管理系统\n");
printf(" 6:学生管理系统\n");
printf(" 0:返回\n");
printf("请输入0--6,其他输入非法!\n");
scanf("%s",ch2);
switch(ch2)
{
case '1':addbook();
break;
case '2':delbook();break;
case '3':changebook();break;
case '4':bookcount();getch();break;
case '5':{do
{
printf("---------------欢迎进入职工管理系统!--------------\n");
printf(" 1:增加员工\n");
printf(" 2:删除员工\n");
printf(" 3:修改员工资料\n");
printf(" 4:员工统计\n");
printf(" 0:返回\n");
printf("请输入0--4,其他输入非法!\n");
scanf("%s",ch3);
switch(ch3)
{
case '1':addemploy();getch();break;
case '2':delemploy();break;
case '3':changemploy();break;
case '4':employcount();getch();break;
case '0':break;
default:printf("无此操作\n");getch();break;
}
}while(ch3!='0');}break;
case '6':{
do
{
printf("---------------欢迎进入学生管理系统!--------------\n");
printf(" 1:申请新卡\n");
printf(" 2:删除卡号\n");
printf(" 3:借书统计\n");
printf(" 4:卡号统计\n");
printf(" 0:返回\n");
printf("请输入0--4,其他输入非法!\n");
scanf("%s",ch4);
switch(ch4)
{
case '1':addcar();break;
case '2':delcar();break;
case '3':lendcount();break;
case '4':carcount();break;
case '0':break;
default:printf("无此操作\n");getch();break;
}
}while(ch4!='0');}break;
case '0':break;
default:printf("无此操作\n");getch();break;
}
}while(ch2!='0');}break;
case '4':huanbook();break;
case '0':break;
default:printf("无此操作\n");getch();break;
}
}while(ch1!='0');
}
如何使用C语言编写图书管理系统?
图书管理系统是运行于Windows系统下的应用软件,主要用于对图书馆中的图书信息进行增、删、改、查等操作,并且还可对使用该系统的用户进行登录名和密码的管理等。系统给用户提供了一个简单的人机界面,使用户可以根据提示输入操作项,调用系统提供的管理功能。
所需功能类似于学生成绩管理系统,界面可参考附录C。用户分为管理员和一般人员两大类。
功能需求描述如下。
①用户登录:根据用户输入的用户名和密码判断是否允许该用户使用本系统,并且当用户登录后根据用户权限判断用户可以使用哪些功能。学生只有浏览等权限而不能进行实质性改动。
②提供系统主控平台:系统主控平台也应根据用户权限不同而有所区别,只列出在用户权限范围内的功能供用户选择。系统主控平台包括输入功能选项、调用相应程序两大需求。教师和学生对应的系统主控平台是不同的。所能进行的操作也不相同。
③创建图书信息文件:用户根据提示输入图书编号、图书分类号、书名、作者姓名、出版社名、出版年月、定价、存库数量和借阅和上架情况等等信息存储在系统磁盘的文件中。以便进行管理、查找和备份。
④增加图书信息:可在原有图书信息文件的基础上增加新的图书信息记录并继续保存至磁盘,并且将增加后的文件存储状况显示给用户。
⑤删除图书信息:提示用户输入要进行删除操作的图书编号,如果在文件中有该信息存在,则将该书号所对应的记录删除。并选择是否继续进行删除操作。
⑥修改图书信息:提示用户输入要进行修改操作的书号,如果在文件中有该息存在,则将提示用户输入该书号对应的要修改的选项,结果存储于文件。该部分需求也需要提示用户选择是否继续进行修改操作。
⑦查询图书信息:提供按书号或书名等查询。在该功能中,也需提示用户是否需要继续查再继续查找,则返回主界面。
⑧一般用户查询个人的借阅情况并按日期进行排序:。
⑨管理员和一般用户管理:管理员对用户的管理也需要进行用户的创建、增加、删除、浏览。管理员创建的用户存储在名为yonghu的磁盘文件中,每当有用户登录系统时,会根据该文件中的用户名和密码进行核实判断,用户才能够顺利登录。管理员还具有用户的功能。增加的用户及密码、权限等也被继续存储在yonghu文件中。当某些用一用该系统时,还可以进行删除操作,并且管理员具有修改用户权限的功能,一般用户和管理员对于系统的权限是不一样的。
一个简单的图书管理系统,C语言
#includestdio.h
#includestdlib.h
int function1();
int function2();
int function3();
int function4();
int function5();
int function6();
int function7();
int function8();
int main(void)
{
int choice;
printf("======大学信息管理系统=====\n");
printf("---------------------------\n");
printf("1:办公室管理 5:财务管理\n");
printf("2:教务管理 6:图书管理\n");
printf("3:科研管理 7:设备管理\n");
printf("4:人事管理 8:后勤管理\n");
printf(" 0:退出系统\n");
printf("---------------------------\n");
printf("请您在上述功能中选择(0--8):");
do
{
scanf("%d",choice);
switch(choice)
{
case 1:function1();break;
case 2:function2();break;
case 3:function3();break;
case 4:function4();break;
case 5:function5();break;
case 6:function6();break;
case 7:function7();break;
case 8:function8();break;
case 0:exit(0);
default:
printf("无此功能!\n请重新选择:\n");
}
}while(1);
return(0);
}
function1()
{
printf("该功能还未开放\n");
}
function2()
{
printf("该功能还未开放\n");
}
function3()
{
printf("该功能还未开放\n");
}
function4()
{
printf("该功能还未开放\n");
}
function5()
{
printf("该功能还未开放\n");
}
function6()
{
printf("该功能还未开放\n");
}
function7()
{
printf("该功能还未开放\n");
}
function8()
{
printf("该功能还未开放\n");
}