图书信息管理系统课程设计报告C语言程序的设计说明Word文档格式.docx
- 文档编号:17254293
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:29
- 大小:106.68KB
图书信息管理系统课程设计报告C语言程序的设计说明Word文档格式.docx
《图书信息管理系统课程设计报告C语言程序的设计说明Word文档格式.docx》由会员分享,可在线阅读,更多相关《图书信息管理系统课程设计报告C语言程序的设计说明Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
一、实验准备
做系统前,首先,自己详细看了《C程序设计教程》(教科书)的第十章《文件》,基本自学会了文件的相关内容,理解了相关函数的用法和作用;
另,上网查询了很多相关资料,还有找了很多相关的系统,都详细的看了一遍,加深了对C的理解以及对文件的相关内容进一步理解。
学习了C语言的内容,图书信息管理系统有助于C语言学习的进一步巩固,在本系统可以增强对指针、数组、文件、函数等基本知识的进一步理解。
另外图书信息管理系统也是学校常用的基本系统之一,它有助于学校对图书馆书籍的基本管理。
二、功能简介
图书信息管理系统是对图书信息的基本管理,它包括:
图书信息的输入、图书信息的修改及删除、图书信息的查询、图书信息的添加、图书信息的浏览。
使用模块化编程的方法每项功能有一个或多个函数组合来完成.
三、系统与性环境
系统可以在MicrosoftVisualC++6.0软件运行,硬件基本无要求,现在的计算机基本都可以运行该系统。
四、功能划分及详细说明
主要算法的设计:
(1)主函数的算法设计
开始
首先,运行程序,进入菜单,然后选择操作(运用swith语句),调用各子函数。
在返回操作中运用while语句进行控制返回菜单。
(2)各子函数的算法设计
1、图书信息的输入函数
假
真
2、图书信息的修改
3、图书信息的查询
voidsearch()选择查询方式,1按书号查询,2按书名查询,然后定位,再调用输出函数;
4、图书信息的浏览
首先,输出所有图书的信息,并输出图书记录数,然后调用辅助函数进行菜单选择,操作完成后返回主菜单。
5、图书信息的添加
首先,从文件中调用函数读入函数,再输入要添加数,然后添加图书信息,并保存。
上机调试过程:
在调试过程中出现了许多的错误!
特别是在查询、修改删除这2个函数的调上花费了很多时间,主要是文件的写入与读出以及菜单调试的问题,还有建立新的链接也出现问题,说明自己对程序的执行过程理解不够深刻。
五、源程序
#include<
stdio.h>
malloc.h>
string.h>
stdlib.h>
#defineLENsizeof(stu)
typedefstructstudent{
longnumber;
charname[10];
charsex[3];
intage;
floatchinese;
floatmath;
floatenglish;
floatsum;
floataverage;
structstudent*next;
}stu;
book*creat(void);
book*changes(book*head);
book*modify(book*head,longnum);
book*del(book*head,longnum);
book*insert(book*head,book*stud);
book*input(book*head,book*p1);
voidsort(book*head);
voidtotal_average_sort(book*head);
voidchinese_sort(book*head);
voidmath_sort(book*head);
voidenglish_sort(book*head);
voidprint(book*head);
voidStatistics(book*head);
voidsearch(book*head);
voidnumsearch(book*head,longnum);
voidnamesearch(book*head,charname[]);
intn;
book*creat(void)
{
book*head,*p1,*p2;
n=0;
p1=p2=(book*)malloc(LEN);
printf("
请输入图书信息!
\n"
);
head=NULL;
p1=input(head,p1);
while(p1->
number!
=0)
n=n+1;
if(n==1)head=p1;
elsep2->
next=p1;
p2=p1;
p1=(book*)malloc(LEN);
}
p2->
next=NULL;
return(head);
book*input(book*head,book*p1)/*输入图书的信息*/
inti,f,k;
book*p2;
loop:
printf("
图书号(为整数,输入0时返回上一级):
"
scanf("
%ld"
&
p1->
number);
if(p1->
number<
0){
图书号不能为负数,请重新输入!
gotoloop;
else{
number==0)
return(p1);
else{
p2=head;
f=0;
for(i=1;
i<
=n;
i++){
number==p2->
number)
{f=1;
break;
p2=p2->
next;
}
if(f)
{printf("
图书不能重复,请重新输入!
gotoloop;
书名:
%s"
p1->
name);
loop1:
类别:
1.文科2.理科\n"
请选择类别:
%d"
k);
switch(k)
case1:
strcpy(p1->
sex,"
文科"
case2:
理科"
default:
类别只能是“文科”或“理科”,请重新输入!
gotoloop1;
存期:
age);
age<
0||p1->
age>
120){
你输入的存期不符合实际情况,请重新输入!
章数:
%f"
chinese);
while(p1->
chinese<
chinese>
100){
你输入的章数不符合实际情况,请重新输入!
页数:
math);
math<
math>
你输入的页数不符合实际情况,请重新输入!
阅读次数:
english);
english<
english>
你输入的阅读次数不符合实际情况,请重新输入!
p1->
sum=p1->
chinese+p1->
math+p1->
english;
average=p1->
sum/3;
voidsearch(book*head)
intk;
longnum;
if(n==0)
{printf("
数据库为空,没有图书的记录!
return;
do{
1.按书号查找2.按书名查找0.返回上一级\n"
请选择:
switch(k)
{
case1:
do{
书号(输入0时跳出按书号查找):
num);
if(num==0)break;
if(num>
0)
numsearch(head,num);
else
输入错误,请重新选择!
}while
(1);
break;
case2:
书名(输入0时跳出按书名查找):
name);
书号\t书名\t类别\t存期\t章数\t页数\t阅读次数\t总次数\t平均次数\n"
namesearch(head,name);
}while(strcmp(name,"
0"
)!
=0);
case0:
default:
}while(k!
voidnumsearch(book*head,longnum)
book*p1;
p1=head;
while(p1!
=NULL)
if(num==p1->
number){
%ld\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n"
number,p1->
name,p1->
sex,p1->
age,p1->
chinese,p1->
math,p1->
english,p1->
sum,p1->
average);
return;
p1=p1->
没有找到你要查找的图书信息!
voidnamesearch(book*head,charname[])
inta=1;
if(strcmp(name,p1->
name)==0){
a=0;
if(a)
book*changes(book*head)
1.修改2.删除3.插入0.返回上一级\n"
if(n==0){
请输入图书的书号(书号应为整数,输入0时跳出修改数据):
head=modify(head,num);
书号不能为负数,请重新输入!
if(n==0){printf("
数据库为空,没有图书信息!
请输入要删除的图书的书号(书号应为整数,输入0时跳出删除元素):
head=del(head,num);
case3:
{head=insert(head,p1);
print(head);
输入错误,请重新输入!
}while(k!
voidsort(book*head)
intk;
数据库为空,没有图书记录!
1.按书号排序2.按总次数和平均次数排序3.按章数成绩排序4.按页数排序5.按阅读次数排序0.返回上一级\n"
print(head);
total_average_sort(head);
chinese_sort(head);
case4:
math_sort(head);
case5:
english_sort(head);
voidtotal_average_sort(book*head)
book*p1,*p2;
intj=0;
floatmax,k=301;
max=0;
for(p1=head;
p1;
p1=p1->
next)
sum>
max&
&
sum<
k){
max=p1->
sum;
k=max;
for(p1=p2;
sum==max){
j++;
}while(j<
n);
voidchinese_sort(book*head)
floatk=101,max;
chinese;
chinese==max){
voidmath_sort(book*head)
math;
math==max){
voidenglish_sort(book*head)
english==max){
book*modify(book*head,longnum)
intk,m;
number==num)
1.书名2.类别3.存期4.章数成绩5.页数6.阅读次数0.返回上一级\n"
scanf("
修改成功!
loop2:
1.文科2.理科\n"
m);
switch(m)
理科"
类别只能是“文科”或“理科”,请重新输入!
gotoloop2;
章数成绩:
你输入的章数成绩不符合实际情况,请重新输入!
sum=p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 信息管理 系统 课程设计 报告 语言 程序 设计 说明