《程序设计基础课程设计报告.doc》由会员分享,可在线阅读,更多相关《程序设计基础课程设计报告.doc(21页珍藏版)》请在三一办公上搜索。
1、仲恺农业工程学院课 程 设 计课 程 程序设计基础姓 名 金峰院(系) 计算机科学与工程学院专业班级 计算机093学 号 200910214308指导教师 黄明志职 称 副教授日 期 2010年06 月26日仲恺农业工程学院教务处制n 题目:图书信息管理系统设计图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能: 1 系统以菜单方式工作2 图书信息录入功能(图书信息用文件保存)输入3 图书信息浏览功能输出4 图书信息查询功能算法查询方式:l 按书名查询l 按作者名查询5 图书信息的删除与修改(可选项)n 总体设计: 程序分为六个
2、模块u 主菜单u 图书信息录入u 图书信息浏览u 图书信息查询u 图书信息修改u 系统说明 程序框图如下:n 详细设计:u 主菜单void title(void)/*标题函数*/void menu(void)/*菜单显示函数*/char input_menu(void) /*菜单选择函数*/程序框图:u 图书信息录入void input_bookdata(void)/*图书录入函数*/程序框图:u 图书信息浏览void output(void)/*信息输出函数*/程序框图:u 图书信息查询void search(void)/*查询函数*/void search_output(char x)/*
3、查找函数内嵌的输出函数。 有一缺陷,此算法放书名和作者名一样时,或出错。*/程序框图:u 图书信息修改void change(void)/*修改函数修单*/void amend(char x)/*修改函数修单内嵌修改函数*/void delect(char x)/*修改函数修单内嵌删除函数*程序框图:u 系统说明void about(void)程序框图:n 软件测试:主界面:信息录入: 信息浏览: 信息查询: 信息修改: n 综合设计总结:1. 制作菜单时,使用getchar()函数,结果导致功能选择多了回车输入,导致下次选择出错。解决方法是更换为getch()函数,此函数不需要回车确认,故避
4、免此问题。2. 写输出函数时,遇到选择输出时,屏幕没有反应,检查函数没有错误。发现为程序执行过快,闪一下就过去。引入了system()函数中的”pause”参数,在浏览输出后暂停。3. 搜索资料时,算法有点问题,导致不够准确。所以在后面修改功能里,忽略其它查询方法,只采用isbn搜索。4. 在定义指针数组时,有时会忘记是指针或者是指针变量。5. 生成储存文件时,有时的fopen或者fclose会用错参数或者放错位置。n 附录:(源程序)/* 题目36:图书信息管理系统设计图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:1、系
5、统以菜单方式工作2、图书信息录入功能(图书信息用文件保存)输入3、图书信息浏览功能输出4、图书信息查询功能算法查询方式:按书名查询按作者名查询5、图书信息的删除与修改(可选项) */#include#include /*system函数用*/#include /*调用getch函数,避开gechar函数的回车问题*/#define N 2struct Libarychar isbn20,book_name20,writer20,publishing20,id10,date10;float price;int order;/*序号*/bookN;/*定义结构体,存放书籍数据*/void titl
6、e(void);void menu(void);char input_menu(void);void input_bookdata(void);void output(void);void search(void);void search_output(char x);void change(void);void about(void);void amend(char x);void delect(char x);/*以上n行为函数声明*/void main()char i;int flag=0;dosystem(cls);title();menu();i=input_menu();/*选择*
7、/switch(i)case1:input_bookdata();/*输入*/flag=1;break;case2:output();/*输出*/break;case3:search();/*查找*/break;case4:change();/*修改*/break;case5:about();/*系统说明*/break;case6:exit(0);/*退出*/break;default:printf(输入错误。n);printf(n);while(flag=1);void title(void)/*标题函数*/printf(n);printf(t*n);printf(t* *n);printf
8、(t* 欢迎使用图书信息管理系统 *n);printf(t* *n);printf(t* Welcome to Library Information Management System *n);printf(t* *n);printf(t* 计机093 金峰 200910214309 *n);printf(t*n);printf(n);void menu(void)/*菜单显示函数*/printf(t请按序号选择功能:n);printf(n);printf(tttt1.图书信息录入n);printf(n);printf(tttt2.图书信息浏览n);printf(n);printf(tttt
9、3.图书信息查询n);printf(n);printf(tttt4.图书信息修改n);printf(n);printf(tttt5.系统说明n);printf(n);printf(tttt6.退出系统n);printf(n);char input_menu(void) /*菜单选择函数*/char i;printf(t请输入:);i=getch();system(cls);title();return(i);void about(void)system(cls);title();printf(n);printf(tt系统说明:n);printf(n);printf(ttt1.本系统在visua
10、l c+ 2010 编译通过。n);printf(n);printf(ttt2.本系统只作为课程设计作品。n);printf(n);printf(ttt3.由于编写时间较短,不排除bug的存在。n);printf(n);printf(n);system(pause);main();void input_bookdata(void)/*图书录入函数*/FILE *fp;int i=0;char j;system(cls);title();printf(n);printf(n);printf(请输入图书信息:n);printf(n);doprintf(n);printf(序号:);scanf(%d
11、,&booki.order);printf(n);printf(ISBN:);scanf(%s,booki.isbn);printf(n);printf(书名:);scanf(%s,booki.book_name);printf(n);printf(作者:);scanf(%s,booki.writer);printf(n);printf(分类号:);scanf(%s,booki.id);printf(n);printf(出版单位:);scanf(%s,booki.publishing);printf(n);printf(出版时间:);scanf(%s,booki.date);printf(n)
12、;printf(书本价格:);scanf(%f,&booki.price);printf(n);printf(是否继续输入? Y or N ?: );j=getch();i+;printf(n);printf(n);while(j=y|j=Y)&iN);if(fp=fopen(books_data,wb)=NULL)printf(不能打开存储文件。n);return;for(i=0;iN;i+)if(fwrite(&booki,sizeof(struct Libary),1,fp)!=1)printf(无法写入文件!n);return;fclose(fp);/*以上几行为向文件输出数据*/ma
13、in();/*返回菜单*/void output(void)/*信息输出函数*/FILE *fp;int i;fp=fopen(books_data,rb);printf(图书信息:n);printf(n);printf(序号tISBNt书名t作者t分类号t出版单位t出版时间t书本价格tn);printf(-n);for(i=0;iN;i+)fread(&booki,sizeof(struct Libary),1,fp);printf( %dt,booki.order);printf(%st,booki.isbn);printf(%st,booki.book_name);printf(%st,
14、booki.writer);printf(%st,booki.id);printf(%stt,booki.publishing);printf(%st,booki.date);printf(%4.1ftnn,booki.price);fclose(fp);system(pause);main();void search(void)/*查询函数*/FILE *fp;char i,book_name,writer,isbn;int flag=1;dosystem(cls);title();if(fp=fopen(books_data,wb)=NULL)printf(不能打开存储文件。n);retu
15、rn;/*打开文件,为了搜索。*/printf(n);printf(t欢迎使用查找功能,请选择:n);printf(n);printf(t1.按ISBN查询n);printf(n);printf(t2.按书名查询n);printf(n);printf(t3.按作者查询n);printf(n);printf(t4.返回主菜单n);printf(n);printf(请输入:);i=getch();system(cls);title();switch(i)case1:printf(n);printf(请输入要查找的ISBN号:);scanf(%s,&isbn);printf(n);printf(n)
16、;search_output(isbn);break;case2:printf(n);printf(请输入要查找的书名:);scanf(%s,&book_name);printf(n);printf(n);search_output(book_name);break;case3:printf(n);printf(请输入要查找的作者:);scanf(%s,&writer);printf(n);printf(n);search_output(writer);break;case4:main();break;default:printf(n);printf(输入错误!);flag=0;fclose(
17、fp);/*关闭用于搜索用的文件*/while(flag=0);void search_output(char x)/*查找函数内嵌的输出函数。 有一缺陷,此算法放书名和作者名一样时,或出错。*/int i;printf(序号tISBNt书名t作者t分类号t出版单位t出版时间t书本价格tn);printf(-n);for(i=0;iN;i+)if(x=*booki.book_name|x=*booki.writer|x=*booki.isbn)/*由于使用了不准确的判断标准,输入查找信息,或出现混乱的结果*/printf(n);printf( %dt,booki.order);printf(%
18、st,booki.isbn);printf(%st,booki.book_name);printf(%st,booki.writer);printf(%st,booki.id);printf(%stt,booki.publishing);printf(%st,booki.date);printf(%4.1ftnn,booki.price);/*此处不加else来说明查询不到信息,是因为不知道N的数值,循环后,假如N之前输入的数值,则多输出几次esle的内容,影响过莫!*/system(pause);void change(void)/*修改函数修单*/char i,isbn,book_name
19、,writer;int flag=1;dosystem(cls);title();printf(n);printf(t欢迎使用修改功能(暂提供一种修改方式),请选择:n);printf(n);printf(t1.按ISBN修改n);printf(n);printf(t2.返回主菜单n);printf(n);printf(请输入:);i=getch();system(cls);title();switch(i)case1:printf(请输入ISBN:);scanf(%s,&isbn);printf(n);search_output(isbn);/*显示要修改的项目*/amend(isbn);/
20、*修改项目*/break;case2:main();break;default:printf(n);printf(输入错误!);flag=0;while(flag=0);void amend(char x)/*修改函数修单内嵌修改函数*/FILE *fp;int i;char j=n,k;/*如果不初始化j的值,在后面重新输入数据那选了N,则j没有值,会出错*/printf(n);printf(是否删除数据? Y or N?:);k=getch();if(k=y|j=Y)delect(x);elseprintf(n);printf(n);printf(是否重新输入数据? Y or N?:);j
21、=getch();printf(n);if(j=y|j=Y)system(cls);for(i=0;iN;i+)if(x=*booki.isbn)printf(n);printf(序号:);scanf(%d,&booki.order);printf(n);printf(ISBN:);scanf(%s,booki.isbn);printf(n);printf(书名:);scanf(%s,booki.book_name);printf(n);printf(作者:);scanf(%s,booki.writer);printf(n);printf(分类号:);scanf(%s,booki.id);pr
22、intf(n);printf(出版单位:);scanf(%s,booki.publishing);printf(n);printf(出版时间:);scanf(%s,booki.date);printf(n);printf(书本价格:);scanf(%f,&booki.price);printf(n);if(fp=fopen(books_data,wb)=NULL)printf(不能打开存储文件。n);return;for(i=0;iN;i+)if(fwrite(&booki,sizeof(struct Libary),1,fp)!=1)printf(无法写入文件!n);return;fclos
23、e(fp);/*以上几行为向文件输出数据*/elsechange();void delect(char x)/*修改函数修单内嵌删除函数*/FILE *fp;int i;for(i=0;iN;i+)if(x=*booki.isbn)*booki.isbn=0;*booki.book_name=0;*booki.writer=0;*booki.id=0;*booki.publishing=0;*booki.date=0;booki.price=0;if(fp=fopen(books_data,wb)=NULL)printf(不能打开存储文件。n);return;for(i=0;iN;i+)if(fwrite(&booki,sizeof(struct Libary),1,fp)!=1)printf(无法写入文件!n);return;fclose(fp);/*以上几行为向文件输出数据*/printf(n删除成功!);system(pause);