A. 买的编程方面的书籍,把书籍附带光盘的源代码卖给别人违法吗
买的编辑方面的书籍,把书籍附带光盘的源代码卖给别人,违法吗?既然东西是你买的。首先一点,你愿意把这东西给谁都可以。但是你非要把它变成一笔交易来看待,那么你就涉嫌违法。你完全可以把东西送给任何人的。
B. 急求c语言程序设计 图书管理系统 源代码
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
#define N 100 //书籍的最多本数
struct book
{ char title[30];
int number;
char author[30];
float price;
int store;
char borrower_name[20];
char borrower_gender[5];
int borrower_number;
}s[N];
int m=0;
void input(structbook *p); //输入图书信息
void save(structbook *p); //保存图书信息
void read(structbook *p); //读取图书信息
void search(structbook *p); //查找图书信息
void del(structbook *p); //删除图书信息
void borrow(structbook *p); //借阅图书
void retur(structbook *p); //归还图书
void main()
{
int x;
do
{
printf("**************************************菜单**************************************\n"
" *********** 1.输入图书信息 ********** \n"
" *********** 2.查找图书信息 ********** \n"
" *********** 3.删除图书信息 ********** \n"
" *********** 4.借阅图书 ********** \n"
" *********** 5.归还图书 ********** \n"
" *********** 0.退出 ********** \n");
printf("********************************************************************************\n");
printf("请在0-5中选择,以回车键结束\n");
scanf("%d",&x);
switch(x)
{ case 1: input(&s[0]);break;
case 2: search(&s[0]);break;
case 3: del(&s[0]);break;
case 4: borrow(&s[0]);break;
case 5: retur(&s[0]);break;
case 0: break;
}
}while(x!=0);
}
void input(structbook *p)
{ int y;
for(;p<(&s[0]+N);p++)
{ printf("请输入书名:");scanf("%s",p->title);
printf("请输入编号:"); scanf("%d",&p->number);
printf("请输入作者:"); scanf("%s",p->author);
printf("请输入图书价格:"); scanf("%f",&p->price);
printf("请输入图书数量:"); scanf("%d",&p->store);
m++;
printf("第%d个信息已经输入完毕,是否继续?\n按任意键继续,按0键结束.",m);
scanf("%d",&y);//读取是否继续
if(y==0)
{ save(&s[0]);
read(&s[0]);//调用读取文件函数
break;
}
}
}
void search(structbook *p)//查询模块
{ int n;
char name1[20];
char name2[20];
char c[3];
do
{ p=&s[0];
printf("\t请选择查找方式:\n");//打印查询方式菜单
printf(" 1.按书名查找\n 2.按作者查找\n 0.返回\n");
printf("请在0-2中选择:\n\n");
scanf("%d",&n);//读取查找方式
if(n==0) break;
switch(n)
{ case 1: printf("请输入书名:\n");scanf("%s",name1);break;
case 2: printf("请输入作者:\n");scanf("%s",name2);break;
}
for(;p<&s[m];p++)
{ read(&s[0]);//调用读取函数
if(strcmp(p->title,name1)==0||strcmp(p->author,name2)==0)
{ printf("\n查找图书信息成功!\n");
printf("书名 编号 作者 价格 数量\n");
printf("%-10s%-10d%-10s%-10.2f%-10d\n",p->title,p->number,p->author,p->price,p->store);//打印信息
break;
}
}
printf("是否继续查找?\n“是”请键入“yes”, “否”请按任意键,返回菜单\n");
scanf("%s",c);
}while(strcmp(c,"yes")==0);//判断是否结束
}
void del(structbook *p)//删除模块
{ int i;
struct book *p1,*p2;
char name1[20];
char name2[20];
char c[3];
int n;
do
{ p=&s[0];
printf("请选择删除以方式回车键结束:\n");//打印删除方式菜单
printf( " 1.按书名删除\n 2.按作者删除\n 0.返回\n");
printf("请在0-2中选择:\n\n");
scanf("%d",&n);//读取查找方//
if(n==0) break;
switch(n)
{case 1:printf("请输入书名:\n");
scanf("%s",name1);break;
case 2: printf("请输入作者:\n");
scanf("%s",name2);break;
}
read(&s[0]); //调用读取函数
for(i=0;i<m;i++,p++)
{
if(strcmp(p->title,name1)==0||strcmp(p->author,name2)==0)
{ p1=p;
for(p2=p1+1;p2<=&s[m];p1++,p2++)
{
strcpy(p1->title,p2->title);
strcpy(p1->author,p2->author);
p1->number=p2->number;
p1->store=p2->store;
p1->price=p2->price;
m--;
printf("删除成功!!\n");
}
}
else {printf("没有该书记录!!");
break;}
}
printf("是否继续删除?“是”请键入“yes”, “否”请按任意键,返回菜单\n");
scanf("%s",c); //读取是否继续
save(&s[0]); //调用保存函数
}while(strcmp(c,"yes")==0); //判断是否继续删除
}
void borrow(structbook *p)//借书模块
{ int z;
char name3[20],name4[20];
char w[3];
do
{ p=&s[0];
printf("请先查找您要借阅的图书!");
printf("请选择查找方式:\n");//打印查询方式菜单
printf(" 1.按书名查找\n 2.按作者查找\n 0.返回\n");
printf("请在0-2中选择:\n");
scanf("%d",&z);//读取查找方式
if(z==0) break;
switch(z)
{ case 1: printf("请输入书名:\n");scanf("%s",name3);break;
case 2: printf("请输入作者:\n");scanf("%s",name4);break;
}
read(&s[0]);//调用读取函数
for(;p<&s[m];p++)
{ if(strcmp(p->title,name3)==0||strcmp(p->author,name4)==0)
{
printf("\n查找图书信息成功!\n");
printf("书名 编号 作者 价格 数量\n");
printf("%-10s%-10d%-10s%-10.2fs%-10d\n",p->title,p->number,
p->author,p->price,p->store);//打印信息
printf("请输入您的姓名:");scanf("%s",p->borrower_name);
printf("请输入您的性别:");scanf("%s",p->borrower_gender);
printf("请输入您的学号:");scanf("%d",&p->borrower_number);
p->store--;
printf("借书成功!\n");
printf("书名 编号 作者 价格 数量 借书人 性别 学号\n");
printf("%-10s%-10d%-10s%-10.2f%-10d%-10s%-10s%-10d\n",p->title,p->number,p->author,
p->price,p->store,p->borrower_name,p->borrower_gender,p->borrower_number);
break;
}
}
printf("是否继续借书??");
printf("“是”请键入“yes”, “否”请按任意键,返回菜单\n");
scanf("%s",w); //读取是否继续
save(&s[0]); //调用保存函数
}while(strcmp(w,"yes")==0); //判断是否继续借书
}
void retur(structbook *p)//还书模块
{ int e,f;
char name5[20];
char name6[20];
char t[3];
do
{ p=&s[0];
printf("请先查找您要还的图目!");
printf("请选择查找方式:\n"); //打印查询方式菜单
printf(" 1.按书名查找\n 2.按作者查找\n 0.返回\n");
printf("请在0-2中选择:\n\n");
scanf("%d",&e); //读取查找方式
if(e==0) break;
switch(e)
{ case 1: printf("请输入书名:\n");scanf("%s",name5);break;
case 2: printf("请输入作者:\n");scanf("%s",name6);break;
}
read(&s[0]);//调用读取函数
for(;p<&s[m];p++)
{ if(strcmp(p->title,name5)==0||strcmp(p->author,name6)==0)
{ printf("\n查找图书信息成功!\n");
printf("确认还书请按“1”!");//确认是否还书
scanf("%d",&f);
if(f==1)
{ strcpy(p->borrower_name,"0");
strcpy(p->borrower_gender,"0");
p->borrower_number=0;
p->store++;
printf("书名 编号 作者 价格 数量 借书人 性别 学号\n");
printf("%-10s%-10d%-10s%-10.2f%-10d%-10s%-10s%-10d\n",p->title,p->number,p->author,
p->price,p->store,p->borrower_name,p->borrower_gender,p->borrower_number);
//打印信息
}
break;
}
else {printf("没有该书记录!!");
break;}
}
printf("是否继续还书?\n");
printf("“是”请键入“yes”, “否”请按任意键,返回菜单\n");
scanf("%s",t); //读取是否继续
save(&s[0]); //调用保存函数
}while(strcmp(t,"yes")==0); //判断是否继续还书
}
void save(structbook *p)//保存文件
{ FILE *fp,*fp1;
int i;
if((fp=fopen("tushu.txt","wb"))==NULL)//打开文件并判断是否出错
{ printf("创建文件失败!\n\n");//打印出错提示
getchar(); return;
}
if((fp1=fopen("book.txt","wb"))==NULL)//打开文件并判断是否出错
{ printf("创建文件失败!\n\n");//打印出错提示
getchar(); return;
}
for(i=0;i<m;i++,p++)
if(fwrite(p,sizeof(structbook),1,fp)==0)//向文件写入数据,并判断是否出错
printf("向文件输入数据失败!\n\n");
fprintf(fp1,"%d",m);
fclose(fp);//关闭文件
fclose(fp1);//关闭文件
}
void read(structbook *p)//从文件读取信息模块
{ FILE *fp,*fp1;
int i;
if((fp=fopen("tushu.txt","rb"))==NULL)//打开文件,并判断是否出错
{ printf("出错,请检查文件是否存在,按任意键返回住菜单");//打印出错提示
getchar();
}
if((fp1=fopen("book.txt","rb"))==NULL)//打开文件并判断是否出错
{ printf("创建文件失败!\n\n");//打印出错提示
getchar(); return;
}
fscanf(fp1,"%d",&m);
fclose(fp1);//关闭文件
for(i=0;i<m;i++,p++)
{ fread(p,sizeof(struct book),1,fp);//从文件中读取信息
}
fclose(fp);//关闭文件
}
你把保存的文件地址自己修改一下就可以了。。希望能帮到你
C. 用C++编写图书管理系统(源代码)
小case 我搞定之
look my ID,then jia me
D. 求java编程源代码,关于图书借阅系统的,
/
用户登陆数据库代码:
import java.sql.*;
class Database {
Connection con;
ResultSet rs;
Statement stmt;
public Database() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//
加载
JDBC-ODBC
桥驱动程序
String url = "jdbcdbc:HDB";
con = DriverManager.getConnection(url);
//
连接数据库
HDB //stmt
提供一个创建
SQL
查询、执行查询、得到返回结果
的空间
stmt =
// con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
// ResultSet.CONCUR_READ_ONLY);
} catch (Exception ex) {
System.out.println(ex);
}
}
/*
根据用户名,获取密码
*/
public String getPswd(String name) {
try {
// rs
为执行
SQL
语句所查询的结果赋给结果集对象
rs
rs = stmt.executeQuery("SELECT pswd FROM User WHERE Name = '"
+ name + "'");
rs.last();
//
把
rs
的指针移到最后一行
if (rs.getRow() == 0) {
return null;
} else {
String pswdDB = rs.getString("Pswd");
//
获取
rs
结果集中的
pswd
列的数据
return pswdDB;
}
} catch (Exception e) {
System.out.println(e);
return null;
}
}
/*
增加一行用户名、密码数据
*/
public boolean insertData(String name, String pswd) {
try {
String s = getPswd(name);
if (s == null) {
int rtn = stmt.executeUpdate("INSERT INTO User VALUES('" + name
+ "','" + pswd + "')");
if (rtn != 0)
return true;
} else {
return false;
}
return false;
} catch (Exception et) {
System.out.println(et);
return false;
}
}
}
//
进库数据库代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
class BookDatabase {
Connection con;
ResultSet rs;
Statement stmt;
public BookDatabase() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//
加载
JDBC-ODBC
桥驱动程序
String url = "jdbcdbc:Book";
con = DriverManager.getConnection(url);
//
连接数据库
HDB //stmt
提供一个创建
SQL
查询、执行查询、得到返回结果
的空间
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
} catch (Exception ex) {
System.out.println(ex);
}
}
/*
增加一行用户名、密码数据
*/
public boolean insertData(String id, String name, String where, String
price, String date) {
try {
int rtn = stmt.executeUpdate("INSERT INTO Book VALUES('" + id
+ "','"
+ name + "','" + where + "','" + price + "','" + date
+ "')");
if (rtn != 0) {
return true;
} else {
return false;
}
} catch (Exception et) {
System.out.println(et);
return false;
}
}
/*
* public boolean deleteData(String id){ try{ int rtn =
* stmt.executeUpdate("DELETE FROM Book WHERE id=001" ); if( rtn != 0 ){
* return true; } else{ return false; } } catch(Exception e){
* System.out.println( e ) return false; } } public boolean Select(String
* id){ try{ int rtn = stmt.executeUpdate("SELECT * FROM BookIn WHERE
* id='"+id+"'");
*
* if( rtn != 0 ){ return true; } else{ return false; } } catch(Exception
* e){ System.out.println( e ) return false; } }
*/
}
//
出库数据库代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
E. 急求用C语言编写的图书管理系统源代码!!!
帮做,50微信红包就可以
F. 用C语言编写的"图书馆管理系统"的源代码,删减版
#include <iostream>
#include <iomanip>
#include <string>
//输入/输出文件流类
#include <fstream>
using namespace std;
//最多的读者
const int Maxr=100;
//最多的图书
const int Maxb=100;
//每位读者最多借五本书
const int Maxbor=5;
//读者类,实现对读者的信息的描述
class Reader
{
private:
//删除标记 1:已删 0:未删
int tag;
//读者编号
int no;
//读者姓名
char name[10];
//所借图书
int borbook[Maxbor];
public:
Reader()
{
;
}
//获取姓名
char *getname()
{
return name;
}
//获取删除标记
int gettag()
{
return tag;
}
//获取读者编号
int getno()
{
return no;
}
//设置姓名
void setname(char na[])
{
strcpy(name,na);
}
//设置删除标记 1:已删 0:未删
void delbook()
{
tag=1;
}
//增加读者
void addreader(int n,char *na)
{
tag=0;
no=n;
strcpy(name,na);
for(int i=0;i<Maxbor;i++)
borbook[i]=0;
}
//借书操作
void borrowbook(int bookid)
{
for(int i=0;i<Maxbor;i++)
{
if (borbook[i]==0)
{
borbook[i]=bookid;
return;
}
}
}
//还书操作
int retbook(int bookid)
{
for(int i=0;i<Maxbor;i++)
{
if(borbook[i]==bookid)
{
borbook[i]=0;
return 1;
}
}
return 0;
}
//读出读者信息
void disp()
{
cout << setw(5) << no <<setw(10) << name<<"借书编号:[";
for(int i=0;i<Maxbor;i++)
if(borbook[i]!=0)
cout << borbook[i] << "|";
cout << "]"<<endl;
}
};
//读者类库,实现建立读者的个人资料
class RDatabase
{
private:
//读者记录指针
int top;
//读者记录
Reader read[Maxr];
public:
//构造函数,将reader.txt读到read[]中
RDatabase()
{
Reader s;
top=-1;
//打开一个输入文件
fstream file("reader.txt",ios::in);
while (1)
{
file.read((char *)&s,sizeof(s));
if (!file)break;
top++;
read[top]=s;
}
//关闭 reader.txt
file.close();
}
//删除所有读者信息
void clear()
{
top=-1;
}
//添加读者时先查找是否存在
int addreader(int n,char *na)
{
Reader *p=query(n);
if (p==NULL)
{
top++;
read[top].addreader(n,na);
return 1;
}
return 0;
}
//按编号查找
Reader *query(int readerid)
{
for (int i=0;i<=top;i++)
if (read[i].getno()==readerid &&
read[i].gettag()==0)
{
return &read[i];
}
return NULL;
}
//输出所有读者信息
void disp()
{
for (int i=0;i<=top;i++)
read[i].disp();
}
//读者库维护
void readerdata();
//析构函数,将read[]写到reader.txt文件中
~RDatabase()
{
fstream file("reader.txt",ios::out);
for (int i=0;i<=top;i++)
if (read[i].gettag()==0)
file.write((char *)&read[i],sizeof(read[i]));
file.close();
}
};
void RDatabase::readerdata()
{
char choice;
char rname[20];
int readerid;
Reader *r;
while (choice!='0')
{
cout <<"\n\n\t\t\t读 者 维 护\n\n\n\t\t 1 新 增\n\n\t\t 2 更 改\n\n\t\t 3 删 除\n\n\t\t 4 查 找\n\n\t\t 5 显 示\n\n\t\t 6 全 删\n\n\t\t 0 退 出"<<endl;
cin >> choice;
switch (choice)
{
case '1':
cout << "输入读者编号:";
cin >> readerid;
cout << "输入读者姓名:";
cin >> rname;
addreader (readerid,rname);
break;
case '2':
cout << "输入读者编号:";
cin >> readerid;
r=query(readerid);
if (r==NULL)
{
cout << " 该读者不存在 "<<endl;
break;
}
cout << "输入新的姓名:";
cin >> rname;
r->setname(rname);
break;
case '3':
cout << " 输入读者编号:";
cin >> readerid;
r=query(readerid);
if (r==NULL)
{
cout <<" 该读者不存在" << endl;
break;
}
r->delbook();
break;
case '4':
cout << "读入读者编号:";
cin >> readerid;
r=query(readerid);
if (r==NULL)
{
cout <<"该读者不存在"<< endl;
break;
}
r->disp();
break;
case '5':
disp();
break;
case '6':
clear();
break;
default:cout<<"输入错误,请从新输入:";break;
}
}
}
//图书类,实现对图书的描述,图书的编号,书名,借
private:
//删除标记 1:已删 0:未删
int tag;
//图书编号
int no;
//书名
char name[20];
//是否再架 1:再架 2:已借
int onshelf;
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 book[Maxb];
public:
//构造函数,将book.txt读到book[]中
BDatabase()
{
Book b;
top=-1;
fstream file("book.txt",ios::in);
while (1)
{
file.read((char *)&b,sizeof(b));
if (!file) break;
top++;
book[top]=b;
}
file.close();
}
//全删
void clear()
{
top=-1;
}
//增加图书
int addbook(int n,char *na)
{
Book *p=query(n);
if (NULL==p)
{
top++;
book[top].addbook(n,na);
return 1;
}
return 0;
}
//查找图书
Book *query(int bookid)
{
for (int i=0;i<=top;i++)
if (book[i].getno()==bookid &&book[i].gettag()==0)
{
return &book[i];
}
return NULL;
}
//图书库维护
void bookdata();
void disp()
{
for (int i=0;i<=top;i++)
if (book[i].gettag()==0)
book[i].disp();
}
//析构函数,将book[]写到book.txt文件中
~BDatabase()
{
fstream file("book.txt",ios::out);
for (int i=0;i<=top;i++)
if (book[i].gettag()==0)
file.write((char *)&book[i],sizeof(book[i]));
file.close();
}
};
void BDatabase::bookdata()
{
char choice;
char bname[40];
int bookid;
Book *b;
while (choice!='0')
{
cout <<"\n\n\n\t\t\t图 书 维 护 "<<endl<<endl;
cout<<"\t\t1 新 增\n \t\t2 更 改\n\t\t3 删 除\n\t\t4 查 找\n\t\t5 显 示\n\t\t6 全 删\n\t\t0 退 出"<<endl;
cin >> choice; {
case '1':
cout << "输入图书编号:"<<endl;
cin >> bookid;
cout << "输入图书书名:"<<endl;
cin >> bname;
addbook(bookid,bname);
break;
case '2':
cout << "输入图书编号:"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout << " 该图书不存在 "<<endl;
break;
}
cout << "输入新的书名:"<<endl;
cin >> bname;
b->setname(bname);
break;
case '3':
cout <<" 读入图书编号:"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout <<" 该图书不存在" << endl;
break;
}
b->delbook();
break;
case '4':
cout << " 读入图书编号:"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout <<" 该图书不存在"<< endl;
break;
}
b->disp();
break;
case '5':
disp();
break;
case '6':
clear();
break;
default:cout<<"输入错误,请从新输入:";
}
}
}
//main() 函数的实现,程序的主界面的引导
void main()
{
char choice;
int bookid,readerid;
RDatabase ReaderDB;
Reader *r;
BDatabase BookDB;
Book *b;
while(choice!='0')
{
cout <<endl<<endl<<"\t\t\t 图 书 管 理 系 统\n\n\n";
cout <<"\t\t\t1 借 书\n\n\t\t\t2 还 书 \n\n\t\t\t3 图 书 维 护\n\n\t\t\t4 读 者 维 护\n\n\t\t\t0 离 开"<<endl;
cin >> choice;
switch (choice)
{
case '1':
cout <<" 借书 读者编号:";
cin >>readerid;
cout <<" 图书编号: ";
cin >>bookid;
//按编号查找
r=ReaderDB.query(readerid);
if (NULL==r)
{
cout <<" 不存在该读者,不能借书"<< endl;
break;
}
b=BookDB.query(bookid);
if (b==NULL)
{
cout <<" 不存在该图书,不能借书"<< endl;
break;
}
if (b->borrowbook()==0)
{
cout << " 该图书已借出,不能借书"<< endl;
break;
}
r->borrowbook(b->getno());
break;
case '2':
cout<<"还书\n 读者编号:";
cin >>readerid;
cout << " 图书编号:";
cin >>bookid;
r=ReaderDB.query(readerid);
if (r==NULL)
{
cout <<" 不存在该读者,不能还书" << endl;
break;
}
b=BookDB.query(bookid);
if (b==NULL)
{
cout <<" 不存在该图书,不能还书" <<endl;
break;
}
b->retbook();
r->retbook(b->getno());
break;
case '3':
BookDB.bookdata();
break;
case '4':
ReaderDB.readerdata();
break;
default:cout<<"输入错误,请从新输入:";
}
}
}
G. 《python编程初学者指南》书本中的涉及的源码哪里可以下载
感谢楼上伙伴的无私分享~
虽然已经是5年前的提问了,不过我还是想在这里补充回答一下,虽然书中指定的网址已经发生了变化,但依然有效,输入原网址后会跳转到新的网址。因为网站中包含很多书籍的信息和配套资源,所以需要我们根据书籍的作者或书名或ISBN手动搜索到这本书,
上面页面对应的网址是:
网页链接
不过资源下载起来很慢……建议直接使用楼上的分享~
H. 急求用C语言编写的图书管理系统源代码
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#include<ctype.h>
#define STACK_INIT_SIZE 10
#define OK 1
#define TRUE 1
#define FALSE 0
#define ERROR 0
struct student /*定义学生类型,用于存放借出的书籍*/
{
int carnum;
char lendbook[10];
}student[1000];
struct employ /*定义职工类型*/
{
int employnum;
char employname[15];
int employage;
char employsex[2];
char employleve[10];
long int employtage;
}employ[50];
struct book /*定义书的类型*/
{
int booknum;
char bookname[10];
char bookcreat[10];
int turefalse; /*用于借书和还书模块判断一本书是否借出的条件*/
}book[1000];
struct car /*借书卡的数据类型*/
{
int carnum;
char studentname[10];
int studentclass;
}car[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;fread(&car[i],sizeof(struct car),1,fp)!=0;i++) /*for循环判断卡号是否存在*/
{
if(car[i].carnum==carnum) /*卡号存在,进入下一循环*/
{
n=i;
fclose(fp);
printf("请输入你要还的书的名字\n");
scanf("%s",lendbook);
fp=fopen("record.txt","r");
for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++) /*判断是否借阅了输入的书*/
{
if(strcmp(student[i].lendbook,lendbook)==0) /*借阅了该书,进入下一循环,否则出错显示*/
{
fclose(fp);
fp=fopen("record.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++)
{
if(strcmp(student[i].lendbook,lendbook)==0)
{
continue; /*删除还掉的书的借书记录*/
}
fwrite(&student[i],sizeof(struct student),1,fp2); /*写入原来没还的书的记录*/
}
fclose(fp);
fclose(fp2);
fp=fopen("record.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&student[i],sizeof(struct student),1,fp2)!=0;i++)
{
fwrite(&student[i],sizeof(struct student),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;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) /*将书的记录写入临时文件,防止因为修改信息破坏以前的记录*/
{
if(i==n)
{
book[i].turefalse=1;
fwrite(&book[i],sizeof(struct book),1,fp2); /*将还的书的原来状态设为无人借阅的*/
continue;
}
fwrite(&book[i],sizeof(struct book),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++)
{
fwrite(&book[i],sizeof(struct book),1,fp); /*将临时文件写回*/
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w"); /*清临时文件*/
fclose(fp2);
printf("还书完毕,按任意键返回\n");
getch();
return 1;
}
}
printf("你没有借这样的书,任意键返回\n"); /*出错提示*/
fclose(fp);
getch();
return 0;
}
}
printf("系统没这样的卡,和管理员联系,按任意键返回\n"); /*出错提示*/
fclose(fp);
getch();
}
findbook()
{
FILE *fp;
char bookname[10];
int ture,i;
fp=fopen("book.txt","r");
printf("请输入你要查找的书名\n");
scanf("%s",bookname);
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(bookname,book[i].bookname)==0)
{
if(book[i].turefalse==1)
{
printf("这本书的详细资料是:%d %s %s 此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);
}
else {printf("这本书已经有人借出\n");fclose(fp);return 0;}
fclose(fp);
return FALSE;
}
}
printf("没有你要查询的书籍\n");
fclose(fp);
return FALSE;
}
findbook1()
{
FILE *fp;
char bookcreat[10];
int ture,i;
fp=fopen("book.txt","r");
printf("请输入你要查找的作者名\n");
scanf("%s",bookcreat);
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(bookcreat,book[i].bookcreat)==0)
{
if(book[i].turefalse==1)
{
printf("这本书的详细资料是:%d %s %s 此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);
}
else {printf("这本书已经有人借出\n");fclose(fp);return 0;}
fclose(fp);
return FALSE;
}
}
printf("没有你要查询的书籍\n");
fclose(fp);
return FALSE;
}
lendcount()
{
FILE *fp;
int i,n=0;
fp=fopen("record.txt","r");
for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++)
{
printf("卡号:%d 借出的书籍:%s \n",student[i].carnum,student[i].lendbook);
n=n+1;
}
fclose(fp);
printf("目前共有%d本书借出\n",n);
printf("按任意键\n");
getch();
return n;
}
chabook()
{
char ch5;
do
{
printf("---------------欢迎进入图书查询系统!--------------\n");
printf(" 1:<按书名查找>\n");
printf(" 2:<按作者查找>\n");
printf(" 0:<返回>\n");
printf("请输入0--2,其他输入非法!\n");
scanf("%s",&ch5);
switch(ch5)
{
case '1':findbook();getch();break;
case '2':findbook1();getch();break;
case '0':break;
default:printf("无此操作\n");getch();break;
}
}while(ch5!='0');
return FALSE;
}
lendbook()
{
FILE *fp,*fp2;
int i,n;
int carnum;
printf("请你输入你的卡号\n");
scanf("%d",&carnum);
fp=fopen("car.txt","r");
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++)
{
if(car[i].carnum==carnum)
{
n=i;
fclose(fp);
printf("请输入你要借阅的书的名字\n");
scanf("%s",student[n].lendbook);
fp=fopen("book.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(book[i].bookname,student[n].lendbook)==0)
{
if(book[i].turefalse==0) {printf("对不起,此书有人借出,请借其他书\n");fclose(fp);getch();return;}
else
fclose(fp);
fp=fopen("record.txt","a+");
student[n].carnum=carnum;
fwrite(&student[n],sizeof(struct student),1,fp);
fclose(fp);
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(book[i].bookname,student[n].lendbook)==0)
{
book[i].turefalse=0;
fwrite(&book[i],sizeof(struct book),1,fp2);
continue;
}
fwrite(&book[i],sizeof(struct book),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++)
{
fwrite(&book[i],sizeof(struct book),1,fp);
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w");
fclose(fp2);
printf("借书完毕,按任意键返回\n");
getch();
return;
}
}
printf("不存在这样的书,任意键返回\n");
fclose(fp);
getch();
return;
}
}
printf("你的卡号不存在,请申请新卡,按任意键返回\n");
fclose(fp);
getch();
}
carcount()
{
FILE *fp;
int i,n=0;
fp=fopen("car.txt","r");
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++)
{
printf("第%d张卡<卡号:%d 姓名:%s 班级:%d>\n",i+1,car[i].carnum,car[i].studentname,car[i].studentclass);
n=n+1;
}
fclose(fp);
printf("目前共有%d本书\n",n);
printf("按任意键\n");
getch();
}
delcar()
{
FILE *fp,*fp2;
int i;
int carnum;
char choice;
fp=fopen("car.txt","r");
fp2=fopen("bookl.txt","w");
printf("请输入你要删除的卡号\n");
printf("如果你输入的卡号存在,系统自动删除该信息!如果不存在,系统不做任何改动\n");
scanf("%d",&carnum);
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++)
{
if(car[i].carnum!=carnum)
{
fwrite(&car[i],sizeof(struct car),1,fp2);
}
}
fclose(fp);
fclose(fp2);
printf("是否真的要删除该卡?删除后该书籍的所有信息将无法恢复《Y/N》\n");
scanf("%s",&choice);
if(choice=='y'||choice=='Y')
{
fp=fopen("car.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&car[i],sizeof(struct car),1,fp2)!=0;i++)
{
fwrite(&car[i],sizeof(struct car),1,fp);
}
fclose(fp);
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("按任意键返回\n");
getch();
return;
}
else
{
printf("按任意键返回\n");
getch();
return;
}
}
addcar()
{
FILE *fp;
int i=0;
fp=fopen("car.txt","a+");
printf("请你输入卡号\n");
scanf("%d",&car[i].carnum);
printf("请你输入学生姓名\n");
scanf("%s",car[i].studentname);
printf("请你输入班级\n");
scanf("%d",&car[i].studentclass);
fwrite(&car[i],sizeof(struct car),1,fp);
fclose(fp);
printf("输入完毕,任意键返回\n");
getch();
}
I. c语言程序设计图书馆源代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
typedef int BOOL;
typedef struct bookinfo
{
char number[15];/*产品编号*/
char name[30];/*产品名称*/
float price;/*单价*/
char auther[20];/*作者*/
BOOL isExit;/*存在状态*/
char lendername[20];/*借书人姓名*/
char lendersex[2];/*借书人性别*/
char lendernum[15];/*借书人学号*/
}BOOKINFO;
void menu()
{
printf("\n\n\n\n\n\n\n");
printf("\t\t\t图书管理系统\n");
printf("\t\t\t1:新进图书基本信息的输入\n");
printf("\t\t\t2:显示全部记录\n");
printf("\t\t\t3:根据图书名称查询图书基本信息\n");
printf("\t\t\t4:根据图书名称对撤销的图书信息进行删除\n");
printf("\t\t\t5:按照图书名称从小大到排序\n");
printf("\t\t\t6:统计某价格以上的图书数量\n");
printf("\t\t\t7:列出所有未借出去的图书信息\n");
printf("\t\t\t8:退出\n");
}
void choice_1_input_new()/*输入新进的图书信息*/
{
char choice;
FILE *p;
BOOKINFO newbook;
system("cls");
while(1)
{
printf("输入图书编号:");
gets(newbook.number);
printf("输入图书名称:");
gets(newbook.name);
printf("输入图书单价:");
scanf("%f",&newbook.price);
while(getchar()!='\n');
printf("输入图书的作者:");
gets(newbook.auther);
printf("输入借书人姓名:");
gets(newbook.lendername);
printf("输入借书人性别:");
gets(newbook.lendersex);
printf("输入借书人学号:");
gets(newbook.lendernum);
printf("是否保存该条书目?(Y/N)\n");
if(choice=='Y'||choice=='y')
{
newbook.isExit=1;/*将图书状态设置成1,表示没有借出*/
p=fopen("c:\\bookinfo.data","ab");
fwrite(&newbook,sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n该条书目已添加到c:\\bookinfo.data文件中!\n");
}
else
{
printf("\n本条书目未保存!\n");
}
printf("\n是否继续添加书目?(Y/N)\n");
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
if(choice=='Y'||choice=='y')
continue;
else
break;
}
}
void choice_2_display_all()/*显示全部图书信息*/
{
FILE *p;
int n;
BOOKINFO bookinfo[100];
int booknumber=0;
system("cls");
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
/*booknumber--;使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
booknumber--;
if(booknumber==0)
{
printf("没有任何图书信息!\n\n");
}
else
{
n=0;
printf(" 图书信息如下\n");
printf(" 图书信息 | 借书人信息 \n");
printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n");
while(n<booknumber)
{
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
n++;
}
}
printf("\n\n按任意键回到主菜单!\n");
}
void choice_3_search_according_name()/*根据图书名称显示图书的信息*/
{
char search[20]="";/*search用来存放要查询的书名*/
int n;
FILE *p;
char choice;
BOOKINFO bookinfo[100];
int booknumber=0;
system("cls");
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
while(1)
{
printf("输入要查询的书本名称:");
gets(search);
if(booknumber==0)
{
printf("书库中没有任何信息!\n\n");
printf("按任意键回到主菜单!\n\n");
getch();
break;
}/*if结束*/
else
{
for(n=0;n<booknumber;n++)
if(strcmp(bookinfo[n].name,search)==0)
{
printf("该书的详细信息如下:\n");
printf(" 图书信息 | 借书人信息 \n");
printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n");
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
break;
}
if(n>=booknumber)
printf("没有查找该书的任何信息!\n");
printf("\n\n是否继续查询?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
}/*else结束*/
}/*while(1)结束*/
}
void choice_4_delete_according_name()/*根据图书名称对图书信息进行删除*/
{
char search[20]="";/*search用来存放要删除的书名*/
int n,i;
FILE *p;
char choice;
BOOKINFO bookinfo[100];
int booknumber;
system("cls");
while(1)
{
printf("输入要删除的书本名称:");
gets(search);
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
if(booknumber==0)
{
printf("书库中没有任何信息!\n\n");
printf("按任意键回到主菜单!\n\n");
getch();
break;
}/*if结束*/
else
{
for(n=0;n<booknumber;n++)
if(strcmp(bookinfo[n].name,search)==0)
{
break;
}
if(n>=booknumber)
printf("没有查找该书的任何信息!\n");
else
{
printf("是否确认需要删除该条书目?(Y/N)");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
{
for(i=n;i<booknumber-1;i++)
bookinfo[i]=bookinfo[i+1];
booknumber--;
p=fopen("c:\\bookinfo.data","wb");
for(n=0;n<booknumber;n++)
fwrite(&bookinfo[n],sizeof(BOOKINFO),1,p);
fclose(p);
printf("删除成功!\n");
}
else
printf("\n\n该条书目没有被删除!");
}
printf("\n\n是否继续进行删除操作?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
}/*else结束*/
}/*while(1)结束*/
}
void choice_5_sort_according_name()/*根据图书名称排序*/
{
FILE *p;
int m,n;
BOOKINFO temp;
BOOKINFO bookinfo[100];
int booknumber;
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
system("cls");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
if(booknumber==0)
{
printf("没有任何图书信息!\n\n");
}
else
{
for(m=0;m<booknumber-1;m++)
for(n=m+1;n<booknumber;n++)
if(strcmp(bookinfo[m].name,bookinfo[n].name)>0)
{
temp=bookinfo[m];
bookinfo[m]=bookinfo[n];
bookinfo[n]=temp;
}
p=fopen("c:\\bookinfo.data","wb");
for(m=0;m<booknumber;m++)
fwrite(&bookinfo[m],sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n\n完成排序!\n\n");
}
printf("按任意键回到主菜单!\n");
getch();
}
void choice_6_display_high_price()/*根据价格列出图书信息*/
{
float price;
FILE *p;
int n;
int count=0;
BOOKINFO bookinfo[100];
int booknumber;
system("cls");
printf("请输入价格:");
scanf("%f",&price);
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
if(booknumber==0)
{
printf("没有任何图书信息!\n\n");
}
else
{
for(n=0;n<booknumber;n++)
{
if(bookinfo[n].price>=price)
count++;
}
if(count==0)
printf("书库中没有比%.1f$价格高的图书!",price);
else
{
printf(" 价格高于%.1f$的图书信息如下\n",price);
printf(" 图书信息 | 借书人信息 \n");
printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n");
for(n=0;n<booknumber;n++)
{
if(bookinfo[n].price>=price)
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
}
}
}
printf("\n\n按任意键回到主菜单!\n");
getch();
}
void choice_7_display_according_exitflag()/*根据存在状态列出图书信息*/
{
FILE *p;
int n;
int count=0;
BOOKINFO bookinfo[100];
int booknumber;
system("cls");
booknumber=0;
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
if(booknumber==0)
{
printf("书库中没有任何书目存在!\n");
}
else
{
for(n=0;n<booknumber;n++)
if(bookinfo[n].isExit==1)
count++;
if(count==0)
printf("书库中的书籍全部借出!\n");
else
{
printf("书库中未被借出的图书信息如下:\n\n");
printf(" 图书信息 | 借书人信息 \n");
printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n");
for(n=0;n<booknumber;n++)
if(bookinfo[n].isExit==1)
{
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
}
}
}
printf("\n按任意键返回主菜单!\n");
getch();
}
void main()
{
char choice;
clock_t tm;
FILE *p;
if((p=fopen("c:\\bookinfo.data","rb"))==NULL)
{
p=fopen("c:\\bookinfo.data","wb");
fclose(p);
}
while(1)
{
system("cls");
menu();
choice=getch();
switch(choice)
{
case '1':choice_1_input_new();break;/*输入新进的图书信息*/
case '2':choice_2_display_all();break;/*显示全部图书信息*/
case '3':choice_3_search_according_name();break;/*根据图书名称显示图书的信息*/
case '4':choice_4_delete_according_name();break;/*根据图书名称对图书信息进行删除*/
case '5':choice_5_sort_according_name();break;/*根据图书名称排序*/
case '6':choice_6_display_high_price();break;/*根据价格列出图书信息*/
case '7':choice_7_display_according_exitflag();break;/*根据存在状态列出图书信息*/
case '8':printf("\n\n\t\t\t谢谢使用,再见!\n\t\t\t按任意键退出!\n");getch();return;
default:
printf("\n\n\t\t\t请输入菜单中的数字!(1~8)");
tm=clock();
while(clock()<tm+1800);
break;
}
}
}
J. 我想学习编程需要购买那些书籍
书籍整理如下:
C++开发
1.《C++ Primer》:全面学习C++的必备书籍
2.《Thinking in C++》:了解C++背后的一些机制
3.《深度探索C++对象模型》:深入了解C++,也是学习COM的必经之路
Windows平台
入门
1.《Windows程序设计》:这本书主要讲的是Windows API的使用,是Windows编程入门书籍。上册涉及到的知识基本上就够用了,时间不充裕的话阅读上册即可。
2.《Win32多线程程序设计》:Windows下多线程编程必备
3.《Windows核心编程》:Window平台基础知识:消息机制,内存管理,多线程,动态链接库等
4.《Windows网络编程》:介绍Windows下各种网络协议的开发和并发处理模型。
进阶
1.《深入浅出MFC》:Windows下编程,MFC虽然有些过时,但其机制还是有学习的价值。重点学习书中提到的MFC 6大机制
2.《COM本质论》:COM是Windows构建用户态的重要技术之一,Windows开发必修课,本书对COM的设计动机作了深入阐述
3.《深入解析ATL》:ATL全名Active Templete Library,是用C++的模版封装了COM,这本书主要讲的是对源码分析
4.《WTL White Paper》:WTL源自微软,基于ATL的一套开源模版库,主要用于界面编程和工具类的使用
5.《代码大全》:这边书主要讲的是工程编码规范
高级
1.《深入解析Windows操作系统》:Windows大牛书籍,讲的主要是Windows操作系统的内核原理
调试技术
1.《软件调试》
2.《Windows高级调试》
3.《windows用户态程序高效排错》
Linux平台
Linux内核
1.《Linux Kernel Development》/《Linux内核设计与实现》:Robert Love的着作,不厚的一本书,深入浅出地将Linux内核娓娓道来
Linux使用和Shell编程
1.《sed & awk》/《sed与awk》:sed与awk都是Linux下常用的日志分析利器
Linux编程
1.《Beginning Linux Programming》/《Linux程序设计》:老牌的Linux编程入门书
2.《Advanced Programming in the Unix Environment》/《Unix环境高级编程》:对Unix编程环境做了细致的总结,涵盖了进程间通讯、网络通讯、文件系统等各方面的知识
网络编程
1.《TCP/IP Illustrated, Volume I》/《TCP/IP详解,卷一》:对理解TCP/IP协议的设计理念和协议细节有显着的帮助。
2.《Unix Network Programming》/《Unix网络编程》,卷一、卷二:网络编程方面难以逾越的着作,事无巨细、深入浅出,强烈推荐
对这些书目抱有100%的信心,全部掌握,融会贯通,即可打通奇经八脉,天下无双。
对了,你没有基础最好从c与c++基础开始。找些基础书开始看。
[C语言入门经典(第四版)].(美)霍顿.扫描版,《C++ Primer》就不错。