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 #include #include #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 -

本文来源:https://www.bwwdw.com/article/pzy3.html

Top