




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课程设计图书管理系统 设计背景在进行C语言的学习中,我逐渐学习并且掌握到了C语言编程的基本知识和要求。在这次课程设计中我用到了C+的输入(cin )、输出函数(cout)。需求分析游戏的整体运行效果如下:通过通过输入数字(.0),使用其功能。图书管理员可通过此程序,对图书进行管理。概要设置图书管理系统借书还书图书维护删除、查找读者维护输入读者编号输入图书编号读者编号图书编号新增、更改删除、查找显示、全删新增、更改借书界面:2.还书界面:3.图书维护:4.读者维护程序运行基本流程图:开爱护和第四始开始始输入04的整数是借 书否还 书是否图书维护是否开 始输入1输入2输入3输入4否读者维护是离开否结 束#include #include #include #include /输入/输出文件流类 using namespace std; const int Maxr=100;/最多的读者 const int Maxb=100;/最多的图书 const int Maxbor=5;/每位读者最多借五本书 /读者类,实现对读者的信息的描述 class Reader private: int tag; /删除标记 1:已删 0:未删 int no; /读者编号 char name10; /读者姓名 int borbookMaxbor;/所借图书 public: Reader() char *getname() return name; /获取姓名 int gettag() return tag; /获取删除标记 int getno() return no; /获取读者编号 void setname(char na) /设置姓名 strcpy(name,na); void delbook() tag=1; /设置删除标记 1:已删 0:未删 void addreader(int n,char *na)/增加读者 tag=0; no=n; strcpy(name,na); for(int i=0;iMaxbor;i+) borbooki=0; void borrowbook(int bookid)/借书操作 for(int i=0;iMaxbor;i+) if (borbooki=0) borbooki=bookid; return; int retbook(int bookid)/还书操作 for(int i=0;iMaxbor;i+) if(borbooki=bookid) borbooki=0; return 1; return 0; void disp()/读出读者信息 cout setw(5) no setw(10) name借书编号:; for(int i=0;iMaxbor;i+) if(borbooki!=0) cout borbooki |; cout endl; ; /读者类库,实现建立读者的个人资料 class RDatabase private: int top; /读者记录指针 Reader readMaxr;/读者记录 public: RDatabase() /构造函数,将reader.txt读到read中 Reader s; top=-1; fstream file(reader.txt,ios:in);/打开一个输入文件 while (1) file.read(char *)&s,sizeof(s); if (!file)break; top+; readtop=s; file.close(); /关闭 reader.txt void clear()/删除所有读者信息 top=-1; int addreader(int n,char *na)/添加读者时先查找是否存在 Reader *p=query(n); if (p=NULL) top+; readtop.addreader(n,na); return 1; return 0; Reader *query(int readerid)/按编号查找 for (int i=0;i=top;i+) if (readi.getno()=readerid & readi.gettag()=0) return &readi; return NULL; void disp() /输出所有读者信息 for (int i=0;i=top;i+) readi.disp(); void readerdata();/读者库维护 RDatabase() /析构函数,将read写到reader.txt文件中 fstream file(reader.txt,ios:out); for (int i=0;i=top;i+) if (readi.gettag()=0) file.write(char *)&readi,sizeof(readi); file.close(); ; void RDatabase:readerdata() char choice; char rname20; int readerid; Reader *r; while (choice!=0) cout choice; switch (choice) case 1: cout readerid; cout rname; addreader (readerid,rname); break; case 2: cout readerid; r=query(readerid); if (r=NULL) cout 该读者不存在 endl; break; cout rname; r-setname(rname); break; case 3: cout readerid; r=query(readerid); if (r=NULL) cout 该读者不存在 delbook(); break; case 4: cout readerid; r=query(readerid); if (r=NULL) cout 该读者不存在disp(); break; case 5: disp(); break; case 6: clear(); break; default:cout输入错误,请从新输入:;break; /图书类,实现对图书的描述,图书的编号,书名,借出,还入等 class Book private: int tag;/删除标记 1:已删 0:未删 int no;/图书编号 char name20;/书名 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? 在架:已借) endl; ; /图书库类,实现对图书的维护,查找,删除等 class BDatabase private: int top; /图书记录指针 Book bookMaxb; /图书记录 public: BDatabase()/构造函数,将book.txt读到book中 Book b; top=-1; fstream file(book.txt,ios:in); while (1) file.read(char *)&b,sizeof(b); if (!file) break; top+; booktop=b; file.close(); void clear()/全删 top=-1; int addbook(int n,char *na)/增加图书 Book *p=query(n); if (NULL=p) top+; booktop.addbook(n,na); return 1; return 0; Book *query(int bookid)/查找图书 for (int i=0;i=top;i+) if (booki.getno()=bookid &booki.gettag()=0) return &booki; return NULL; void bookdata();/图书库维护 void disp() for (int i=0;i=top;i+) if (booki.gettag()=0) booki.disp(); BDatabase()/析构函数,将book写到book.txt文件中 fstream file(book.txt,ios:out); for (int i=0;i=top;i+) if (booki.gettag()=0) file.write(char *)&booki,sizeof(booki); file.close(); ; void BDatabase:bookdata() #include#include#include#include#includeusing namespace std;int i;class Person public: void display() cout name; cout num;while(num=0)cout请重新输入工号大于0的数:num; string name;/名字 int num;/工号class Teacher: public Person/教师public: Teacher() int s=1000; wage = s;butie1=0; void display1(); int wage;/基本工资 int time;int butie1;int jintie1;/课时void Teacher:display1() cout 请输入; Person:display(); cout time;while(time=0)cout请重新输入课时大于0的数:time;class Leader: public Person/领导public: Leader() int s=2500; int b=600; wage = s; butie = b;jintie=0; void display1() cout 请输入领导的; Person:display(); int wage;/基本工资 int butie;int jintie;/补贴class Jianzhi: public Teacher, public Leader/教师兼职领导public: Jianzhi( int b = 500) : Leader() butie = b; void display1() cout 请输入教师兼职领导的; Teacher:display(); cout time;while(time=0)cout请重新输入课时大于0的数:time; int butie;/补贴Teacher t100;Leader x100;Jianzhi j100;void show() cout t请输入你要录入的对象 : endl; cout tt 1:教师 endl; cout tt 2:领导 endl; cout tt 3:教师兼职领导 endl; cout tt 4:退出录入 endl; cout 请选择: ;void jiaoshiluru()/教师录入 ofstream outfile(教师.txt, ios:app); if (!outfile) cerr open error! endl; exit(0); int b; cout b; for (i = 0; i b; i+) ti.display1();cout是否保存信息(y(Y)/n(N)c;if(c=Y|c=y) outfile ti.num ti.wage ti.time endl; outfile.close();void Leaderluru()/领导录入 ofstream outfile(领导.txt, ios:app); if (!outfile) cerr open error! endl; exit(0); int b; cout b; for (i = 0; i b; i+) xi.display1(); cout是否保存信息(y(Y)/n(N)c;if(c=Y|c=y) outfile xi.num xi.wage xi.butie endl; void jianzhiluru()/教师兼职领导录入 ofstream outfile(教师兼职领导.txt, ios:app); if (!outfile) cerr open error! endl; exit(0); int b; cout b; for (i = 0; i b; i+) ji.display1();cout是否保存信息(y(Y)/n(N)c;if(c=Y|c=y) outfile ji.Teacher:num ji.Teacher:name ji.Leader:wage ji.butie ji.Teacher:time c; if (c = 4) cout 退出录入成功。 endl; system(cls); break; else switch (c) case 1: jiaoshiluru(); break; case 2: Leaderluru(); break; case 3: jianzhiluru(); break; default: cout 上一次输入错误。 endl; break; void jiaoshishuchu()/教师输出显示 ifstream infile(教师.txt, ios:in); int m; for (i = 0; i ti.num ti.wage ti.time;if (ti.num = 0) break; int jintie1; jintie1=ti.time*30; m = ti.wage + jintie1;cout t教师: setw(8) ti.num setfill( )setw(10) setfill( )setw(10)ti.wagesetfill( )setw(14)jintie1setfill( )setw(12)ti.butie1setfill( )setw(10) m endl; infile.close();void leadershuchu()/领导输出 ifstream infile(领导.txt, ios:in); int m; for (i = 0; i xi.num xi.wage xi.butie; if (xi.num = 0) break; m = xi.wage + xi.butie; cout t领导: setfill( )setw(8)xi.num setfill( )setw(10) setfill( )setw(10)xi.wagesetfill( )setw(14)xi.jintiesetfill( )setw(12)xi.butiesetfill( )setw(10) m endl; infile.close();void jianzhishuchu()/教师兼职领导输出 ifstream infile(教师兼职领导.txt, ios:in); int m; for (i = 0; i ji.Teacher:num ji.Teacher:name ji.Leader:wage ji.butie ji.Teacher:time; if (ji.Teacher:num = 0) break;int jintie1;jintie1=ti.time*30; m = ji.Leader:wage + ji.butie +jintie1 ; cout t教师兼领导: setfill( )setw(2) ji.Teacher:num setfill( )setw(10) ji.Teacher:namesetfill( )setw(10)ji.Leader:wagesetfill( )setw(14)jintie1setfill( )setw(12)ji.butie setfill( )setw(10) m endl; void shuchu()/输出显示 cout tt 工号 名字 基本工资 课时津贴 补贴 总工资 endl; jiaoshishuchu(); leadershuchu(); jianzhishuchu();void show3() cout t请输入你要查询的对象: endl; cout tt 1:教师查询 endl; cout tt 2:领导查询 endl; cout tt 3:教师兼职领导查询 endl; cout tt 4:退出查询 endl; cout 请选择一个操作:; void jiaoshichaxun() ifstream infile(教师.txt, ios:in); string nam; int num; int m, n,x; couttt1.按教师的姓名查找ntt2.按教师的工号查找; coutx; switch(x) case 1:coutnam; for (i = 0, n = 0; i ti.num ti.wage ti.time; if (ti.num = 0) break; if (=nam) n+; m = ti.wage + (ti.time - 24) * 30;couttt工号 姓名 工资endl; cout t教师: ti.num m endl; if (n =0) cout 没有你要查询的教师。 endl; infile.close();break;case 2: coutnum; for (i = 0, n = 0; i ti.num ti.wage ti.time; if (ti.num = 0) break; if (ti.num=num) n+; m = ti.wage + (ti.time - 24) * 30;couttt工号 姓名 工资endl; cout t教师: ti.num m endl; if (n =0) cout 没有你要查询的教师。 endl; infile.close();break;default:cout操作选择错误!endl;break; void leaderxhaxun()/领导查询 ifstream infile(领导.txt, ios:in); string nam; int num; int m, n,y; couttt1.按领导的姓名查找ntt2.按领导的工号查找; couty; switch(y) case 1:coutnam; for (i = 0, n = 0; i xi.num xi.wage xi.butie; if (xi.num = 0) break; if (=nam) n+; m = xi.wage + xi.butie;couttt工号 姓名 工资endl; cout t领导: xi.num m endl; if (n =0) cout 没有你要查询的领导。 endl; infile.close();break;case 2: coutnum; for (i = 0, n = 0; i xi.num xi.wage xi.butie; if (xi.num = 0) break; if (xi.num=num) n+; m = xi.wage + xi.butie;couttt工号 姓名 工资endl; cout t领导: xi.num m endl; if (n =0) cout 没有你要查询的领导。 endl; infile.close();break;default:cout操作选择错误!endl;break; void jianzhichaxun()/教师兼职领导查询 ifstream infile(教师兼职领导.txt, ios:in); string nam; int num; int m, n,x;couttt1.按教师兼职领导的姓名查找ntt2.按教师兼职领导的工号查找;coutx; switch(x) case 1:coutnam; for (i = 0, n = 0; i ji.Teacher:num ji.Teacher:name ji.Leader:wage ji.butie ji.Teacher:time; if (ji.Teacher:num = 0) break; if (ji.Teacher:name=nam) n+; m = ji.Leader:wage + ji.butie + ji.Teacher:time * 30;couttt工号 姓名 工资endl; cout 教师兼职领导: ji.Teacher:num ji.Teacher:name m endl; if (n =0) cout 没有你要查询的教师兼职领导。 endl; infile.close();break;case 2: coutnum; for (i = 0, n = 0; i ji.Teacher:num ji.Teacher:name ji.Leader:wage ji.butie ji.Teacher:time; if (ji.Teacher:num = 0) break; if (ji.Teacher:num=num) n+; m = ji.Leader:wage + ji.butie + ji.Teacher:time * 30;couttt工号 姓名 工资endl; cout 教师兼职领导: ji.Teacher:num ji.Teacher:name m endl; if (n =0) cout 没有你要查询的教师兼职领导。 endl; infile.close();break;default:cout操作选择错误! c; if (c = 4) cout 退出查询成功。 endl; system(cls); break; ; else switch (c) case 1: jiaoshichaxun(); break; case 2: leaderxhaxun(); break; case 3: jianzhichaxun(); break; default: cout 上一次输入错误。 endl; break; void show5() cout t请输入你要修改的对象: endl; cout tt 1:教师修改 endl; cout tt 2:教师兼职领导修改 endl; cout tt 3:退出修改 endl; cout 请选择一个操作:;void jiaoshixiugai()/教师修改 ifstream in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 邢台汇文分班考试题目及答案
- 九年级半期考试题及答案
- 护理查房考试题及答案
- 2025教资科二考试真题及答案
- 化验室基础知识简答考试题及答案
- 温岭二中考试试卷真题及答案
- 广西安全员B证考试题及答案
- 延津县期中考试卷及答案
- 计算机ms一级考试试题及答案
- 口腔护理溶液作用、疾病预防及护理要点知识试题附答案
- 页人音版三年级音乐上册音乐教案(2025-2026学年)
- 员工应急救护知识培训课件
- 2025昆明中北交通旅游(集团)有限责任公司驾驶员招聘(60人)考试参考题库及答案解析
- 2026中国航空工业集团金航数码校园招聘备考考试题库附答案解析
- 健康教育培训师资队伍建设方案
- 二类医疗器械零售经营备案质量管理制度
- 2025年医技三基考试试题及答案
- 既有建筑幕墙安全培训课件
- 2025年全国事业单位联考C类《职业能力倾向测验》试题及答案
- 厂区安全行走培训内容课件
- 中国原发性闭角型青光眼诊治方案专家共识(2025年)解读
评论
0/150
提交评论