随风 发表于 2005-12-19 18:05

C++课程设计探讨

哪位大虾有C++课程设计啊
公享一下嘛
我这里有一个网上下的图书馆管理系统
试过了能运行的

cainiao 发表于 2005-12-29 22:36

你来我这拿吧

撒旦 发表于 2005-12-30 12:13

貌似礼拜一刚刚叫了机械的C++的课程设计

zjhzjhzjh 发表于 2006-1-12 15:09

我有自己大学毕业时做的毕业设计
不过是ASP+SQL的

墙角野猫 发表于 2006-2-28 18:15

<P>#include <iostream.h><BR>#include <iomanip.h><BR>#include <string.h><BR>#include <fstream.h><BR>const int Maxr=100;//最多的读者<BR>const int Maxb=100;//最多的图书<BR>const int Maxbor=5;//每位读者最多借五本书<BR>class Reader //读者类<BR>{ <BR> private:<BR>int tag; //删除标记 1:已删 0:未删<BR>int no; //读者编号<BR>char name; //读者姓名<BR>int borbook;//所借图书<BR> public:<BR> Reader() {}<BR> char *getname() {return name;} //获取姓名<BR> int gettag() {return tag;} //获取删除标记<BR> int getno() {return no;} //获取读者编号<BR> void setname(char na[]) //设置姓名<BR> { <BR> strcpy(name,na);<BR> <BR> }<BR>void delbook(){ tag=1; }//设置删除标记<BR>void addreader(int n,char *na)//增加读者<BR>{ <BR> tag=0;<BR> no=n;<BR> strcpy(name,na);<BR> for(int i=0;i<Maxbor;i++)<BR> borbook=0;<BR>}<BR>void borrowbook(int bookid)//借书操作<BR>{<BR> for(int i=0;i<Maxbor;i++)<BR> { <BR> if (borbook==0)<BR> {<BR> borbook=bookid;<BR> return;<BR> <BR> }<BR> }<BR> <BR>}<BR>int retbook(int bookid)//还书操作<BR>{ <BR> for(int i=0;i<Maxbor;i++)<BR> { <BR> if(borbook==bookid)<BR> {<BR> borbook=0;<BR> return 1;<BR> <BR> }<BR> }<BR> return 0;<BR>}<BR>void disp()//读出读者信息<BR>{ <BR> cout << setw(5) << no <<setw(10) << name<<"借书编号:[";<BR> for(int i=0;i<Maxbor;i++)<BR> if(borbook!=0)<BR> cout << borbook << "|";<BR> cout << "]"<<endl;<BR> <BR>}<BR>};<BR>class RDatabase//读者类库<BR>{ <BR>private:<BR> int top; //读者记录指针<BR> Reader read;//读者记录<BR>public:<BR>RDatabase() //构造函数,将reader.txt读到read[]中<BR>{<BR> Reader s;<BR> top=-1;<BR> fstream file("reader.txt",ios::in);<BR> while (1)<BR> {<BR> file.read((char *)&s,sizeof(s));<BR> if (!file)break;<BR> top++;<BR> read=s;<BR> }<BR> file.close();<BR>}<BR> void clear()//删除所有读者信息<BR>{<BR> top=-1;<BR>}<BR>int addreader(int n,char *na)//添加读者时先查找是否存在<BR>{<BR> Reader *p=query(n);<BR> if (p==NULL)<BR> {<BR> top++;<BR> read.addreader(n,na);<BR> return 1;<BR> }<BR> return 0;</P>
<P>}<BR>Reader *query(int readerid)//按编号查找<BR>{<BR> for (int i=0;i<=top;i++)<BR> if (read.getno()==readerid && <BR> read.gettag()==0)<BR> {<BR> return &read;<BR> }<BR> return NULL;<BR>}<BR>void disp() //输出所有读者信息<BR>{<BR> for (int i=0;i<=top;i++)<BR> read.disp();<BR>}<BR>void readerdata();//读者库维护<BR>~RDatabase() //析构函数,将read[]写到reader.txt文件中<BR>{<BR> fstream file("reader.txt",ios::out);<BR> for (int i=0;i<=top;i++)<BR> if (read.gettag()==0)<BR> file.write((char *)&read,sizeof(read));<BR> file.close();</P>
<P>}<BR>};<BR>void RDatabase::readerdata()<BR>{</P>
<P> int choice=1;<BR>char rname;<BR>int readerid;<BR>Reader *r;<BR>while (choice!=0)<BR>{<BR> cout <<"读者维护 1: 新增 2: 更改 3:删除 4:查找 5:显示 6:全删 0:退出=>";<BR> cin >> choice;<BR> switch (choice)<BR> {<BR> case 1:<BR> cout << "输入读者编号:";<BR> cin >> readerid;<BR> cout << "输入读者姓名:";<BR> cin >> rname;<BR> addreader (readerid,rname);<BR> break;<BR> case 2:<BR> cout << "输入读者编号:";<BR> cin >> readerid;<BR> r=query(readerid);<BR> if (r==NULL)<BR> {<BR> cout << " 该读者不存在 "<<endl;<BR> break;<BR> }<BR> cout << "输入新的姓名:";<BR> cin >> rname;<BR> r->setname(rname);<BR> break;<BR> case 3:<BR> cout << " 输入读者编号:";<BR> cin >> readerid;<BR> r=query(readerid);<BR> if (r==NULL)<BR> {<BR> cout <<" 该读者不存在" << endl;<BR> break;<BR> }<BR> r->delbook();<BR> break;<BR> case 4:<BR> cout << "读入读者编号:";<BR> cin >> readerid;<BR> r=query(readerid);<BR> if (r==NULL)<BR> {<BR> cout <<"该读者不存在"<< endl;<BR> break;<BR> }<BR> r->disp();<BR> break;<BR> case 5:<BR> disp();<BR> break;<BR> case 6:<BR> clear();<BR> break;<BR> }<BR>}<BR>}</P>
<P>class Book//图书类<BR>{<BR>private:<BR> int tag;//删除标记 1:已删 0:未删<BR>int no;//图书编号<BR>char name;//书名<BR>int onshelf;//是否再架 1:再架 2:已借<BR>public:<BR>Book(){}<BR>char *getname() { return name; }//获取姓名<BR>int getno(){ return no; }//获取图书编号<BR>int gettag(){ return tag; }//获取删除标记<BR>void setname(char na[])//设置书名<BR>{<BR> strcpy(name,na);<BR>}<BR>void delbook(){ tag=1;}//删除图书<BR>void addbook(int n,char *na)//增加图书<BR>{<BR> tag=0;<BR> no=n;<BR> strcpy(name,na);<BR> onshelf=1;<BR>}<BR>int borrowbook()//借书操作<BR>{<BR> if (onshelf==1)<BR> {<BR> onshelf=0;<BR> return 1;<BR> }<BR> return 0;<BR>}<BR>void retbook()//还书操作<BR>{<BR> onshelf=1;<BR>}<BR>void disp()//输出图书<BR>{<BR> cout << setw(6) << no << setw(18) << name << setw(10)<BR> <<(onshelf==1? "在架":"已借") <<endl;<BR>}<BR>};<BR>class BDatabase//图书库类<BR>{<BR>private:<BR> int top; //图书记录指针<BR>Book book; //图书记录<BR>public:<BR>BDatabase()//构造函数,将book.txt读到book[]中<BR>{ <BR> Book b;<BR> top=-1;<BR> fstream file("book.txt",ios::in);<BR> while (1)<BR> {<BR> file.read((char *)&b,sizeof(b));<BR> if (!file) break;<BR> top++;<BR> book=b;<BR> }<BR> file.close();<BR>}<BR> void clear()//全删<BR>{<BR> top=-1;<BR>}<BR> int addbook(int n,char *na)//增加图书<BR>{<BR> Book *p=query(n);<BR> if (NULL==p)<BR> {<BR> top++;<BR> book.addbook(n,na);<BR> return 1;<BR> }<BR> return 0;<BR>}<BR>Book *query(int bookid)//查找图书<BR>{<BR> for (int i=0;i<=top;i++)<BR> if (book.getno()==bookid &&book.gettag()==0)<BR> { <BR> return &book;<BR> }<BR> return NULL;<BR>}<BR>void bookdata();//图书库维护<BR>void disp()<BR>{<BR> for (int i=0;i<=top;i++)<BR> if (book.gettag()==0)<BR> book.disp();<BR>}<BR>~BDatabase()//析构函数,将book[]写到book.txt文件中<BR>{<BR> fstream file("book.txt",ios::out);<BR> for (int i=0;i<=top;i++)<BR> if (book.gettag()==0)<BR> file.write((char *)&book,sizeof(book));<BR> file.close();<BR>}<BR>};<BR>void BDatabase::bookdata()<BR>{<BR> int choice=1;<BR>char bname;<BR>int bookid;<BR>Book *b;<BR>while (choice!=0)<BR>{<BR> cout <<"图书维护 1: 新增 2: 更改 3:删除 4:查找 5:显示 6:全删 0:退出=>";<BR> cin >> choice;<BR> switch (choice)<BR> {<BR> case 1:<BR> cout << "输入图书编号:";<BR> cin >> bookid;<BR> cout << "输入图书书名:";<BR> cin >> bname;<BR> addbook(bookid,bname);<BR> break;<BR> case 2:<BR> cout << "输入图书编号:";<BR> cin >> bookid;<BR> b=query(bookid);<BR> if (b==NULL)<BR> {<BR> cout << " 该图书不存在 "<<endl;<BR> break;<BR> }<BR> cout << "输入新的书名:";<BR> cin >> bname;<BR> b->setname(bname);<BR> break;<BR> case 3:<BR> cout <<" 读入图书编号:";<BR> cin >> bookid;<BR> b=query(bookid);<BR> if (b==NULL)<BR> {<BR> cout <<" 该图书不存在" << endl;<BR> break;<BR> }<BR> b->delbook();<BR> break;<BR> case 4:<BR> cout << " 读入图书编号:";<BR> cin >> bookid;<BR> b=query(bookid);<BR> if (b==NULL)<BR> {<BR> cout <<" 该图书不存在"<< endl;<BR> break;<BR> }<BR> b->disp();<BR> break;<BR> case 5:<BR> disp();<BR> break;<BR> case 6:<BR> clear();<BR> break;<BR> }<BR>}<BR>}<BR>void main()<BR>{ <BR>int choice=1,bookid,readerid;<BR>RDatabase ReaderDB;<BR>Reader *r;<BR>BDatabase BookDB;<BR>Book *b;<BR>while(choice!=0)<BR>{ <BR> cout <<"*************************************************\n";<BR> cout <<"********************图书管理1.0******************\n";<BR> cout <<"1:借书 2:还书 3:图书维护 4:读者维护 0:离开=>";<BR> cin >> choice;<BR> switch (choice)<BR> {<BR> case 1:<BR> cout <<" 借书 读者编号:";<BR> cin >>readerid;<BR> cout <<" 图书编号: ";<BR> cin >>bookid;<BR> r=ReaderDB.query(readerid);<BR> if (NULL==r)<BR> {<BR> cout <<" 不存在该读者,不能借书"<< endl;<BR> break;<BR> }<BR> b=BookDB.query(bookid);<BR> if (b==NULL)<BR> {<BR> cout <<" 不存在该图书,不能借书"<< endl;<BR> break;<BR> }<BR> if (b->borrowbook()==0)<BR> {<BR> cout << " 该图书已借出,不能借书"<< endl;<BR> break;<BR> }<BR> r->borrowbook(b->getno());<BR> break;<BR> case 2:<BR> cout<<"还书 读者编号:";<BR> cin >>readerid;<BR> cout << " 图书编号:";<BR> cin >>bookid;<BR> r=ReaderDB.query(readerid);<BR> if (r==NULL)<BR> {<BR> cout <<" 不存在该读者,不能还书" << endl;<BR> break;<BR> }<BR> b=BookDB.query(bookid);<BR> if (b==NULL)<BR> {<BR> cout <<" 不存在该图书,不能还书" <<endl;<BR> break;<BR> }<BR> b->retbook();<BR> r->retbook(b->getno());<BR> break;<BR> case 3:<BR> BookDB.bookdata();<BR> break;<BR> case 4:<BR> ReaderDB.readerdata();<BR> break;</P>
<P> }</P>
<P>}<BR>} <BR><BR></P>

墙角野猫 发表于 2006-2-28 18:17

上面的是课程设计—图书管理系统.rar里的源代码,
这个BUG太多了,只要输入的读者编号不存在就会进入无限循环,都不想测试了。

小懒车 发表于 2006-3-1 17:06

呵呵.我想可以,自己先设一个循环次数来做测试啊
页: [1]
查看完整版本: C++课程设计探讨