C语言上机实验报告.docx
《C语言上机实验报告.docx》由会员分享,可在线阅读,更多相关《C语言上机实验报告.docx(18页珍藏版)》请在冰点文库上搜索。
C语言上机实验报告
长江大学计算机系
课
程
实
验
报
告
实验课程:
C语言程序设计基础
实验项目:
简易图书管理系统
指导教师:
肖颗
学生姓名:
梅亚龙
学生学号:
201162072
班级:
计算机网络(专)
实验地点:
717
实验时间:
2012年6月16日-6月29日
实验成绩:
评阅老师:
一.课程设计的题目与要求
1.题目:
C语言简易图书信息管理系统
2.遇到的问题:
用到一些生疏的函数。
例如:
fputs,fprintf,fopen。
还有一些没遇到的C语言设计的思想。
3.要求:
1)查询图书基本信息
2)按书名查询
3)查询数量>=2的图书信息
4)显示图书全部信息
5)按图书数量排序
6)按图书种类排序
7)每本图书总价
8)全部图书总价
9)修改图书信息
10)借出图书
二.课程设计题目功能
1.系统功能模块框图设计
:
功能函数模块
:
函数调用
2.数据结构説明
用到的数据:
int整型、float单精度浮点型、char字符型;
struct结构体;
函数:
menu()、readfile()、showbooks()、Qrybybookname()、Qrycount()、Qrylbooks()、sortbycount()、sortbychass()、abookprice()、allbookprice()、xie()、faxbook()、write()、brwbook()、exit(0);
F0LE*p指针;
For循环;
if如果;
while循环;
switch选择;
scanf输入;
printf输出;
return返回;
strcmp比较数组
fopen打开文件;
fclose关闭文件;
fgets,fscanf读文件;
fputs,fprintf写文件;
3.输出数据
查询图书基本信息
按书名查询
查询数量>=2的图书信息
显示图书全部信息
按图书数量排序
按图书种类排序
每本图书总价
全部图书总价
修改图书信息
借出图书
三.课程设计总结
程序过大,不够精简,无用文字太多。
学习耐心与细心不足,如scanf(“%d”,&n);中的“&”经常忘记。
编程思想不够发散。
在今后学习中应更多的动脑,综合运用所学。
基本功不够,如fputs()等函数用的不好,有时同样的问题多次犯,给实验课老师带来很大的麻烦。
这说明我的知识不够广,有很多有用但不做考试要求的书中内容没有学好,认识程度不够深刻。
就算以后C语言这门课程结束后,也应多看相关东西,多上机练习,才能真正从本质上提高自己。
知识不够广泛,如VC++6.0等程序,自己试了好一阵也不会用;说明我电脑水平还是不够,自学能力不够。
已会的东西掌握的还是不够好。
实验心得
通过本次C语言上机实验,我对这个介于人类与非人类之间的计算机编程语言有了一定的体验。
其间开心过、郁闷过、无奈过、彷徨过……随着实验的胜利成功与实验报告的胜利完成,有点微微的自豪感使人难忘。
感谢肖颗老师的高标准、严要求。
感谢实验课上老师的耐心指点,也感谢我在实验中经历过的点点滴滴……伴随着学习的深入,我发现高深的东西还有很多很多,等待着我自己去挖掘。
对C语言,我会更加努力。
附录
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#defineN10
structbook
{
intID;
charChass[10];
charBookname[25];
charAuthor[10];
charPublishing[25];
intCount;
floatPrice;
};
structbookbooks[N];
inti;
charh[100];
voidmenu()
{
printf("****************************");
printf("简易图书信息管理系统");
printf("**************************");
printf("1.查询图书基本信息");
printf("2.按书名查询");
printf("3.查询数量>=2的图书信息");
printf("4.显示图书全部信息");
printf("5.按图书数量排序");
printf("6.按图书种类排序");
printf("7.每本图书总价");
printf("8.全部图书总价");
printf("9.修改图书信息");
printf("10.借出图书");
printf("11.退出\n");
}
voidreadfile()
{
FILE*p;
p=fopen("E:
\\梅亚龙201162075.txt","r");
if(p==0)
{
printf("图书信息打开文件错误!
\n");
return;
}
fgets(h,100,p);
for(i=0;i<=N;i++)
{
fscanf(p,"%d%s%s%s%s%d%f",&books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,&books[i].Count,&books[i].Price);
}
fclose(p);
}
voidShowbooks()/*查询图书基本信息*/
{
readfile();
printf("编号分类书名作者出版社数量单价\n");
for(i=0;i<=N;i++)
{
printf("%d%s%s%s%s%d%.2f\n",books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price);
}
}
voidQrybybookname()/*按书名查询*/
{
charbookname1[25];
printf("请输入书名:
\n");
scanf("%s",bookname1);
printf("编号分类书名作者出版社数量单价\n");
readfile();
for(i=0;i<=N;i++)
{
if(strcmp(bookname1,books[i].Bookname)==0)
{
printf("%d%s%s%s%s%d%.2f\n",books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price);
}
}
}
voidQrycount()/*查询数量>=2的图书信息*/
{
printf("编号分类书名作者出版社数量单价\n");
readfile();
for(i=0;i<=N;i++)
{
if(books[i].Count>=2)
{
printf("%d%s%s%s%s%d%.2f\n",books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price);
}
}
}
voidQryallbook()/*显示图书全部信息*/
{
printf("编号分类书名作者出版社数量单价总价\n");
readfile();
floats,x=0;
for(i=0;i<=N;i++)
{
s=books[i].Count*books[i].Price;
printf("%d%s%s%s%s%d%.2f%.2f\n",books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price,s);
x=x+s;
}
printf("全部图书总价:
%.2f\n",x);
}
voidSortbycount()/*按图书数量排序*/
{
ints=0;
printf("编号分类书名作者出版社数量单价\n");
readfile();
for(s=0;s>=0;s++)
for(i=0;i<=N;i++)
{
if(books[i].Count==s)
{
printf("%d%s%s%s%s%d%.2f\n",books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price);
}
}
}
voidSortbychass()/*按图书种类排序*/
{
intj;
readfile();
printf("编号分类书名作者出版社数量单价\n");
structbookbook1;
for(i=0;ifor(j=i+1;jif(strcmp(books[i].Chass,books[j].Chass)>0)
{
book1=books[i];
books[i]=books[j];
books[j]=book1;
}
for(i=0;i{
printf("%d%s%s%s%s%d%.2f\n",books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price);
}
}
voidabookprice()/*每本图书总价*/
{
printf("书名总价\n");
floats;
readfile();
for(i=0;i<=N;i++)
{
s=books[i].Count*books[i].Price;
printf("%s%.2f\n",books[i].Bookname,s);
}
}
voidallbookprice()/*全部图书总价*/
{
floats;
floatx=0;
readfile();
printf("全部图书总价:
");
for(i=0;i<=N;i++)
{
s=books[i].Count*books[i].Price;
x=x+s;
}
printf("%.2f\n",x);
}
voidxie()
{
FILE*fp;
fp=fopen("E:
\\梅亚龙201162075.txt","r");
if(fp==0)
{
printf("图书信息打开文件错误!
\n");
return;
}
fputs(h,fp);
for(i=0;i<=N;i++)
{
fprintf(fp,"%s%s%s%s%d%f",books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price);
}
printf("修改成功!
");
fclose(fp);
}
voidfaxbook()/*修改图书信息*/
{
inta;
readfile();
printf("请输入修改书号:
");
scanf("%d",&a);
printf("编号分类书名作者出版社数量单价\n");
for(i=0;i<=N;i++)
{
if(a==books[i].ID)
{
printf("%d%s%s%s%s%d%.2f\n",books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price);
printf("请输入修改后的信息:
\n");
scanf("%s%s%s%s%d%f",books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,&books[i].Count,&books[i].Price);
printf("修改后的信息:
\n");
printf("编号分类书名作者出版社数量单价\n");
for(i=0;i<=N;i++)
{
printf("%d%s%s%s%s%d%.2f",books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price);
}
xie();
}
}
}
voidwrite()
{
FILE*fp;
fp=fopen("E:
\\梅亚龙201162075.txt","r");
if(fp==0)
{
printf("图书信息打开文件错误!
\n");
return;
}
fputs(h,fp);
for(i=0;i<=N;i++)
{
fprintf(fp,"%d",books[i].Count);
}
printf("借出成功!
");
fclose(fp);
}
voidbrwbook()/*借出图书*/
{
inta;
readfile();
printf("请输入借出图书的书号:
");
scanf("%d",&a);
printf("编号分类书名作者出版社数量单价\n");
for(i=0;i<=N;i++)
{
if(a==books[i].ID)
{
printf("%d%s%s%s%s%d%.2f\n",books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price);
books[i].Count=books[i].Count-1;
printf("借出后的图书信息:
\n");
printf("编号分类书名作者出版社数量单价\n");
for(i=0;i<=N;i++)
{
printf("%d%s%s%s%s%d%.2f\n",books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price);
}
write();
}
}
if(a>=N)
{
printf("该图书已借出或不存在!
");
return;
}
}
voidmain()
{
intidt;
while
(1)
{
menu();
printf("请输入编号:
");
scanf("%d",&idt);
switch(idt)
{
case1:
Showbooks();break;
case2:
Qrybybookname();break;
case3:
Qrycount();break;
case4:
Qryallbook();break;
case5:
Sortbycount();break;
case6:
Sortbychass();break;
case7:
abookprice();break;
case8:
allbookprice();break;
case9:
faxbook();break;
case10:
brwbook();break;
case11:
exit(0);break;
}
}
}