图书管理系统(含源代码)c语言_数据结构课程设计报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数据结构课程设计报告”。
数据结构大作业 121279044 伍杨
数据结构大作业 图书管理系统
工程管理 121279044 伍杨
目录一、二、三、题目要求...................................................................2 总体设计...................................................................2 编码实现...................................................................3 1)定义图书结构体.......................................................3 2)登记操作...............................................................4 3)查看操作...............................................................8 4)删除操作.............................................................11 5)Main函数...........................................................20四、五、六、调试与测试..............................................................26 五心得体会..............................................................28 用户手册.................................................................28
数据结构大作业 121279044 伍杨
一、题目要求
1)目的要求
本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成管理系统设计,以及C语言算法的掌握,并能最终实现本系统的功能要求,通过这个程序可以学习到以前调试短程序没有的的经验。2)题目要求
实现图书管理信息系统的设计。要求实现图书添加、显示全部图书、查询、借阅和归还。主要考查利用文件的操作!
二、总体设计
数据结构大作业 121279044 伍杨
三、编码实现
1)定义图书结构体
struct book{
char bookname[20];
//书名
int NO;
//书编号
char type[20];
//类型
int date;
//到书日期 };struct person{
char name[10];
//姓名
char claes[20];
//班级
int number;
//学号
char telephone[12];
//联系电话
int NO;
//书编号
char bookname[20];
//书名
int borrowdate;
//借书日期
int returndate;
//还书日期
数据结构大作业 121279044 伍杨
2)登记操作
void new_book(){ FILE *fp;struct book b;//登记新书
int i,j;
printf(“请朱老师输入此次收到的书本总数:”);if((fp=fopen(“shuku.txt”,“a”))==NULL){ printf(“File open error!n”);exit(0);}
scanf(“%d”,&i);
for(j=0;j
printf(“请朱老师输入书名:”);scanf(“%s”,b.bookname);fprintf(fp,“%s”,b.bookname);printf(“请朱老师输入书编号:”);scanf(“%d”,&b.NO);fprintf(fp,“
%d”,b.NO);printf(“请朱老师输入类型:”);scanf(“%s”,b.type);
数据结构大作业 121279044 伍杨
}
} fprintf(fp,“
%s”,b.type);printf(“请朱老师输入到书日期:”);scanf(“%d”,&b.date);fprintf(fp,“
%d”,b.date);if(fclose(fp)){
} printf(“Can not close the file!n”);exit(0);void new_person()
{
FILE *fp;struct person p;char choice;
//登记借书
if((fp=fopen(“jieshujilu.txt”,“a”))==NULL){ printf(“File open error!n”);exit(0);}
数据结构大作业 121279044 伍杨
printf(“请朱老师输入借书人姓名:”);scanf(“%s”,p.name);fprintf(fp,“%s”,p.name);printf(“请朱老师输入借书人班级:”);scanf(“%s”,p.claes);fprintf(fp,“
%s”,p.claes);printf(“请朱老师输入借书人学号:”);scanf(“%d”,&p.number);fprintf(fp,“
%d”,p.number);printf(“请朱老师输入借书人联系电话:”);scanf(“%s”,p.telephone);fprintf(fp,“
%s”,p.telephone);printf(“请朱老师输入书编号:”);scanf(“%d”,&p.NO);fprintf(fp,“
%d”,p.NO);printf(“请朱老师输入书名:”);scanf(“%s”,p.bookname);fprintf(fp,“
%s”,p.bookname);printf(“请朱老师输入借书日期:”);scanf(“%d”,&p.borrowdate);fprintf(fp,“
%d”,p.borrowdate);
数据结构大作业 121279044 伍杨
printf(“请朱老师输入还书日期:”);scanf(“%d”,&p.returndate);fprintf(fp,“
%d”,p.returndate);printf(“nt您想继续吗?(y/n)”);scanf(“ %c”,&choice);if(choice=='Y'||choice=='y'){
} system(“cls”);new_person();if(fclose(fp)){
} printf(“Can not close the file!n”);exit(0);}实现程序对文件的读取 void Read(){
int i=0;int j=0;ifstream in(“Libra.txt”,ios::out);in>>i;
数据结构大作业 121279044 伍杨
nt;
} all=i;if(i>0&&i
in>>data[j].id>>data[j].name>>data[j].type>>data[j].status>>data[j].coufor(j=1;j
3)查看操作
v void see_book(){
FILE *fp;long NO;char bookname[20];char type[20];long date;//查看书库记录
数据结构大作业 121279044 伍杨
} if((fp=fopen(“shuku.txt”,“r”))==NULL){
} printf(“File open error!n”);exit(0);while(!feof(fp)){ fscanf(fp,“%s%ld%s%ld”,bookname,&NO,type,&date);printf(“%-10s %-10ld %-10s %ldn”,bookname,NO,type,date);};if(fclose(fp)){
} printf(“Can not close the file!n”);exit(0);void see_person(){ //查看所有借书记录
数据结构大作业 121279044 伍杨
FILE *fp;char name[10];
char claes[20];
int number;char telephone[20];
int NO;
char bookname[20];
int borrowdate;
int returndate;
fscanf(fp,“%s %s %ld %s %ld %s %ld %ld”,name,claes,&number,telephonwhile(!feof(fp)){ if((fp=fopen(“jieshujilu.txt”,“r”))==NULL){
} printf(“File open error!n”);exit(0);e,&NO,bookname,&borrowdate,&returndate);printf(“%-5s %-5s %ld %-5s %ld %-5s %ld %ldn”,name,claes,number,telephone,NO,bookname,borrowdate,returndate);
数据结构大作业 121279044 伍杨
} };if(fclose(fp)){
} printf(“Can not close the file!n”);exit(0);
4)删除操作
void delete_books()
{
int number;void deletebooks();
printf(“请输入您要删除的书编号:”);scanf(“%d”,&number);FILE *fp;struct book b;
//删除旧书
数据结构大作业 121279044 伍杨
if((fp=fopen(“shuku.txt”,“r”))==NULL){
} printf(“不能打开此文件!n”);exit(0);while(!feof(fp)){ fscanf(fp,“%s %d %s %d”,b.bookname,&b.NO,b.type,&b.date);
} if(b.NO==number){
} printf(“nnt***************图书信息*******************n”);printf(“nt图书书名:%25s”,b.bookname);printf(“nt----------”);printf(“nt图书编号:%25d”,b.NO);printf(“nt----------”);printf(“nt图书类型:%23s”,b.type);printf(“nt----------”);printf(“nt到书日期:%25d”,b.date);printf(“nt----------”);
deletebooks();
数据结构大作业 121279044 伍杨
}
void deletebooks(){
while(!feof(fp)){ fscanf(fp,“%s %d %s %d”,b.bookname,&b.NO,b.type,&b.date);if((fp=fopen(“shuku.txt”,“r”))==NULL){
} if((fp1=fopen(“tempshuku.txt”,“w”))==NULL){
//建立一个临时文件
} printf(“不能打开此文件!n”);exit(0);printf(“不能打开此文件!n”);exit(0);printf(“nn确认删除?请再次输入书编号:”);scanf(“%d”,&number);FILE *fp,*fp1,*fp2,*fp3;int number;struct book b;
数据结构大作业 121279044 伍杨
} if(b.NO==number)continue;else
fprintf(fp1,“%s %d %s %d”,b.bookname,b.NO,b.type,b.date);fclose(fp);fclose(fp1);if((fp2=fopen(“tempshuku.txt”,“r”))==NULL){
} if((fp3=fopen(“shuku.txt”,“w”))==NULL){
//清空书库
} while(!feof(fp2)){
//将临时文件的内容写人源文件
} fscanf(fp2,“%s %d %s %d”,b.bookname,&b.NO,b.type,&b.date);fprintf(fp3,“%s %d %s %d”,b.bookname,b.NO,b.type,b.date);printf(“不能打开此文件!n”);exit(0);printf(“不能打开此文件!n”);exit(0);
数据结构大作业 121279044 伍杨
}
void delete_returnbook(){
if((fp=fopen(“jieshujilu.txt”,“r”))==NULL){
} printf(“不能打开此文件!n”);exit(0);printf(“n请输入所还书本的书编号:”);scanf(“%d”,&numbers);FILE *fp;int numbers;struct person p;void deletereturnbook();char choice;printf(“n
删除成功!n”);fclose(fp2);fclose(fp3);
//删除借书记录
数据结构大作业 121279044 伍杨
while(!feof(fp)){
fscanf(fp,“%s %s %ld %s %ld %s %ld %ld”,p.name,p.claes,&p.number,p.telephone,&p.NO,p.bookname,&p.borrowdate,&p.returndate);
if(p.NO==numbers){
printf(“nt***************图书信息*******************n”);printf(“nt借书人姓名:%20s”,p.name);printf(“nt----------”);printf(“nt借书人班级:%20s”,p.claes);printf(“nt----------”);printf(“nt借书人学号:%20d”,p.number);printf(“nt----------”);printf(“nt借书人联系电话:%20s”,p.telephone);printf(“nt----------”);printf(“nt图书编号:%24d”,p.NO);printf(“nt----------”);printf(“nt图书名称:%23s”,p.bookname);printf(“nt----------”);printf(“nt借书日期:%25d”,p.borrowdate);printf(“nt----------”);printf(“nt还书日期:%25d”,p.returndate);
数据结构大作业 121279044 伍杨
}
}
} printf(“nt----------”);
deletereturnbook();
printf(“nt您想继续吗?(y/n)”);scanf(“ %c”,&choice);if(choice=='Y'||choice=='y'){
} system(“cls”);delete_returnbook();fclose(fp);void deletereturnbook(){ FILE *fp,*fp1,*fp2,*fp3;struct person p;
int numbers;printf(“nn确认删除?请再次输入书编号:”);
数据结构大作业 121279044 伍杨
scanf(“%d”,&numbers);if((fp=fopen(“jieshujilu.txt”,“r”))==NULL){
} if((fp1=fopen(“tempbook.txt”,“w”))==NULL){
} printf(“不能打开此文件!n”);exit(0);printf(“不能打开此文件!n”);exit(0);while(!feof(fp)){ fscanf(fp,“%s %s %d %s %d %s %d %d”,p.name,p.claes,&p.number,p.telephone,&p.NO,p.bookname,&p.borrowdate,&p.returndate);
if(p.NO==numbers)continue;else
fprintf(fp1,“%s %s %d %s %d %s %d %d”,p.name,p.claes,p.number,p.telephone,p.NO,p.bookname,p.borrowdat
数据结构大作业 121279044 伍杨
e,p.returndate);
fscanf(fp2,“%s %s %d %s %d %s %d %d”,p.name,p.claes,while(!feof(fp2)){
//将临时文件写人源文件 if((fp2=fopen(“tempbook.txt”,“r”))==NULL){
} if((fp3=fopen(“jieshujilu.txt”,“w”))==NULL){
} printf(“不能打开此文件!n”);exit(0);printf(“不能打开此文件!n”);exit(0);fclose(fp);fclose(fp1);} &p.number,p.telephone,&p.NO,p.bookname,&p.borrowdate,&p.returndate);
fprintf(fp3,“%s %s %d %s %d %s %d %d”,p.name,p.数据结构大作业 121279044 伍杨
claes,p.number,p.telephone,p.NO,p.bookname,p.borrowdate,p.returndate);
} printf(“n
删除成功!n”);fclose(fp2);fclose(fp3);} 5)Main函数
int main(void){
do{ printf(“nnn
图书馆管理系统na”);printf(“ *******************************************************n”);int choice;char choice2;struct book;struct person;
数据结构大作业 121279044 伍杨
printf(“ ***朱老师您好吖********功能选项: 登记******请按1,******n”);printf(“ ******************************* 查看/查询*请按2 ******n”);printf(“ ******************************* 删除***** 请按3 ******n”);printf(“ ******************************* 退出***** 请按0 ******n”);printf(“ *******************************************************nnn”);printf(“
请选择功能:”);scanf(“%d”,&choice);switch(choice){ case 1:
printf(“
登记选项:新书登记请按1,借书登记请按2,返回请按3n”);printf(“请选择:”);scanf(“%d”,&choice);switch(choice){ case 1:
system(“cls”);
//清屏 printf(“新书资料登记:nn”);new_book();
//新书登记 printf(“登记完毕!n”);printf(“n”);scanf(“ %c”,&choice2);system(“cls”);break;
数据结构大作业 121279044 伍杨
case 2:
system(“cls”);printf(“借书资料登记:nn”);new_person();
//借书登记 printf(“n pre anykey ”);scanf(“ %c”,&choice2);system(“cls”);break;case 3:
} break;system(“cls”);break;
case 2: printf(“
查看/查询选项:书库查看请按1,总借书记录查看请按2,到期记录查询请按3,返回请按4n”);
printf(“请选择:”);scanf(“%d”,&choice);switch(choice){ case 1:
system(“cls”);printf(“欢迎朱老师进入书库!nn”);
数据结构大作业 121279044 伍杨
printf(“书名
书编号
类型
到书日期n”);printf(“-----------n”);see_book();
//书库显示 printf(“n pre anykey ”);scanf(“ %c”,&choice2);system(“cls”);break;case 2:
system(“cls”);printf(“欢迎朱老师进入借书记录!nn”);printf(“姓名
班级 学号 联系电话 书编号 书名
借书日期 到书日期n”);
printf(“-------------------------n”);see_person();
//借书记录显示
printf(“n pre anykey ”);scanf(“ %c”,&choice2);system(“cls”);break;case 3:
system(“cls”);search_person();
//显示符合记录 printf(“n pre anykey ”);
数据结构大作业 121279044 伍杨
scanf(“ %c”,&choice2);system(“cls”);break;case 4:
} break;system(“cls”);break;case 3: printf(“
删除选项:旧书删除请按1,借书记录删除请按2,返回请按3n”);
printf(“请选择:”);scanf(“%d”,&choice);switch(choice){ case 1:
system(“cls”);delete_books();
//删除ing printf(“n pre anykey ”);scanf(“ %c”,&choice2);system(“cls”);break;case 2:
数据结构大作业 121279044 伍杨
}
system(“cls”);delete_returnbook();
//删除ing printf(“n pre anykey ”);scanf(“ %c”,&choice2);system(“cls”);break;case 3:
} break;system(“cls”);break;case 0:
} system(“cls”);}while(choice!= 0);return 0;
数据结构大作业 121279044 伍杨
四、调试与测试
主菜单
登记
数据结构大作业 121279044 伍杨
查看
删除
生成的文件内信息
数据结构大作业 121279044 伍杨五、五心得体会
经过这次大作业,我觉得代码的编写,最主要的的是编程思想,语言其实不是太重要,思路最重要!
六、用户手册
程序执行文件为 lib sys.exe,打开执行文件后按提示操作即可