当前位置:首页 >> 计算机软件及应用 >> C语言课程设计报告-图书管理系统

C语言课程设计报告-图书管理系统


课程设计报告
图书馆管理系统

目 录
1、题目与要求 .......................................................................................... 2 2、系统总体设计(要给出必要的文字说明及必要的图示).............. 3 2.1 功能需求分析(明确选题的功能需求) ......................................... 3 2.2 系统功能模块划分(要给出系统功能模块图) ............................ 4 3、详细设计 .............................................................................................. 4 3.1 重要数据的数据结构设计(即结构体的声明、变量的定义、文件) 4

3.2 函数的规划和设计(即根据分析需要设计哪些函数及其之间的调用关系) 5 3.3 主控模块(main 函数)的流程分析与设计(要画出主函数的流程图) 6 3.4 主要功能模块的流程分析与设计(分别要画出各主要功能模块实现的流程图) .................................................................................................................... 7 4、课程设计小结 .................................................................................... 11 4.1 运行结果 .......................................................................................... 11
1

4.2 设计中的难点及其解决方法 ....................................................................... 18

4.3

不足之处……………………………………………………………………………………..

19

5、小组人员分工说明(明确各个组员的具体分工及实际完成情况)19 评语及成绩 .............................................................................................. 20 6、附录(源代码)?????????????????????21

2

1、题目与要求(标题的字体格式、段落格式照此,以下同!)
题目:图书馆管理系统 要求:能够完成图书馆日常操作,数据要能够保存,能够随时取出,并在任何操作后都能保持信 息完整性,图书的原始数据需保存到磁盘文件中。

2、系统总体设计(要给出必要的文字说明及必要的图示)
主要分为四大部分: 1、图书查找(包括按书名或作者查找) 2、借阅图书 3、归还图书 4、管理系统(包括添加图书、修改图书、删除图书、图书统计、学生管理、职工管理等)

2.1 功能需求分析(明确选题的功能需求)

具体功能:
①图书查找
? ? ? 按书名查找。 按作者查找。 借书 ? ? ? ? ? ? ? ? ? ? 判断所借书籍号是否存在,若不存在重新输入书籍号。 判断该借书证号是否存在,若不存在重新输入借书证号(即办卡功能) 。 判断该书籍是否已借出,若是则不允许执行借书操作。 借书处理包括在“借还书登记”中增加该借书情况,在该图书信息中加上“已借”标记。 判断所借书是否存在,若不存在重新输入书籍。 判断该书是否已借出,若不是则不允许执行还书操作。 借书处理包括在“借还书登记”中增加该还书情况,在该图书信息中加上“未借”标记。

②图书借还

还书

③管理系统:
添加图书:增加新的图书,同时需检查新书的图书编号是否在原图书当中存在,若是则应取 消添加并提示重新输入。 删除图书资料:通过编号查询该图书,若找到则允许删除,否则提示无该图书信息。删除对 象包括该图书资料以及“借还书登记”中的相关记录。
3

? ? ? ?

删除图书资料:通过编号查询该图书,若找到则允许删除,否则提示无该图书信息。删除对 象包括该图书资料以及“借还书登记”中的相关记录。 图书统计:统计图书馆里存有多本图书。 学生管理:办理借书卡,统计有多少人有该图书馆的借阅卡,取消在该图书馆借阅图书,查 看有多图书被借出。 职工管理:增加该图书馆管理员工,除掉某员工,员工调职修改资料,统计员工人数等。

2.2 系统功能模块划分(要给出系统功能模块图)

图书管理系统
图图书查找
按 作 者 查 询 按 书 名 查 询
申 请 办 卡 删 除 卡 号

借书

还书

管理系统

学 生 管 理

添 加 图 书

删 除 图 书

图 书 统 计

职 工 管 理

修 改 图 书

图 书 统 计

卡 号 统 计

增 加 员 工

删 除 员 工

修 改 员 工

统 计 员 工

3、详细设计
3.1 重要数据的数据结构设计(即结构体的声明、变量的定义、文件) struct student /*定义学生类型,用于存 放借出的书籍*/ { int carnum; char lendbook[10]; }student[1000]; struct employ /*定义职工类型*/ {
4

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.txt 借阅卡文件:car.txt 借阅信息文件:record.txt 职工信息文件:employ.txt 修改文件:bookl.txt

断一本书是否借出的条件*/ }book[1000]; struct car /*借书卡的数据类型*/ { int carnum; char studentname[10]; int studentclass; }car[100];

3.2 函数的规划和设计(即根据分析需要设计哪些函数及其之间的调用关系) 主要设计的函数有: 添加图书函数 addbook() 删除图书函数 delbook() 图书查询函数 chabook()、findbook()、findbook1() 图书统计函数 bookcount() 办卡函数 addcar() 删除卡函数 delcar() 卡号统计函数 carcount() 借书函数 lendbook()
5

借出图书统计函数 lendcount() 还书函数 huanbook() 修改员工资料函数 changemploy() 删除员工函数 delemploy() 添加员工函数 addemploy() 员工统计函数 employcount() 其中有调用关系的有: 1、 主函数 main(): 查找图书函数 chabook()、 借书函数 lendbook()、 添加图书函数 addbook() 、删除图书函数 delbook()、修改图书函数 changebook()、图书统计函数 bookcount() 、 修 改 员 工 资 料 函 数 changemploy() 、 删 除 员 工 函 数 delemploy() 、 添 加 员 工 函 数 addemploy()、员工统计函数 employcount()、办卡函数 addcar()、删除卡函数 delcar()、 卡号统计函数 carcount()、借出图书统计函数 lendcount()。 2、查找图书函数 chabook():按书名查找函数 findbook()、按作者查找函数 findbook1()。

3.3 主控模块(main 函数)的流程分析与设计(要画出主函数的流程图)

开始

Main 函数流程
输入 i y I=0 N I=1 N I=2 N I=3 N I=4 还书 N y 管理系统 借阅图书 y y 查阅图书 y

结束
6

主函数主要分为 4 个部分的功能(查阅图书、借阅图书、管理系统、还书)和一个退出系统的选择,分 别用 i 的值判断其功能。当 i=0 时,为退出系统;当 i=1 时,为查阅图书;当 i=2 时,为借阅图书;当 i=3 时,为管理系统,当 i=4 时,为还书功能。

3.4 主要功能模块的流程分析与设计(分别要画出各主要功能模块实现的流程图) 主要的功能模块有:管理流程、职工管理、学生管理、图书查找、借书流程、还书流程
管理系统

管理系统
输入 i Y I=0 N I=1 N I=2 N I=3 N I=4 N I=5 N I=6
学生管理 修改图书资料

Y

Y
添加图书

Y

删除图书

Y

Y

书籍统计

Y

职工管理

结束
7

职工管理

职工管理
输入 i

I=0 N I=1 N I=2 N I=3 N I=4 N 统计员工 Y 修改员工 Y 删除员工 Y 增加员工 Y

结束

查阅图书

图书查找
输入 i Y I=0 N I=1 N I=2 N 按作者查找 按书名查找 Y Y

结束

8

还书流程图
还书

输 入 书编 号 kkk

Kkk 是否 存在 Y

N

N Kkk 是否 借出 Y

该书没借出

还书登记

结束

9

借书流程图

借书
N Ch=y or ch=Y 输 入 书编 号 kkk 输入 ch 判断是否重输 N Kkk 是否存 在 Y Y kkk 是 否 借出 N 登记借书 该书已借出 Y

结束

10

学生管理

学生管理
输入 i

I=0 N I=1 N I=2 N I=3 N I=4 N 卡号统计 Y 借书统计 Y 删除卡号 Y 申请新卡 Y

结束

4、课程设计小结
4.1 运行结果如下:

11

4.2 设计中的难点及其解决方法 这个系统设计中,主要的难点在于要两个方面,一是设计的对象分为两个方面(面向书 馆的管理方面和学生的借阅方面) ,二是历史查询的功能实现比较困难复杂。针对第一个问题,我 们设计了书馆和借阅人这两个方面的结构体,分别实现不同的功能。针对第二个问 题,我们主要以多方面的查询来实现这一功能的。 此外,我们在借阅图书这个模块消耗了很多时间和人力,一开始总是运行不了,分析代码是没 有问题的,可是就是无法实现功能。后来我们发现,主要是办卡功能被我们弄进去了,以至于借书 的记录无法保存。所以我们就将办卡的功能放到图书管理那部分。

4.3 不足之处 首先,我们设计的界面不够美观整齐,本来想弄出表格的形式,但由于时间的关系,无法 具体完善。其次,这个系统中,部分功能的实现不够完善,缺乏人性化。最后,我们认为这个系统 的的功能不够具体,缺少一些实用性的功能。而且,我们的系统运行繁琐,不够明朗,也没有使用 清屏的功能,界面显得罗嗦。查询功能方面也不具人性化。

5、小组人员分工说明(明确各个组员的具体分工及实际完成情况) 学号 姓名 分工及完成情况

12

评语及成绩
指导教师评语:

指导教师签名: 2011 年 小组答辩成绩 学 号 姓 名 第 1 阶段成 第 2 阶段成 绩(30%) 绩(60%) 平时成绩 (10%) 最终 成绩 月 日

课程 设计 成绩 评定

1 31

附录源代码如下:
#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;

2 31

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++) /*将书的记录写入临时文件,防止

3 31

因为修改信息破坏以前的记录*/ { 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");

4 31

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);

5 31

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;

6 31

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) \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++) { {printf(" 对 不 起 , 此 书 有 人 借 出 , 请 借 其 他 书

7 31

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(" n=n+1; } fclose(fp); printf("目前共有%d 本书\n",n); printf("按任意键\n"); getch(); } delcar() { FILE *fp,*fp2; int i; int carnum; char choice; 第 %d 张 卡 < 卡 号 : %d 姓 名 : %s 班 级:%d>\n",i+1,car[i].carnum,car[i].studentname,car[i].studentclass);

8 31

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;

9 31

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(); } changemploy() { FILE *fp,*fp2; char employname[10],choice; int i; fp=fopen("employ.txt","r"); fp2=fopen("bookl.txt","w"); printf("请你输入要修改的职工的名字\n"); scanf("%s",employname); for(i=0;fread(&employ[i],sizeof(struct employ),1,fp)!=0;i++) { if(strcmp(employ[i].employname,employname)==0) { printf("你所要修改的职工的资料如下,请选择你要修改的内容\n"); printf("< 职 工 号 :%d 职 工 名 : %s 年 龄 : %d 性 别 : %s 学 历 : %s 工 资:%d>\n",employ[i].employnum,employ[i].employname,employ[i].employage,employ[i].employsex, employ[i].employleve,employ[i].employtage); printf("2:修改职工名\n"); printf("3:修改职工年龄\n"); printf("4:修改职工工资\n"); printf("5:修改职工学历\n"); printf("请输入 1-5:"); scanf("%s",&choice); switch(choice) { case '1': { printf("请输入新的职工号\n"); scanf("%d",&employ[i].employnum); fwrite(&employ[i],sizeof(struct employ),1,fp2); }break;

10 31

case '2': { printf("请输入新的职工姓名\n"); scanf("%s",employ[i].employname); fwrite(&employ[i],sizeof(struct employ),1,fp2); }break; case '3': { printf("请输入新的年龄\n"); scanf("%d",&employ[i].employage); fwrite(&employ[i],sizeof(struct employ),1,fp2); }break; case '4': { printf("请输入新的职工工资\n"); scanf("%d",&employ[i].employtage); fwrite(&employ[i],sizeof(struct employ),1,fp2); }break; case '5': { printf("请输入新的职工学历\n"); scanf("%s",employ[i].employleve); fwrite(&employ[i],sizeof(struct employ),1,fp2); } default:printf("没有这样的操作");break; } continue; } fwrite(&employ[i],sizeof(struct employ),1,fp2); } fclose(fp); fclose(fp2); fp=fopen("employ.txt","w"); fp2=fopen("bookl.txt","r"); for(i=0;fread(&employ[i],sizeof(struct employ),1,fp2)!=0;i++) { fwrite(&employ[i],sizeof(struct employ),1,fp); } fclose(fp); fclose(fp2); fp2=fopen("bookl.txt","w"); fclose(fp2); printf("按任意键返回\n");

11 31

getchar(); return; } delemploy() { FILE *fp,*fp2; int i; char employname[10],choice; fp=fopen("employ.txt","r"); fp2=fopen("bookl.txt","w"); printf("请输入你要删除的职工名\n"); printf("如果你输入的职工存在,系统自动删除该信息!如果不存在,系统不做任何改动\n"); scanf("%s",employname); for(i=0;fread(&employ[i],sizeof(struct employ),1,fp)!=0;i++) { if(strcmp(employname,employ[i].employname)!=0) { fwrite(&employ[i],sizeof(struct employ),1,fp2); } } fclose(fp); fclose(fp2); printf("是否真的要删除该职工信息?删除后的所有信息将无法恢复《Y/N》\n"); scanf("%s",&choice); if(choice=='y'||choice=='Y') { fp=fopen("employ.txt","w"); fp2=fopen("bookl.txt","r"); for(i=0;fread(&employ[i],sizeof(struct employ),1,fp2)!=0;i++) { fwrite(&employ[i],sizeof(struct employ),1,fp); } fclose(fp); fclose(fp2); fp2=fopen("bookl.txt","w"); fclose(fp2); printf("按任意键返回\n"); getch(); return TRUE; } else {

12 31

printf("按任意键返回\n"); getch(); return FALSE; } } employcount() { FILE *fp; int i,n=0; fp=fopen("employ.txt","r"); for(i=0;fread(&employ[i],sizeof(struct employ),1,fp)!=0;i++) { printf(" 第%d 职工的信息如下: \n<职工号:%d 职工名:%s 年龄:%d 性别:%s 学历:%s 工 资:%d>\n",n+1,employ[i].employnum,employ[i].employname,employ[i].employage,employ[i].employ sex,employ[i].employleve,employ[i].employtage); n++; } fclose(fp); printf("目前共有%d 个职工\n",n); printf("按任意键返回\n"); } addemploy() { FILE *fp; char choice='y'; int i=1; fp=fopen("employ.txt","a+"); while(choice=='y'||choice=='Y') { printf("请你输入职工号码\n"); scanf("%d",&employ[i].employnum); printf("请你输入职工名\n"); scanf("%s",employ[i].employname); printf("请输入职工年龄\n"); scanf("%d",&employ[i].employage); printf("请你输入性别\n"); scanf("%s",employ[i].employsex); printf("请你输入职工的学历水平\n"); scanf("%s",employ[i].employleve); printf("请输入职工的工资\n"); scanf("%d",&employ[i].employtage);

13 31

fwrite(&employ[i],sizeof(struct employ),1,fp); printf("是否要输入下个职工信息?\n"); scanf("%s",&choice); } printf("按任意键返回\n"); fclose(fp); } addbook() { FILE *fp; int i=0; char choice='y'; fp=fopen("book.txt","a+"); while(choice=='y'||choice=='Y') { printf("请你输入第%d 本书的序号\n",i+1); scanf("%d",&book[i].booknum); printf("请你输入书名\n"); scanf("%s",book[i].bookname); printf("请你输入书的作者\n"); scanf("%s",book[i].bookcreat); printf("请设为 1 或 0,1 代表书还没人借,0 表示书已经借出,设其他值,程序运行时无法得出正常 结果\n"); printf("请你设定书的状态\n"); scanf("%d",&book[i].turefalse); fwrite(&book[i],sizeof(struct book),1,fp); printf("是否要输入下本书\n"); scanf("%s",&choice); } fclose(fp); } bookcount() { FILE *fp; int i,n=0; fp=fopen("book.txt","r"); for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) { if(book[i].booknum!=0&&strlen(book[i].bookname)!=0&&strlen(book[i].bookcreat)!=0) { printf(" n=n+1; 第 %d 本 书 < 序 号 : %d 书 名 : %s 作 者 : %s 状 态:%d>\n",i+1,book[i].booknum,book[i].bookname,book[i].bookcreat,book[i].turefalse);

14 31

} } fclose(fp); printf("目前共有%d 本书\n",n); printf("按任意键\n"); } delbook() { FILE *fp,*fp2; int i; char bookname[10],choice; fp=fopen("book.txt","r"); fp2=fopen("bookl.txt","w"); printf("请输入你要删除的书名\n"); 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) { fwrite(&book[i],sizeof(struct book),1,fp2); } } fclose(fp); fclose(fp2); printf("是否真的要删除该书籍?删除后该书籍的所有信息将无法恢复《Y/N》\n"); scanf("%s",&choice); if(choice=='y'||choice=='Y') { 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); fp2=fopen("bookl.txt","w"); fclose(fp2); printf("按任意键返回\n"); getch(); return; }

15 31

else { printf("按任意键返回\n"); getch(); return; } } changebook() { FILE *fp,*fp2; char bookname[10],choice; int i; fp=fopen("book.txt","r"); fp2=fopen("bookl.txt","w"); printf("请你输入要修改的书籍的书字\n"); scanf("%s",bookname); for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) { if(strcmp(book[i].bookname,bookname)==0) { printf("你所要修改的书的资料如下,请选择你要修改的内容\n"); printf(" 序 号 : 〈 %d 〉 书 名 : 〈 %s 〉 作 者 : 〈 %s 〉 \n",book[i].booknum,book[i].bookname,book[i].bookcreat); printf("1:修改书的序号\n"); printf("2:修改书名\n"); printf("3:修改作者\n"); printf("请输入 1-3:"); scanf("%s",&choice); switch(choice) { case '1': { printf("请输入新的序号\n"); scanf("%d",&book[i].booknum); fwrite(&book[i],sizeof(struct book),1,fp2); }break; case '2': { printf("请输入新的书名\n"); scanf("%s",book[i].bookname); fwrite(&book[i],sizeof(struct book),1,fp2); }break; case '3':

16 31

{ printf("请输入新的作者\n"); scanf("%s",book[i].bookcreat); fwrite(&book[i],sizeof(struct book),1,fp2); }break; defaut:printf("没有这样的操作");break; } 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(fp2); fp2=fopen("bookl.txt","w"); fclose(fp2); printf("按任意键返回\n"); getchar(); return; } main() { char ch1,ch2,ch3,ch4,ch5; do { printf("**************图书馆管理系统:***************\n"); printf("* printf("* printf("* printf("* printf("* printf("* printf("* printf("请输入 0--4\n"); scanf("%s",&ch1); switch(ch1) 0:<退出> 3:<管理系统> 4:<还书> 1:<查阅图书> 2:<借阅图书> *\n"); *\n"); *\n"); *\n"); *\n"); *\n"); *\n");

printf("********************************************\n");

17 31

{ case '1':chabook();break; case '2':lendbook();;break; case '3':{ do { printf("---------------欢迎进入管理系统!---------------\n"); printf("| printf("| printf("| printf("| printf("| printf("| 1:<增加图书> 3:<修改图书资料> 4:<书籍统计> 5:<职工管理系统> 6:<学生管理系统> 0:<返回> |\n"); |\n"); |\n"); |\n"); |\n"); |\n"); |\n"); printf("| 2:<删除图书>

printf("-----------------------------------------------\n"); printf("请输入 0--6,其他输入非法!\n"); scanf("%s",&ch2); switch(ch2) { case '1':addbook(); break; case '2':delbook();break; case '3':changebook();break; case '4':bookcount();getch();break; case '5':{do { printf("---------------欢迎进入职工管理系统!--------------\n"); printf("| printf("| printf("| printf("| printf("| 1:<增加员工> 2:<删除员工> 3:<修改员工资料> 4:<员工统计> 0:<返回> |\n"); |\n"); |\n"); |\n"); |\n");

printf("-------------------------------------------------\n"); printf("请输入 0--4,其他输入非法!\n"); scanf("%s",&ch3); switch(ch3) { case '1':addemploy();getch();break; case '2':delemploy();break; case '3':changemploy();break; case '4':employcount();getch();break; case '0':break; default:printf("无此操作\n");getch();break;

18 31

} }while(ch3!='0');}break; case '6':{ do { printf("---------------欢迎进入学生管理系统!--------------\n"); printf(" \t\t1:<申请新卡>\n"); printf("\t\t 2:<删除卡号>\n"); printf(" \t\t3:<借书统计>\n"); printf(" \t\t4:<卡号统计>\n"); printf(" \t\t0:<返回>\n"); printf("----------------------------------------------------\n"); printf("请输入 0--4,其他输入非法!\n"); scanf("%s",&ch4); switch(ch4) { case '1':addcar();break; case '2':delcar();break; case '3':lendcount();break; case '4':carcount();break; case '0':break; default:printf("无此操作\n");getch();break; } }while(ch4!='0');}break; case '0':break; default:printf("无此操作\n");getch();break; } }while(ch2!='0');}break; case '4':huanbook();break; case '0':break; default:printf("无此操作\n");getch();break; } }while(ch1!='0'); }

19 31


更多相关文档:

c语言程序设计报告 图书管理系统

c语言程序设计报告 图书管理系统_理学_高等教育_教育专区。中国地质大学 本科生课程论文封面 课程名称 c 语言课程设计 教师姓名 樊媛媛 本科生姓名 本科生学 本科生...

c语言课程设计报告·图书管理系统

c语言课程设计报告·图书管理系统_理学_高等教育_教育专区 暂无评价|0人阅读|0次下载|举报文档 c语言课程设计报告·图书管理系统_理学_高等教育_教育专区。2013.07...

C语言课程设计图书管理系统

C 语言课程设计 语言课程设计 姓名: 姓名:郭献安 班级:054101-13 班级:054101学号: 学号:20101001871 图书管理系统》 《图书管理系统》目录 题目要求及能实现的...

c语言课程设计报告-图书管理系统

c语言课程设计报告-图书管理系统_工学_高等教育_教育专区 暂无评价|0人阅读|0次下载|举报文档c语言课程设计报告-图书管理系统_工学_高等教育_教育专区。湖北文理...

C语言图书管理系统程序设计报告

C语言图书管理系统程序设计报告_人力资源管理_经管营销_专业资料。目 录 一、...2)课程设计为学生提供了一个既动手又动脑,独立实践的机会, 将课本上的理论知识...

C语言课程设计--图书管理系统

C语言课程设计--图书管理系统_工学_高等教育_教育专区 暂无评价|0人阅读|0次下载|举报文档 C语言课程设计--图书管理系统_工学_高等教育_教育专区。#include <...

C语言图书管理系统课程设计报告[1]

C语言图书管理系统课程设计报告[1]_管理学_高等教育_教育专区。第三章 图书管理系统的设计与实现 3.1 系统的需求分析图书登记管理系统作为一个应用软件将为学校的...

C语言课程设计报告—图书信息管理系统

C 语言课程设计报告 图书信息管理系统设计 C 语言程序设计 编程实践是学习 C 语言程序设计的一重要环节,上机实习和课程设计是 提高同学们程序设计能力的有效途径,...

C语言课程设计---图书信息管理系统报告

课程设计报告 课程名称 课题名称 C 语言程序设计 图书信息管理系统 专班学姓 业级号名 机械电子 1101 班 指导教师 2012 年 12 月 19 日 湖南工程学院 课程设...

C语言图书管理系统课程设计报告.张真

C语言图书管理系统课程设计报告.张真_工学_高等教育_教育专区。C语言图书管理系统课程设计报告.C 语言课程设计题 系专班姓学地目: 图书管理系统 别: 数学与统计...
更多相关标签:
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:zhit325@126.com