https://www.myziyuan.com/

- 萨满祭司
- / ************************************************* * ************************************************* ************ /#包括 #include #include #include //使用命名空间std输入/输出文件流; const int maxr = 100; //大多数读者const int maxb = 100; // Upli Book Const金额= 5 //每个读者借用了五本书//阅读器类,实现了读者信息类阅读器的描述{私有:int标签; //删除标签1:已删除0:未选择的INT NO; //阅读器号char名[10]; //读者int borbook [maxbor]的名称; //公共由书籍:e69da5e887aa62616964757a686964616f31333335333666Reader(){}字符*的getName(){返回名称;} //获取名称int gettag(){返回标签; } //获取删除标记int getno(){返回否;} //获取读者号void setName(char na [])//设置您的姓名{struch(name,na); void delbook(){tag = 1; } //设置删除标签1:删除0:没有void addreader(int n,char * na)//增加读者{tag = 0; no = n; Strcpy(名称,na); for(int i = 0 i >选择;切换(选择){案例'1':cout << "输入读者编号:";cin >>阅读器; cout << "输入读者姓名:";cin >> rname; addreader(ReaderID,Rname);休息;案例'2' :cout << "输入读者编号:";cin >>阅读器; r =查询(readerID);如果(r == null){cout << " 该读者不存在 "<> rname; r-> setname(rname);休息;案例'3':cout << " 输入读者编号:"; cin >>阅读器; r =查询(readerID);如果(r == null){cout <<" 该读者不存在" << endl; break;}r-> delbook();休息;案例'4':cout << "读入读者编号:";cin >>阅读器; r =查询(readerID);如果(r = = null){cout <<"该读者不存在"<< endl;break;}r-> disp();休息;案例'5':disp();休息;案例'6':clear();休息;休息;默认:cout <<"输入错误,请从新输入:";break;}}}//图书类,实现对图书的描述,图书的编号,书名,借出,还入等class Book{private: int tag;//删除标记 1:已删 0:未删int no;//图书编号char name[20];//书名int onshelf;//是否再架 1:再架 2:已借public:Book(){}char *getname() { return name; }//获取姓名int getno(){ return no; }//获取图书编号int gettag(){ return tag; }//获取删除标记void setname(char na[])//设置书名{strcpy(name,na);}void delbook(){ tag=1;}//删除图书void addbook(int n,char *na)//增加图书{tag=0;no=n;strcpy(name,na);onshelf=1;}int borrowbook()//借书操作{if (onshelf==1){onshelf=0;return 1;}return 0;}void retbook()//还书操作{onshelf=1;}void disp()//输出图书{cout << setw(6) << no << setw(18) << name << setw(10)<<(onshelf==1? "在架":"已借") <>选择;开关(CONCHe){案例'1':cout << "输入图书编号:"<>书签; cout << "输入图书书名:"<> bname;附加册(Bookid,Bname);休息;案例'2':COUT << "输入图书编号:"<>书签; b =查询(Bookid); if(b == null){cout << " 该图书不存在 "<> bname; b-> setname(bname);休息;案例'3':cout <<" 读入图书编号:"<>书签; b =查询(Bookid); if(b == null){cout <<" 该图书不存在" << endl; break;}b-> delbook();休息;案例'4':cout << " 读入图书编号:"<>书签; b =查询(Bookid); if(b == null){cout <<" 该图书不存在"<< endl;break;}b-> disp();休息;案例'5':DISP();休息;案例'6':clear();休息;默认值:cout <<"输入错误,请从新输入:";}}}//main() 函数的实现,程序的主界面的引导int main(void){ char choice;int bookid,readerid;RDatabase ReaderDB;Reader *r;BDatabase BookDB;Book *b;while(choice!='0'){ cout <>选择;切换(选择){COPY'1':COUT <<" 借书 读者编号:";cin >>阅读器; cout <<" 图书编号: ";cin >>书签; r = readerdb.query(ReaderID); //查找if(null == r){cout <<" 不存在该读者,不能借书"<< endl;break;}b=BookDB.query(bookid);if (b==NULL){cout <<" 不存在该图书,不能借书"<< endl;break;}if (b->借款()== 0){cout << " 该图书已借出,不能借书"<< endl;break;}r->借贷(b-> getno());休息;案例'2':cout <<"还书\n 读者编号:";cin >>阅读器; cout << " 图书编号:";cin >>书签; r = readerdb.query(ReaderID); if(r == null){cout <<" 不存在该读者,不能还书" << endl;break;}b=BookDB.query(bookid);if (b==NULL){cout <<" 不存在该图书,不能还书" < Retby(); R-> RET.书(B-> getno());休息;案例'3':BookdB.BookData();休息;案例'4':ReaderDB.ReaderData();休息;默认值:COUT <<“输入错误,请从新输入:”}}返回0;我希望解决您的问题。
- 2021-09-14 22:15:43

- 郭大帅
- 参考它!设计书籍信息管理系统,书籍信息包括:书号,标题,作者姓名,发布时间,价格等.1,系统在菜单中工作,密码登录。2.书籍信息的输入功能(添加数据)。 3.删除(删除数据)书籍信息。 4.浏览书籍信息的功能(查找数据)。 5.删除书籍信息(修改数据)。 6,]图书信息的计算分类。计算所有书籍的总价格和平均价格(AVER,单精度,输出十进制),将按所有数据顺序排序,按高于低电平。 #include #include #include #include #define stack_init_size 10 #define确定1 #define true 1 #define false 0 #define错误0 struct student / *定义学生类型,用于存储借用的书籍* / {int carnum; char lendbook [10];}学生[1000]; struct雇用/ *定义员工类型* / {int雇用; char elecommename [15]; int就业; CHAR雇员[2]; char雇员[10];长int雇用;雇佣[50];结构书/ *定义书籍类型* / {int booknum; Char BookName [10]; Char Bookcreat [10]; int turefalse; / *用于借用和返回模块以确定一本书是否从条件* /}书中借用[1000]; STRUCT CAR / *书卡的数据类型* / {int carnum; char studentname [10]; IntstudentClass;}车[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;欺诈(&car),1,fp)! = 0;对于循环判断卡号I ++)/ *存在* / {if(car [i] .carnum == carnum)/ *卡号存在,输入下一个循环* / {n = i; fclose(FP); Printf(“请输入您要支付的书籍的名称”); Scanf(“%s”,lendbook); fp = fopen(“Record.txt”,“R”); for(i = 0;欺诈(和学生[i],sizeof(struct学生),1,fp)!= 0; i ++)/ *判断是否借用输入书* / {if(strcmp(学生[学生[ I] .Lendbook,Lendbook == 0)/ *借用书,输入下一个循环,否则显示错误* / {fclose(fp); fp = fopen(“record.txt”,“r”); fp2 = fopen(“bookl.txt”,“w”);对于(我= 0;欺诈(&学生[i],sizeof(struct学生),1,fp)! = 0; i ++){如果(strcmp(strcmp(strest [i] .lendbook,lendbook == 0){继续; / *删除借用的书记录/} fwrite(&stu)dent [i],sizeof(struct student),1, FP2); / *写出原始书籍* /} fclose(FP)的记录; fclose(FP2); fp = fopen(“replargr.txt”,“w”); fp2 = fopen(“bookl.txt”,“r”); for(i = 0;欺诈(和学生[i],sizeof(struct学生),1,fp2)!= 0; i ++){fwrite(结构),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;欺诈(&book [i],sizeof(struct book,1,fp)!= 0; i ++)/ *写入记录的record到临时文件以防止以前的记录* / {如果由于修改信息i == n){book [i] .turefalse = 1; fwrite(&book [i],sizeof(struct book),1,fp2); / *将本书的原始状态设置为无人借用* /继续; fwrite(结构书,1,fp2); fclose(fp); fclose(FP2); fp = fopen(“book.txt”,“w”); fp2 = fopen(“bookl.txt”,“r”); for(i = 0;欺诈(&book [i],sizeof(struct book,1,fp2)!= 0; i ++){fwrite(和书写[i],sizeof(struct book),1,fp) ; / *写一个临时文件* /} fclose(fp); fclose(fp2); fopen(“bookl.txt”,“w”); / * qing临时文件* / fclose(fp2); printf(“书完成,按任何键返回\ n“); getch();返回1;}} printf(”您没有借阅这本书,任何返回\ n的键); / *错误提示* / fclose( FP); getch();返回0; printf(“系统没有这样的卡片,以及管理员联系,按任意键返回\ n”); / *错误提示* / fclose fp); getch(); findbook(){file * fp; Char BookName [10]; int ture,我; fp = fopen(“book.txt”,“r”); printf(“请输入您想要查找标题\ n”); scanf(“%s”,bookname); for(i = 0;欺诈(&book [i],sizeof(struct book),1,fp)!= 0; i ++){if(strcmp(bookname,book [i] .bookname)== 0) {if(书[i] .turefalse == 1){printf(“本书详细信息是:%d%s%s现在没有人借用\ n按任何键返回\ n”,书[i] .booknum,书[i] .bookname,书[i] .bookcreat);} else {printf(“这本书借了\ n”); fclose(FP);返回0; fclose(FP);返回false;}} printf(没有你想要询问的“书\ ny); fclose(FP);返回false;} findbook1(){file * fp; Char Bookcreat [10]; int ture,我; fp = fopen(“book.txt”,“r”); printf(“请输入您想要查找的作者名称\ n”); scanf(“%s”,bookcreat); for(i = 0;欺诈(&book [i],sizeof(struct book),1,fp)!= 0; i ++){if(strcmp(书柜,书[i] .bookcreat)= = 0) {if(书[i] .turefalse == 1){printf(“本书详细信息是:%d%s%s.现在没有人借用\ n按任何键返回\ n”,书[i] .booknum ,书[i] .bookname,书[i] .bookcreat);} else {printf(“本书已经借来\ n”); fclose(FP);返回0; fclose(FP);返回false;}}} printf(“我要查询的书籍\ n”); fclose(FP); Returnaf false;} lendcount(){file * fp; int i,n = 0; fp = fopen(“Record.txt”,“R”); for(i = 0;欺诈(和学生[i],sizeof(struct学生),1,fp)! = 0; i ++){printf(“卡号:%d借书:%s \ n”,学生[i] .carnum,stuitent [i] .lendbook; n = n + 1;} fclose(fp); printf( “当前总共%d书\ n”,n); printf(“按任意键\ n”); getch();返回n; chabook(){char ch5; do {printf(“---- ----------欢迎来到图书馆查询系统!----------- \ n“); printf(”1: \ n“); printf( “2:<按书名查找> \ n”); printf(“0:<按作者查找> \ n”); printf(“请输入0--2,其他输入非法!\ n”); scanf(“%s”, &CH5);切换(CH5){案例'1':findbook()getch(); beaf; ub; case'2':findbook1(); getch(); betch();休息;案例'0':break;默认;默认;默认值:printf(“ nonwotes操作\ n“); getch();休息;}}} while(ch5!='0');返回false; leendbook(){file * fp,* fp2; int i,n; int carn嗯; printf(“请输入您的卡号\ n”); scanf(“%d”,&carnum); fp = fopen(“car.txt”,“r”); for(i = 0;欺诈(&car [i],sizeof(struct car),1,fp)!= 0; i ++){if(car [i] .carnum == carnum){n = i; fclose(FP); printf(“请输入您想要借用的书的名称”); Scanf(“%s”,student [n] .lendbook; fp = fopen(“book.txt”,“r”); for(i = 0;欺诈(和书写[i],sizeof(struct book),1 ,fp)!= 0; i ++){if(书[i] .bookname,学生[n] .lendbook)== 0){if(书[i] .turefalse == 0){printf(“抱歉这本书是借来的,请借用其他书籍\ n“); fclose(FP); getch();返回;}否则fclose(fp); fp = fopen(“Record.txt”,“A +”);学生[n] .carnum = carnum; FWRITE(&Student)[n],sizeof(struct学生),1,fp); fclose(FP); fp = fopen(“Book.txt“,”r“); fp2 = fopen(”bookl.txt“,”w“);对于(i = 0;欺诈(和书写[i],sizeof(struct book,1,fp)!= 0; i ++){if(strcmp(书[i] .bookname,student [n] .lendbook)== 0){book [i] .turefalse = 0; fwrite(和书籍[i],sizefof(struct书籍),1,FP2);继续; FWRITE(和书籍[i],sizeof(结构书),1,fp2)fclose(fp); fclose(fp2); fp = fopen(“book.txt”,“ w“); fp2 = fopen(”bookl.txt“,”r“);对于(i = 0; read)和书[i],sizeof(struct book),1,fp2)!= 0; I ++ ){fwrite(和书籍[i],sizeof(结构书),1,fp); fclose(fp); fclose(fp2)fopen(“bookl.txt”,“w”); fclose(fp2); printf (“借阅书后,按任意键返回\ n”); getch();返回;}} printf(“没有这样的书,任意键返回\ n”); fclose(fp); getch() ;返回;}} printf(“您的卡NuMBER不存在,请申请新卡,按任意键返回\ n“); fclose(fp); getch();} carcount(){file * fp; int i,n = 0; fp = fopen (“car.txt”,“r”);对于(i = 0;欺诈(&car),1,fp)!= 0; i ++){printf(“%d纸张<返回> \ n” ,i + 1,汽车[i] .carnum,汽车[i] .sudentname,汽车[i] .sudentclass; n = n + 1;} fclose(fp); printf(“当前总数为%d,prict%d \ n“,n); printf(”按任意键\ n“); getch();} delcar()}} delcar(){file * fp,* fp2; int i; int carnum; charn选择; fp = fopen (“car.txt”,“r”); fp2 = fopen(“bookl.txt”,“w”); printf(“请输入您想要删除的卡号\ n”); printf(“如果您输入的卡号存在,系统会自动删除此信息!如果没有存在,系统没有任何陈ges \ n“); scanf(”%d“,&carnum); for(i = 0;欺诈(&car [i],sizeof(struct car),1,fp)!= 0; i ++){如果(汽车[i] .carnum!= carnum){fwrite(&car [i],sizeof(struct car),1,fp2); fclose(fp); fclose(fp2); printf(“你真的吗?想要删除卡?删除后,本书的所有信息都无法恢复“y / n”\ n“); scanf(”%s“,和选择);如果(选择=='y'| |选择=='y'){fp = fopen(“car.txt”,“w”); fp2 = fopen(“bookl.txt”,“r”); for(i = 0;欺诈(&car [ i],sizeof(struct car),1,fp2)!= 0; i ++){fwrite(&car),1,fp); fclose(fp); fclose(fp2); fp2 = fopen(“bookl .txt“w”); fclose(fp2); printf(“按任意键返回\ n”); getch();返回;否则{printf(“按任意键返回\ n”); getch ();返回;}} addcar){file * fp; int我= 0; fp = fopen(“car.txt”,“a +”); printf(“请输入卡号\ n”); scanf(“%d”,&car [i]。carnum); printf(“请输入学生名称\ n”); scanf(“%s”,汽车[i] .studentname); printf(“请输入class \ n”); Scanf(“%d”,&car [i] .studentclass; fwrite(&car),1,fp); fclose(FP); printf(“输入,任何键返回\ n”); getch();}来源
- 2021-09-14 22:13:17

- 网站快速搭建
- 用C语言编写一个图书管理系统(录入、查询、排序,文件操作)…………,数计学院《程序设计》课程设计报告图书管理系统学生姓名:安玲学 号:2009117251班 级:计科0912指导老师:熊日 期:2011-6-25 2、课程设计正文格式:1 题目与要求图书管理系统(录入、查询、排序,文件操作)1.1 问题提出制作一个简易的图书管理系统,实现新书录入、图书资料查询、显示所有图书信息等功能。 运行结果示例,如下:1.2 本题目涉及的知识点结构、数组、循环、函数、链表、指针、文件1.3 功能要求1、程序的输入:只需按系统提示输入整型数字或英文字母即可。每次数据的输入均以回车符作为结束标志。2、程序的输出:每一项数据输出均有汉字的提示,输出格式均为整型或字符串。3、程序的系统功能:(1)、图书库系统管理;(2)、书籍信息的管理;(3)、实现新书录入、图书资料查询、显示所有图书信息操作;(4)、根据需要提供对图书所需的查询方式。2 功能设计(左对齐,宋体粗四号)2.1 算法设计(左对齐,宋体粗小四号)本系统需要实现的功能要求:1、实现新书录入:int BookList::NewBook(){Book *s;s=new Book; //为插入的新书申请结点Book *q;Book *p;cout<<"输入新书书名:";cin>>s->bookname;cout<<"输入作者:";cin>>s->author;p=first;q=first; //建立链表if(first->next==NULL)//如果原链表为空,把新书的结点插入到链表中{first->next=s; //头插法s->next=NULL;}else{while(p->next->bookname<s->bookname)//按书名排序插入{p=p->next;if(p->next==NULL)break;}s->next=p->next;p->next=s;} return 1;}运行结果如下:2、图书资料查询:void BookList::SOldBook()//查询{Book *s;Book *p;cout<<"输入你要查询的书名:";cin>>s->bookname;p=first->next;while(p->bookname!=s->bookname){p=p->next;//接着查找下一个结点if(p==NULL)break;}if(p==NULL)cout<<"你所查询的书没找到!"<<endl;elsecout<<"找到:《"<<p->bookname<<"》 "<<p->author<<endl;}运行结果如下:3、显示所有图书信息:void BookList::DisplayBook(){j=0;cout<<"本馆现有书籍有:"<<endl;Book *p;p=first->next;while(p!=NULL) //输出链表中的元素{ cout<<p->bookname<<" "<<p->author<<endl;p=p->next;//指针后移j++;//统计书的总数}cout<<"共有图书"<<j<<"本"<<endl;}void BookList::testwrite() {ofstream out; //写入文件流out.open("BookList.txt",ios::out);if(!out){cerr<<"错误!不能打开文件!";exit(1);}Book *p;for(p=first->next;p!=NULL;p=p->next) {out<<p->bookname<<'\t'<<p->author<<endl; //把链表中的元素写到文件中}out.close();}运行结果如下:2、选择3后,调用排序函数,进入函数后利用switch语句实现一个如图2所示的菜单,该菜单中每个选项调用一个函数 3、根据所选菜单编写相应代码:1)输入函数input:利用循环输入的方式,将有关信息存入结构数组,结构数组根据实际的人数,采用动态方式建立……2)求平均分函数average:….…….2.1 模块图图书馆管理系统数据输入数据修改插入数据添加查找浏览图1 系统功能模块图3 程序代码设计(左对齐,宋体粗四号)1.主函数主函数设计要求简洁,只提供部分提示语和函数的调用【程序】显示一系列功能选项输入n,判断n是否是1~4?根据n的值调用各功能模块函数结束开始n内容:分模块(函数)简述其功能;模块中使用的各变量的类型及作用,包括声明数据类型(如结构体);设计过程;并列出该模块(函数)的代码。(宋体小四号)。例如:录入模块(模块名宋体粗小四号,其余宋体小四号)1)函数原形:int BookList::NewBook()2)功 能:插入(按书名排序进行插入)一本新书(图书的信息:书名、作者名)。3)变量及类型:int a[5][4] :整型形参数组,接收main函数传过来的二维数组的首地址。int i , j :循环控制变量。int n :整型形参变量,接收main()传过来的数组人数。struct student stu[ ]:接收主函数传过来的数组首地址。4)说明:执行完输入函数后,会在键盘缓冲区中保存回车键,后面再对字符型变量赋值时,会将缓冲区中的回车键当成数据存入变量中,所以要在某些输入语句后面加getchar()函数。(若不需说明部分可省略)查询模块1、函数原形:void BookList::SOldBook()2、功能:输入你要查询的书名查询已有图书信息输出模块1、函数原形:void BookList::DisplayBook()2、功能:输出所有图书信息4 C程序设计总结(左对齐,宋体粗四号)内容:1.程序调试情况;2.本人在程序设计中感想通过为期一周的课程设计,对《C语言》这门课程有了更深一步的了解。它是计算机程序设计的重要理论技术基础,在我们软件工程专业的学习中占据着十分重要的地位。这个程序的结构大体是从网络上借鉴的,但是结果无法运行,只能自己修改,最后终于调试通过,同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。参考文献(左对齐,宋体粗四号)《C语言程序设计》《数据结构》《Visual C++》附录:程序清单#include <iostream>#include <string> //C++磁盘操作头文件#include <istream>#include <fstream>#include <iomanip>//自定义输出宽度using namespace std;struct Book //结构类型{ string bookname;//书名 string author;//作者名 Book *next;};class BookList{public: BookList(){first=new Book;first->next=NULL;} int NewBook();//插入新书名 void SOldBook();//查询 void testread();//从文件中读出数据 void testwrite();//将数据写入到文件中 void DisplayBook();//输出书籍 ~BookList();private: Book *first;//定义头结点指针 int j;};int BookList::NewBook(){ Book *s;s=new Book; //为插入的新书申请结点 Book *q; Book *p; cout<<"输入新书书名:"; cin>>s->bookname; cout<<"输入作者:"; cin>>s->author; p=first;q=first; //建立链表 if(first->next==NULL)//如果原链表为空,把新书的结点插入到链表中 { first->next=s; //头插法s->next=NULL; } else{while(p->next->bookname<s->bookname)//按书名排序插入{p=p->next;if(p->next==NULL)break;}s->next=p->next;p->next=s; } return 1;}void BookList::SOldBook()//查询{ Book *s; Book *p; cout<<"输入你要查询的书名:"; cin>>s->bookname; p=first->next; while(p->bookname!=s->bookname) {p=p->next;//接着查找下一个结点if(p==NULL)break; } if(p==NULL)cout<<"你所查询的书没找到!"<<endl; elsecout<<"找到:《"<<p->bookname<<"》 "<<p->author<<endl;}void BookList::testread(){ ifstream in;j=0;//读出文件流 in.open("BookList.txt",ios::in);//以读的形式打开原文件 if(!in) {cerr<<"错误!不能打开文件!";exit(1); } Book *q; Book *p;q=new Book; p=first; cout<<"从BookList.txt中读出已有图书如下:"<<endl; while(!in.eof()) {in>>q->bookname>>q->author;//从文件里面读到链表cout<<q->bookname<<" "<<q->author<<endl;j++; p->next=q;p=q;q->next=new Book;q=q->next; } p->next=NULL; cout<<"共有图书"<<j<<"本"<<endl<<endl; in.close();}void BookList::DisplayBook(){ j=0; cout<<"本馆现有书籍有:"<<endl; Book *p; p=first->next; while(p!=NULL) //输出链表中的元素 { cout<<p->bookname<<" "<<p->author<<endl;p=p->next;//指针后移j++;//统计书的总数 } cout<<"共有图书"<<j<<"本"<<endl;}void BookList::testwrite() { ofstream out; //写入文件流 out.open("BookList.txt",ios::out); if(!out) {cerr<<"错误!不能打开文件!"; exit(1); } Book *p; for(p=first->next;p!=NULL;p=p->next) {out<<p->bookname<<'\t'<<p->author<<endl; //把链表中的元素写到文件中 } out.close();}BookList::~BookList()//析构函数{ Book *p; Book *q; p=first->next; while(p) {q=p;p=p->next;delete q; }}void main(){ char s; int i,k,count=0; BookList L; //定义对象 L.testread();//把文件中的内容读到链表中 while(1) {char *menu[]={"输入新书","查询旧书","显示所有图书","退出",""}; //字符串指针数组 for(i=0;menu[i][0]!='\0';i++)cout<<i+1<<"、 "<<menu[i]<<endl;cin>>k;switch(k){case 1:count=L.NewBook();break;case 2:L.SOldBook();break;case 3:L.DisplayBook();break;default:if(k!=4)cout<<"输入错误!"<<endl;break;}if(k==4){ if(count){ cout<<"修改后的BookList.txt未保存,是否保存?(y/n):";cin>>s;if(s=='y')L.testwrite();}break;} }}
- 2021-09-14 22:13:17