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

上传人:b****5 文档编号:14930048 上传时间:2023-06-28 格式:DOCX 页数:30 大小:101.02KB
下载 相关 举报
图书信息管理系统课程设计报告C语言程序设计.docx_第1页
第1页 / 共30页
图书信息管理系统课程设计报告C语言程序设计.docx_第2页
第2页 / 共30页
图书信息管理系统课程设计报告C语言程序设计.docx_第3页
第3页 / 共30页
图书信息管理系统课程设计报告C语言程序设计.docx_第4页
第4页 / 共30页
图书信息管理系统课程设计报告C语言程序设计.docx_第5页
第5页 / 共30页
图书信息管理系统课程设计报告C语言程序设计.docx_第6页
第6页 / 共30页
图书信息管理系统课程设计报告C语言程序设计.docx_第7页
第7页 / 共30页
图书信息管理系统课程设计报告C语言程序设计.docx_第8页
第8页 / 共30页
图书信息管理系统课程设计报告C语言程序设计.docx_第9页
第9页 / 共30页
图书信息管理系统课程设计报告C语言程序设计.docx_第10页
第10页 / 共30页
图书信息管理系统课程设计报告C语言程序设计.docx_第11页
第11页 / 共30页
图书信息管理系统课程设计报告C语言程序设计.docx_第12页
第12页 / 共30页
图书信息管理系统课程设计报告C语言程序设计.docx_第13页
第13页 / 共30页
图书信息管理系统课程设计报告C语言程序设计.docx_第14页
第14页 / 共30页
图书信息管理系统课程设计报告C语言程序设计.docx_第15页
第15页 / 共30页
图书信息管理系统课程设计报告C语言程序设计.docx_第16页
第16页 / 共30页
图书信息管理系统课程设计报告C语言程序设计.docx_第17页
第17页 / 共30页
图书信息管理系统课程设计报告C语言程序设计.docx_第18页
第18页 / 共30页
图书信息管理系统课程设计报告C语言程序设计.docx_第19页
第19页 / 共30页
图书信息管理系统课程设计报告C语言程序设计.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《图书信息管理系统课程设计报告C语言程序设计.docx》由会员分享,可在线阅读,更多相关《图书信息管理系统课程设计报告C语言程序设计.docx(30页珍藏版)》请在冰点文库上搜索。

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

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

德州学院计算机系

课程设计报告

 

实习名称程序设计课程设计

设计题目图书信息管理系统

实习时间2010.06.27-2010.07.04

专业班级网络工程

指导老师

教学单位(盖章)

小组分工情况:

学号

姓名

分工

 

二O一O年七月五日

 

课程设计报告正文内容及格式要求:

1、正文部分主要包括:

选题背景、论点或方案论证、过程(设计或实验)论述、结果分析、结论或总结。

2、标题:

题目用小二号黑体字(加黑),居中;副标题用三号黑体字,紧挨正标题下居中,文字前加破折号。

英文题目为18磅加粗TimesNewRoman字,副标题为16磅加粗TimesNewRoman字。

3、课程设计报告格式要求:

一级标题用小三号黑体字;

二级标题用四号黑体字;

三级标题用小四号黑体字;

正文用宋体小四号字(英文用12磅TimesNewRoman字),采用1.5倍行距,标准字符间距:

页码一律用小5号字标明。

4、课程设计报告撰写要求:

(1)文字通顺,语言流畅,能将设计过程表述清楚。

(2)图表整洁,布局合理,须按国家规定的绘图标准绘制。

(3)报告字数不少于3千字。

 

C语言程序设计报告

---图书管理系统

一、实验准备

做系统前,首先,自己详细看了《C程序设计教程》(教科书)的第十章《文件》,基本自学会了文件的相关内容,理解了相关函数的用法和作用;另,上网查询了很多相关资料,还有找了很多相关的系统,都详细的看了一遍,加深了对C的理解以及对文件的相关内容进一步理解。

学习了C语言的内容,图书信息管理系统有助于C语言学习的进一步巩固,在本系统可以增强对指针、数组、文件、函数等基本知识的进一步理解。

另外图书信息管理系统也是学校常用的基本系统之一,它有助于学校对图书馆书籍的基本管理。

二、功能简介

图书信息管理系统是对图书信息的基本管理,它包括:

图书信息的输入、图书信息的修改及删除、图书信息的查询、图书信息的添加、图书信息的浏览。

使用模块化编程的方法每项功能有一个或多个函数组合来完成.

三、系统与性环境

系统可以在MicrosoftVisualC++6.0软件运行,硬件基本无要求,现在的计算机基本都可以运行该系统。

四、功能划分及详细说明

主要算法的设计:

(1)主函数的算法设计

开始

 

 

首先,运行程序,进入菜单,然后选择操作(运用swith语句),调用各子函数。

在返回操作中运用while语句进行控制返回菜单。

(2)各子函数的算法设计

1、图书信息的输入函数

 

 

2、图书信息的修改

3、图书信息的查询

voidsearch()选择查询方式,1按书号查询,2按书名查询,然后定位,再调用输出函数;

4、图书信息的浏览

首先,输出所有图书的信息,并输出图书记录数,然后调用辅助函数进行菜单选择,操作完成后返回主菜单。

5、图书信息的添加

首先,从文件中调用函数读入函数,再输入要添加数,然后添加图书信息,并保存。

上机调试过程:

在调试过程中出现了许多的错误!

特别是在查询、修改删除这2个函数的调上花费了很多时间,主要是文件的写入与读出以及菜单调试的问题,还有建立新的链接也出现问题,说明自己对程序的执行过程理解不够深刻。

五、源程序

#include

#include

#include

#include

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

p1=input(head,p1);

}

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

printf("图书号不能为负数,请重新输入!

\n");

gotoloop;

}

else{

if(p1->number==0)

return(p1);

else{

p2=head;

f=0;

for(i=1;i<=n;i++){

if(p1->number==p2->number)

{f=1;break;}

p2=p2->next;}

}

if(f)

{printf("图书不能重复,请重新输入!

\n");gotoloop;}

}

printf("书名:

");

scanf("%s",p1->name);

loop1:

printf("类别:

1.文科2.理科\n");

printf("请选择类别:

");

scanf("%d",&k);

switch(k)

{

case1:

strcpy(p1->sex,"文科");break;

case2:

strcpy(p1->sex,"理科");break;

default:

printf("类别只能是“文科”或“理科”,请重新输入!

\n");gotoloop1;}

printf("存期:

");

scanf("%d",&p1->age);

while(p1->age<0||p1->age>120){

printf("你输入的存期不符合实际情况,请重新输入!

\n");

printf("存期:

");

scanf("%d",&p1->age);

}

printf("章数:

");

scanf("%f",&p1->chinese);

while(p1->chinese<0||p1->chinese>100){

printf("你输入的章数不符合实际情况,请重新输入!

\n");

printf("章数:

");

scanf("%f",&p1->chinese);}

printf("页数:

");

scanf("%f",&p1->math);

while(p1->math<0||p1->math>100){

printf("你输入的页数不符合实际情况,请重新输入!

\n");

printf("页数:

");

scanf("%f",&p1->math);}

printf("阅读次数:

");

scanf("%f",&p1->english);

while(p1->english<0||p1->english>100){

printf("你输入的阅读次数不符合实际情况,请重新输入!

\n");

printf("阅读次数:

");

scanf("%f",&p1->english);}

p1->sum=p1->chinese+p1->math+p1->english;

p1->average=p1->sum/3;

return(p1);

}

voidsearch(book*head)

{

intk;

longnum;

charname[10];

if(n==0)

{printf("数据库为空,没有图书的记录!

\n");return;}

else{

do{

printf("1.按书号查找2.按书名查找0.返回上一级\n");

printf("请选择:

");

scanf("%d",&k);

switch(k)

{

case1:

do{

printf("书号(输入0时跳出按书号查找):

");

scanf("%ld",&num);

if(num==0)break;

else{

if(num>0)

numsearch(head,num);

else

printf("输入错误,请重新选择!

\n");}

}while

(1);

break;

case2:

do{

printf("书名(输入0时跳出按书名查找):

");

scanf("%s",name);

printf("书号\t书名\t类别\t存期\t章数\t页数\t阅读次数\t总次数\t平均次数\n");

namesearch(head,name);

}while(strcmp(name,"0")!

=0);

break;

case0:

break;

default:

printf("输入错误,请重新选择!

\n");

}

}while(k!

=0);

}

}

voidnumsearch(book*head,longnum)

{

book*p1;

p1=head;

while(p1!

=NULL)

{

if(num==p1->number){

printf("书号\t书名\t类别\t存期\t章数\t页数\t阅读次数\t总次数\t平均次数\n");

printf("%ld\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",p1->number,p1->name,p1->sex,p1->age,p1->chinese,p1->math,p1->english,p1->sum,p1->average);

return;}

p1=p1->next;

}

printf("没有找到你要查找的图书信息!

\n");

}

voidnamesearch(book*head,charname[])

{

inta=1;

book*p1;

p1=head;

while(p1!

=NULL)

{

if(strcmp(name,p1->name)==0){

printf("%ld\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",p1->number,p1->name,p1->sex,p1->age,p1->chinese,p1->math,p1->english,p1->sum,p1->average);a=0;}

p1=p1->next;

}

if(a)

printf("没有找到你要查找的图书信息!

\n");

}

book*changes(book*head)

{

book*p1;

intk;

longnum;

do{

printf("1.修改2.删除3.插入0.返回上一级\n");

printf("请选择:

");

scanf("%d",&k);

switch(k)

{

case1:

do{

if(n==0){

printf("数据库为空,没有图书的记录!

\n");break;}

else{

printf("请输入图书的书号(书号应为整数,输入0时跳出修改数据):

");

scanf("%ld",&num);

if(num==0)break;

else{

if(num>0)

head=modify(head,num);

else

printf("书号不能为负数,请重新输入!

\n");}

}

}while

(1);

break;

case2:

do{

if(n==0){printf("数据库为空,没有图书信息!

\n");break;}

else{

printf("请输入要删除的图书的书号(书号应为整数,输入0时跳出删除元素):

");

scanf("%ld",&num);

if(num==0)break;

else{

if(num>0)

head=del(head,num);

else

printf("书号不能为负数,请重新输入!

\n");}

}

}while

(1);

break;

case3:

printf("请输入图书信息!

\n");

p1=(book*)malloc(LEN);

p1=input(head,p1);

while(p1->number!

=0)

{head=insert(head,p1);

print(head);

printf("请输入图书信息!

\n");

p1=(book*)malloc(LEN);

p1=input(head,p1);

}

break;

case0:

break;

default:

printf("输入错误,请重新输入!

\n");

}

}while(k!

=0);

return(head);

}

voidsort(book*head)

{

intk;

if(n==0){printf("数据库为空,没有图书记录!

\n");return;}

do{

printf("1.按书号排序2.按总次数和平均次数排序3.按章数成绩排序4.按页数排序5.按阅读次数排序0.返回上一级\n");

printf("请选择:

");

scanf("%d",&k);

switch(k)

{

case1:

print(head);break;

case2:

total_average_sort(head);break;

case3:

chinese_sort(head);break;

case4:

math_sort(head);break;

case5:

english_sort(head);break;

case0:

break;

default:

printf("输入错误,请重新输入!

\n");

}

}while(k!

=0);

}

voidtotal_average_sort(book*head)

{

book*p1,*p2;

intj=0;

floatmax,k=301;

printf("书号\t书名\t类别\t存期\t章数\t页数\t阅读次数\t总次数\t平均次数\n");

do{

max=0;

for(p1=head;p1;p1=p1->next)

if(p1->sum>max&&p1->sum

max=p1->sum;

p2=p1;}

k=max;

for(p1=p2;p1;p1=p1->next)

if(p1->sum==max){

printf("%ld\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",p1->number,p1->name,p1->sex,p1->age,p1->chinese,p1->math,p1->english,p1->sum,p1->average);

j++;}

}while(j

}

voidchinese_sort(book*head)

{

intj=0;

floatk=101,max;

book*p1,*p2;

printf("书号\t书名\t类别\t存期\t章数\t页数\t阅读次数\t总次数\t平均次数\n");

do{

max=0;

for(p1=head;p1;p1=p1->next)

if(p1->chinese>max&&p1->chinese

max=p1->chinese;

p2=p1;}

k=max;

for(p1=p2;p1;p1=p1->next)

if(p1->chinese==max){

printf("%ld\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",p1->number,p1->name,p1->sex,p1->age,p1->chinese,p1->math,p1->english,p1->sum,p1->average);

j++;}

}while(j

}

voidmath_sort(book*head)

{

intj=0;

floatk=101,max;

book*p1,*p2;

printf("书号\t书名\t类别\t存期\t章数\t页数\t阅读次数\t总次数\t平均次数\n");

do{

max=0;

for(p1=head;p1;p1=p1->next)

if(p1->math>max&&p1->math

max=p1->math;

p2=p1;}

k=max;

for(p1=p2;p1;p1=p1->next)

if(p1->math==max){

printf("%ld\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",p1->number,p1->name,p1->sex,p1->age,p1->chinese,p1->math,p1->english,p1->sum,p1->average);

j++;}

}while(j

}

voidenglish_sort(book*head)

{

intj=0;

floatk=101,max;

book*p1,*p2;

printf("书号\t书名\t类别\t存期\t章数\t页数\t阅读次数\t总次数\t平均次数\n");

do{

max=0;

for(p1=head;p1;p1=p1->next)

if(p1->english>max&&p1->english

max=p1->english;

p2=p1;}

k=max;

for(p1=p2;p1;p1=p1->next)

if(p1->english==max){

printf("%ld\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",p1->number,p1->name,p1->sex,p1->age,p1->chinese,p1->math,p1->english,p1->sum,p1->average);

j++;}

}while(j

}

book*modify(book*head,longnum)

{

book*p1;

intk,m;

p1=head;

while(p1!

=NULL)

{

if(p1->number==num)

break;

p1=p1->next;

}

if(p1->number==num)

{

do{

printf("1.书名2.类别3.存期4.章数成绩5.页数6.阅读次数0.返回上一级\n");

printf("请选择:

");

scanf("%d",&k);

switch(k)

{

case1:

printf("书名:

");scanf("%s",p1->name);printf("修改成功!

\n");break;

case2:

loop2:

printf("类别:

1.文科2.理科\n");

printf("请选择类别:

");

scanf("%d",&m);

switch(m)

{

case1:

strcpy(p1->sex,"文科");break;

case2:

strcpy(p1->sex,"理科");break;

default:

printf("类别只能是“文科”或“理科”,请重新输入!

\n");gotoloop2;}

printf("修改成功!

\n");

break;

case3:

printf("存期:

");

scanf("%d",&p1->age);

while(p1->age<0||p1->age>120){

printf("你输入的存期不符合实际情况,请重新输入!

\n");

printf("存期:

");

scanf("%d",&p1->age);

}

printf("修改成功!

\n");

break;

case4:

printf("章数成绩:

");

scanf("%f",&p1->chinese);

while(p1->chinese<0||p1->chinese>100){

printf("你输入的章数成绩不符合实际情况,请重新输入!

\n");

printf("章数成绩:

");

scanf("%f",&p1->chinese);}

p1->sum=p1->chinese+p1->math+p1->english;

p1->average=p1->sum/3;

printf("修改成功!

\n");

break;

case5:

printf("页数:

");

scanf("%f",&p1->math);

while(p1->math<0||p1->math>100){

printf("你输入的页数不符合实际情况,请重新输入!

\n");

printf("页数:

");

scanf("%f",&p1->math);}

p1->sum=p1-

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2