图书管理系统 C语言实训报告.docx
《图书管理系统 C语言实训报告.docx》由会员分享,可在线阅读,更多相关《图书管理系统 C语言实训报告.docx(15页珍藏版)》请在冰豆网上搜索。
图书管理系统C语言实训报告
基础编程能力实训报告
题 目:
图书管理系统
专业年级:
计算机科学与技术2013级
姓名:
学 号:
2014年06月20日
ﻬ1实训题目与要求
1、1问题描述
ﻩ此系统可以完成对书籍信息的输入、删除、修改、排序等功能,提高图书管理效率,对图书进行合理规划与安排。
1.2功能要求
ﻩ程序输出主菜单(如下),提示用户选择操作
欢迎使用图书管理系统
*********************************
* 主菜单 *
*********************************
1输入2查询
3 删除 4排序
5显示 6修改
7 录入 8 退出
请选择[1/2/3/4/5/6/7/8]:
表1主菜单
在主菜单中选择1,要求输入图书信息,包括书本序号,书本名字,作者名字,书的价格;
在主菜单中选择2,可查询已输入的图书信息;
在主菜单中选择3,可通过查找书本的序号,来选择所要删除的图书信息;
在主菜单中选择4,对已输入的图书信息,按照图书序号进行排序;
在主菜单中选择5,显示图书信息;
在主菜单中选择6,可通过查找书本的序号,来选择所要修改的图书,并对图书进行修改;
在主菜单中选择7,建立一个名为asd.txt的文件,并将图书信息录入;
在主菜单中选择8,退出图书管理系统。
2图书管理系统的设计与功能实现
图书管理系统
2.1总体设计
图1 系统模块图
输入模块完成用户从界面输入图书的信息的功能;
查询书籍信息模块完成用户从界面输入查询条件,在系统查询符合条件的图书信息,并在界面上显示的功能;
删除书本信息模块完成用户从界面输入需要的图书序号,并将其从系统中删除的功能;
书本信息排序模块完成对书本信息的排序的功能;
显示书籍信息模块完成显示书本信息的功能;
修改书籍信息模块完成用户从界面输入,在系统中查询定位,并将修改过的信息数据保存入系统的功能;
录入图书信息模块完成用户从界面输入需要导入的文件路径名称,将信息输入系统的功能;
2、2 数据结构
ﻩ在程序中,定义了如下结构体:
typedefstruct{
ﻩintnum;
charBname[50];
ﻩchar Wname[50];
floatscore;
}Book;
其中Book、num就是存储书本序号信息,Book.Bname存储书本名字信息,Book、Wname就是存储书本作者名信息,Book.score存储书本价格信息。
ﻩ2、3算法设计
图2主函数流程图
主函数的作用主要就是调用main函数显示主界面,使用printf函数将菜单选项输出在屏幕上,供用户读取选择。
通过读取用户的输入,调用switch函数对用户的输入进行处理,使用while函数实现用户的选择性的重复操作。
图3输入函数流程图
输入函数的主要作用就是完成书籍信息的输入功能,用户先输入书本的实际数量,再输入书本序号、书名、作者名与书本价格并保存到数组中。
图4查询函数流程图
查询函数的作用主要就是为完成查找某书籍信息的功能,用户在使用时先输入要查找的书本序号,然后在保存有书籍信息的数组中查找该项,若找到,则显示该项;否则,显示无此书。
图5删除函数流程图
删除函数的主要作用就是完成删除某本书籍信息的功能,用户先输入一个要删除的书本序号,然后在保存有书籍信息的数组中查找该项,若找到,则删除该项;否则,显示找不到要删除的书本信息。
2、4程序代码设计
⑴主函数需要读取用户所输入的选项来调用其她功能的函数,从而实现程序的各个功能;
voidmain()
{
ﻩ…
}
使用while来循环j值,供用户输入选项,程序判断后进入对应模块,并调用相应的功能函数进行运算,并且使用break在调用完函数后退出switch语句。
⑵void input(Book*a,int*n)
{
…
}
输入函数,定义结构体类型指针p,printf语句提示用户输入信息,添加for循环,将用户输入的信息保存入数组中。
voidfind(Book*a,intn)
{
…
}
查找函数定义结构体指针p,printf语句提示用户输入信息,输入num后,for循环嵌套if语句按照书本序号查找对应的书本信息,break跳出循环。
void del(Book*a,int*n)
{
…
}
删除函数定义结构体指针p,printf语句提示用户输入信息,输入要删除的书本序号,对应结构体中已存有的num,for循环中嵌套if语句查找并删除对应的书本信息,break跳出循环。
voidsort(Book*a,intn)
{
…
}
排序函数,采用冒泡法按照书本序号对书籍进行排序。
voiddisplay(Book*a,int n)
{
…
}
输出函数定义结构体p,for循环输出书本信息。
void wenjian(Book*a,intn)
{
…
}
定义指针变量fp,判断所指向的文件就是否存在,定义结构体指针p,使用fprintf函数将数据输入文件中。
void xiugai(Book*a,intn)
{
ﻩ…
}
修改函数定义结构体指针p,printf语句提示用户输入信息,输入要修改的书本序号,对应结构体中已存有的num,for循环中嵌套if语句查找并修改对应的书本信息。
voidmenu()
{
…
}
几个printf语句在界面显示出供用户选择的操作框。
2、5测试与调试
测试数据类型
测试数据
预期结果
实际结果
合法数据
在主菜单中输入1
进入输入菜单
进入输入菜单
在主菜单中输入2
进入查询菜单
进入查询菜单
非法数据
在主菜单中输入9
没有该项内容
没有该项内容
在主菜单中输入a
没有该项内容
没有该项内容
3实训总结
学习c语言不能停留在学习它的语法规则,而就是利用学到的知识编写c语言程序,解决实际问题。
即把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。
只有通过上机才能检验自己就是否掌握c语言、自己编写的程序就是否能够正确地解题。
实训期间,学习到很多东西,不仅使我在理论上c语言有了全新的认识,在实践能力上也得到了提高,将课本上的死知识应用于实践中,程序编写就是以后工作与学习的基础,第一次尝试编写较复杂的程序,发现以前一直忙于理论知识的学习,这次实训就是抽象的理论知识很好的应用,编写过程中,在不断地错误改正中,发现了自己很多知识的理解及联系性的不足,因此,在以后的学习中,我会更加的有的放矢,弥补自己知识面的不足,使自己能更好的牢固掌握本专业知识,完善自我。
附录
#include"stdio、h"
#include"stdlib、h"
#include"conio、h"
#define SIZE80
typedefstruct{
intnum;
ﻩcharBname[50];
char Wname[50];
ﻩfloatscore;
}Book;
void input(Book*a,int*n)
{
Book*p;
inti=1;
system("cls");
printf("\n请输入书的序号(1-80)");
scanf("%d",n);
printf("\n请输入书本信息(书本序号/书名/作者/单价):
");
ﻩﻩfor(p=a;p<a+*n;p++)
{
ﻩﻩ printf("\n%d:
",i++);
ﻩ scanf("%d%s%s%f",&p->num,p->Bname,p->Wname,&p->score);
ﻩ}
ﻩﻩprintf("按回车键返回:
");
getch();
}
voidfind(Book*a,int n)
{
intk=0;
intnum;
Book*p;
system("cls");
printf("\n请输入要查询的书的序号");
scanf("%d",&num);
for(p=a;p if(num==p->num)ﻩ
ﻩﻩ{
k=1;
printf("已找到,就是:
%d\t%s\t%s\t%、lf\n",p->num,p->Bname,p->Wname,p->score);
break;
ﻩ}
if(!
k)
ﻩprintf("无此书!
\n");
printf("按回车键返回:
");
getch();
}
void del(Book*a,int*n)
{
int i,j,k=0;
Book*p;
intnum;
system("cls");
printf("\n请输入要删除的书的序号:
");
scanf("%d",&num);
for(i=0,p=a;p<a+*n;i++)
ﻩ if(num==(p+i)->num)
ﻩ{
k=1;
ﻩ for(j=i;j<*n-1;j++)
ﻩﻩ *(p+j)=*(p+j+1);
(*n)--;
ﻩ break;
}
if(!
k)
ﻩprintf("找不到要删除的书本信息!
\n");
printf("按回车键返回:
");
getch();
}
voidsort(Book*a,intn)
{
inti,j;
Bookt;
for(i=0;iﻩ for(j=0;j if((a[j]、num)>(a[j+1]、num))
ﻩ {t=a[j];a[j]=a[j+1];a[j+1]=t;}
printf("\n输出排序结果:
\n");
for(i=0;i<n;i++)
printf("%d\t%s\t%s\t%.lf\n",a[i]、num,a[i]、Bname,a[i]、Wname,a[i]、score);
printf("\n");
printf("按回车键返回:
");
getch();
}
voiddisplay(Book*a,intn)
{
Book*p;
for(p=a;pﻩprintf("%d\t%s\t%s\t%、lf\n",p->num,p->Bname,p->Wname,p->score);
printf("\n");
printf("按回车键返回:
");
getch();
}
void wenjian(Book*a,intn)
{
FILE*fp;
Book*p;
ﻩinti;
system("cls");
fp=fopen("asd、txt","w+");
if(fp==NULL)
ﻩprintf("打开失败\n");
else
ﻩ{
ﻩfor(i=0,p=a;iﻩﻩfprintf(fp,"%d%s%s%f\n",p->num,p->Bname,p->Wname,p->score);
ﻩﻩprintf("写入成功\n");
}
ﻩprintf("\n");
printf("按回车键返回:
");
ﻩgetch();
}
voidxiugai(Book*a,intn)
{
ﻩBook*p;
inti,m;
ﻩsystem("cls");
printf("请输入要修改的书号:
");
ﻩscanf("%d",&m);
for(p=a;pif(m==p->num)
ﻩ{
ﻩﻩprintf("请输入修改后的信息(书号/书名/作者/单价)\n");
scanf("%d%s%s%f",&p->num,&p->Bname,&p->Wname,&p->score);
ﻩ}
ﻩprintf("\n");
printf("按回车键返回:
");
getch();
}
voidmenu()
{
system("cls");
printf("\n\n\n\t\t\t欢迎使用图书管理系统\n\n\n");
printf("\t\t\t*********************************\n");
printf("\t\t\t* 主菜单 *\n");
printf("\t\t\t*********************************\n\n\n");
printf("\t\t1 输入2查询\n\n");
printf("\t\t 3 删除4 排序\n\n");
printf("\t\t 5显示 6修改\n\n");
printf("\t\t7录入8退出\n\n");
printf("\t\t 请选择[1/2/3/4/5/6/7/8]:
");
}
voidmain()
{
intj,num;
Bookbook[SIZE];
while
(1)
{menu();
scanf("%d",&j);
switch(j)
{
case1:
input(book,&num);break;
case2:
find(book,num);break;
case 3:
del(book,&num);break;
case 4:
sort(book,num);break;
case5:
display(book,num);break;
case 6:
xiugai(book,num);break;
case7:
wenjian(book,num);break;
case8:
exit(0);
}
}
}