图书管理系统课程设计c语言_第1页
图书管理系统课程设计c语言_第2页
图书管理系统课程设计c语言_第3页
图书管理系统课程设计c语言_第4页
图书管理系统课程设计c语言_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上*大学实践报告姓名性别学号分院专业计算机类实践单位实践岗位岗位 实习时间岗位岗位(一)实践主要内容及进程先根据要求建立主函数的菜单,其总体结构为:int main()int m=0; do printf("tn");printf("t n"); printf("t 图书借阅管理系统 n");printf("tn");printf("tn"); printf("t 1【借阅资料管理 】 n");printf("t 2【借阅管理 】 n&quo

2、t;); printf("t 3【读者管理 】 n");printf("t 4【统计分析 】 n");printf("t 5【参数设置 】 n");printf("t 0【退出 】 n");printf("t 【请输入0-7:】 n"); printf("tn"); scanf("%d",&m); switch(m)/用swich-case语句:用于枚举选择 case 1:menu_book();break; case 2: Display_mai

3、n_menu();break;case 3: user_menu();break;case 4: count_menu();break;case 5: printf("请设置一天的罚款金额:"); scanf("%f",&moneys);printf("设置成功!n");/退出break;case 6:exit(0); while(1);return 0;再根据没个选项来设计头文件分别为user.h book.h record.h其中book.h(借阅资料管理)声明和结构为#include<stdio.h>#inc

4、lude<string.h>/字符串头文件#include <stdlib.h>/exit函数的头文件,用于程序退出功能#define N 100 struct book char ISBN20; /*图书编号*/ char bookName20;/*书名*/ char auther20;/*作者姓名*/ char publish20;/出版社 char date20;/*出版时间*/ char type20;/类别 float price;/*价格*/ int total;/*总库存量*/ int now;/*现在库存量*/ int jie; /*已借出*/BookN

5、;int number=0;void menu();void Input_book();/*录入图书编号信息*/void Delete_book();/*删除信息函数*/void Modification_book();/*修改信息*/void Search_book();/*按条件查询*/void title_book();/*图书信息输出标题*/void print_book(struct book b);/*打印某一本书的*/int Judge();/*判断输入是否继续的函数*/void menu_book()/菜单函数声明int m; do printf(" *借阅资料管理菜

6、单* n"); printf(" 1 增加信息 n");printf(" 2 修改信息 n");printf(" 3 删除信息 n");printf(" 4 查询信息 n");printf(" 5 返回主材单 n");printf(" 请选择1/2/3/4/5 : n");scanf("%d",&m); switch(m)/用swich-case语句:用于枚举选择 case 1: Input_book();break; case 2: M

7、odification_book();break;case 3: Delete_book();break;case 4: Search_book();break;case 5: ;break; default: printf("请输入正确的按键!n");break; while(m!=5);/使用do-while语句:用于控制条件record.h声明与结构为:#include<stdio.h>#include<string.h>/字符串头文件#include <stdlib.h>/exit函数的头文件,用于程序退出功能#include&l

8、t;time.h>/获取当前系统时间#define MAX 100 /定义学生的人数最多为100struct date/定义日期结构体int year;/年份int month;/月份int day;/日;struct recordchar card20;/借书证号char ISBN20;/书号 为13位国际编码 char name20;/书名 float maoney;/金额 struct date senddate;/*借书时间*/struct date backdate;/*还书时间*/float fine; /*罚款金额*/int state;/*表示借书状态,0表示借,1表示还

9、*/ recordsMAX;int r_num=0;/*全局变量表示结构体中的图书数量*/ float moneys=0;/*以下是函数声明部分*/void list();/*显示所有图书信息*/void borrowing_books();/借书void bookreturn();/还书void search_by_date();/查询日期void del();/删除void del_by_year();/删除过期数据void search_by_card();/以下四个函数是计算时间函数int counterdays1(int year,int month,int day,int year

10、1,int month1,int day1);/求某时间距离今天有多少天int counterdays(int year,int month,int day);/求某时间距离今天有多少天int eachyeartotal(int year,int month,int day);void getTime(int *year,int *month,int *day);void countByYear();void Display_main_menu();/显示主菜单void Display_main_menu()/菜单函数声明 int m; do printf("tn");pr

11、intf("t n"); printf("t 借阅管理 n");printf("tn");printf("tn"); printf("t 1【借书 】 n");printf("t 2【还书 】 n");printf("t 3【续借 】 n");printf("t 0【返回主菜单 】 n");printf("t 【请输入0-3:】 n"); printf("tn"); scanf("%d&

12、quot;,&m); switch(m)/用swich-case语句:用于枚举选择 case 1:borrowing_books();/借书break; case 2: bookreturn();/还书break;case 3: search_by_card();/查询借书信息break;case 0: break; default: printf("请输入正确的按键!n");break; while(m!=0);/使用do-while语句:用于控制条件user.h全部内容为#include<stdio.h>#include<string.h>

13、;#include<stdlib.h>/读者管理/struct userint label;/0是老师 1是学生char card20;/借书证号 char name20;/姓名 char infor20;/老师是所属学院 char num20;/老师 工号 学生是学号 int number;/借书量 int days;/借书天数 int statue;/0表示可用 1表示挂失 u100;int Day2=0,Num2=0;int u_num=0; void title_user(struct user us);void print_user(struct user us);voi

14、d insert_user()/*录入信息*/int flag=0,j=0,t;/表示此次录入的人数printf("t*读者信息录入*n");printf(" 1*教师 2*学生");scanf("%d",&t); uu_num.label=t-1; printf("借书证号 :");scanf("%s",uu_num.card);printf("姓名:");scanf("%s",uu_);printf("所属学院:&qu

15、ot;);scanf("%s",uu_r);printf("学号:");scanf("%s",uu_num.num);uu_num.statue=0;uu_num.number=Numt-1;uu_num.days=Dayt-1; u_num+;printf("新增信息成功!n");void guashi_user()int flag=0,i;char no20;printf("ttt*挂失*n"); printf("借书证号:");scanf("%

16、s",no);for(i=0;i<u_num;i+)if(strcmp(ui.card,no)=0)ui.statue=1; printf("挂失成功!n");flag=1;break;if(flag=0)printf("无记录!n");void zhuxiao_user()/*注销信息函数*/int flag=1,i,a; int k=0; char information20; printf("输入借书证进行查询注销: n"); scanf("%s,",information); for(i=0

17、;i<u_num;i+) if(strcmp(information,ui.card)=0) flag=0;for( a=i;a<u_num;a+)ua=ua+1;u_num-; printf("注销成功!n"); break; if(flag=1)printf("无记录!n"); void Search_user()int i;char infor20;printf("请输入工号或学号查询:n");scanf("%s",infor);for(i=0;i<u_num;i+)if(strcmp(ui

18、.num,infor)=0) title_user(ui); print_user(ui);system("pause"); void title_user(struct user us) if(us.label=1) printf(" 借书证 姓名 所属学院 工号 是否挂失n"); else printf(" 借书证 姓名 所属班级 学号 是否挂失n");void print_user(struct user us) printf("%10s %10s %10s %10s %5dn",us.card,us.nam

19、e,r,us.num,us.statue); void setLever()printf("教师等级设置:n");printf("-n");printf("请输入教师可借数量:");scanf("%d",&Num0);printf("请输入教师可借天数:");scanf("%d",&Day0);printf("学生等级设置:n");printf("-n");printf("请输入学生可借数量:&q

20、uot;);scanf("%d",&Num1);printf("请输入学生可借天数:");scanf("%d",&Day1);void user_menu()int m;do printf(" *读者管理* n"); printf(" 1 等级设置 n");printf(" 2 信息录入 n");printf(" 3 挂失 n");printf(" 4 注销 n");printf(" 5 查询 n")

21、;printf(" 0 返回上一级菜单 n");scanf("%d",&m); switch(m)case 1: setLever(); break; case 2: insert_user();break;case 3: guashi_user();break;case 4: zhuxiao_user();break;case 5: Search_user();break;case 0: ;break;while (m!=0);(二)主要收获与体会学会了用dowhile(m!=n)来控制菜单和返回掌握了对较为复杂的程序的基本架构,对更难更复杂的

22、程序更有信心与耐心去完成。对全局变量有了更深的认识而不是仅仅知道全局变量怎么用,知道了为什么什么时候需要用全局变量学会了运用网络去寻找所碰到的问题的解决方案,在网上学习自己所需要的知识。如学习如何time.h里的函数:#include<time.h>/获取当前系统时间int counterdays1(int year,int month,int day,int year1,int month1,int day1);/求某时间距离今天有多少天int counterdays(int year,int month,int day);/求某时间距离今天有多少天int eachyeartot

23、al(int year,int month,int day);void getTime(int *year,int *month,int *day);void countByYear(); void countByYear() int i,j,k=0,flag;float fine6=0; int year6=0;int count6=0;for(i=0;i<r_num;i+)flag=0;for(j=0;j<k;j+)if(recordsi.senddate.year=yearj)if(recordsi.state=0&&counterdays(recordsi.

24、senddate.year,recordsi.senddate.month,recordsi.senddate.day)>30)finej=finej+(float)(counterdays(recordsi.senddate.year,recordsi.senddate.month,recordsi.senddate.day)-30)*0.2;else if(recordsi.state=1)finej=finej+recordsi.fine;countj+;flag=1;if(flag=0)yeark=recordsi.senddate.year;countk=1;if(record

25、si.state=0&&counterdays(recordsi.senddate.year,recordsi.senddate.month,recordsi.senddate.day)>30)finek=(float )(counterdays(recordsi.senddate.year,recordsi.senddate.month,recordsi.senddate.day)-30)*0.2;else if(recordsi.state=1)finek=recordsi.fine; k+;printf("年份 未还书量 总罚款金额n");for

26、(i=0;i<k;i+) printf("%-14d %-10d %8.1fn",yeari,counti,finei); void getTime(int *year,int *month,int *day)/获取当前系统时间time_t nowtime; struct tm *timeinfo; nowtime = time(NULL); timeinfo = localtime(&nowtime);*year=timeinfo->tm_year+1900; *month=timeinfo->tm_mon+1;*day=timeinfo->

27、;tm_mday;int isleap(int year)/判断闰年if(year%4=0&&year%100!=0|year%400=0)return 1;else return 0;int maxDay(int year,int month)int a=31,28,31,30,31,30,31,31,30,31,30,31;if(isleap(year)a1=29;return amonth-1;int eachyeartotal(int year,int month,int day)int i,sum=0;for(i=1;i<month;i+)sum+=maxDay

28、(year,i);sum+=day;/printf("%d-%d-%d :%dn",year,month,day,sum);return sum;int counterdays1(int year,int month,int day,int year1,int month1,int day1)/求某时间距离今天有多少天int days0,days1,days;days0=(year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day);days1=(year1-1)*365+(ye

29、ar1-1)/4-(year1-1)/100+(year1-1)/400+eachyeartotal(year1,month1,day1);days=abs(days0-days1);return days;int counterdays(int year,int month,int day)/求某时间距离今天有多少天int year1,days0,days1,month1,days,day1;time_t nowtime; struct tm *timeinfo; nowtime = time(NULL); timeinfo = localtime(&nowtime);year1=t

30、imeinfo->tm_year+1900; month1=timeinfo->tm_mon+1;day1=timeinfo->tm_mday;days0=(year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day);days1=(year1-1)*365+(year1-1)/4-(year1-1)/100+(year1-1)/400+eachyeartotal(year1,month1,day1);days=abs(days0-days1);return days;在过程中锻炼

31、了耐心。在程序的实验过程中碰到了许多问题,正是因为在编程时打了备注,所以在出现问题是能及时找到问题的位置,由此知道了编程所加的十分重要的,它不是麻烦而是帮助我们快速完成程序的工具。(3) 对实践单位的建议对任务要有合理的分配,图书管理系统在所有题目中是较为复杂难度较大的题目,希望给了难题的同时也应分配较为优秀的组员。(4) 实践成果(一)实践主要内容及进程先根据要求建立主函数的菜单,其总体结构为:int main()int m=0; do printf("tn");printf("t n"); printf("t 图书借阅管理系统 n"

32、;);printf("tn");printf("tn"); printf("t 1【借阅资料管理 】 n");printf("t 2【借阅管理 】 n"); printf("t 3【读者管理 】 n");printf("t 4【统计分析 】 n");printf("t 5【参数设置 】 n");printf("t 0【退出 】 n");printf("t 【请输入0-7:】 n"); printf("tn&

33、quot;); scanf("%d",&m); switch(m)/用swich-case语句:用于枚举选择 case 1:menu_book();break; case 2: Display_main_menu();break;case 3: user_menu();break;case 4: count_menu();break;case 5: printf("请设置一天的罚款金额:"); scanf("%f",&moneys);printf("设置成功!n");/退出break;case 6:

34、exit(0); while(1);return 0;再根据没个选项来设计头文件分别为user.h book.h record.h其中book.h(借阅资料管理)声明和结构为#include<stdio.h>#include<string.h>/字符串头文件#include <stdlib.h>/exit函数的头文件,用于程序退出功能#define N 100 struct book char ISBN20; /*图书编号*/ char bookName20;/*书名*/ char auther20;/*作者姓名*/ char publish20;/出版社

35、char date20;/*出版时间*/ char type20;/类别 float price;/*价格*/ int total;/*总库存量*/ int now;/*现在库存量*/ int jie; /*已借出*/BookN;int number=0;void menu();void Input_book();/*录入图书编号信息*/void Delete_book();/*删除信息函数*/void Modification_book();/*修改信息*/void Search_book();/*按条件查询*/void title_book();/*图书信息输出标题*/void print

36、_book(struct book b);/*打印某一本书的*/int Judge();/*判断输入是否继续的函数*/void menu_book()/菜单函数声明int m; do printf(" *借阅资料管理菜单* n"); printf(" 1 增加信息 n");printf(" 2 修改信息 n");printf(" 3 删除信息 n");printf(" 4 查询信息 n");printf(" 5 返回主材单 n");printf(" 请选择1/2/3

37、/4/5 : n");scanf("%d",&m); switch(m)/用swich-case语句:用于枚举选择 case 1: Input_book();break; case 2: Modification_book();break;case 3: Delete_book();break;case 4: Search_book();break;case 5: ;break; default: printf("请输入正确的按键!n");break; while(m!=5);/使用do-while语句:用于控制条件record.h声明

38、与结构为:#include<stdio.h>#include<string.h>/字符串头文件#include <stdlib.h>/exit函数的头文件,用于程序退出功能#include<time.h>/获取当前系统时间#define MAX 100 /定义学生的人数最多为100struct date/定义日期结构体int year;/年份int month;/月份int day;/日;struct recordchar card20;/借书证号char ISBN20;/书号 为13位国际编码 char name20;/书名 float mao

39、ney;/金额 struct date senddate;/*借书时间*/struct date backdate;/*还书时间*/float fine; /*罚款金额*/int state;/*表示借书状态,0表示借,1表示还*/ recordsMAX;int r_num=0;/*全局变量表示结构体中的图书数量*/ float moneys=0;/*以下是函数声明部分*/void list();/*显示所有图书信息*/void borrowing_books();/借书void bookreturn();/还书void search_by_date();/查询日期void del();/删除

40、void del_by_year();/删除过期数据void search_by_card();/以下四个函数是计算时间函数int counterdays1(int year,int month,int day,int year1,int month1,int day1);/求某时间距离今天有多少天int counterdays(int year,int month,int day);/求某时间距离今天有多少天int eachyeartotal(int year,int month,int day);void getTime(int *year,int *month,int *day);voi

41、d countByYear();void Display_main_menu();/显示主菜单void Display_main_menu()/菜单函数声明 int m; do printf("tn");printf("t n"); printf("t 借阅管理 n");printf("tn");printf("tn"); printf("t 1【借书 】 n");printf("t 2【还书 】 n");printf("t 3【续借 】 n&q

42、uot;);printf("t 0【返回主菜单 】 n");printf("t 【请输入0-3:】 n"); printf("tn"); scanf("%d",&m); switch(m)/用swich-case语句:用于枚举选择 case 1:borrowing_books();/借书break; case 2: bookreturn();/还书break;case 3: search_by_card();/查询借书信息break;case 0: break; default: printf("

43、请输入正确的按键!n");break; while(m!=0);/使用do-while语句:用于控制条件user.h全部内容为#include<stdio.h>#include<string.h>#include<stdlib.h>/读者管理/struct userint label;/0是老师 1是学生char card20;/借书证号 char name20;/姓名 char infor20;/老师是所属学院 char num20;/老师 工号 学生是学号 int number;/借书量 int days;/借书天数 int statue;/0

44、表示可用 1表示挂失 u100;int Day2=0,Num2=0;int u_num=0; void title_user(struct user us);void print_user(struct user us);void insert_user()/*录入信息*/int flag=0,j=0,t;/表示此次录入的人数printf("t*读者信息录入*n");printf(" 1*教师 2*学生");scanf("%d",&t); uu_num.label=t-1; printf("借书证号 :");scanf("%s",uu_num.card);printf("姓名:");scanf("%s",uu_);printf("所属学院:");scanf("%s",uu_r);printf("学号:");scanf("%s",uu_num.num);uu_num.statue=0;uu_num.number=Numt-1;uu_num.day

温馨提示

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

评论

0/150

提交评论