C课程设计图书管理系统doc_第1页
C课程设计图书管理系统doc_第2页
C课程设计图书管理系统doc_第3页
C课程设计图书管理系统doc_第4页
C课程设计图书管理系统doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、注意:在运行前首先要建立文件“book.dat”#include using namespace std;#include #include #include #include #include #define LEN sizeof(BOOK);int bookNum_infile=0; /该全局变量用来存储某本书在书库中的位置char ch= ; /使程序停顿fstream file; /程序运行的整个过程中一直对文件操作typedef class BookData /创建类存储书的信息private:char isbn14;char bookTitle51;char author31;ch

2、ar publisher31;char dateAdded11;int qtyOnHand;double wholesale; /批发价double retail; /零售价double Sum_Wsale; /批发总价double Sum_Retail; /零售总价void setSum_Wsale() Sum_Wsale=wholesale*qtyOnHand; void setSum_retail() Sum_Retail=retail*qtyOnHand; public:void setTitle(char *ctitle) strcpy(bookTitle,ctitle); void

3、 setISBN(char *cisbn) strcpy(isbn,cisbn); void setAuthor(char *cauthor) strcpy(author,cauthor); void setPub(char *cpub) strcpy(publisher,cpub); void setDateAdded(char *cdate) strcpy(dateAdded,cdate); void setQty(int nqty) qtyOnHand=nqty; void setWholesale(double dwholesale) wholesale=dwholesale;setS

4、um_Wsale(); void setRetail( double dretail) retail=dretail; setSum_retail(); char* getTitle() return bookTitle; char* getISBN() return isbn; char* getAuthor() return author; char* getPub() return publisher; char* getDateAdded() return dateAdded; int getQty() return qtyOnHand; double getWholesale() r

5、eturn wholesale; double getRetail() return retail; double getSum_Wsale() return Sum_Wsale; double getSum_Retail() return Sum_Retail; BOOK;struct NODE_BookData /创立链表BookData bookdata;NODE_BookData *next;class BuyBook /创建该类存储所买书的信息private:char B_isbn14;char B_bookTitle51;int book_Num;double B_retail;d

6、ouble B_Sum_Retail;void set_B_Sum_Retail() B_Sum_Retail=B_retail*book_Num; public: void B_setISBN(char *cisbn) strcpy(B_isbn,cisbn); void B_setTitle(char *ctitle) strcpy(B_bookTitle,ctitle); void B_set_book_Num(int num) book_Num=num; void B_set_Retail(double retail) B_retail=retail; set_B_Sum_Retail

7、(); double B_getB_Sum_Retail() return B_Sum_Retail; int B_getBook_Num() return book_Num; double B_getB_Retail() return B_retail; char* B_getB_ISBN() return B_isbn; char* B_getB_Title() return B_bookTitle; ;struct NODE_Buy /建立链表BuyBook buybook;NODE_Buy *next; /主菜单void mainDesk(); /主菜单void mainDesk(in

8、t &); /主菜单选择void mainChoice_Test(int &); /主菜单选择测试 /收银模块void getMoney(); /收银void show_Account(NODE_Buy*, double* account , char*); /显示购书信息void lookUpBook_ISBN( fstream&, int&, NODE_Buy* ,NODE_Buy* , BookData& , char*); /输入书号,自动查找,若找不到显示出错信息bool searchBook_ISBN(fstream &, char*, int&, BookData &); /查找

9、书号bool prime(NODE_Buy *, BookData &); /判断所购数量是否大于库存量void copyBook(NODE_Buy * ,BookData & ); /将书的信息拷入BuyBookvoid set_Date(char* ); /设定日期void decreaseBook(NODE_Buy * ,BookData & , char* ); /将要购买的书从记录中删除,char* 形参数修改日期NODE_Buy *initlist_B(); /创建购书链表NODE_Buy *insert(NODE_Buy *, NODE_Buy *); /将购买的书插入链表voi

10、d account_Calc(NODE_Buy *, double *); /计算总额,数组中包含“销售合计、零售税、应付金额”void free_Buy_Sort(NODE_Buy *); /释放链表 /书库管理void storMang_Desk(); /书库管理模块桌面菜单void storeManagement(int &); /书库管理模块void storChoice_Test(int &); /书库管理选择测试void lookUpBook( fstream &,int &bookNum_infile); /在存储文件中查找书,若找不到显示出错信息bool searchBook(

11、 fstream &,int &bookNum_infile,char *,BookData &); /在存储文件中查找书void BookInfo(BookData &); /显示书的信息void inputBook(); /增加书void editBook(); /修改书的信息void inputBook_message(BookData &book); /输入书的信息void deleteBook(); /删除书 /报表模块void chat(); /报表void showChat(int &); /报表模块选择void chatChoice_Test(int &); /报表选择测试NO

12、DE_BookData *initlist(); /创建空链表NODE_BookData* book_Out_Sort(NODE_BookData *); /书库列表NODE_BookData* book_Wholesale_Sort(NODE_BookData *); /批发价有序链表NODE_BookData* book_Retail_Sort(NODE_BookData *); /零售价有序链表NODE_BookData* book_Qty_Sort(NODE_BookData *); /数量有序链表NODE_BookData* book_Sum_Retail_Sort(NODE_Boo

13、kData *); /价值额有序链表NODE_BookData* book_DateAdded_Sort(NODE_BookData *); /进书日期有序链表void show_Book_Sort(NODE_BookData *head); /输出链表void free_Sort(NODE_BookData *); /释放链表 /主函数int main()int choice;file.open(book.dat,ios:in | ios:out | ios:binary);if(!file)cout打开文件出错!;exit(0);while(true)mainDesk(choice);fi

14、le.close();return 0; /主菜单void mainDesk()cout|-|n; cout| XXX图书管理系统 |n;cout| 主菜单 |n;cout| 1.收银模块 |n;cout| 2.书库管理模块 |n;cout| 3.报表模块 |n;cout| 4.退出系统 |n;cout| 请输入选择: |n;cout| 请输入1-4之间的数 |n; cout|-|n;coutchoice;cin.ignore();mainChoice_Test(choice);switch(choice)case 1:getMoney();break;case 2:storeManageme

15、nt(choice);break; case 3:showChat(choice);break;case 4:exit(0);void mainChoice_Test( int &choice) /主菜单选择测试while(choice!=1 & choice!=2 & choice!=3 & choice!=4)coutchoice;cin.ignore(); /收银模块void getMoney()BookData book;NODE_Buy *head_B=NULL,*s=NULL;head_B=initlist_B();double *account; /存储销售信息account=n

16、ew double 3;char date14;set_Date(date); /设定日期lookUpBook_ISBN(file, bookNum_infile, s,head_B,book, date); account_Calc(head_B, account);show_Account(head_B,account,date);free_Buy_Sort(head_B);delete account;cout按Enter键继续.;cin.get(ch);coutnext;cout-n;cout 前台销售模块 n;cout 日期: setw(61)setiosflags(ios:left

17、)date n;cout 数量 ISBN号 书名 单价 金额 n;cout.precision(2);cout.setf(ios:fixed | ios:showpoint | ios:left);while(p)cout setw(4)buybook.B_getBook_Num() setw(14)buybook.B_getB_ISBN()setw(20)buybook.B_getB_Title()RMB setw(8)buybook.B_getB_Retail()RMB setw(14)buybook.B_getB_Sum_Retail()next;cout - n;cout 销售合计:

18、RMB setw(8)*account n;cout 零售税: RMB setw(8)*(account+1) n;cout 应付金额: RMB setw(8)*(account+2) n;cout-n;cout.unsetf(ios:left);void lookUpBook_ISBN(fstream &file, int &bookNum_infile,NODE_Buy *s, NODE_Buy * head_B, BookData &book , char* date) /输入书号,自动查找,若找不到显示出错信息file.clear();file.seekg(0L,ios:beg);ch

19、ar ISBN14;char again;int Num_Buy;docout请输入书号:;cin.getline(ISBN,14);if(searchBook_ISBN(file, ISBN,bookNum_infile,book)s=(NODE_Buy*)malloc(sizeof(NODE_Buy );docoutNum_Buy;cin.ignore();s-buybook.B_set_book_Num(Num_Buy);while(!prime(s,book);copyBook(s,book);decreaseBook(s,book,date);insert(head_B,s);els

20、ecout未找到该书!n;coutbuybook.B_setTitle(book.getTitle();s-buybook.B_setISBN(book.getISBN();s-buybook.B_set_Retail(book.getRetail();void decreaseBook(NODE_Buy *s ,BookData &book , char* date) /将要购买的书从记录中删除int Qty=book.getQty();Qty-=s-buybook.B_getBook_Num();book.setQty(Qty);book.setDateAdded(date);file.c

21、lear();file.seekp(bookNum_infile*sizeof(BOOK),ios:beg);file.write(char*) &book,sizeof(BOOK);file.flush();bookNum_infile=0;void set_Date( char* date) /设定日期coutnext=NULL;return head;NODE_Buy *insert(NODE_Buy *head, NODE_Buy *s) /将购买的书插入链表 NODE_Buy *p; p=head;while(p-next)p=p-next;s-next=p-next;p-next=

22、s;return head;void account_Calc(NODE_Buy *head, double *account) /计算总额,返回数组中包含“销售合计、零售税、应付金额”NODE_Buy* p=head-next;double account_All=0,sale_All=0;double shui;while(p!=NULL)account_All+=p-buybook.B_getB_Sum_Retail();p=p-next;coutshui;cin.ignore();sale_All=account_All*(shui+1);*account=account_All;*(

23、account+1)=shui;*(account+2)=sale_All;bool prime(NODE_Buy *s, BookData &book) /判断所购数量是否大于库存量if(s-buybook.B_getBook_Num()book.getQty()return false;return true;void free_Buy_Sort(NODE_Buy *head) /释放链表NODE_Buy *p;while(head)p=head;head=head-next;free(p); /书库管理模块void storeManagement(int &choice)storMang

24、_Desk();cinchoice;cin.ignore();storChoice_Test(choice);switch(choice)case 1:lookUpBook(file,bookNum_infile);bookNum_infile=0;break;case 2:inputBook();bookNum_infile=0;break;case 3:editBook();bookNum_infile=0;break;case 4:deleteBook();bookNum_infile=0;break;case 5:mainDesk(choice);bookNum_infile=0;br

25、eak;cout按Enter键继续.;cin.get(ch);coutendl; storeManagement(choice);void storMang_Desk() /书库管理模块菜单cout|-|n;cout| XXX图书管理系统 |n;cout| 书库管理模块 |n;cout| 1.查找某本书的信息 |n;cout| 2.增加书 |n;cout| 3.修改书的信息 |n;cout| 4.删除书 |n;cout| 5.返回主菜单 |n;cout| 请输入选择: |n;cout| 请输入1-5之间的数 |n; cout|-|n;coutendl;void storChoice_Test(

26、int &choice) /书库管理选择测试while(choice!=1 & choice!=2 & choice!=3 & choice!=4 & choice!=5)coutchoice;cin.ignore();void lookUpBook( fstream &file, int &bookNum_infile) /在存储文件中查找书 BookData book;char title51;cin.ignore();cout请输入所要查找的书名:;cin.getline(title,51); if(searchBook(file,bookNum_infile,title,book)Bo

27、okInfo(book);elsecout未找到该书!n;bool searchBook(fstream &file, int &bookNum_infile,char *title,BookData &book) /在存储文件中查找书,若找不到显示出错信息file.clear();file.seekg(0L,ios:beg);file.read(char*) &book,sizeof(book);bookNum_infile=0;while(strcmp(book.getTitle(),title)!=0 & !file.eof()file.read(char*) &book,sizeof(

28、book);bookNum_infile+;if(strcmp(book.getTitle(),title)=0 ) return true;elsereturn false;void BookInfo(BookData &book) /显示书的信息cout-n;cout XXX图书管理系统 n;cout 书的资料 n;cout ISBN 号:setw(29)setiosflags(ios:left)book.getISBN()n;cout 书 名:setw(29)setiosflags(ios:left)book.getTitle()n;cout 作 者:setw(29)setiosflag

29、s(ios:left)book.getAuthor()n;cout 出 版 社:setw(29)setiosflags(ios:left)book.getPub()n;cout 进书日期:setw(29)setiosflags(ios:left)book.getDateAdded()n;cout 库 存 量:setw(29)setiosflags(ios:left)book.getQty()n;cout 批 发 价:setw(29)setiosflags(ios:left)book.getWholesale()n;cout 零 售 价:setw(29)setiosflags(ios:left)

30、book.getRetail()n; cout-|n;coutendl;void inputBook() /增加书BookData book;char title51;cin.ignore();cout请输入所要增加的书名:;cin.getline(title,51); if(searchBook(file,bookNum_infile,title,book)char dateAdded11;int numInput;coutnumInput;cin.ignore();cout日期(YYYY-MM-DD):;cin.getline(dateAdded,11);book.setDateAdded

31、(dateAdded);book.setQty(numInput+=book.getQty();file.clear();file.seekp(bookNum_infile*sizeof(book),ios:beg);file.write(char *)&book,sizeof(book);file.flush(); else book.setTitle(title);inputBook_message(book);void editBook() /修改书的信息cout本函数用来修改书的信息!按Enter键继续.;cin.get(ch);BookData book;char title51;c

32、in.ignore();cout书名:;cin.getline(title,51); if(!searchBook(file,bookNum_infile,title,book)cout未找到该书!n;elseBookInfo(book);cout请输入新信息.n;book.setTitle(title);inputBook_message(book);void deleteBook() /删除书BookData book;char title51;cin.ignore();cout请输入所要删除的书名:;cin.getline(title,51); if(!searchBook(file,b

33、ookNum_infile,title,book)cout未找到该书!n;elsebook.setTitle(0);file.clear();file.seekp(bookNum_infile*sizeof(book),ios:beg);file.write(char *) &book,sizeof(book);file.flush();cout删除成功!n;void inputBook_message(BookData &book) /输入书的信息char isbn14; char author31; char publisher31;char dateAdded11;int qty; do

34、uble wholesale; double retail; coutqty;book.setQty(qty);cin.ignore();cout书号:;cin.getline(isbn,14);book.setISBN(isbn);cout作者:;cin.getline(author,31);book.setAuthor(author);cout出版社:;cin.getline(publisher,31);book.setPub(publisher);coutwholesale;book.setWholesale(wholesale);coutretail;book.setRetail(re

35、tail);cin.ignore();coutchoice;cin.ignore();chatChoice_Test(choice);switch(choice)case 1:head=book_Out_Sort(head);show_Book_Sort(head);free_Sort(head);break;case 2:head=book_Wholesale_Sort(head); show_Book_Sort(head);free_Sort(head);break;case 3:head=book_Retail_Sort(head);show_Book_Sort(head);free_S

36、ort(head);break;case 4:head=book_Qty_Sort(head);show_Book_Sort(head);free_Sort(head);break;case 5:head=book_Sum_Retail_Sort(head);show_Book_Sort(head);free_Sort(head);break;case 6:head=book_DateAdded_Sort(head);show_Book_Sort(head);free_Sort(head);break;case 7: mainDesk(choice);break;cin.ignore();co

37、ut按Enter键继续.;cin.get(ch);showChat(choice); void chat() /报表cout|-|n;cout| XXX图书管理系统 |n;cout| 报表模块 |n;cout| 1.书库列表 |n;cout| 2.批发价列表 |n;cout| 3.零售价列表 |n;cout| 4.按书的数量列表 |n;cout| 5.按书的价值额列表 |n;cout| 6.按进书日期列表 |n;cout| 7.返回主菜单 |n;cout| 请输入选择: |n;cout| 请输入1-7之间的数 |n; cout|-|n;coutendl;void chatChoice_Test(int &choice) /报表选择测试while(choice!=1 & choice!=2 & choice!=3 & choice!=4 & choice!=5 & choice!=6 & choice!=7)coutchoice;cin.ignore();NODE_BookData *initlist() /创建空链表NODE_BookData *head;head=(NODE_Bo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论