本文目錄一覽:
- 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”);
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/297574.html