c语言程序设计--图书管理系统
生活随笔
收集整理的這篇文章主要介紹了
c语言程序设计--图书管理系统
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這個原本是c語言程序設計書里面的習題,老師布置的作業,既然寫好了,就在網上分享下,相信肯定有很多和我一樣使用的是這本教材,大家可以借鑒下答案,在dev c++上運行是沒有任何錯誤的。文末已經貼了源碼,還有什么不了解的可以在評論里講下!!!
輸入1添加數據
輸入2
輸入3 查詢
輸入4
再輸入2,查看改變后的數據
輸入5(注意此程序只能從后面刪除,切不可刪前面的id,否則就是復制后面的數據)
輸入6(借書)
可看到存數減一
輸入7歸還圖書
至此整個功能介紹完畢,輸入8退出系統
下面貼出源代碼
#include<stdio.h> //預處理 #include<string.h> #include<stdlib.h> #include<conio.h>//定義結構體 struct book {int id;char name[31];char author[27];char publish[31];int store;int total;int user[10];int days[10]; }books[100];//顯示整體標題標題函數 void page_title(char *menu_item) {printf("\t\t********歡迎大家使用阜陽師范大學圖書館管理系統********\n\n-%s-\n\n",menu_item);} //等待返回函數 void return_confirm() {printf("\n請按任意鍵返回……\n");getch(); } book_add() {int i;system("cls"); //清屏 page_title("注冊新書"); for(i=0;i<2;i++){printf("序號:");scanf("%d",&books[i].id);printf("書名:");scanf("%s",&books[i].name); printf("作者:");scanf("%s",&books[i].author); printf("出版社:");scanf("%s",&books[i].publish); printf("數量:");scanf("%d",&books[i].total);books[i].store=books[i].total;printf("\n"); } }book_show() {int i,flag=0;system("cls");for(i=0;i<100;i++){ if(strlen(books[i].publish)!=0){printf("序號:%d\t ",books[i].id);printf("書名:%s\t ",books[i].name);printf("作者:%s\t ",books[i].author);printf("出版社:%s\t ",books[i].publish);printf("存數:%d\t",books[i].store);printf("總數:%d\n\n",books[i].total);flag=1;} } if(flag==0){printf("沒有找到相關書籍\n");}getch();return i; }int book_search() {int n,i,flag=0;char nam[30];system("cls");printf("請輸入書名:");scanf("%s",&nam);for(i=0;i<100;i++){if(strcmp(books[i].name,nam)==0){printf("序號:%d\t ",books[i].id);printf("書名:%s\t ",books[i].name);printf("作者:%s\t ",books[i].author);printf("出版社:%s\t ",books[i].publish);printf("存數:%d\t",books[i].store);printf("總數:%d\n",books[i].total);n=i;flag=1;getch();break;} } if(flag==0){printf("\n沒有找到相關書籍\n");getch();return -1;}return n; }book_edit() {int i,id_change;system("cls");page_title("修改圖書信息:");printf("輸入要修改的圖書id:");scanf("%d",&id_change);for(i=0;i<100;i++){if(books[i].id==id_change){printf("修改書名:");scanf("%s",&books[i].name); printf("修改作者:");scanf("%s",&books[i].author); printf("修改出版社:");scanf("%s",&books[i].publish); printf("修改數量:");scanf("%d",&books[i].total);printf("修改圖書信息成功\n");books[i].store=books[i].total;return i; } } printf("\n沒有找到相關信息\n");getch();return -1; }int book_del() {int i,num,j;system("cls");page_title("刪除圖書");printf("輸入所要刪除的書的id:");scanf("%d",&num);for(i=0;i<100;i++){if(books[i].id==num){for(j=i;j<100;j++){books[j].id=books[j+1].id;strcpy(books[j].name,books[j+1].name);strcpy(books[j].publish,books[j+1].publish);printf("該書已經刪除了!!!\n");getch();return i;}} } printf("未找到相關記錄\n");getch();return -1; }//借書 book_out() {int n,s,i,d;system("cls");page_title("借閱圖書");n=book_search();if(n!=-1&&books[n].store>0){//賦初值,全為零 for(i=0;i<10;i++){books[n].user[i]=0;books[n].days[i]=0;} printf("借書證序號:");scanf("%d",&s);printf("輸入可借天數:");scanf("%d",&d); books[n].user[0]=s;books[n].days[0]=d; books[n].store--; // 書上這有何意義 // for(i=0;i<10;i++) // { // if(books[n].user[i]==0) // { // books[n].user[i]=0; // books[n].days[i]=0; // break; // } // books[n].store--; // } }else if(n!=-1&&books[n].store==0){printf("此書已經完全借完\n\n");getch();}else;return_confirm(); }//歸還圖書 void book_in() {int n,s,i;page_title("歸還圖書");n=book_search();printf("%d",n);if(n!=-1&&books[n].store<books[n].total){printf("借閱圖書證列表\n");for(i=0;i<10;i++){if(books[n].user!=0){printf("[%d]--%d天\n",books[n].user[i],books[n].days[i]);}printf("輸入借書證號:");scanf("%d",&s);for(i=0;i<10;i++){if(books[n].user[i]==s){books[n].store++;}}} }if(n!=-1&&books[n].store==books[n].total){printf("全部歸還\n");}else if(n!=-1&&books[n].store<books[n].total){printf("歸還成功\n");}else ;return_confirm();} main() {menu:page_title("操作選單");printf("用數字選擇操作\n\n");printf("\t\t1注冊新書\t\t2顯示圖書\n");printf("\t\t3查詢圖書信息\t\t4修改圖書信息\n");printf("\t\t5刪除圖書\t\t6借閱圖書\n");printf("\t\t7歸還圖書\t\t8退出系統\n");printf("請按數字鍵:\n");switch(getchar()){case'1': book_add();break;case'2': book_show();break;case'3': book_search();break;case'4': book_edit();break;case'5': book_del();break;case'6': book_out();break;case'7': book_in();break;case'8': exit(0);} goto menu;}代碼與書上不一樣的點:
書上的struct結構體錯誤,未在后面添加數組
借書里面有一段都等于0看不懂
這個項目主要訓練了我調試項目的能力,受教了
帶有多名學生的動態鏈表
#include<stdio.h> #include<stdlib.h> #define LEN sizeof(struct Student)struct Student {long num;int score;struct Student *next; };int n;struct Student *creat() {struct Student *head;struct Student *p1,*p2;n=0;printf("請輸入學號和成績以逗號隔開:\n");printf("結束請按911+回車鍵:\n");printf("第1個學生學號和成績:\n");p1=p2=(struct Student *)malloc(LEN);scanf("%d,%d",&p1->num,&p1->score);head=NULL;while(p1->num!=911){n=n+1;if(n==1)head=p1;elsep2->next=p1;p2=p1;p1=(struct Student *)malloc(LEN);printf("第%d個學生學號和成績:\n",n+1);scanf("%ld,%d",&p1->num,&p1->score);}p2->next=NULL;return head; }struct Student *del(struct Student *head) {struct Student *p1,*p2;long n;printf("輸入刪除的學號:");scanf("%ld",&n);p1=head;if(p1->num==n)head=p1->next;else{do{p2=p1;p1=p1->next;} while(p1!=NULL&&p1->num!=n);if(p1->num==n)p2->next=p1->next;elseprintf("沒找到\n");}free(p1);return(head); }void print(struct Student *head) {struct Student *p;p=head;n=0;if(head!=NULL)do{n=n+1;printf("第%d個學生的學號:%ld,成績:%d\n",n,p->num,p->score);p=p->next;}while(p!=NULL); }int main() {struct Student *pHead;pHead=creat();print(pHead);pHead=del(pHead);print(pHead);return 0; }總結
以上是生活随笔為你收集整理的c语言程序设计--图书管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 许昌工业用电收费标准?
- 下一篇: Web托管服务器性能测试-如何真正做到这