图书馆管理系统分析

图书馆管理系统分析

图书管理:增加图书、修改图书、删除图书

               借阅管理:查找图书、借阅图书、归还图书

               读者管理:增加读者、删除读者

 

基于c++的应用软件基本架构

 

头文件

using namespace std;

 

数据类1{

public:

         带参构造函数;

         无参构造函数;

         get/set函数;

         一些必要的处理数据函数;

         运算符重载函数;

private:

         基本数据成员;

         数据对象成员;

};

...

操作类1{

public:

         带参/无参构造函数;//完成必要的初始化操作(例如从文件读数据初始化相关的集合对象及其他数据成员,调用菜单函数)

         功能实现函数;

         voidmenu();

         辅助函数;

         voidload();//读文件中的相关数据到集合数据成员

         voidsave();//将更新的数据成员信息写到文件中

         析构函数

private:

         由数据类构成的集合对象;

         其他数据成员;

}

....

 

登录验证类{

public:

         构造函数;//从密码文件读取信息并初始化集合对象

         //1.对用户输入的登录信息结合密码对象进行合法验证

         //2.对合法用户:确定用户具体角色,并生成对应的操作类对象,执行对应操作类功能;

         voidlogin();

private:

         含密码信息的集合对象;

}

 

int main(){

         定义验证类对象;

         调用验证类的login函数;

         return0;

}       

1.  #include <bits/stdc++.h>

2.  using namespace std;  

3.  //首先定义一系列常量  

4.  const int MaxRead=100;//最多的读者  

5.  const int MaxBook=100;//最多的图书  

6.  const int MaxBookRead=5;//每位读者最多借五本书  

7.  //读者类,实现对读者的信息的描述  

8.    

9.  class Reader  

10.{  

11.//定义类的私有成员  

12.private:  

13.    int flag;  //删除标记 1:已删 0:未删  

14.    int no;   //读者编号  

15.    char name[10];  //读者姓名  

16.    int borbook[MaxBookRead];//所借图书  

17.//定义类的公有成员  

18.public:  

19.    Reader() {}//构造函数:作用是初始化的操作  

20.    char *getname()  

21.    {  

22.        return name;   //获取姓名  

23.    }  

24.    int gettag()  

25.    {  

26.        return flag;   //获取删除标记  

27.    }  

28.    int getno()  

29.    {  

30.        return no;   //获取读者编号  

31.    }  

32.    void setname(char na[])            //设置姓名  

33.    {  

34.        strcpy(name,na);  

35.    }  

36.    void delbook()  

37.    {  

38.        flag=1;     //设置删除标记 1:已删 0:未删  

39.    }  

40.    void addreader(int n,char *na)//增加读者  

41.    {  

42.        flag=0;  

43.        no=n;  

44.        strcpy(name,na);  

45.        for(int i=0; i<MaxBookRead; i++)  

46.            borbook[i]=0;  

47.    }  

48.    void borrowbook(int bookid)//借书操作  

49.    {  

50.        for(int i=0; i<MaxBookRead; i++)  

51.        {  

52.            if (borbook[i]==0)  

53.            {  

54.                borbook[i]=bookid;  

55.                return;  

56.            }  

57.        }  

58.    }  

59.    int retbook(int bookid)//还书操作  

60.    {  

61.        for(int i=0; i<MaxBookRead; i++)  

62.        {  

63.            if(borbook[i]==bookid)  

64.            {  

65.                borbook[i]=0;  

66.                return 1;  

67.  

68.            }  

69.        }  

70.        return 0;  

71.    }  

72.    void disp()//读出读者信息  

73.    {  

74.        cout << setw(5) << no <<setw(10) << name<<"借书编号:[";  

75.        for(int i=0; i<MaxBookRead; i++)  

76.            if(borbook[i]!=0)  

77.                cout << borbook[i] << "|";  

78.        cout << "]"<<endl;  

79.  

80.    }  

81.};  

82.  

83.//读者类库,实现建立读者的个人资料  

84.class RDatabase  

85.{  

86.//定义类的私有成员  

87.private:  

88.    int top;       //读者记录指针  

89.    Reader read[MaxRead];//读者记录  

90.//定义类的私有成员  

91.public:  

92.    RDatabase()   //构造函数,将reader.txt读到read[]  

93.    {  

94.        Reader s;  

95.        top=-1;  

96.        fstream file("reader.txt",ios::in);//打开一个输入文件  

97.        while (1)//加入死循环中  

98.        {  

99.            file.read((char *)&s,sizeof(s));  

100.                if (!file)break;  

101.                top++;  

102.                read[top]=s;  

103.            }  

104.            file.close();     //关闭 reader.txt  

105.        }  

106.        void clear()//删除所有读者信息  

107.        {  

108.            top=-1;  

109.        }  

110.        int addreader(int n,char *na)//添加读者时先查找是否存在  

111.        {  

112.            Reader *p=query(n);  

113.            if (p==NULL)  

114.            {  

115.                top++;  

116.                read[top].addreader(n,na);  

117.                return 1;  

118.            }  

119.            return 0;  

120.      

121.        }  

122.        Reader *query(int readerid)//按编号查找  

123.        {  

124.            for (int i=0; i<=top; i++)  

125.                if (read[i].getno()==readerid &&  

126.                        read[i].gettag()==0)  

127.                {  

128.                    return &read[i];  

129.                }  

130.            return NULL;  

131.        }  

132.        void disp()  //输出所有读者信息  

133.        {  

134.            for (int i=0; i<=top; i++)  

135.                read[i].disp();  

136.        }  

137.        void readerdata();//读者库维护  

138.        ~RDatabase()  //析构函数,将read[]写到reader.txt文件中  

139.        {  

140.            fstream file("reader.txt",ios::out);  

141.            for (int i=0; i<=top; i++)  

142.                if (read[i].gettag()==0)  

143.                    file.write((char *)&read[i],sizeof(read[i]));  

144.            file.close();  

145.        }  

146.    };  

147.    void RDatabase::readerdata()  

148.    {  

149.      

150.        char choice;  

151.        char rname[20];  

152.        int readerid;  

153.        Reader *r;  

154.        while (choice!='0')  

155.        {  

156.            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;  

157.            cin >> choice;  

158.            switch (choice)  

159.            {  

160.            case '1':  

161.                cout << "输入读者编号:";  

162.                cin >> readerid;  

163.                cout << "输入读者姓名:";  

164.                cin >> rname;  

165.                addreader (readerid,rname);  

166.                break;  

167.            case '2':  

168.                cout << "输入读者编号:";  

169.                cin >> readerid;  

170.                r=query(readerid);  

171.                if (r==NULL)  

172.                {  

173.                    cout << " 该读者不存在  "<<endl;  

174.                    break;  

175.                }  

176.                cout << "输入新的姓名:";  

177.                cin >> rname;  

178.                r->setname(rname);  

179.                break;  

180.            case '3':  

181.                cout << " 输入读者编号:";  

182.                cin >> readerid;  

183.                r=query(readerid);  

184.                if (r==NULL)  

185.                {  

186.                    cout <<该读者不存在<< endl;  

187.                    break;  

188.                }  

189.                r->delbook();  

190.                break;  

191.            case '4':  

192.                cout << "读入读者编号:";  

193.                cin >> readerid;  

194.                r=query(readerid);  

195.                if (r==NULL)  

196.                {  

197.                    cout <<"该读者不存在"<< endl;  

198.                    break;  

199.                }  

200.                r->disp();  

201.                break;  

202.            case '5':  

203.                disp();  

204.                break;  

205.            case '6':  

206.                clear();  

207.                break;  

208.            default:  

209.                cout<<"输入错误,请从新输入:";  

210.                break;  

211.            }  

212.        }  

213.    }  

214.      

215.    //图书类,实现对图书的描述,图书的编号,书名,借出,还入等  

216.    class Book  

217.    {  

218.    //定义类的私有成员  

219.    private:  

220.        int tag;//删除标记 1:已删 0:未删  

221.        int no;//图书编号  

222.        char name[20];//书名  

223.        int onshelf;//是否再架 1:再架 2:已借  

224.    //定义类的私有成员  

225.    public:  

226.        Book() {}  

227.        char *getname()  

228.        {  

229.            return name;    //获取姓名  

230.        }  

231.        int getno()  

232.        {  

233.            return no;    //获取图书编号  

234.        }  

235.        int gettag()  

236.        {  

237.            return tag;    //获取删除标记  

238.        }  

239.        void setname(char na[])//设置书名  

240.        {  

241.            strcpy(name,na);  

242.        }  

243.        void delbook()  

244.        {  

245.            tag=1;   //删除图书  

246.        }  

247.        void addbook(int n,char *na)//增加图书  

248.        {  

249.            tag=0;  

250.            no=n;  

251.            strcpy(name,na);  

252.            onshelf=1;  

253.        }  

254.        int borrowbook()//借书操作  

255.        {  

256.            if (onshelf==1)  

257.            {  

258.                onshelf=0;  

259.                return 1;  

260.            }  

261.            return 0;  

262.        }  

263.        void retbook()//还书操作  

264.        {  

265.            onshelf=1;  

266.        }  

267.        void disp()//输出图书  

268.        {  

269.            cout << setw(6) << no << setw(18) << name << setw(10)  

270.                 <<(onshelf==1? "在架":"已借") <<endl;  

271.        }  

272.    };  

273.      

274.    //图书库类,实现对图书的维护,查找,删除等  

275.    class BDatabase  

276.    {  

277.    private:  

278.        int top;         //图书记录指针  

279.        Book book[MaxBook]; //图书记录  

280.    public:  

281.        BDatabase()//构造函数,将book.txt读到book[]  

282.        {  

283.            Book b;  

284.            top=-1;  

285.            fstream file("book.txt",ios::in);  

286.            while (1)  

287.            {  

288.                file.read((char *)&b,sizeof(b));  

289.                if (!file) break;  

290.                top++;  

291.                book[top]=b;  

292.            }  

293.            file.close();  

294.        }  

295.        void clear()//全删  

296.        {  

297.            top=-1;  

298.        }  

299.        int addbook(int n,char *na)//增加图书  

300.        {  

301.            Book *p=query(n);  

302.            if (NULL==p)  

303.            {  

304.                top++;  

305.                book[top].addbook(n,na);  

306.                return 1;  

307.            }  

308.            return 0;  

309.        }  

310.        Book *query(int bookid)//查找图书  

311.        {  

312.            for (int i=0; i<=top; i++)  

313.                if (book[i].getno()==bookid &&book[i].gettag()==0)  

314.                {  

315.                    return &book[i];  

316.                }  

317.            return NULL;  

318.        }  

319.        void bookdata();//图书库维护  

320.        void disp()  

321.        {  

322.            for (int i=0; i<=top; i++)  

323.                if (book[i].gettag()==0)  

324.                    book[i].disp();  

325.        }  

326.        ~BDatabase()//析构函数,将book[]写到book.txt文件中  

327.        {  

328.            fstream file("book.txt",ios::out);  

329.            for (int i=0; i<=top; i++)  

330.                if (book[i].gettag()==0)  

331.                    file.write((char *)&book[i],sizeof(book[i]));  

332.            file.close();  

333.        }  

334.    };  

335.    void BDatabase::bookdata()  

336.    {  

337.        char choice;  

338.        char bname[40];  

339.        int bookid;  

340.        Book *b;  

341.        while (choice!='0')  

342.        {  

343.            cout <<"\n\n\n\t\t\t       "<<endl<<endl;  

344.            cout<<"\t\t1        \n \t\t2        \n\t\t3        \n\t\t4        \n\t\t5        \n\t\t6        \n\t\t0   退     "<<endl;  

345.            cin >> choice;  

346.            switch (choice)  

347.            {  

348.            case '1':  

349.                cout << "输入图书编号:"<<endl;  

350.                cin >> bookid;  

351.                cout << "输入图书书名:"<<endl;  

352.                cin >> bname;  

353.                addbook(bookid,bname);  

354.                break;  

355.            case '2':  

356.                cout << "输入图书编号:"<<endl;  

357.                cin >> bookid;  

358.                b=query(bookid);  

359.                if (b==NULL)  

360.                {  

361.                    cout << " 该图书不存在  "<<endl;  

362.                    break;  

363.                }  

364.                cout << "输入新的书名:"<<endl;  

365.                cin >> bname;  

366.                b->setname(bname);  

367.                break;  

368.            case '3':  

369.                cout <<读入图书编号:"<<endl;  

370.                cin >> bookid;  

371.                b=query(bookid);  

372.                if (b==NULL)  

373.                {  

374.                    cout <<该图书不存在<< endl;  

375.                    break;  

376.                }  

377.                b->delbook();  

378.                break;  

379.            case '4':  

380.                cout << "  读入图书编号:"<<endl;  

381.                cin >> bookid;  

382.                b=query(bookid);  

383.                if (b==NULL)  

384.                {  

385.                    cout <<"  该图书不存在"<< endl;  

386.                    break;  

387.                }  

388.                b->disp();  

389.                break;  

390.            case '5':  

391.                disp();  

392.                break;  

393.            case '6':  

394.                clear();  

395.                break;  

396.            default:  

397.                cout<<"输入错误,请从新输入:";  

398.            }  

399.        }  

400.    }  

401.      

402.    //main() 函数的实现,程序的主界面的引导  

403.      

404.    int main(void)  

405.    {  

406.        char choice;  

407.        int bookid,readerid;  

408.        RDatabase ReaderDB;  

409.        Reader *r;  

410.        BDatabase BookDB;  

411.        Book *b;  

412.        while(choice!='0')  

413.        {  

414.            cout <<endl<<endl<<"\t\t\t               \n\n\n";//构造函数:作用是初始化的操作  

415.            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;  

416.            cin >> choice;  

417.            switch (choice)  

418.            {  

419.            case '1':  

420.                cout <<"  借书 读者编号:";  

421.                cin >>readerid;  

422.                cout <<"  图书编号: ";  

423.                cin >>bookid;  

424.                r=ReaderDB.query(readerid);//按编号查找  

425.                if (NULL==r)  

426.                {  

427.                    cout <<"  不存在该读者,不能借书"<< endl;  

428.                    break;  

429.                }  

430.                b=BookDB.query(bookid);  

431.                if (b==NULL)  

432.                {  

433.                    cout <<"  不存在该图书,不能借书"<< endl;  

434.                    break;  

435.                }  

436.                if (b->borrowbook()==0)  

437.                {  

438.                    cout << "  该图书已借出,不能借书"<< endl;  

439.                    break;  

440.                }  

441.                r->borrowbook(b->getno());  

442.                break;  

443.            case '2':  

444.                cout<<"还书\n 读者编号:";  

445.                cin >>readerid;  

446.                cout << "   图书编号:";  

447.                cin >>bookid;  

448.                r=ReaderDB.query(readerid);  

449.                if (r==NULL)  

450.                {  

451.                    cout <<不存在该读者,不能还书<< endl;  

452.                    break;  

453.                }  

454.                b=BookDB.query(bookid);  

455.                if (b==NULL)  

456.                {  

457.                    cout <<"  不存在该图书,不能还书<<endl;  

458.                    break;  

459.                }  

460.                b->retbook();  

461.                r->retbook(b->getno());  

462.                break;  

463.            case '3':  

464.                BookDB.bookdata();  

465.                break;  

466.            case '4':  

467.                ReaderDB.readerdata();  

468.                break;  

469.            default:  

470.                cout<<"输入错误,请从新输入:";  

471.      

472.            }  

473.        }  

474.        return 0;  

475.    }  

 

<br>1引言 3<br>1.1编写目的 3<br>2任务概述 3<br>2.1.1 图书信息存储管理 3<br>2.1.2 读者信息存储管理 4<br>2.1.3 .显示统计结果 4<br>2.1.4.安全控制 4<br>2.2运行环境 4<br>2.3条件与限制 4<br>3数据描述 4<br>3.1静态数据 4<br>3.1.1图书(book): 5<br>3.1.2读者(reader): 5<br>3.1.3图书访问记录(recorder): 5<br>3.1.4系统设置表(configuration): 5<br>3.1.5系统操作员记录表(administer): 5<br>3.2动态数据 5<br>3.3数据库描述 5<br>3.4数据流图 6<br>3.4.1:数据流图: 7<br>3.5数据词典: 8<br>3.5.1数据源点及汇点描述: 8<br>3.5.2加工逻辑词条描述: 8<br>3.5.3数据流名词条描述: 8<br>3.5.4数据文件词条描述: 10<br>3.6读者还书过程: 10<br>3.6.1数据源点及汇点描述: 11<br>3.6.2加工逻辑词条描述: 11<br>3.6.3数据流名词条描述: 11<br>3.6.4数据文件词条描述: 12<br>3.7读者查询浏览过程: 12<br>3.7.1数据源点及汇点描述: 12<br>3.7.2加工逻辑词条描述: 12<br>3.7.3数据流名词条描述: 13<br>4.图书管理员增删改图书: 13<br>4.1管理员信息 13<br>4.1.1数据源点及汇点描述: 13<br>4.1.2加工逻辑词条描述: 14<br>4.1.3数据流名词条描述: 14<br>4.1.4数据文件词条描述: 15<br>5图书管理员增删改读者: 15<br>5.1数据源点及汇点描述: 15<br>5.2加工逻辑词条描述: 15<br>5.3数据流名词条描述: 16<br>5.4数据文件词条描述: 16<br>5.4.1图书管理员查询浏览过程: 16<br>5.4.2数据源点及汇点描述: 16<br>5.4.3加工逻辑词条描述; 16<br>5.4.4数据流名词条描述 17<br>5.5数据文件词条描述; 17<br>5.5.1 17<br>6图书管理系统数据恢复: 18<br>6.1数据源点及汇点描述: 18<br>6.2加工逻辑词条描述: 18<br>7. 图书管理者口令修改: 19<br>7.1数据源点及汇点描述: 19<br>7.2加工逻辑词条描述: 19<br>7.3数据采集 19<br>8.功能需求 20<br>8.1功能划分 20<br>8.1.1 该软件具有如下主要功能: 20<br>8.2功能描述 20<br>8.2.1浏览功能 20<br>8.2.2查询功能 20<br>8.2.3插入功能 20<br>8.2.4修改功能 20<br>8.2.5删除功能 21<br>8.2.6授权功能 21<br>9.性能需求 21<br>9.1数据精确度 21<br>9.2时间特性 21<br>9.3适应性 21<br>10.运行需求 21<br>10.1用户界面 21<br>10.2硬件接口 21<br>10.3软件接口 22<br>10.4故障处理 22<br><br>
项目管理是“管理科学与工程”学科的一个分支,是介于自然科学和社会科学之间的一门边缘学科。 在信息技术刚刚兴起的时候,信息系统还没有作为一个专门的学科独立出来,它更多的只是计算机学科的一个附属,但是,随着信息技术的条约式发展和计算机系统在生产、生活、商务活动中的广泛应用,信息系统作为一个独立的整体逐渐独立出来,并得到了迅速发展,由于信息系统基于计算机技术、系统科学、管理科学以及通信技术等多个学科的交叉学科,因此,信息系统是一个跨专业,面向技术和管理等多个层面,注重将工程化的方法和人的主观分析方法相结合的一门学科。、 目录 1.信息系统项目的背景介绍 5 2.编制项目的可行性研究报告 6 2.1引言 6 2.2现行组织系统概况 6 2.3拟建立的图书馆管理系统 7 2.4经济可行性分析 8 2.5技术可行性分析 9 2.6社会可行性分析 9 2.7可行性研究结论 9 3.图书馆管理系统招标书 9 3.1本次招标项目要求详见附件 9 3.2投标单位及投标文件的要求 9 4.投标书 10 4.1报价书 10 4.2资质文件 10 4.3投标单位情况表 11 4.4主要工程业绩 11 4.5项目领导小组 11 4.6工程组织设计 11 4.7售后服务体系及人员培训计划 12 5.项目章程 13 5.1文档简介 13 5.2 项目综述 13 5.3初步项目实施计划 15 6.项目工作分解结构(WBS) 19 6.1项目工作的结构分解图 19 6.2项目工作分解结构轮廓图 19 7.设计项目团队内部的组织结构 20 8.绘制该团队的职责分配矩阵 22 9.设计团队成员的考核体系 22 9.1绩效考评管理的分析 22 9.2 绩效考评的具体方法 24 10.项目的文档管理规范 30 10.1设有专职文档管理负责人 30 10.2强调文档说明和修改记录 31 10.3文档统一格式定义 31 10.4文档内容规范 31 10.5文档存储结构 31 11.对该项目的干系人进行分析 32 11.1客户分析 32 11.2项目经理的分析 32 11.3项目分包商的分析 32 11.4项目发起人分析 32 12.对该项目的范围进行调整并进行相应的变更控制 32 12.1项目范围变更 32 12.2变更理由 33 12.3变更造成的影响 33 12.4变更控制 33 13.对该项目的进度和成本进行一定调整并进行相应的变更控制 33 13.1问题的提出 33 13.2图书馆管理系统开发项目成本的组成及影响因素分析 33 13.3软件开发项目成本控制存在的主要问题 34 13.4软件开发项目成本控制的策略分析 35 14.项目进度调整与变更控制 36 14.1影响软件开发项目进度的因素 36 14.2项目进度控制的目的 39 14.3软件开发项目常用进度控制措施 40 15.对项目的风险进行识别、分析和应对 42 15.1 风险的识别 43 15.2 风险的分析 43 15.3 风险的应对 43 16.建立项目的运行管理制度 45 16.1 项目成立 45 16.2工程师项目期间行为规范 45 16.3项目经理的职责 46 16.4项目计划 47 16.5项目周报 47 16.6项目执行的协调 47 16.7项目执行的考核 48 16.8项目实施过程中项目组定期提交的文档 48 17.撰写科研技能训练报告的心得体会 49 附件: 50 1.系统软件总体要求 50 2. 质量、技术要求 51
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值