1、C语言课程设计目录第一章 项目背景- 1 -1.1 背景- 1 -1.2 目标- 1 -第二章 系统模块设计- 1 -2.1 系统功能描述- 1 -2.2 系统结构图- 2 -第三章 程序流程图- 3 -第四章 函数的设计- 4 -4.1 函数定义- 4 -4.2 函数功能描述- 4 -第五章 程序的运行及结果分析- 5 -第六章 遇到的问题及解决方法- 7 -第七章 总结和体会- 8 -参考文献- 8 -附件- 8 - 26 - 第一章 项目背景1.1 背景随着计算机技术与通讯技术的飞速发展,目前图书馆原有的借阅系统已经不能满足读者的需求,现在需要你设计出新的借阅系统,并要求用C预言知识实行
2、该图书借阅系统。1.2 目标 设计的该系统能够实现对图书信息的输入、浏览、查找、保存、载入、借阅和还书,首先编写一个简单的菜单系统,可将上述功能一一实现,使读者能更快的查找图书借阅及还书,从而使图书系统更加简洁方便,更加完善。 第二章 系统模块设计2.1 系统功能描述假定校园图书馆共有n本图书,每本图书有一图书代号,确定图书(即:书名,作者名),确定分类号和各本图书的最多借阅次数。该系统可提供以下功能:(1) 用户登录。(2) 系统以菜单方式工作。(3) 图书信息录入功能:录入图书的数据信息,包括图书的数目、图书的代号、书名、作者名、分类号、对应图书的最多借阅次数、图书的票价,数据存储在一个数
3、据文件中。(4) 图书信息浏览功能:通过浏览显示所有图书的详细信息,包括已借阅次数。(5) 图书操作:按分类号排序;查询图书: 按名称查询; 按分类号查询。(6) 承接借阅和还书服务: 借阅:如果该图书已经借完,显示提示信息;借阅成功后修改数据文件。 还书:可还书,还书后修改相关数据文件。(7) 保存:保存对图书操作的信息。(8) 载入:启动系统载入已有的图书数据文件信息。2.2 系统结构图图书信息管理系统登录主目录浏览退出载入保存还书借阅图书操作输入图书信息子菜单按分类号查找按名称查找按分类号排序开始第三章 程序流程图登录用户名、密码正确 N主目录Y 输入图书总数、代号、分类号、书名、作者名
4、、出版单位、出版时间 价格、价格。Y载入图书信息选择1NY浏览选择2N目录按分类号排序YY选择1图书操作选择3N按分类号查询NY选择1选择4按作者名查询NYY选择1N书名、作者名、分类号NN借阅Y选择5还书Y选择1图书代号Y保存选择6N选择7载入NYNN选择8Y结束N第四章 函数的设计4.1 函数定义根据系统需要设计以下函数:Void main()(主函数);void menu() (主菜单);void menu1()(子菜单函数)void input(int i)(输入图书信息函数);void enter()(输入图书数目的函数)void printf_one(int i)(显示一个图书记录
5、的函数);void browse() (浏览图书信息的函数);int search()查找函数) ;void search_time()(按分类号查找图书的函数);void search_end()(按作者名查找图书的函数); void order()(排序函数);void book()(借阅函数);void back()(还书函数)void save()(保存函数);void load()加载函数);void exit()(退出函数)4.2 函数功能描述函数名:Void main()函数功能:主函数,调用主目录函数。 函数名:void menu()函数功能:显示系统主菜单。 函数名:void
6、 menu1() 函数功能: 显示图书操作子菜单。 函数名:void input(int i) 函数功能:输入一条有效的图书信息 函数名:void enter() 函数功能:输入要登记的图书数目,调用input函数,实现其功能。 函数名:void printf_one(int i) 函数功能:输出地i本图书的详细信息。 函数名:void browse()函数功能:通过调用printf_one(int i)函数,使读者能够浏览所有图书的信息。函数名:int search()函数功能:通过输入图书的书名、作者名、分类号查找对应地图书信息。 函数名:void search_time()函数功能:通过
7、书名查找图书信息。 函数名:void search_end()函数功能:通过作者名查找航班信息。 函数名:void order()函数功能:将所有的图书信息按照分类号进行排序。 函数名:void book()函数功能:通过输入图书的书名、作者名、分类号等信息,实现借阅功能。 函数名:void back()函数功能:输入图书的代号,实现还书功能。 函数名:void save()函数功能:将操作记录保存为文件,存储到相应地目录中。函数名:void load()函数功能:将图书信息文件导入到系统中。 函数名:void exit()函数功能:退出系统。第五章 程序的运行及结果分析1.将编写程序运行后,
8、首先出现以下界面(即登录界面):2.输入用户名:chen 密码:11010320 进入主界面。可根据目录选择1-8,进入相应操作。3.输入1,进入以下界面,可录入图书数目,根据数目录入相应图书信息:4.输入2进入浏览界面,可直观浏览图书信息:5.输入3进入图书操作界面(即子菜单),如下图:根据所需操作选择,可进入相应操作。6.输入4进入借阅界面,输入要借阅图书的书名、作者名、分类号即可借阅到相应的图书,如没有此图书则会返回主目录:若借阅成功,再次进入浏览界面时,可看到已借阅数变为1,则借阅成功:7.输入5进入还书界面,输入图书代号即可还书:8.每做一次操作若要下次启动程序有效,必须输入6保存。
9、9.下次运行系统时,若需要打开上次保存的图书操作信息,输入7载入即可。10. 输入8退出该程序。第六章 遇到的问题及解决方法1. 再输入“;”时,未区分中文与英文,未能识别导致错误,后将中文符号改为英文符号;2.在编程过程中,没有按照老师的要求一个一个模块的编写,急于求成,导致错误,后一个一个模块的做,编写顺利。3.没有正确的认识strcmp语句,导致登录函数出错,后查阅资料修改。第七章 总结和体会 这次课程设计让我掌握了许多的有用知识。首先通过不断地学习和锻炼更加熟练地掌握应用软件Microsoft Visual C+ 6.0 了。设计正确及合适的程序对于我们初学者来说是很大的难题,出现一丁
10、点儿错误就得非很大的努力去修改,正式者一步步一点点的努力让我对C语言游乐更深的认识。同时我掌握了解决问题的方法,这无论是对以后的学习、生活都有无比重要的价值。在设计中,每个同学都会遇到一些困难,或多或少,这些困难常常让我心情烦躁,比如不能清晰的建立设计模块,不会修改出现的错误等等,然后我向同学寻求帮助,向他们学习,最终通过自己努力建立了模块。不可避免地程序中肯定依然存在者某些问题,我希望在以后的学习和应用中不断提高自己的能力,攻克遇到的困难。参考文献1. 陆丽娜。C语言程序设计。西安:西安交通大学出版社,2012.2. 胡建平。C语言程序设计学习指导。北京:清华大学出版社,2009.3. 张毅
11、坤。C语言程序设计教程。西安:西安交通大学出版社,2003.附件:源程序代码:#include #include #include #define N 1000typedef struct book char ID10;char fenleihao10; char shuname10; char zuoname10; char chubandanwei15;int chutime; int price;int max; int num;BOOK;BOOK tiN;int n;void menu();void menu1();void input(int i)printf(请输入图书代号:n);
12、scanf(%s,tii.ID);printf(请输入分类号:n); scanf(%s,&tii.fenleihao);printf(请输入图书名:n);scanf(%s,tii.shuname);printf(请输入作者名:n);scanf(%s,tii.zuoname); printf(请输入出版单位:n);scanf(%s,tii.chubandanwei);printf(请输入出版时间:n);scanf(%d,&tii.chutime);printf(请输入价格:n);scanf(%d,&tii.price); tii.max=4;tii.num=0;void enter()int i
13、; system( cls ); printf(请输入图书数目(0-%d)?:,N);scanf(%d,&n); /*要输入的记录个数*/printf(n请输入数据nn);for(i=0;in;i+) printf(n请输入第 %d 号图书信息.n,i+1); input(i); /*调用输入函数*/ getchar(); menu();void printf_one(int i) /*显示一个记录的函数*/ printf(%11s %6s %6s %3s %4s %5d %6d %6d %6d,tii.ID,tii.fenleihao,tii.shuname,tii.zuoname,tii.
14、chubandanwei,tii.chutime,tii.price,tii.max,tii.num);void browse()int i;system( cls ); puts(n -);printf(nt图书代号 分类号 书名 作者名 出版单位 出版时间 价格 最多借阅 已借数目n);for(i=0;in;i+) printf_one(i);printf(n);getchar();getchar();menu();void order() int i,j;struct book s;system( cls ); for(i=0;in;i+) /*选择法排序*/for(j=i+1;j0)s
15、=tii; tii=tij;tij=s; printf(The ordered fenleihao is:n);puts(n-);printf(nt图书代号 分类号 书名 作者名 出版单位 出版时间 价格 最多借阅 已借数目n);for(i=0;in;i+)printf_one(i);printf(n);getchar();getchar();menu1();void search_time()int i,m=0;struct book s;system( cls ); printf(nnfen lei hao:);scanf(%s,s.fenleihao); /*输入出发的时间*/puts(
16、n-);printf(nt图书代号 分类号 书名 作者名 出版单位 出版时间 价格 最多借阅 已借数目n);for(i=0;in;i+)if(strcmp(s.fenleihao,tii.fenleihao)=0)m+; if(m!=0)&(m%10=0) /*目的是分屏显示*/ printf(nnPress any key to contiune . . .);getchar();puts(nn); printf_one(i); printf(n);/*调用显示一个记录的函数*/puts(n-);getchar(); /*按任意健*/getchar(); menu1();void serch
17、_end()int i,m=0;struct book s;system( cls ); printf(nnEnter the shu name:);scanf(%s,s.shuname); /*输入要到达的地方*/puts(n-);printf(nt图书代号 分类号 书名 作者名 出版单位 出版时间 价格 最多借阅 已借数目n);for(i=0;in;i+)if(strcmp(tii.shuname,s.shuname)=0)m+; if(m!=0)&(m%10=0) /*目的是分屏显示*/ printf(nnPress any key to contiune . . .);getchar(
18、);puts(nn); printf_one(i); printf(n);/*调用显示一个记录的函数*/puts(n-);getchar(); /*按任意健*/getchar(); menu1();void menu1()int n,w1; do system( cls ); /*清屏*/ puts(tttt 图书借阅操作!nn); puts(tt*MENU*nn); puts(tttt1.按照分类号排序); puts(tttt2.按照分类号查找图书); puts(tttt3.按照名称查找图书); puts(tttt4.返回主菜单); puts(nntt*n); printf(Choice y
19、our number(1-4): bb); scanf(%d,&n); if(n4) /*对选择的数字作判断*/ w1=1; printf(your choice is not between 1 and 4,Please input again:); getchar(); getchar(); else w1=0; while(w1=1); /*选择功能*/ switch(n) case 1:order();break; case 2:search_time();break; case 3:serch_end();break; case 4:menu();break; int search(
20、) /*查找模块*/int i,k;struct book s;k=-1;system( cls ); printf(nn请输入借阅图书的名称:);scanf(%s,s.shuname); /*输入要到达的地方*/printf(nn请输入借阅图书的作者:);scanf(%s,s.zuoname); printf(nn请输入借阅图书的分类号:);scanf(%s,s.fenleihao); /*输入出发的时间*/for(i=0;i=tii.max)printf(n该图书已借完!); elsetii.num+;printf(n借阅成功!n);elseprintf(该图书不存在!n);getchar
21、(); getchar(); /*按任意健*/menu(); void back()int i,k=-1;struct book s;system( cls ); printf(欢迎进入还书窗口!n);printf(nn输入图书代号:);scanf(%s,s.ID); /*输入要到达的地方*/ for(i=0;in;i+) /*查找要修改的数据*/if(strcmp(s.ID,tii.ID)=0)k=i; /*找到要修改的记录*/printf_one(k);break; /*调用显示一个记录的函数*/if(k=-1) printf(nnNO exist!);else tii.num-; pri
22、ntf(n还书成功!n);getchar(); /*按任意健*/getchar(); /*按任意健*/menu();void save()int w=1;FILE *fp;int i;system( cls ); if(fp=fopen(shu.txt,wb)=NULL) /*以输出打开方式,在此前的记录被覆盖*/printf(nCannot open filen);return ; for(i=0;in;i+)if(fwrite(&tii,sizeof(struct book),1,fp)!=1) printf(file write errorn);w=0;if(w=1) printf(fi
23、le save ok!n);fclose(fp);getchar();getchar(); menu();void load()FILE *fp;int i,w;w=1;system( cls ); if(fp=fopen(shu.txt,rb)=NULL) /*以输出打开方式,在此前的记录被覆盖*/printf(nCannot open filen);w=0;n=0;for(i=0;!feof(fp);i+) fread(&tii,sizeof(struct book),1,fp);n+;n=n-1;fclose(fp);if(w=1) printf(Load file ok!);getch
24、ar();getchar(); menu();void menu() int n,w1; do system( cls ); /*清屏*/ /*清屏*/ puts(ttt 图书信息管理管理系统!nn); puts(tt*MENU*nn); puts(tttt1.输入图书代号); puts(tttt2.浏览 ); puts(tttt3.图书操作); puts(tttt4.借阅); puts(tttt5.还书); puts(tttt6.保存); puts(tttt7.载入); puts(tttt8.退出); puts(nntt*n); printf(Choice your number(1-8):
25、 bb); scanf(%d,&n); if(n8) w1=1; printf(your choice is not between 1 and 8,Please input enter to choice again:); getchar(); getchar(); else w1=0; while(w1=1); /*选择功能*/ switch(n) case 1:enter();break; case 2:browse();break; case 3:menu1();break; case 4:book();break; case 5:back();break; case 6:save()
26、;break; case 7:load();break; case 8:exit(0); int main() char name20,password20; int i; printf(ttt欢迎登陆图书管理系统n); printf(-n); for(i=3;i0;i-) printf(ttt请输入用户名:); scanf(%s,name); printf(ttt请输入密码:); scanf(%s,password); if(strcmp(password,11010320)=0&strcmp(name,chen)=0) menu(); else if(i-1)0) printf(密码错误请尝试再次登陆(剩余%d次机会)n,i-1); if(i=0) printf(password error!you can not use softwaren); return 0;