版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 . . . 信息工程大学计算机系课程实验报告实验课程:C语言程序设计基础实验项目:图书管理系统指导教师:莉丽学生:学生学号:20100班 级:计算机科学与技术实验地点: 5201实验时间:2011 年 5 月 18 日实验成绩:评阅老师:一上机实验目的设计并实现该课程设计的目的主要在于:1) 对一定规模的综合软件编程有一定的经历与认识。在做的过程中,你会发现,提前的规划即分析与设计重要过编程过程,否则会走很多弯。2) 综合并结合现实应用使用C语言的知识。这个设计会用到C语言这门课的全部知识,其中以文件、数组与链表为主,书中提到的主要与重点算法都会使用到。3) 不仅涉与编程,还涉与到功能分析、
2、模块规划等方面的知识,这些知识在后续课程学习时,会经常使用。这些知识在学软件工程这门课时,会系统讲解。希望有了这次的经历,你能更好的体会软件工程这门课的意义,并能学好和用好其中的知识。4) 每项功能的实现,一般有多种方法,这里都强调使用时空效率最高的方法,此次实现只是让你有一个初步的认识,在下学期学习了数据结构后,你就知道为什么让你这样做,你也对数据结构这门课的作用与意义有所了解。二实验环境PC机每人1台三上机实验容编写图书管理系统,具有以下基本功能(1) 各种基本数据的录入。如:图书资料基本信息录入等。(2) 各种基本数据
3、的修改。即:允许对以与录入的数据重新进行编辑、修改。(3) 各种基本数据的插入。如:在图书采购信息中插入一条新信息等。(4) 各种基本数据的删除。如:假设某本书遗失且馆藏数为0,删除该书的相关信息等。(5) 基于各种数据的查询。如:书名中含有“计算机”的所有书籍、全部借出的所有图书等。(6) 基于各种基本数据的统计计算。四上机调试程序流程图(注:可打印)调用_window()函数,设置界
4、面属性调用words()函数在相应位置输出文字调用play(),输入y的值Play = ?开始调用choose()显示光标调用add函数调用manage函数调用search函数调用sta函数退出,执行exit(0)结束五上机调试中出现的错误信息、错误原因与解决办法读写错误:fopen的时候改成用二进制读写.目前不知道为什么不用二进制不能读写.六上机调试后的源程序与还存在的问题#include <stido.h>#include <dos.h>#include <conio.h>#include <stdlib.h>#include <std
5、io.h>#include <string.h>#define Key_UP 72#define Key_DOWN 80#define Key_ENTER 28#define Key_N 49#define Key_Y 21#define LEN sizeof(struct linklist)typedef struct book1/*图书基本信息结构体*/char name20;char writer30;char type20;char num20;char time20;char press20;char edition20;char ISBN40;float pric
6、e;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;/*图书采购信息:书名、作者、采购日期、采购数量、采购单价、采购金额、发票、图书编号等。*/typedef struct book3/*图书借阅信息结构
7、体*/*需要输入的信息*/char name20;char person20;char company20;char num20; /*借书证号*/char btime15;/*运算可得信息*/char rtime15;char fine20;blend;/*图书借阅信息:借阅人、借阅人所在单位、借书证号、所借书名、借阅日期、归还日期、逾期罚款等。借阅期限为一个月,逾期1天,罚款1角。*/struct linklistbbasic binfo;struct linklist *next;int key();void menu();void _window();void words();void
8、 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();void orderw(bbasic binfo100)
9、;void orderw(bbasic binfo100);int halfn(int sum,bbasic binfo100,char *find);int halfw(int sum,bbasic binfo100,char *find);void sta();void blist();void bmoney();int main(void)menu();void menu()int y;_window();/*显示窗口*/words();/*显示菜单文字*/y = choose(7,19);/*光标*/play(y);/*根据键盘值操作*/void _window()/*窗口初始化*/t
10、extbackground(BLUE);textcolor(WHITE);clrscr();box(1,1,24,80);void words()/*显示菜单文字*/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);cpr
11、intf("Book Statistic");gotoxy(30,19);cprintf("Exit");gotoxy(35,22);textcolor(LIGHTGRAY);textbackground(BLUE);cprintf(" Main Menu ");gotoxy(25, 2);textcolor(RED);highvideo();cprintf("The Library Managemnt Program");normvideo();void box(int x,int y, int high, in
12、t width)/*画方框*/int i;gotoxy(x,y);putchar(0xda);for (i = 1 ; i < width - 1; i+)putchar(0xc4);putchar(0xbf);gotoxy(x, y + high - 3);putchar(0xc0);gotoxy(width, y + high - 3);putchar(0xd9);for (i = 1; i < high - 1; i+)gotoxy(x,y+i);putchar(0xb3);gotoxy(x + width -1, y+i);putchar(0xb3);gotoxy(x, y
13、 + high - 1);putchar(0xc0);for (i = 1 ; i < width - 1; i+)putchar(0xc4);gotoxy(x + 1, y + high - 3);for (i = 1; i < width - 1; i+)putchar(0xc4);gotoxy(x + width-1 ,y + high -1);putchar(0xd9);int key()/*读键盘*/union REGS rg;rg.h.ah = 0;int86(0x16, &rg, &rg);return rg.h.ah;int choose(int b
14、ot,int top) /*根据Y的值选择操作*/int ky,y = 7;gotoxy(30,bot);doky = key();switch(ky)case Key_UP:if (y > bot)upbar(y);y = y - 3;break;case Key_DOWN:if (y < top)downbar(y);y = y + 3;break;while(ky != Key_ENTER);return y;upbar(int y)/*光标上移*/int i;typedef struct texel_structunsigned char ch;unsigned char
15、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,&t);gotoxy(30,y-3);return;downbar(int y)/*光标下移*/int i;typedef struct texel_structunsigned char ch;unsigned char attr;texel;texel t;for(i
16、=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,&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:ex
17、it(1);default:printf("Error");exit(0);void add() /*显示 "选择增加那种类型的信息" 的窗口*/int y;_window();gotoxy(30,7);textbackground(RED);cprintf("Add Basic info");textbackground(BLUE);gotoxy(30,10);cprintf("Add Purchase info");gotoxy(30,13);cprintf("Add Borrow info"
18、;);gotoxy(30,16);cprintf("Back");gotoxy(25, 2);textcolor(RED);highvideo();cprintf("The Library Managemnt Program");normvideo();gotoxy(35,22);textcolor(LIGHTGRAY);textbackground(BLUE);cprintf(" Add Book ");textbackground(BLUE);textcolor(WHITE);y=choose(7,16);switch(y)/*选
19、择增加信息类型的函数*/case 7 :addbook();break;/*增加图书基本信息*/case 10:addbuy();break;/*增加图书购买信息*/case 13:addborrow();break;/*增加图书借阅信息*/case 16:menu();break;default:printf("Error");break;void addbook()/*增加图书基本信息*/int ky, sum = 0;FILE *fp;bbasic binfo;textbackground(BLUE);textcolor(WHITE);clrscr();if(fp =
20、 fopen("e:sum.dat","rb") != NULL)/*读取图书基本信息数量sum*/fread(&sum,2,1,fp);fclose(fp);if (fp = fopen("e:addbook.dat","ab") = NULL)printf("cannot write the addbook.dat");doclrscr();gotoxy(2,2);cprintf("Please input the classfication of chinese libr
21、ary classification:");scanf("%s",&binfo.type);getchar();gotoxy(2,4);cprintf("Please input the book's number:");scanf("%s",&binfo.num);getchar();gotoxy(2,6);cprintf("Please input the book's name:");scanf("%s",&);getc
22、har();gotoxy(2,8);cprintf("Please input the book's writer:");scanf("%s",&binfo.writer);getchar();gotoxy(2,10);cprintf("Please input the the book's press:");scanf("%s",&binfo.press);getchar();gotoxy(2,12);cprintf("Please input the book'
23、s edition:");scanf("%s",&binfo.edition);getchar();gotoxy(2,14);cprintf("Please input the book's publish time:");scanf("%s",&binfo.time);getchar();gotoxy(2,16);cprintf("Please input the price:");scanf("%f",&binfo.price);getchar();
24、gotoxy(2,18);cprintf("Please input the ISBN of the book:");scanf("%s",&binfo.ISBN);getchar();gotoxy(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
25、:");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(fwrite(&binfo,sizeof(bbasic),1,fp) != 1)clrscr();printf("cannot save the data.");while(ky != Key_N);fclose(
26、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);fclose(fp);menu();/* 中图法分类号、(要考虑多个作者情况)、出版日期、ISBN、版次、定价、馆藏数、借阅数等。 */void
27、 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);doclrscr();gotoxy(2,2);cprintf("Please input the book's name:");sca
28、nf("%s",&);gotoxy(2,4);cprintf("Please input the book's writer:");scanf("%s",&pinfo.writer);gotoxy(2,6);cprintf("Please input the book's buy time:");scanf("%s",&pinfo.writer);gotoxy(2,8);cprintf("Please input the nu
29、mber of the book buy:");scanf("%d",&pinfo.num);gotoxy(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);cprin
30、tf("Please input the bill number:");scanf("%s", &pinfo.bill);gotoxy(10,20);cprintf("Press N(n) to finish add book or Press any key to add more book.");ky = key();if(fwrite(&pinfo,sizeof(pinfo),1,fp) != 1)clrscr();printf("cannot save the data.");while(k
31、y != Key_N);fclose(fp);menu();void addborrow()/*增加图书借阅信息*/int ky;FILE *fp;blend linfo;textbackground(BLUE);textcolor(WHITE);clrscr();if(fp = fopen("e:addborrow.dat","ab") = NULL)printf("cannot open the addborrow data.");exit(0);doclrscr();gotoxy(2,2);cprintf("Pleas
32、e input the lend book's name:");scanf("%s",&);gotoxy(2,4);cprintf("Please input the borrower's name:");scanf("%s",&linfo.person);gotoxy(2,6);cprintf("Please input the company of the borrower:");scanf("%s",&linfo pan
33、y);gotoxy(2,8);cprintf("Please input the borrower's card:");scanf("%s", &linfo.num);gotoxy(2,10);cprintf("Please input the borrow time(ex.2010/01/26):");scanf("%s", &linfo.btime);gotoxy(2,12);cprintf("Please input the return time(ex.2010/05/08
34、):");scanf("%s", &linfo.rtime);gotoxy(10,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();struc
35、t linklist* create() /*创建链表*/int i, sum;struct linklist *head, *p1, *p2;FILE *fp;sum = readsum();p1 = (struct linklist*)malloc(LEN);head = p2 = p1;if (fp = fopen("e:addbook.dat","rb") = NULL)printf("cannot open the file.");for (i = 0; i < sum; i+)p2 = p1;p1 = (struct
36、 linklist*)malloc(LEN);p2 -> next = p1;if(fread(&(p2 -> binfo),sizeof(bbasic),1,fp) != 1)printf("cannot save the data.");p2 -> next = NULL;fclose(fp);return head;void modify()struct linklist* p,*head;char find30;int i,ky,sum;FILE *fp;p= head = create();sum = readsum();clrscr()
37、;printf("Plese input the name of the book you want to modify:");scanf("%s",find);for (i = 0;i<sum;i+)if(strcmp(find,p -> ) = 0)gotoxy(2,2);cprintf("Please input the classfication of chinese library classification:");scanf("%s",&(p -> bin
38、fo.type);getchar();gotoxy(2,4);cprintf("Please input the book's number:");scanf("%s",&(p -> binfo.num);getchar();gotoxy(2,6);cprintf("Please input the book's name:");scanf("%s",&(p -> );getchar();gotoxy(2,8);cprintf("Please
39、 input the book's writer:");scanf("%s",&(p -> binfo.writer);getchar();gotoxy(2,10);cprintf("Please input the the book's press:");scanf("%s",&(p -> binfo.press);getchar();gotoxy(2,12);cprintf("Please input the book's edition:");sc
40、anf("%s",&(p -> binfo.edition);getchar();gotoxy(2,14);cprintf("Please input the book's publish time:");scanf("%s",&(p -> binfo.time);getchar();gotoxy(2,16);cprintf("Please input the price:");scanf("%f",&(p -> binfo.price);get
41、char();gotoxy(2,18);cprintf("Please input the ISBN of the book:");scanf("%s",&(p -> binfo.ISBN);getchar();gotoxy(2,20);cprintf("Please input the count of books:");scanf("%d",&(p -> binfo.count);getchar();gotoxy(2,22);cprintf("Please input th
42、e lend number of the book:");scanf("%d",&(p -> binfo.lendnum);getchar();printf("Press Y to continue or Press anykey to back to menu.");ky = key();if(ky = Key_Y)p = head;i = -1;clrscr();printf("Plese input the name of the book you want to modify:");scanf(&quo
43、t;%s",find);elsep = head;if (fp = fopen("e:addbook.dat","wb") = NULL)printf("cannot open addbook.dat");for (i = 0;i <sum ;i+)if(fwrite(&(p -> binfo),sizeof(bbasic),1,fp) != 1)clrscr();printf("cannot save the data.");p = p -> next;fclose(fp);m
44、enu();p = p -> next;clrscr();printf("cannot find the book.");getch();void delete()struct linklist* p1,*p2,*head;char find30;int i,ky,sum,flag = 0;FILE *fp;p1 = p2 = head = create();sum = readsum();clrscr();printf("Plese input the name of the book you want to Delete:");scanf(&q
45、uot;%s",find);if(strcmp(find,head -> ) = 0)head = head ->next;sum-;flag = 1;elsefor (i = 0;i< sum ;i+)p1 = p1 -> next;if(strcmp(find,p1 -> ) = 0)p1 = p1 -> next;p2 -> next = p1;sum -;flag = 1;break;elsep2 = p2 -> next;if (flag != 1)printf("cannot
46、 find the book.");getch();menu();p1 = head;if (fp = fopen("e:addbook.dat","wb") = NULL)printf("cannot open addbook.dat");for (i = 0;i <sum ;i+)if(fwrite(&(p1 -> binfo),sizeof(bbasic),1,fp) != 1)clrscr();printf("cannot save the data.");p1 = p1 -&
47、gt; next;fclose(fp);if(fp = fopen("e:sum.dat","wb") = NULL)printf("cannot open sum.dat");if(fwrite(&sum,2,1,fp) != 1)printf("fail to write the sum.dat.");getch();exit(0);fclose(fp);printf("succeed to delete the book.press anykey to get back to the mai
48、nmenu.");getch();void insert()struct linklist* p1,*p2, *head, *temp;char find10;int i,ky,sum,flag = 0;FILE *fp;clrscr();sum = readsum();p1 = p2 = head = create();temp = (struct linklist*)malloc(LEN);printf("The number you want to insert behind:");scanf("%s",find);for(i = 0;i
49、< sum; i+)p1 = p1->next;if(strcmp(find,p2 -> binfo.num) = 0)p2 -> next = temp;temp -> next =p1;sum +;flag = 1;break;elsep2 = p2->next;if (flag != 1)printf("cannot find the book.");getch();menu();clrscr();gotoxy(2,2);cprintf("Please input the classfication of chinese
50、library classification:");scanf("%s",&(temp -> binfo.type);getchar();gotoxy(2,4);cprintf("Please input the book's number:");scanf("%s",&(temp -> binfo.num);getchar();gotoxy(2,6);cprintf("Please input the book's name:");scanf("%s
51、",&(temp -> );getchar();gotoxy(2,8);cprintf("Please input the book's writer:");scanf("%s",&(temp -> binfo.writer);getchar();gotoxy(2,10);cprintf("Please input the the book's press:");scanf("%s",&(temp -> binfo.press)
52、;getchar();gotoxy(2,12);cprintf("Please input the book's edition:");scanf("%s",&(temp -> binfo.edition);getchar();gotoxy(2,14);cprintf("Please input the book's publish time:");scanf("%s",&(temp -> binfo.time);getchar();gotoxy(2,16);cprint
53、f("Please input the price:");scanf("%f",&(temp -> binfo.price);getchar();gotoxy(2,18);cprintf("Please input the ISBN of the book:");scanf("%s",&(temp -> binfo.ISBN);getchar();gotoxy(2,20);cprintf("Please input the count of books:");scan
54、f("%d",&(temp -> binfo.count);getchar();gotoxy(2,22);cprintf("Please input the lend number of the book:");scanf("%d",&(temp -> binfo.lendnum);getchar();gotoxy(10,25);cprintf("Press Y to continue or Press anykey to back to menu.");ky = key();if(ky
55、 = Key_Y)insert();elsep1 = head;if (fp = fopen("e:addbook.dat","wb") = NULL)printf("cannot open addbook.dat");for (i = 0;i <sum ;i+)if(fwrite(&(p1 -> binfo),sizeof(bbasic),1,fp) != 1)clrscr();printf("cannot save the data.");p1 = p1 -> next;fclose(fp);if(fp = fopen("e:sum.dat","wb") = NULL)printf("cannot open sum.dat");if(fwrite(&sum
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论