目录
目录 .................................................................................................................................................. 1
图书管理程序 ................................................................................................................................... 2
源程序:........................................................................................................................................... 2
心得与体会....................................................................................................................................... 7
课设心得: 课设心得 ........................................... 7
课设心得: 课设心得 ................................................... 8
图书管理程序
图书信息应该包含:图书编号、书名、作者姓名、出版社、价格等,请设计一个图书管理程序。该程序具有信息的录入、查询、修改、删除等基本功能。具有下列功能:
1.通过键盘输入图书的基本信息;
2.给定图书编号,查询显示该本图书的信息;
3.给定作者姓名,查询显示所有该作者编写的图书信息;
4.给定出版社,显示该出版社的所有图书信息;
1)给定图书编号,删除该图书的信息;
2)提供一些统计各类信息的功能。
提示:设计一个结构体类型或类类型的一维数组,用来存放图书信息。
源程序:
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
#include <fstream.h>
class Book
{
public:
int numble;
char bookname[38];
char author[38];
char press[38];
double price;
void getdetail()
{cout<<" 图书编号: ";
cin>>numble;
cout<<" 书名: ";
cin>>bookname;
cout<<" 作者姓名: ";
cin>>author;
cout<<" 出版社: ";
cin>>press;
cout<<" 价格: ";
cin>>price;
}
void display()
{
cout<<"图书编号 书名 作者姓名 出版社 价格 "<<endl;
}
void print()
{
cout<<" "<<numble<<" "<<bookname<<" "<<author<<" "<<press<<" "<<price<<endl;
}
int getnumble()
{return numble;}
char *getbookname()
{return bookname;}
char *getauthor()
{return author;}
char *getpress()
{
return press;
}
double getprice()
{
return price;
}
};
void mu()
{cout<<" *** **----------------------"<<endl;
cout<<" 图书管理系统"<<endl;
cout<<" ------------------------------------"<<endl; cout<<" 1.) 退出系统 "<<endl; cout<<" 2.) 输入图书信息"<<endl; cout<<" 3.) 显示图书信息"<<endl; cout<<" 4.) 查询图书信息"<<endl; cout<<" 5.) 删除图书信息"<<endl; cout<<" 请选择服务项目:"<<endl;
}
void set()
{
system("cls");
mu();
Book b1;
ofstream outfile("book.txt",ios::app);
b1.getdetail();
outfile.write((char *)&b1,sizeof(b1));
outfile.close();
}
void dis()
{
system("cls");
mu();
Book b1;
ifstream infile("book.txt");
b1.display();
while(infile.read((char *)&b1,sizeof(b1)))
{
b1.print();
}
infile.close();
}
void chaxun()
{
system("cls");
mu();
int numble,x;
char author[38],press[38];
Book b1;
cout<<"1.根据图书编号进行查找\n";
cout<<"2.根据作者姓名进行查找\n";
cout<<"3.根据出版社进行查找\n"; fstream fs("f1.txt",ios::in|ios::out); cin>>x;
if(x==1) // 按图书编号查询
{
cout<<("需要查找的图书编号为:")<<endl;
cin>>numble;
while(true)
{
fs.read((char *)&b1,sizeof(b1));
if(numble==b1.getnumble ())
{
b1.display();
b1.print();
fs.close();
break;
}
}
}
if(x==2) // 按作者姓名查询
{
cout<<("需要查找的作者姓名为:")<<endl;
cin>>author[38];
while(true)
{
fs.read((char *)&b1,sizeof(b1));
if(strcmp(author,b1.getauthor())==0)
{
b1.display();
b1.print();
fs.close();
break;
}
}
}
if(x==3) // 按出版社查询
{
cout<<("需要查找的出版社为:")<<endl;
cin>>press[38];
while(true)
{
fs.read((char *)&b1,sizeof(b1));
if(strcmp(press,b1.getpress())==0)
{
b1.display();
b1.print();
fs.close();
break;
}
}
}
}void sanchu()
{
system("cls");
int numble;
Book b1;
cout<<("需要查找的图书编号为:")<<endl;
cin>>numble;
fstream fs("f1.txt",ios::in|ios::out);
while(true)
{
fs.read((char *)&b1,sizeof(b1));
if(numble==b1. getnumble())
{
cout<<"\n要删除的数据信息:"<<endl;
cout<<"图书编号:"<<b1.getnumble()<<endl;
cout<<"书名:"<<b1.getbookname()<<endl;
cout<<"作者姓名:"<<b1.getauthor()<<endl;
cout<<"出版社:"<<b1.getpress()<<endl;
cout<<"价格:"<<b1.getprice()<<endl;
cout<<("删除成功!\n")<<endl;
break;
}
else
cout<<("找不到要删除的图书编号!\n")<<endl;
break;
}
}
int main()
{int choice;
while(true)
{
mu();
cin>>choice;
switch(choice)
{
case 5: exit(0);
case 1: set();
break;
case 2: dis();
break;
case 3: chaxun();
break;
case 4:sanchu();
break;
}
}
return 0;
}
心得与体会
课设心得: **课设心得
经过这次课设对我之前的知识有所巩固,复习了while语句构成的循环。与此同时,复习了do-while语句和while语句之间的转换。对类函数和构造函数应用加深不少,但是关于类部分知识还得有深一点的认识,关于类还有不少的薄弱环节还有待加强与了解.但是最主要的是要加强上机的实验与自己亲手制作的能力。关于构造函数的调用与重载运用还得熟练。
在这次课设中有出现system("cls")代码,关于这个代码我查询了一下知道system是一个库函数,是属于c#语言中的一种函数,cls表示清屏。还有就是这次课设中出现的多种文件的输入与输出ios::in︳ios::out;在对文件的操作过程中;了解大部分ASCII文件的操作,但是还是过于生疏,得更多的练习。关于switch语句,课设结尾还
可以进行适当的改变,经过程序运行结果输出也是一样,让我有了很好的认识。现在,我对C++程序设计兴趣越来越浓烈。最主要的是老师的授课方案很是周到,课设时我尽心的问老师不明白的问题老师都细心讲解,这让我信心大增。
还有一点不得不提,就是我的搭档,在我们完成这次课设中,团结一致,虽然有点意见分歧,但是最终问题得以完美解决。我们这次课设遇到各种“代码迷雾”,很多代码不知道怎么写,但是我们查阅各种资料和请教同学,最后解决各种难题,其中关于文件头#include <stdlib.h>是什么意思我们请教了不少人.最终知道了这个头文件包含了一些比较杂类的库函数,比如 system 等,其他头文件中的函数类型很单一,但是这个头文件不是,混合了多种类型的函数集合。
这次课设收获不少,以后会更努力的动手解决程序设计问题!
课设心得: ****课设心得
俗话说“好的开始是成功的一半”。说起课程设计,我认为最重要的就是做好设计的预习,认真的研究老师给的题目,选一个自己有兴趣的题目。其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。
虽然这次的课程设计算起来在实验室的时间只有三天,不过因为我们
都有自己的实验板,所以在宿舍里做实验的时间一定不止三天。
通过此次课程设计,使我更加扎实的掌握了有关C++程序设计方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的观念。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于解决了。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!