1、c语言 图书管理系统 上机实验报告(此文档为word格式,下载后您可任意编辑修改!)成都信息工程大学计算机系课程实验报告实验课程:C语言程序设计基础实验项目:图书管理系统指导教师: 李莉丽学生姓名: 学生学号:20100班 级:计算机科学与技术实验地点: 5201实验时间:2011 年 5 月 18 日实验成绩:评阅老师:一【上机实验目的】设计并实现该课程设计的目的主要在于:1) 对一定规模的综合软件编程有一定的经历与认识。在做的过程中,你会发现,提前的规划即分析与设计重要过编程过程,否则会走很多弯。2) 综合并结合现实应用使用C语言的知识。这个设计会用到C语言这门课的全部知识,其中以文件、数
2、组与链表为主,书中提到的主要及重点算法都会使用到。3) 不仅涉及编程,还涉及到功能分析、模块规划等方面的知识,这些知识在后续课程学习时,会经常使用。这些知识在学软件工程这门课时,会系统讲解。希望有了这次的经历,你能更好的体会软件工程这门课的意义,并能学好和用好其中的知识 。4) 每项功能的实现,一般有多种方法,这里都强调使用时空效率最高的方法,此次实现只是让你有一个初步的认识,在下学期学习了数据结构后,你就知道为什么让你这样做,你也对数据结构这门课的作用及意义有所了解。二【实验环境】PC机每人1台三【上机实验内容】编写图书管理系统,具有以下基本功能(1)各种基本数据的录入。如:图书资料基本信息
3、录入等。(2) 各种基本数据的修改。即:允许对以及录入的数据重新进行编辑、修改。(3)各种基本数据的插入。如:在图书采购信息中插入一条新信息等。(4)各种基本数据的删除。如:假设某本书遗失且馆藏数为0,删除该书的相关信息等。(5)基于各种数据的查询。如:书名中含有“计算机”的所有书籍、全部借出的所有图书等。(6) 基于各种基本数据的统计计算。四【上机调试程序流程图】(注:可打印)五【上机调试中出现的错误信息、错误原因及解决办法】读写错误:fopen的时候改成用二进制读写.目前不知道为什么不用二进制不能读写.六【上机调试后的源程序及还存在的问题】#include stido.20; char I
4、SBN40; float price; int count; int lendnum;bbasic;*图书资料基本信息:中图法分类号、图书编号、书名、作者(要考虑多个作者情况)、出版社、出版日期、ISBN、版次、定价、馆藏数、借阅数等。*typedef struct book2 *图书采购信息结构体* char name20; char writer20; char time15; int num; float price; float money; char bill 30;bpurchase;*图书采购信息:书名、作者、采购日期、采购数量、采购单价、采购金额、发票号码、图书编号等。*typ
5、edef struct book3 *图书借阅信息结构体*需要输入的信息* char name20; char person20; char company20; char num20; *借书证号* char btime15;*运算可得信息* char rtime15; char fine20;blend;*图书借阅信息:借阅人、借阅人所在单位、借书证号、所借书名、借阅日期、归还日期、逾期罚款等。借阅期限为一个月,逾期1天,罚款1角。*struct linklist bbasic binfo; struct linklist *next;int key();void menu();void
6、_window();void words();void box(int,int,int,int);int _choose(int bot, int top);void play(int);int readsum();void add();void addbook();void addbuy();void addborrow();void manage();struct linklist* create();void modify();void delete();void insert();void search();void searchname();void searchwriter();v
7、oid orderw(bbasic binfo100);void orderw(bbasic binfo100);int (int sum,bbasic binfo100,char *find);int (void) menu();void menu() int y; _window(); *显示窗口* words(); *显示菜单文字* y = choose(7,19); *光标* play(y); *根据键盘值操作*void _window() *窗口初始化* textbackground(BLUE); textcolor(WHITE); clrscr(); box();void word
8、s() *显示菜单文字* textcolor(WHITE); gotoxy(30,7); textbackground(RED); cprintf(Add Book info); textbackground(BLUE); gotoxy(30,10); cprintf(Manage Book); gotoxy(30,13); cprintf(Search Book); gotoxy(30,16); cprintf(Book Statistic); gotoxy(30,19); cprintf(Exit); gotoxy(35,22); textcolor(LIGHTGRAY); textbac
9、kground(BLUE); cprintf( Main Menu ); gotoxy(25, 2); textcolor(RED); REGS rg; rg. rg. y;upbar(int y) *光标上移* int i; typedef struct texel_struct unsigned char ch; unsigned char attr; texel; texel t; for(i=30;i=48;i+) gettext(i,y,i,y,&t); t.attr=0x1f; puttext(i,y,i,y,&t); gettext(i,y-3,i,y-3,&t); t.attr
10、=0x4f; puttext(i,y-3,i,y-3,&t); ; gotoxy(30,y-3); return;downbar(int y) *光标下移* int i; typedef struct texel_struct unsigned char ch; unsigned char attr; texel; texel t; for(i=30;i=48;i+) gettext(i,y,i,y,&t); t.attr=0x1f; puttext(i,y,i,y,&t); gettext(i,y+3,i,y+3,&t); t.attr=0x4f; puttext(i,y+3,i,y+3,&
11、t); ; gotoxy(30,y+3); return;void play(int y) *根据y的值选择操作* switch(y) case 7:add(); break; case 10:manage(); break; case 13:search(); break; case 16:sta(); break; case 19:exit(1); default:printf(Error);exit(0); void add() *显示 选择增加那种类型的信息 的窗口* int y; _window(); gotoxy(30,7); textbackground(RED); cprint
12、f(Add Basic info); textbackground(BLUE); gotoxy(30,10); cprintf(Add Purchase info); gotoxy(30,13); cprintf(Add Borrow info); gotoxy(30,16); cprintf(Back); gotoxy(25, 2); textcolor(RED); (e:sum.dat,rb) != NULL) *读取图书基本信息数量sum* fread(&sum,2,1,fp); fclose(fp); if (fp = fopen(e:addbook.dat,ab) = NULL) p
13、rintf(cannot write the addbook.dat); do clrscr(); gotoxy(2,2); cprintf(Please input the classfication of chinese library classification:); scanf(%s,&binfo.type); getchar(); gotoxy(2,4); cprintf(Please input the books number:); scanf(%s,&binfo.num); getchar(); gotoxy(2,6); cprintf(Please input the bo
14、oks name:); scanf(%s,&binfo.name); getchar(); gotoxy(2,8); cprintf(Please input the books writer:); scanf(%s,&binfo.writer); getchar(); gotoxy(2,10); cprintf(Please input the the books press:); scanf(%s,&binfo.press); getchar(); gotoxy(2,12); cprintf(Please input the books edition:); scanf(%s,&binfo
15、.edition); getchar(); gotoxy(2,14); cprintf(Please input the books publish time:); scanf(%s,&binfo.time); getchar(); gotoxy(2,16); cprintf(Please input the price:); scanf(%f,&binfo.price); getchar(); gotoxy(2,18); cprintf(Please input the ISBN of the book:); scanf(%s,&binfo.ISBN); getchar(); gotoxy(
16、2,20); cprintf(Please input the count of books:); scanf(%d,&binfo.count); getchar(); gotoxy(2,22); cprintf(Please input the lend number of the book:); scanf(%d,&binfo.lendnum); getchar(); gotoxy(10,25); cprintf(Press N(n) to finish add book or Press any key to add more book.); ky = key(); sum+; if(f
17、write(&binfo,sizeof(bbasic),1,fp) != 1) clrscr(); printf(cannot save the data.); while(ky != Key_N); fclose(fp); if (fp = fopen(e:sum.dat,wb) = NULL) printf(cannot save the sum of the book.); getch(); exit(0); if(fwrite(&sum,2,1,fp) != 1) printf(fail to write the sum.dat.); getch(); exit(0); ; fclos
18、e(fp); menu();* 中图法分类号、(要考虑多个作者情况)、出版社、出版日期、ISBN、版次、定价、馆藏数、借阅数等。 *void addbuy() *增加图书购买信息* int ky; FILE *fp; bpurchase pinfo; textbackground(BLUE); textcolor(WHITE); clrscr(); if(fp = fopen(e:addbuy.dat,ab) = NULL) printf(cannot open the addbuy data.); exit(0); do clrscr(); gotoxy(2,2); cprintf(Plea
19、se input the books name:); scanf(%s,&pinfo.name); gotoxy(2,4); cprintf(Please input the books writer:); scanf(%s,&pinfo.writer); gotoxy(2,6); cprintf(Please input the books buy time:); scanf(%s,&pinfo.writer); gotoxy(2,8); cprintf(Please input the number of the book buy:); scanf(%d,&pinfo.num); goto
20、xy(2,10); cprintf(Please input the price:); scanf(%f,&pinfo.price); gotoxy(2,12); cprintf(Please input the real money of buy the book:); scanf(%f, &pinfo.money); gotoxy(2,14); cprintf(Please input the bill number:); scanf(%s, &pinfo.bill); gotoxy(10,20); cprintf(Press N(n) to finish add book or Pres
21、s any key to add more book.); ky = key(); if(fwrite(&pinfo,sizeof(pinfo),1,fp) != 1) clrscr(); printf(cannot save the data.); while(ky != Key_N); fclose(fp); menu();void addborrow() *增加图书借阅信息* int ky; FILE *fp; blend linfo; textbackground(BLUE); textcolor(WHITE); clrscr(); if(fp = fopen(e:addborrow.
22、dat,ab) = NULL) printf(cannot open the addborrow data.); exit(0); do clrscr(); gotoxy(2,2); cprintf(Please input the lend books name:); scanf(%s,&linfo.name); gotoxy(2,4); cprintf(Please input the borrowers name:); scanf(%s,&linfo.person); gotoxy(2,6); cprintf(Please input the company of the borrowe
23、r:); scanf(%s,&linfopany); gotoxy(2,8); cprintf(Please input the borrowers card:); scanf(%s, &linfo.num); gotoxy(2,10); cprintf(Please input the borrow time(ex.20100126):); scanf(%s, &linfo.btime); gotoxy(2,12); cprintf(Please input the return time(ex.20100508):); scanf(%s, &linfo.rtime); gotoxy(10,
24、20); cprintf(Press N(n) to finish add book or Press any key to add more book.); ky = key(); if(fwrite(&linfo,sizeof(linfo),1,fp) != 1) clrscr(); printf(cannot save the data.); while(ky != Key_N); fclose(fp); menu();struct linklist* create() *创建链表* int i, sum; struct linklist *(e:addbook.dat,rb) = NU
25、LL) printf(cannot open the file.); for (i = 0; i next = p1; if(fread(&(p2 - binfo),sizeof(bbasic),1,fp) != 1) printf(cannot save the data.); p2 - next = NULL; fclose(fp); return of chinese library classification:); scanf(%s,&(p - binfo.type); getchar(); gotoxy(2,4); cprintf(Please input the books nu
26、mber:); scanf(%s,&(p - binfo.num); getchar(); gotoxy(2,6); cprintf(Please input the books name:); scanf(%s,&(p - binfo.name); getchar(); gotoxy(2,8); cprintf(Please input the books writer:); scanf(%s,&(p - binfo.writer); getchar(); gotoxy(2,10); cprintf(Please input the the books press:); scanf(%s,&
27、(p - binfo.press); getchar(); gotoxy(2,12); cprintf(Please input the books edition:); scanf(%s,&(p - binfo.edition); getchar(); gotoxy(2,14); cprintf(Please input the books publish time:); scanf(%s,&(p - binfo.time); getchar(); gotoxy(2,16); cprintf(Please input the price:); scanf(%f,&(p - binfo.price); getchar(); gotoxy(2,18); cprintf(Please input the ISBN of the book:); scanf(%s,&(p - binfo.ISBN); getchar();