《C语言程序》课程设计方案-图书管理系统_第1页
《C语言程序》课程设计方案-图书管理系统_第2页
《C语言程序》课程设计方案-图书管理系统_第3页
《C语言程序》课程设计方案-图书管理系统_第4页
《C语言程序》课程设计方案-图书管理系统_第5页
已阅读5页,还剩14页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE13《C语言程序》课程设计报告书设计题目:图书管理专业:电子信息工程班级:同学姓名:ﻩ学号:指导老师:2010年5月信息工程学院ﻬ目录摘要―――――――――――――――――—02第一章绪论――――――――――――――-04其次章问题定义(或系统分析)―――――-——-05第三章总体设计与简略设计―――――――—-07第四章编码实现―――――――-――--―---09第五章调试与测试―――――――――――—11总结与心得――――――――――――――—-12附录:1源代码――――――――――――――――--132参考资料―――――――――――――――--23摘要当今计算机应用在生活中可以说是无处不在,因此作为二十一世纪的高校生来说掌握程序开发技术是十分重要的.而C语言又是最常见的,功能最强大的一种语言.因此,做好C语言课程设计是格外必要的。课程设计是培育同学综合运用所学知识,发现,提出,分析和解决实际问题,熬炼实践能力的重要环节,是对我们的实际工作能力的简略训练和考察过程。从拿到题目到完成整个编辑的几个星期里,不仅巩固了以前学过的知识,还可以学到很多新的东西。我做的图书资料管理系统,虽然是一个小程序,但对我这样一初学者来说确实是一个很大的困难,以至于好几节课程设计下来还是没什么太大的进展。在图书管理系统中,要为每一个借阅者建立一个帐户,并给借阅者发放借阅卡,帐户中存储借阅者的个人信息,借阅信息,以及预定信息。持有借阅卡的借阅者可以借阅书刊,反还书刊,查询书刊信息,预定书刊并取消预定,但这些操作都是通过图书管理员进行的,即借阅者不直接与系统交互,而是图书管理员充当借阅者的代理与系统交互。在借阅书刊时,需要输入所借阅的书刊的名字,书刊的ISBN/ISSN号,然后输入借阅者的图书卡号和借阅者名,完成后提交所添表格,系统验证借阅者是否有效,若有效,借阅恳求被接受,系统查询数据库系统,看借阅者所借阅书刊是否存在,若存在,则借阅者可以借阅书刊,建立并在系统中存储借阅记录。借阅者还书后,删除关于所还书刊的借阅记录。如果借阅者所借阅的书刊已被借出,借阅者还可以预定该书,一旦借阅者预定的书刊可以获得,就将书刊直接寄给预定人。这个程序主要考察了同学对结构体,指针,文件的操作,以及C语言算法的掌握,所以完成此道题目要求较强的设计能力,尤其是一种大局意识。如何调试程序也格外重要,通过这个程序可以学到以前调试短程序没有的的阅历。【关键字】1图书管理2图书查找3图书借还4图书的新增与修改第一章绪论1。1选题背景随着社会的进展及知识经济时代的到来,管理信息系统在各行各业发挥着越来越重要的作用.但在高校的图书管理中,避开了手工操作而带来的一些不必要的问题.1.2系统目标本系统的目标是将高校图书管理工作实现计算机管理,从而大幅度提高工效率,提高实施管理的精准性、科学性;使担负管理的工作人员从繁杂的手工劳作中解脱出来,更好实施针对图书借阅管理在手工操作遇到的问题。1.3系统目的通过本项课程设计,可以培育独立思考、综合运用所学有关相应知识的能力,能更好的巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了c语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!其次章问题定义(或系统分析)2.1题目分析ﻫ一、目的要求本课程设计任务的目的是要求同学依据分析、设计、编码、调试和测试的软件开发过程独立完成管理系统设计,以及C语言算法的掌握,并能最终实现本系统的功能要求,通过这个程序可以学习到以前调试短程序没有的的阅历。【题目要求】(1)为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择盼望进行的操作项目;(2)要求以上功能分别用函数实现.并要求用C语言的文件操作语句将以上全部结果保存在文件XX.out.【输入/输出要求】(1)应用程序运行后,先显示一个菜单,然后用户依据需要选择相应的操作项目。进入每个操作后,依据程序的提示输入相应的信息;(2)要求用户输入数据时,要给出清楚、明确的提示信息,包括输入的数据内容、格式及结束方式等。菜单中的每一个选项都对应一个子程序,子程序的算法几乎囊获了全部C语言学过的技巧。目前社会管理HYPERLINK"http://www.mflw.com/search.aspx?keyword=%CF%B5%CD%B3&where=title”\o"系统"系统进展飞速,教务管理信息HYPERLINK”/search.aspx?keyword=%CF%B5%CD%B3&where=title”\o"系统"系统也是有了很大的进展。本系统完全独立开发,力求使系统功能简明,但功能全易操作.它适应了时代进展,适应了我国教育深化改革、全面实施素养教育的需要;从技术角度分析,这项开发工作所涉及的专业技术如下:操作系统采纳Windows2000以上的版本;在数据管理系统上,我们可采纳了MicrosoftOfficeAccess,开发工具选用MicrosoftVisualBasic。NET2003;从经济角度分析,采纳计算机管理不但可以提高工作效率,而且还可以节省人力、物力、财力,降低了人工处理产生的错误第三章总体设计与简略设计图书数据:书号,书名,作者,出版时间,价格,册数,页数借书人信息:姓名,单位,所借书目,借阅时间等1。借书模块:输入书名编号借书证号(如书库中有书并且册数大于0,则进行借书,借书日期由系统时间供应)2。还书模块:登记借书证号进行还书操作同时供应有无超时有则给予罚款处理。3.图书管理:对书库中书进行管理新书入库旧书删除对库存量进行统计和查询4.查询模块:对书库中书进行查询依据书名进行查询依据书号进行查询依据出版社进行查询对借阅书进行查询对一段时间或某书进行查询和统计第四章编码实现增加图书功能,id自动排号依据图书类型和图书状态,显示用户信息intadd_books(Book*head,Book*book_for_add)ﻫ{ﻫ

Book*p=head;ﻫ

if(!p)ﻫ

return—1;ﻫ

while(p->_next)ﻫ

{ﻫ

p=p->_next;ﻫ

};ﻫ

p—>_next=book_for_add;

book_for_add->_id=p-〉_id+1;

book_for_add-〉_prev=p;ﻫ

book_for_add->_next=NULL;

book_for_add-〉_count=0;ﻫ

book_for_add-〉_status=0;ﻫ

return0;ﻫ};ﻫ查找书名称,返回查找到的数量,书名可能有重复的,一本书可能也有很多本,但是ID却是唯一的

intsearch_books_by_name(Book*book_head,char*name)ﻫ{ﻫ

intcount=0;

Book*p=book_head;ﻫ

while(p)ﻫ

{ﻫ

if(strcmp(p->_name,name)==0)ﻫ

{ﻫ

print_book(p);ﻫ

++count;

}ﻫ

p=p->_next;ﻫ

}ﻫﻫ

returncount;ﻫ}ﻫ借书,返回该书的指针,否则就返回NULL,可能不存在图书,或者已经被借走了Book*borrow_books(Book*book_head,intid)ﻫ{ﻫ

Book*p=book_head;ﻫ

while(p)ﻫ

{ﻫ

if(p-〉_id==id)

break;ﻫ

p=p—〉_next;ﻫ

if(!p)/*不存在*/

returnNULL;ﻫ还书,正常归还就返回该书的指针,否则就返回NULL还书要登记ﻫBook*return_books(Book*book_head,intid)ﻫ{ﻫ

Book*p=book_head;

while(p)

{ﻫ

if(p—〉_id==id&&p—>_status!=0)

{ﻫ

p-〉_status=0;第五章调试与测试运行的结果说明:在VisualC++6.0在此环境下运行比较好,其界面十分友好并且能正常运行。第六章总结与心得首先我觉得,用到的程序段不必太高级,由于天下事皆有凹凸之分,决定优劣的不是集体中的某部分的强弱,起决定作用的是组合内各元素的和谐,要能在一个集体中各尽其用,每个人都能发挥自己的长处,避开自己的短处,那么这个集体的组合能量是最优的.选择什么等级的C语言就是关键,最后我决定运用文件,我的理解是;必须建立一个文件,它能够保存新的录入文挡,又能在提示语的要求下读出文档。然而,这只是万里长征的第一步,后面的路还很长,困难还有很多,可是我能成功的编译一个程序,能够在思路卡壳的情况下,连续前进,我在此很感谢给予我急躁解答的老师和同学,是他们为我小程序的成功起到了关键性的作用,那么多个日夜,如此多的困难,同学们勤恳塌实,从开头到结束,始终热忱高涨,我感谢这种氛围,感谢学校供应的良好条件。在课程设计过程中,我学到了很多人生哲理,懂得怎么样去制定计划,怎么样去实践计划,并掌握了在执行过程中附录源代码汉字菜单的编写可参照以下代码:#include"stdio.h".main(){charc;inti;do{clrscr();for(i=0;i<80;i++)printf("*");printf("\t1:addbooks\n”);printf(”\t2:listbooks\n");printf(”\t3:sreachbooks\n”);printf(”\t4:borrowbooks\n”);printf("\t5:returnbooks\n”);printf(“\t6:exit\n”)printf("\t请选择输入选项[1\\2\\3\\4\\5\\6]:\n");do{c=getchar();}while(c!=’1'&&c!=’2'&&c!='3'&&c!='4'&&c!='5'&&!=’6');getchar();switch(c){case'1’:input();break;case'2':del();break;case’3':find();break;case'4':arrange();break;case‘5’:right();break;case'6':exit(0);}printf("按任意键返回主菜单:\n”);getchar();clrscr();}while(1);}#include〈stdio。h〉ﻫ#include<stdlib。h>ﻫ#include〈string.h>ﻫ

#defineBORROWED

1ﻫ#defineNOBORROW

0ﻫﻫ/*定义图书结构*/

structBook

{ﻫ

int

_id;

//编号,唯一

char_name[32];

//图书的名称,不唯一

int

_type;

//图书的类型,不唯一

int

_status;

//图书的状态,借出/没有借出ﻫ

int

_count;

//图书借出的次数ﻫ

structBook*_next;//下一本书

structBook*_prev;//上一本书ﻫ};ﻫﻫ/*定义图书类型*/

typedefstructBookBook;ﻫ

/*操作的名目提示*/

charbook_menu[][32]=ﻫ{

"addbooks",ﻫ

"listbooks",

"searchbooks”,

"borrowbooks",ﻫ

"returnbooks”,ﻫ

"exit”,ﻫ

"",ﻫ};

/*操作的名目提示1*/ﻫcharbook_menu_sub[][32]=ﻫ{ﻫ

"searchbooksbyname",

"searchbooksbytype”,ﻫ

”",ﻫ};ﻫ

/*添加图书类型,用户信息显示*/ﻫcharbook_types[][32]=ﻫ{

”type0”,ﻫ

"type1",

"type2",ﻫ

"",ﻫ};ﻫ/*添加图书状态,用户信息显示*/ﻫcharbook_status[][32]=ﻫ{ﻫ

"noborrow",ﻫ

”borrowed",ﻫ

"",ﻫ};ﻫﻫ/*增加图书,id自动排号*/ﻫintadd_books(Book*head,Book*book_for_add)ﻫ{ﻫ

Book*p=head;

if(!p)ﻫ

return-1;ﻫ

while(p-〉_next)ﻫ

{ﻫ

p=p—>_next;ﻫ

};ﻫ

p->_next=book_for_add;ﻫ

book_for_add->_id=p->_id+1;

book_for_add—>_prev=p;ﻫ

book_for_add-〉_next=NULL;

book_for_add->_count=0;ﻫ

book_for_add—>_status=0;ﻫ

return0;ﻫ};ﻫﻫ/*建立图书管理链表*/ﻫBook*create_list(Book*book_head)ﻫ{

if(book_head)ﻫ

{

book_head->_prev=book_head;ﻫ

book_head—>_next=NULL;ﻫ

book_head—〉_id=1;ﻫ

book_head-〉_count=0;

book_head-〉_status=0;ﻫ

}ﻫ

returnbook_head;ﻫ}ﻫﻫ/*释放链表*/ﻫvoidfree_list(Book*book_head)ﻫ{

Book*p,*p1;ﻫ

p=book_head;ﻫ

while(p)ﻫ

{ﻫ

p1=p—>_next;ﻫ

free(p);ﻫ

p=p1;ﻫ

}ﻫ}ﻫﻫ/*打印图书信息*/ﻫvoidprint_book(Book*book)ﻫ{

printf("id:%d,name:%s,type:%s,status:%s,times:%d\n",ﻫ

book—>_id,book—〉_name,book_types[book->_type],

book_status[book—>_status],book-〉_count);ﻫ}ﻫ

ﻫ/*列出全部登记的图书*/ﻫvoidlist_books(Book*book_head)

{ﻫ

Book*p=book_head;ﻫ

while(p)

{ﻫ

print_book(p);ﻫ

p=p->_next;ﻫ

}ﻫ

/*借书,返回该书的指针,否则就返回NULL,可能不存在图书,或者已经被借走了*/ﻫBook*borrow_books(Book*book_head,intid)

{ﻫ

Book*p=book_head;ﻫ

while(p)ﻫ

{ﻫ

if(p->_id==id)ﻫ

break;ﻫ

p=p->_next;ﻫ

}ﻫ

if(!p)/*不存在*/

returnNULL;

if(p—>_status!=0)/*已经被借走*/ﻫ

returnNULL;ﻫﻫ

p-〉_status=1;/*借书登记*/

p—〉_count++;

/*被借阅次数+1*/ﻫ

returnp;ﻫ}ﻫ

/*查找书名称,返回查找到的数量,书名可能有重复的,一本书可能也有很多本,但是ID却是唯一的*/ﻫintsearch_books_by_name(Book*book_head,char*name)ﻫ{ﻫ

intcount=0;

Book*p=book_head;ﻫ

while(p)ﻫ

{ﻫ

if(strcmp(p->_name,name)==0)ﻫ

{

print_book(p);ﻫ

++count;

}

p=p—>_next;ﻫ

}ﻫﻫ

returncount;ﻫ}

ﻫ/*查找书类型,返回查找到的数量,一个类型会有很多书*/

intsearch_books_by_type(Book*book_head,inttype)ﻫ{

intcount=0;

Book*p=book_head;ﻫ

while(p)ﻫ

{ﻫ

if(p->_type==type)ﻫ

{ﻫ

print_book(p);ﻫ

++count;ﻫ

}ﻫ

p=p—>_next;ﻫ

returncount;

}ﻫﻫ/*还书,正常归还就返回该书的指针,否则就返回NULL*/ﻫBook*return_books(Book*book_head,intid)ﻫ{ﻫ

Book*p=book_head;ﻫ

while(p)ﻫ

{ﻫ

if(p-〉_id==id&&p->_status!=0)ﻫ

{ﻫ

p->_status=0;/*还书登记*/

break;ﻫ

}ﻫ

p=p—〉_next;

}ﻫ

returnp;ﻫ}ﻫﻫ/*打印操作选项*/

ﻫvoidprint_menu(charmenus[][32])ﻫ{

intno=0;ﻫ

printf(”\nPLEASESELECTIDLIKE1or2.。\n”);ﻫ

while(strlen(menus[no]))ﻫ

{ﻫ

printf("%d

\t%s\n",no+1,menus[no]);

++no;ﻫ

}ﻫ

printf("OPTION(");ﻫ

while(no)

{ﻫ

printf(”/%d",no-—);ﻫ

}ﻫ

printf("):");ﻫ}ﻫ

/*主函数*/ﻫintmain(void)

{ﻫ

charkey=0;

charss[128];ﻫ

intloop=1;

Bookfirst_book,*pBooks,*pTmp;ﻫ

strcpy(first_book。_name,"nihao");ﻫ

first_book._type=0;ﻫ

pBooks=create_list(&first_book);ﻫ

while(loop)ﻫ

{ﻫ

print_menu(book_menu);ﻫ

gets(ss);ﻫ

key=ss[0]-48;ﻫ

if(key<0||key〉6)ﻫ

printf("Errorinput!\n");

elseﻫ

printf(”INPUT:%d\n”,key);ﻫ

switch(key)

{ﻫ

case1://addbooksﻫ

pTmp=(Book*)malloc(sizeof(Book));ﻫ

if(pTmp)ﻫ

{ﻫ

printf("Add_Bookinputname:");ﻫ

gets(ss);

strncpy(pTmp->_name,ss,31);ﻫ

print_menu(book_types);

gets(ss);ﻫ

key=ss[0]-48;

if(key〈=0||key〉(sizeof(book_types)/32))ﻫ

key=1;ﻫ

pTmp->_type=key-1;ﻫ

add_books(pBooks,pTmp);

}ﻫ

break;ﻫ

case2://listbooksﻫ

list_books(pBooks);ﻫ

break;ﻫ

case3://searchbooksﻫ

print_menu(book_menu_sub);

gets(ss);ﻫ

key=ss[0]—48;ﻫ

printf("INPUT:%d\n",key);ﻫ

switch(key)ﻫ

{ﻫ

case1://searchbooksbynameﻫ

printf("inputbookname:");

gets(ss);ﻫ

key=search_books_by_name(pBooks,ss);ﻫ

if(key==0)ﻫ

printf("nofound!\n”);

case2://searchbooksbytypeﻫ

print_menu(book_types);ﻫ

gets(ss);ﻫ

key=ss[0]-48;ﻫ

key=search_books_by_type(pBooks,key—1);ﻫ

if(key==0)ﻫ

printf("nofound!\n");ﻫ

default:ﻫ

break;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论