c语言课设.docx
- 文档编号:26821853
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:44
- 大小:271.57KB
c语言课设.docx
《c语言课设.docx》由会员分享,可在线阅读,更多相关《c语言课设.docx(44页珍藏版)》请在冰豆网上搜索。
c语言课设
学号
C语言课程设计
设计说明书
(题目)
图书信息管理系统
起止日期:
年月日至年月日
学生姓名
XXXXXX
班级
XXXXXXXXXXXXX
成绩
指导教师(签字)
年月日
目录
1.课程设计目的……………………………………………2
2.课程设计题目描述和要求………………………………2
3.课程设计报告内容………………………………………2
3.1总体设计………………………………………………3
3.2详细设计………………………………………………4
3.3程序调试………………………………………………5
3.4程序错误分析…………………………………………9
4.心得体会…………………………………………………………9
5.参考书目……………………………………………………10
6.原程序代码………………………………………………10
1.课程设计目的
1、熟练掌握C语言课程中所学的理论知识;
2、通过综合C语言的基本知识来解决实际问题;
3、加强分析和解决问题的能力。
2.课程题目与要求:
图书馆信息管理系统
图书信息包括:
图书编号、书名、作者名、出版单位、出版时间、价格等。
试设计一图书信息管理系统,使之能提供以下功能:
1、图书信息录入功能(图书信息用文件保存)
2、图书信息浏览功能
3、排序:
按书名排序
4、查询:
3.课程设计报告内容
3.1总体设计:
图书编号、书名、作者名、出版单位、出版时间、等。
试设计一图书信息管理系统,使之能提供以下功能:
1、图书信息录入功能(图书信息用文件保存)2、图书信息浏览功能3、排序:
按书名排序4、查询:
通过对数据库结构,实现图书,读者,学生系统,教师系统的管理,得出图书馆信息管理系统数据库的概念模型结构。
结构图如下:
图1——图书系统
图2——管理系统
图3——职工系统
图4——学生系统
3.2详细设计:
借书模块
printf("请输入要查找的书号:
");scanf("%s",num);k=0
for(i=0;i (strcmp(book[i].book_number,num)==0) 真假 输出图书信息真k==0假 k=1 "输入错误! 继续或退出(Y/N) scanf("%c",&m); m==n 真假 flag=0menu(); break; 图书信息表(tb_bookinfo) 字段名 数据类型 是否为空 是否为主键 描述 ID char(11) No PRIMARY 自动编号 bookcode Varchar(30) No PRIMARY 书号 bookname Varchar(70) YES 书名 Author Varchar(30) YES 作者 borrowor Tinyint (1) YES 是否借出 3.3程序调试 (1)、运行程序,看能否打开系统。 图1系统主界面 (2)、在主菜单中选择3,程序能否进入管理系统,查看能否进入录入信息管理模块,且增加完数据后系统中总的信息是否有相应的增加。 此后输入的字符能控制是继续录入还是返回主菜单,进行其他操作。 进行图书的增加、图书的统计、学生系统的信息录入和职工系统的信息录入。 图2增加图书 图3图书统计 图4学生管理系统 图5职工管理系统 (3)、在管理系统菜单中选择2,程序能否进入删除信息管理模块,删除完数据后系统中的信息量是否做相应的变化。 此后输入的字符能控制是继续录入还是返回主菜单,进行其他操作。 图6删除图书 (4)、在主菜单中选择1,程序能否进入浏览信息管理模块,并输出要浏览的信息此后输入的字符能控制是继续录入还是返回主菜单,进行其他操作。 图7查阅图书 (5)、在管理系统菜单中选择3、程序能否进入修改信息管理模块,当询问所要修改信息内容时,输入书名时有相应的操作,如当输入书名时能进行图书信息的修改。 此后输入的字符能控制是继续录入还是返回主菜单,进行其他操作。 图8修改图书 3.4程序错误分析 (1)、在各模块综合,组成主函数时,不能再次进入主菜单,能进入系统唯一的方式便是重新登录。 原因在于各模块完成各自功能后未调用菜单函数,系统自动退出,不能进行相关的操作。 (2)、在集合每个模块,进行综合时,程序虽正确却总出现不能当前的下个信息的情况,如: 在进行询问是否继续录入时,该部分在未输入字符前就默认为可继续输入,屏蔽掉了该控制功能。 原因是掌握字符与字符串,在字符中空格仍是一个字符,因此在输入字符和字符、字符串和字符串、字符和字符串之间因先用getchar();清掉回车,否则,回车被下一字符吸收,自动进行下一操作。 4.心得体会 经过不到一个星期的C语言课程设计,我对C语言有了更进一步的认识和了解,从刚开始不知从何下手到现在的漂亮运行,在我们两个人和指导老师一起努力下,提前完成了任务。 成功的那一刻,大家无比兴奋,四天的努力没有白费! 从而也使我明白要学好C语言重在实践,要通过不断的上机操作,并且练习自主设计程序才能更好的掌握它。 以前上课感觉自己学会了很多,但到真正用的时候才发现没学的还有好多好多,虽然课堂上看似学会了,可到实际操作时问题多多。 通过这次课程设计把所学的东西用在了实践上,设计出来一些有用的东西,感觉很有成就感,虽然在设计的过程中遇到了很多困难,比如对结构体strcmp的定义及使用,主函数menu对浏览,录入等子函数的调用等等的,但最终都被我们解决了,从而也加强了解决问题的能力。 回顾起此次C语言课程设计,至今我仍感慨颇多,的确,从模块单独设计到整体调用,从理论到实践,在整整一个星期的日子里,可以说是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正对所学知识得到应用,从而提高自己的实际动手能力和独立思考的能力。 在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说对结构体strcmp的定义及使用,折半查找法的使用,主函数menu对浏览,录入等子函数的调用等等的……通过这次课程设计之后,对以前所学过的知识做了重新温故。 程序设计需要很强的逻辑推理能力,以及过硬的数学函数能力。 一定要细心,无论是需求分析,概要设计,详细设计,编写代码,还是调试分析阶段都需要特别的细心,稍有不慎将会影响整个程序的设计运行。 而且实现同一目的的方法有很多,要灵活应运,选择循环次数少,简洁明了的途径。 通过这次课程设计使我看到了自己在这方面的缺陷,同时也有了很大的进步,学会了很多新知识。 5.参考书目: [1]赵伟军,《Protel99se教程》,北京,人民邮电出版社,1996年 [2]谭浩强,《C程序设计教程》,北京,清华大学出版社,2007年 [3]王为青张圣亮,《C语言实战105例》,北京,人民邮电出版社,2007年 6.源程序代码: #include #include #include #include #include #defineSTACK_INIT_SIZE10 #defineOK1 #defineTRUE1 #defineFALSE0 #defineERROR0 structstudent/*定义学生类型,用于存放借出的书籍*/ { intcarnum; charlendbook[10]; }student[1000]; structemploy/*定义职工类型*/ { intemploynum; charemployname[15]; intemployage; charemploysex[2]; charemployleve[10]; longintemploytage; }employ[50]; structbook/*定义书的类型*/ { intbooknum; charbookname[10]; charbookcreat[10]; intturefalse;/*用于借书和还书模块判断一本书是否借出的条件*/ }book[1000]; structcar/*借书卡的数据类型*/ { intcarnum; charstudentname[10]; intstudentclass; }car[100]; huanbook()/*还书函数*/ { FILE*fp,*fp2;/*定义两个文件指针,fp2用于修改数据时设立临时文件用,防止数据遭破坏*/ inti,n; intcarnum; charlendbook[10]; printf("请你输入你的卡号\n"); scanf("%d",&carnum); fp=fopen("car.txt","r");/*读取卡号记录*/ for(i=0;fread(&car[i],sizeof(structcar),1,fp)! =0;i++)/*for循环判断卡号是否存在*/ { if(car[i].carnum==carnum)/*卡号存在,进入下一循环*/ { n=i; fclose(fp); printf("请输入你要还的书的名字\n"); scanf("%s",lendbook); fp=fopen("record.txt","r"); for(i=0;fread(&student[i],sizeof(structstudent),1,fp)! =0;i++)/*判断是否借阅了输入的书*/ { if(strcmp(student[i].lendbook,lendbook)==0)/*借阅了该书,进入下一循环,否则出错显示*/ { fclose(fp); fp=fopen("record.txt","r"); fp2=fopen("bookl.txt","w"); for(i=0;fread(&student[i],sizeof(structstudent),1,fp)! =0;i++) { if(strcmp(student[i].lendbook,lendbook)==0) { continue;/*删除还掉的书的借书记录*/ } fwrite(&student[i],sizeof(structstudent),1,fp2);/*写入原来没还的书的记录*/ } fclose(fp); fclose(fp2); fp=fopen("record.txt","w"); fp2=fopen("bookl.txt","r"); for(i=0;fread(&student[i],sizeof(structstudent),1,fp2)! =0;i++) { fwrite(&student[i],sizeof(structstudent),1,fp);/*将借书记录信息写回*/ } fclose(fp); fclose(fp2); fopen("bookl.txt","w");/*清临时文件的记录*/ fclose(fp2); fp=fopen("book.txt","r"); fp2=fopen("bookl.txt","w"); for(i=0;fread(&book[i],sizeof(structbook),1,fp)! =0;i++)/*将书的记录写入临时文件,防止因为修改信息破坏以前的记录*/ { if(i==n) { book[i].turefalse=1; fwrite(&book[i],sizeof(structbook),1,fp2);/*将还的书的原来状态设为无人借阅的*/ continue; } fwrite(&book[i],sizeof(structbook),1,fp2); } fclose(fp); fclose(fp2); fp=fopen("book.txt","w"); fp2=fopen("bookl.txt","r"); for(i=0;fread(&book[i],sizeof(structbook),1,fp2)! =0;i++) { fwrite(&book[i],sizeof(structbook),1,fp);/*将临时文件写回*/ } fclose(fp); fclose(fp2); fopen("bookl.txt","w");/*清临时文件*/ fclose(fp2); printf("还书完毕,按任意键返回\n"); getch(); return1; } } printf("你没有借这样的书,任意键返回\n");/*出错提示*/ fclose(fp); getch(); return0; } } printf("系统没这样的卡,和管理员联系,按任意键返回\n");/*出错提示*/ fclose(fp); getch(); } findbook() { FILE*fp; charbookname[10]; intture,i; fp=fopen("book.txt","r"); printf("请输入你要查找的书名\n"); scanf("%s",bookname); for(i=0;fread(&book[i],sizeof(structbook),1,fp)! =0;i++) { if(strcmp(bookname,book[i].bookname)==0) { if(book[i].turefalse==1) { printf("这本书的详细资料是: %d%s%s此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat); } else{printf("这本书已经有人借出\n");fclose(fp);return0;} fclose(fp); returnFALSE; } } printf("没有你要查询的书籍\n"); fclose(fp); returnFALSE; } findbook1() { FILE*fp; charbookcreat[10]; intture,i; fp=fopen("book.txt","r"); printf("请输入你要查找的作者名\n"); scanf("%s",bookcreat); for(i=0;fread(&book[i],sizeof(structbook),1,fp)! =0;i++) { if(strcmp(bookcreat,book[i].bookcreat)==0) { if(book[i].turefalse==1) { printf("这本书的详细资料是: %d%s%s此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat); } else{printf("这本书已经有人借出\n");fclose(fp);return0;} fclose(fp); returnFALSE; } } printf("没有你要查询的书籍\n"); fclose(fp); returnFALSE; } lendcount() { FILE*fp; inti,n=0; fp=fopen("record.txt","r"); for(i=0;fread(&student[i],sizeof(structstudent),1,fp)! =0;i++) { printf("卡号: %d借出的书籍: %s\n",student[i].carnum,student[i].lendbook); n=n+1; } fclose(fp); printf("目前共有%d本书借出\n",n); printf("按任意键\n"); getch(); returnn; } chabook() { charch5; do { printf("---------------欢迎进入图书查询系统! --------------\n"); printf("1: <按书名查找>\n"); printf("2: <按作者查找>\n"); printf("0: <返回>\n"); printf("请输入0--2,其他输入非法! \n"); scanf("%s",&ch5); switch(ch5) { case'1': findbook();getch();break; case'2': findbook1();getch();break; case'0': break; default: printf("无此操作\n");getch();break; } }while(ch5! ='0'); returnFALSE; } lendbook() { FILE*fp,*fp2; inti,n; intcarnum; printf("请你输入你的卡号\n"); scanf("%d",&carnum); fp=fopen("car.txt","r"); for(i=0;fread(&car[i],sizeof(structcar),1,fp)! =0;i++) { if(car[i].carnum==carnum) { n=i; fclose(fp); printf("请输入你要借阅的书的名字\n"); scanf("%s",student[n].lendbook); fp=fopen("book.txt","r"); for(i=0;fread(&book[i],sizeof(structbook),1,fp)! =0;i++) { if(strcmp(book[i].bookname,student[n].lendbook)==0) { if(book[i].turefalse==0){printf("对不起,此书有人借出,请借其他书\n");fclose(fp);getch();return;} else fclose(fp); fp=fopen("record.txt","a+"); student[n].carnum=carnum; fwrite(&student[n],sizeof(structstudent),1,fp); fclose(fp); fp=fopen("book.txt","r"); fp2=fopen("bookl.txt","w"); for(i=0;fread(&book[i],sizeof(structbook),1,fp)! =0;i++) { if(strcmp(book[i].bookname,student[n].lendbook)==0) { book[i].turefalse=0; fwrite(&book[i],sizeof(structbook),1,fp2); continue; } fwrite(&book[i],sizeof(structbook),1,fp2); } fclose(fp); fclose(fp2); fp=fopen("book.txt","w"); fp2=fopen("bookl.txt","r"); for(i=0;fread(&book[i],sizeof(structbook),1,fp2)! =0;i++) { fwrite(&book[i],sizeof(structbook),1,fp); } fclose(fp); fclose(fp2); fopen("bookl.txt","w"); fclose(fp2); printf("借书完毕,按任意键返回\n"); getch(); return; } } printf("不存在这样的书,任意键返回\n"); fclose(fp); getch(); return; } } printf("你的卡号不存在,请申请新卡,按任意键返回\n"); fclose(fp); getch(); } carcount() { FILE*fp; inti,n=0; fp=fopen("car.txt","r"); for(i=0;fread(&car[i],sizeof(structcar),1,fp)! =0;i++) { printf("第%d张卡<卡号: %d姓名: %s班级: %d>\n",i+1,car[i].carnum,car[i].studentname,car[i].studentclass); n=n+1; } fclose(fp); printf("目前共有%d本书\n",n); printf("按任意键\n"); getch(); } delcar() { FILE*fp,*fp2; inti; intcarnum; charchoice; fp=fopen("car.txt","r"); fp2=fopen("bookl.txt","w"); printf("请输入你要删除的卡号\n"); printf("如果你输入的卡号存在,系统自动删除该信息! 如果不存在,系统不做任何改动\n"); scanf("%d",&carnum); for(i=0;fread(&car[i],sizeof(structcar),1,fp)! =0;i++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言