C语言课程设计图书管理系统
更新时间:2024-06-14 16:26:01 阅读量: 综合文库 文档下载
C语言课程设计
姓名: 莫方民 班级:计算机1403 学号:144030318
《图书管理系统》
目录
一、 题目要求及能实现的功能·······················2
二、 程序总体设计·································2
三、 详细设计
1、主函数···································4 2、各功能模块设计·····························5
四、 附 录····································26
题目要求及能实现的功能
- 1 -
图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等,使之能提供以下功能:
1、新进图书基本信息的输入。 2、图书基本信息的查询。 3、对撤消图书信息的删除。 4、办理借书手续。 5、办理还书手续
【提示】
建立图书管理信息结构体,结构体成员包括图书馆名称、图书编号、单价啊、作者、存在状态、借书人姓名、性别、学号。存在状态设为整型,可用不同的数字代表借还状态。借书和还书手续要注意修改结构题的成员变量存在状态的值。
总体设计
查阅图书
欢迎进入地大图书管理系统 借阅图书 管理系统 图书归还 退出系统 欢迎进入管理系统 增加图书 删除图书 修改图书 图书统计
详细设计
学生管理系1、主函数
- 2 -
[说明]
主函数较多、较复杂,已经和主菜单函数合并,主菜单函数里还包括了各自的二级菜单,并已经开始了对各个函数的调用。为了程序显示的清晰可读,应先清屏之后调用菜单函数。
[流程]
- 3 -
开 始 显 示 一 系 列 功 能 选 项 N 输入n,判断n是否是0~4? Y 调 用 与 n 相 应 的 模 块
2、各功能模块设计
(2)查阅模块
[说明]
输入个员工信息后,浏览、查找、排序时同一个员工的所有信息都要同时显示,所以运用结构体运行。数据信息存放在文件中,一条记录对应一条学生信息,方便管理。
[流程]
- 4 -
查 询 系 统 按书名查找 按作者查找 退 出 输 入 无人借 已出借 不存在
(3)借阅模块
[说明]
查阅完图书记录后,用户要借阅图书,系统要在操作过程中提示用户输入流程,根据用户所输入的指令,帮助其完成借阅。
[流程]
- 5 -
借 阅 图书 输 入 卡 号 卡号存在 卡号不存在 输入书名 已出借 借阅成功 不存在 返 回 (4)管理模块
- 6 -
[说明]
管理模块最为复杂,管理所有的图书及职工、学生的信息。先进入总体的管理系统,在这个系统中重点的操作是图书的管理,为其中的1至4项(分别是增加图书、删除图书、修改图书资料、书籍统计),同时系统还连接了职工、学生管理两个系统,为下一步的操作提供了条件。职工管理系统主要有增加图书、删除图书、修改图书资料、书籍统计,学生管理系统主要有申请新卡、删除卡号、借书统计、卡号统计四个模块,用于管理学生登录信息。
[流程]
- 7 -
增加图书
欢迎进入管理系统 删除图书 修改图书 图书统计 学生管理系欢迎进入学生管理系统 申请新卡 借书统计 卡号统计 删除卡号
返回 (5)还书模块
[说明]
需要根据输入员工的姓名及工号查找相应的记录,找到后增加删除和修改功能。
- 8 -
附录
——图书馆管理系统设计源程序清单
#include
#define STACK_INIT_SIZE 10 #define OK 1 #define TRUE 1 #define ERROR 0 struct student { int carnum;
char lendbook[10]; }student[1000]; struct book {
int booknum;
char bookname[20]; float bookprice;
char bookcreat[20]; int turefalse; }book[1000]; struct car {
int carnum; char sex[5];
char studentname[20]; int studentclass; }car[1000]; findbook() {
FILE *fp;
char bookname[10]; int i;
fp=fopen(\
printf(\请输入你要查找的书名:\\n\scanf(\
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) {
if(strcmp(bookname,book[i].bookname)==0) {
if(book[i].turefalse==1)
- 9 -
{
FILE *fp; int i,n=0;
fp=fopen(\
if((fp=fopen(\{printf(\文件中没有数据!\\n\printf(\按任意键返回...\\n\getch(); return(0); }
for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++) {
printf(\卡号 借出的书籍 \\n\
printf(\ n=n+1; }
fclose(fp);
printf(\目前共有%d本书借出\\n\printf(\按任意键...\\n\getch(); return n; }
addcar() {
FILE *fp; int i=0;
fp=fopen(\printf(\卡号:\\n\
scanf(\printf(\性别:\\n\
scanf(\printf(\姓名:\\n\
scanf(\printf(\班级:\\n\
scanf(\
fwrite(&car[i],sizeof(struct car),1,fp); fclose(fp);
printf(\输入完毕,任意键返回...\\n\getch(); }
delcar() {
FILE *fp,*fp2; int i;
- 15 -
int carnum; char choice;
fp=fopen(\fp2=fopen(\
printf(\要删除的卡号(不存在则不作改动):\\n\scanf(\
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++) {
if(car[i].carnum!=carnum) {
fwrite(&car[i],sizeof(struct car),1,fp2); } }
fclose(fp); fclose(fp2);
printf(\确认删除?(Y/N)!\\n\scanf(\
if(choice=='y'||choice=='Y') {
fp=fopen(\ fp2=fopen(\
for(i=0;fread(&car[i],sizeof(struct car),1,fp2)!=0;i++) {
fwrite(&car[i],sizeof(struct car),1,fp); }
fclose(fp); fclose(fp2);
fp2=fopen(\ fclose(fp2);
printf(\操作超成功!\\n按任意键返回...\\n\ getch(); return 0; } else {
printf(\操作已取消!\\n按任意键返回...\\n\ getch(); return 0; } }
carcount() {
FILE *fp;
- 16 -
int i,n=0;
fp=fopen(\
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++) {
printf(\第%d张卡 \\n\
printf(\卡号 性别 姓名 班级 \\n\ printf(\
printf(\ %d %6s s = \\n\\n\ n=n+1; }
fclose(fp);
printf(\目前共有%d个学生。\\n\printf(\按任意键返回...\\n\getch(); }
addbook() {
FILE *fp; int i=0;
char choice='y';
fp=fopen(\
while(choice=='y'||choice=='Y') {
printf(\书号:\\n\
scanf(\ printf(\书名:\\n\
scanf(\ printf(\作者:\\n\
scanf(\ printf(\单价:\\n\
scanf(\
printf(\请你设定书的状态(1在架/0不在):\\n\ scanf(\
fwrite(&book[i],sizeof(struct book),1,fp); printf(\是否要输入下本书(y/n)\\n\ scanf(\}
fclose(fp); }
delbook() {
FILE *fp,*fp2;
- 17 -
int i;
char bookname[10],choice; fp=fopen(\fp2=fopen(\printf(\书名:\\n\scanf(\
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) {
if(strcmp(bookname,book[i].bookname)!=0) {
fwrite(&book[i],sizeof(struct book),1,fp2); } }
fclose(fp); fclose(fp2);
printf(\确认删除(y/n)?\\n\scanf(\
if(choice=='y'||choice=='Y') {
fp=fopen(\ fp2=fopen(\
for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++) {
fwrite(&book[i],sizeof(struct book),1,fp); }
fclose(fp); fclose(fp2);
fp2=fopen(\ fclose(fp2);
printf(\按任意键返回...\\n\ getch(); return 0; } else {
printf(\按任意键返回...\\n\ getch(); return 0; } }
changebook() {
FILE *fp,*fp2;
char bookname[10],choice;
- 18 -
int i;
fp=fopen(\fp2=fopen(\printf(\书名:\\n\scanf(\
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) {
if(strcmp(book[i].bookname,bookname)==0) {
printf(\你所要修改的书的资料如下,请选择你要修改的内容:\\n\ printf(\序号 书名 作者 \\n\
printf(\; printf(\修改书号:\\n\ printf(\修改书名:\\n\ printf(\修改作者:\\n\ printf(\修改单价:\ printf(\请输入1━3:\ choice=getch(); switch(choice) {
case '1': {
printf(\新的书号:\\n\
scanf(\
fwrite(&book[i],sizeof(struct book),1,fp2); }break; case '2': {
printf(\新的书名:\\n\
scanf(\
fwrite(&book[i],sizeof(struct book),1,fp2); }break; case '3': {
printf(\新的作者:\\n\
scanf(\
fwrite(&book[i],sizeof(struct book),1,fp2); }break; case '4': { printf(\新的单价:\ scanf(\
- 19 -
fwrite(&book[i],sizeof(struct book),1,fp2); }
default:printf(\没有这样的操作!\ }
continue; }
fwrite(&book[i],sizeof(struct book),1,fp2); }
fclose(fp); fclose(fp2);
fp=fopen(\fp2=fopen(\
for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++) {
fwrite(&book[i],sizeof(struct book),1,fp); }
fclose(fp);
fp2=fopen(\fclose(fp2);
printf(\按任意键返回...\\n\getchar(); return 0; }
bookcount() {
FILE *fp; int i,n=0;
fp=fopen(\
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) {
if(book[i].booknum!=0&&strlen(book[i].bookname)!=0&&strlen(book[i].bookcreat)!=0) {
printf(\第%d本书\\n序号 书名 作者 单价 状态 \\n\
printf(\ printf(\%d s \ printf(\ %4.2f %d(1在/0不在)\\n\ n=n+1; } }
- 20 -
fclose(fp);
printf(\目前共有%d本书.\\n\printf(\按任意键返回...\\n\}
end() { printf(\ printf(\ printf(\┃┃ 谢谢使用本系统 , 再见! ┃┃\\n\
printf(\ printf(\ }
main() {
char ch1,ch2,ch4; do {
printf(\
printf(\『制作:莫方民 学号:144030318 班级: 计科1403\\n\\n\ printf(\ printf(\
printf(\请选择需要的服务:\\n\ printf(\查阅图书 \\n\ printf(\借阅图书 \\n\ printf(\管理系统 \\n\ printf(\还书 \\n\ printf(\退出 \\n\
printf(\请输入数字0━4:\\n\ ch1=getch(); switch(ch1) {
case '1':chabook();break; case '2':lendbook();;break; case '3':{ do {
printf(\增加图书 \\n\ printf(\删除图书 \\n\ printf(\修改图书 \\n\ printf(\图书统计 \\n\
printf(\学生管理系统 \\n\ printf(\返回 \\n\ printf(\请输入0━5:\\n\
- 21 -
ch2=getch(); switch(ch2) {
case '1':addbook(); break;
case '2':delbook();break; case '3':changebook();break;
case '4':bookcount();getch();break; case '5':{ do {
printf(\申请新卡 \\n\ printf(\删除卡号 \\n\ printf(\借书统计 \\n\ printf(\卡号统计 \\n\ printf(\返回 \\n\ printf(\请输入0━4:\\n\ ch4=getch(); switch(ch4) {
case '1':addcar();break; case '2':delcar();break; case '3':lendcount();break; case '4':carcount();break; case '0':break;
default:printf(\无此操作!\\n\ }
}while(ch4!='0');}break; case '0':break;
default:printf(\无此操作!\\n\ } } while(ch2!='0');}break; case '4':huanbook();break; case '0':break;
default:printf(\无此操作!\\n\ }
}while(ch1!='0'); }
- 22 -
正在阅读:
C语言课程设计图书管理系统06-14
山东电网“十二五”配电网规划报告07-25
STC89C52RC单片机介绍08-31
延伸党建工作领域 深入开展工地党建07-17
2015年中考模拟试题 Word 文档03-09
关于离散点集的三维凸包的研究04-22
顾客价值战略与企业竞争优势04-18
陕西中考物理模拟冲刺卷七套(详尽答案版)06-10
写景状物作文800字8篇02-05
第四章 国际货物通关01-30
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 管理系统
- 语言
- 课程
- 图书
- 设计
- 艺术概论 - 题库兼答案
- 毕业论文---CAD技术在机械制造领域的应用和发展
- 橡胶的品种,特性,用途
- 动物生理学(甲)离线作业 (1)
- 金融工程计算题习题和答案
- 河北省石家庄市平山县第二中学九年级化学上册《第四单元 课题2
- 事故抢修预案
- 电子凸轮教案
- 一年级弱科突破措施
- 重要工作会议纪要范文 - 0
- 中考复习八年级英语现在完成时语法详细讲解与配套习题
- 全纳教育有关问题
- 数据库基础与应用期末重点复习题
- 2017学年最新人教版三年级数学上册教案设计
- 最新整理20xx年反腐倡廉主题教育工作体会
- 【精品推荐】最新2018人教版小学四年级数学下册期末试卷 (3)
- 外研社版三年级英语下册期中测试题
- 角鲨烯的功能及其应用研究进展
- 商业银行习题
- 初升高生物衔接教材