图书管理系统 c++ 程序设计 河北工业大学 沙若雨雨若沙
- 格式:pdf
- 大小:100.90 KB
- 文档页数:16
分类号编号华北水利水电大学North China Institute of Water Conservancy and Hydroelectric Power 课程设计课程名C语言课程设计题目图书信息管理系统院系信息工程学院专业网络工程姓名陈志涵学号201517614指导教师吴慧欣一、课程设计内容(必做题)1.输入一行字符,要求完成:(1)每个单词中的第一个字母改成大写字母(如果原来已是大写字母则不变)。
(2)全变成大写字母(3)全变成小写字母要求:以函数的形式实现,在main函数中调用,要支持输入程序代码:#include<stdio.h>#include<string.h>int main(){void changeone(char a[],int k);void changelwr(char arr[]);void changeuper(char arr[]);int k;char str[50];printf("输入一个字符串:\n");gets(str);k=strlen(str);printf("单词的第一个字母变成大写字母:\n");changeone(str,k);getchar();printf("字母全部转换为大写:\n");changeuper(str); getchar();printf("字母全部转换为小写:\n");changelwr(str);return 0;}void changeone(char a[],int k){ int i;if(a[0]>='a'&&a[0]<='z')a[0]=a[0]-32;for(i=1;i<k;i++){ if(a[i]==' '&&a[i+1]>='a'&&a[i+1]<='z')a[i+1]=a[i+1]-32; } puts(a); }void changeuper(char arr[]){strupr(arr); puts(arr);}void changelwr(char arr[]){strlwr(arr); puts(arr);}运行结果展示2、编写将a所指字符串中的字符按逆序存放,然后和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。
书店管理c语言课程设计一、课程目标知识目标:1. 理解C语言的基本语法和程序结构,掌握其基本数据类型、运算符、控制语句等知识;2. 学习并掌握C语言中的数组、函数、指针等高级概念,并能将其应用于实际编程中;3. 了解书店管理的业务需求,运用C语言设计并实现一个简单的书店管理系统。
技能目标:1. 培养学生运用C语言进行程序设计的能力,能够独立编写、调试和运行简单的C程序;2. 培养学生分析和解决实际问题的能力,通过书店管理系统课程设计,使学生掌握需求分析、模块划分、编程实现等软件开发基本流程;3. 提高学生的团队协作能力,分组完成课程设计,培养学生相互沟通、共同解决问题的能力。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发他们学习C语言的积极性,提高学生的自信心和自主学习能力;2. 通过课程设计,培养学生认真负责、严谨细致的工作态度,以及面对困难和挑战时坚持不懈的精神;3. 增强学生的创新意识,鼓励他们在课程设计中勇于尝试新思路,培养创新精神和团队协作精神。
本课程目标旨在使学生在掌握C语言基本知识的基础上,通过书店管理系统的设计与实现,提高编程实践能力、团队合作能力,培养良好的工作态度和价值观。
为实现这些目标,课程将注重理论与实践相结合,充分考虑学生的认知水平和学习需求,确保课程内容符合教学实际。
在教学过程中,教师将关注学生的学习进度,及时调整教学策略,确保学生能够达到预期的学习成果。
二、教学内容1. C语言基础知识回顾:数据类型、变量、运算符、控制语句(条件语句、循环语句)、函数定义与调用等;2. C语言高级知识学习:数组、指针、结构体、文件操作等;3. 书店管理系统需求分析:分析书店管理系统的业务流程,明确系统功能模块;4. 系统设计:根据需求分析,进行模块划分,设计各模块的功能和数据结构;5. 编程实现:运用C语言编写各模块代码,实现书店管理系统的功能;6. 系统测试与调试:对完成的程序进行测试,发现并修复错误,确保系统的稳定运行;7. 课程总结与评价:对课程设计过程进行总结,分享经验教训,互相评价学习成果。
高级语言程序设计课程设计评语:学院班级姓名学号成绩指导老师年月日一、目的1.进一步掌握和利用C语言进行程设计的能力;2、进一步理解和运用结构化程设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或N-S图表示算法;6、掌握书写程设计开发文档的能力(书写课程设计报告);二、内容与设计思想。
(1)题目:图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
试设计一图书信息管理系统,使之能提供以下功能:系统以菜单方式工作图书信息录入功能(图书信息用文件保存)--输入图书信息浏览功能--输出查询和排序功能:(至少一种查询方式)--算法按书名查询按作者名查询图书信息的删除与修改(可选项)(2).系统功能与分析(填写你所设计的菜单及流程图)截图略按书名查找模块流程图按作者查找模块流程图插入模块流程图(3)数据结构typedef struct book{int sort;char book_name[15];char author_name[15];int vert_number;char publish_unit[15];char publish_time[10];int price;}B(4).模块设计(5)总体设计思想:(6)调试过程: 测试数据及结果,出现了哪些问题截图略(7)程序有待改进的地方及本次实习的收获和建议……(8)源程序清单(主要代码)#include<stdio.h>#include<stdlib.h>#include<string.h>#define LEN sizeof(struct book)typedef struct book{int sort;char book_name[15];char author_name[15];int vert_number;char publish_unit[15];char publish_time[10];int price;}B;B *P,*p1,boo;int num=0,f=0;int save();void input();int get();void output();void book_name();void author_name();void modify();void delet();int main(){int re=1,t,j=0;int n,choice;while(re==1){t=1;system("cls");printf(" *****************************\n");printf(" 主菜单\n\n");printf(" 1.录入信息\n");printf(" 2.查看信息\n");printf(" 3.查询信息\n");printf(" 4.删除与修改信息\n");printf(" 5.退出\n");printf(" *****************************");printf("\n");if(j==1) printf("\n\t选择错误!");printf("\n\t请选择1-5: _\b\b");scanf("%d",&choice);switch(choice){case 1:{printf("\n\t1: 录入信息\n");input();printf("\n \t1.返回主菜单;\n\t 2.退出\n\t\t请选择: _\b\b");scanf("%d",&re);break;}case 2:{printf("\n\t2.查看信息\n");output();printf("\n\t 1.返回主菜单;\n\t 2.退出\n\t\t请选择: _\b\b");scanf("%d",&re);break;}case 3:{while(t==1){printf("\n\t3.查询信息\n");printf("\n\t 请选择查询方式:\n\t 1.按书名\n\t 2.按作者名\n\t 3.其余任意数字键返回主菜单_\b\b");scanf("%d",&n);if(n==1)book_name();else if(n==2)author_name();else{re=1;goto lebel;}printf("\n\t 1.返回上一层;\n\t 2.返回主菜单;\n\t 3.退出\n\t 请选择: _\b\b");scanf("%d",&t);if(t==1)system("cls");if(t==2)re=1;if(t==3) re=0;}lebel: break;}case 4:{while(t==1||f==1){printf("\n\t4.删除与修改信息\n");printf("\n\t 请选择:\n\t 1.删除信息;\n\t 2.修改信息\n \t 3.其余任意数字键返回主菜单_\b\b");scanf("%d",&n);if(n==1)delet();else if(n==2)modify();else{re=1;goto lebe;}printf("\n\t 1.返回上一层;\n\t 2.返回主菜单;\n\t 3.退出\n\t\t 请选择: _\b\b");scanf("%d",&t);if(t==1)system("cls");if(t==2) re=1;if(t==3) re=0;}lebe: break;}case 5:{re=0;break;}default:{re=1;j=1;}}}return 0;}int save(){FILE *fp;int i,n=0,n1=0;if((fp=fopen("book.txt","a+"))==NULL)return 0;fprintf(fp,"%d\n",num);for(i=0;i<num;i++){fprintf(fp,"%d %s %s %d %s %s %d",P[i].sort,P[i].book_name, P[i].author_name,P[i].vert_number,P[i].publish_unit,P[i].publish_time,P[i].price);fprintf(fp,"\n");}fclose(fp);return 1;}int get(){FILE *fp;int i;fp=fopen("book.txt","r");if(fp==NULL)return 0;else{fscanf(fp,"%d",&num);if(num>0){P=(B *)malloc(LEN * num);for(i=0;i<num;i++){fscanf(fp,"%d%s%s%d%s%s%d",&P[i].sort,P[i].book_name,P[i].author_name,&P[i].vert_number,P[i].publish_unit,P[i].publish_time,&P[i].price);}fclose(fp);return 1;}else{fclose(fp);return 0;}}}void input(){int result;int i;printf("\t\t要录入信息的书籍数量为: __本\b\b");scanf("%d",&num);if(num>0){P=(B *)malloc(LEN * num);for(i=0;i<num;i++){P[i].sort=i+1;printf("\n\tNO. %d",P[i].sort);printf("\n");printf("\t请按序输入:书名作者名分类号出版单位出版时间价格\n\t\t ");scanf("%s%s%d%s%s%d",P[i].book_name,P[i].author_name,&P[i].vert_number,P[i] .publish_unit,P[i].publish_time,&P[i].price);printf("\n");}result=save();if(result==0){printf(" \t录入信息失败!\n");num = 0;}if(result==1){printf(" \t成功录入信息!\n");}}else{num=0;printf(" \t输入错误!");}}void output(){int i;get();if(get()==1){printf("\n\t\t成功获取信息!\n");for(i=0;i<num;i++){printf("\n\t\tNO.\t%d\n",P[i].sort);printf("\t\t 书名作者名序列号出版单位出版时间价格\n");printf("\t\t %s %s %d %s %s %d",P[i].book_name,P[i].author _name,P[i].vert_number,P[i].publish_unit,P[i].publish_time,P[i].price);printf("\n");}}else printf(" \t文件打开错误!");}void book_name(){int i;int tag=0;char ch[15];printf("\t 请输入书名: _\b\b");scanf("%s",ch);if(get()==0){printf(" \t无法查询!");return;}if(get()==1){for(i=0;i<num;i++){if(strcmp(P[i].book_name,ch)==0){printf("\n\t\t 排列号书名作者名序列号出版单位出版时间价格\n");printf("\t\t %d %s %s %d %s %s %d\n",P[i].sort,P[i].book_n ame,P[i].author_name,P[i].vert_number,P[i].publish_unit,P[i].publish_time,P[i].price);tag =1;}}if (tag == 0){printf("\n \t没有相关信息!\n");}}}void author_name(){int i;int tag=0;char ch[15];printf("\t 请输入作者名: _\b\b");scanf("%s",ch);if(get()==0){printf(" \t无法查询!");return;}if(get()==1){for(i=0;i<num;i++)if(strcmp(P[i].author_name,ch)==0){printf("\n\t\t 排列号书名作者名序列号出版单位出版时间价格\n");printf("\t\t %d %s %s %d %s %s %d\n",P[i].sort,P[i].book _name,P[i].author_name,P[i].vert_number,P[i].publish_unit,P[i].publish_time,P[i].price);tag =1;}if (tag == 0){printf(" \t没有相关信息!");}}}void modify(){int t,n,i,y=1;int result,z,x;t=get();if(t==0){printf("\n \t打开文件错误,无法修改!");return;}else if(y==1){printf("\n\t 您要修改信息的图书排列号为(1-%d): _\b\b",num);scanf("%d",&n);if(n>=1&&n<=num){for(i=0;i<num;i++){if(P[i].sort==n){printf("\n\t您即将修改以下信息:\n");printf("\t\t 排列号书名作者名序列号出版单位出版时间价格\n");printf("\t\t %d %s %s %d %s %s %d",P[i].sort,P[i].book_name,P[i].author_name,P[i].vert_number,P[i].publish_unit,P[i].publish_time,P[i].price);printf("\n\n\t 确认请按1;返回请按2;返回上一层请按3 _\b\b");scanf("%d",&x);if(x==1){//p1=&boo;printf("\t 您要将信息修改为:\n");printf("\t\t书名: _\b\b");scanf("%s",P[i].book_name);printf("\t\t作者名: _\b\b");scanf("%s", P[i].author_name);printf("\t\t序列号: _\b\b");scanf("%d",&P[i].vert_number);printf("\t\t出版单位: _\b\b");scanf("%s",P[i].publish_unit);printf("\t\t出版时间: _\b\b");scanf("%s",P[i].publish_time);printf("\t\t价格: _\b\b");scanf("%d",&P[i].price);strcpy(P[i].book_name,P[i].book_name);strcpy(P[i].author_name,P[i+1].author_name);P[i].vert_number=P[i+1].vert_number;strcpy(P[i].publish_unit,P[i+1].publish_unit);strcpy(P[i].publish_time,P[i+1].publish_time);P[i].price=P[i+1].price;y=0;z=1;}elseif(x==2){y=1;z=0;}else{y=0;f=1;}}}}else{printf(" \t输入错误,请重新输入:");y=1;}while(z==1){result=save();if(result==0){printf("\n \t修改信息失败!\n");z=0;}if(result==1){printf("\n \t成功修改信息!\n");z=0;}}}return;}void delet(){int t,n,i,j,y=1;int result,z=0,x;t=get();if(t==0){printf("\n \t打开文件错误,无法删除!");return;}elsewhile(y==1){printf("\n\t 您要删除信息的图书排列号为(1-%d): _\b\b",num);scanf("%d",&n);if(n>=1&&n<=num){for(i=0;i<num;i++){if(P[i].sort==n){printf("\n\t 您即将删除以下信息:\n");printf("\t\t 排列号书名作者名序列号出版单位出版时间价格\n");printf("\t\t %d %s %s %d %s %s %d",P[i].sort,P[i].book_name,P[i].author_name,P[i].vert_number,P[i].publish_unit,P[i].publish_time,P[i].price);printf("\n\n\t 确认请按1;返回请按2;返回上一层请按 3 _\b\b");scanf("%d",&x);if(x==1){for(j=i;j<num-1;j++){strcpy(P[j].book_name,P[j+1].book_name);strcpy(P[j].author_name,P[j+1].author_name);P[j].vert_number=P[j+1].vert_number;strcpy(P[j].publish_unit,P[j+1].publish_unit);strcpy(P[j].publish_time,P[j+1].publish_time);P[j].price=P[j+1].price;}num=num-1;y=0;z=1;}elseif(x==2){y=1;}else{y=0;f=1;}}}}else{printf(" \t输入错误,请重新输入:");y=1;}while(z==1){result=save();if(result==0){printf(" \n\t删除信息失败!\n");z=0;}if(result==1){printf(" \n\t成功删除信息!\n");z=0;}}}return;}。
C语言程序设计大作业设计报告一.设计方案本程序旨在用一个C语言程序实现简单的图书馆图书管理系统,程序包含平时的借书,还书,新书录入,查询功能,用简单明了的人机交互界面快速实现图书管理的目的。
二.模块说明及代码分析1.主函数:源代码:void main(){int a;printf("\n");printf("\n");printf(" ( ^_^ ) WELCOME!\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\t〉〉-------------BJTU图书管理系统--------------〈〈");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");do {printf("1.借书 2.还书 3.新书录入4.查询 0.退出");printf("\n");printf("\n");printf("\n");printf("\n");printf("请选择序号:");scanf("%d",&a);switch(a){case 1:jieshu();break;case 2:huanshu();break;case 3:xinshu();break;case 4:chaxun();break;case 0:break;default:printf("请选择正确的序号!\n");printf("\n");}}while(a!=0);printf("谢谢使用图书管理系统!\n");}主函数提供人机交互界面,让操作者选择所需的操作项目,并有退出选项。
图书管理系统/*图书数据由编号、书名、出版社、单价和图书状态(库存用0表示或借出用读者编号表示),读者数据由编号、姓名和电话号码构成。
实现功能包括:(1)添加图书的记录(2)图书管理(借书和还书)(3)对图书数据排序(按单价的降序)(4)删除图书记录(5)修改图书记录(6)添加读者记录(7)输出图书信息表和读者信息表*#include <stdio.h>#include <string.h>#include <stdlib.h>#include <windows.h>/*函数的声明*/void bookname();void writername();void booknumber();void press();void bookdate();void Bfind(); //查询主菜单void Bdevise(); //修改函数void Badd(); //添加函数void Bdelete(); //删除函数void Bdisplay(); //显示所以已保存的图书信息函数void Bclean(); //清除所有图书信息函数void lendbook(); // 借书函数void returnbook(); //还书函数void lendorreturnbook();//借书或还书主菜单函数void appealkey();//用户密码申诉函数void devisepeoplekey();//修改用户密码函数void accountapply(); //用户申请账户函数void addpeopleaccount(); //管理员之添加用户帐号函数void addmanageaccount(); //管理员之添加管理员账号函数void addaccount(); //管理员之账户添加主菜单函数void devisepeopleaccount();//管理员之修改用户账号函数void devisemanageaccount();//管理员之修改管理员帐号函数void deviseaccount();//管理员之修改账号主菜单函数void deletepeopleaccount();//管理员之删除用户账号函数void deletemanageaccount();//管理员之删除管理员账号函数void deleteaccount();//管理员之删除账号主菜单函数void displayallpeopleaccounts();//显示所有用户信息函数void displayallmanageaccounts();//显示所有管理员信息函数void displayallaccountsmessage();//显示所有账号信息主菜单函数void highaddpeopleaccount(); //高级管理员添加用户账户函数void highaddmanageaccount(); //高级管理员添加管理员账户函数void highaddaccount(); //高级管理员之添加账户主菜单函数void booksmanage();//图书操作主菜单函数void accountsmanage();//管理员账号操作主菜单函数void highaccountsmanage();//高级管理员账号操作主菜单函数void menu1(); //用户之查询主菜单void menu2(); //管理员之查询主菜单void menu3(); //高级管理员之查询主菜单/*定义书的类型*/struct book{int bookstock; //库存量char bookname[20]; //书名char bookwriter[20]; //作者char booknumber[20]; //书号char press[20]; //出版社char bookdate[20]; //出版日期char price[20]; //出版价格int turefalse; //判断图书是否被借阅}books[20];/*定义用户类型*/struct peopleaccount{char pname[20];char pkey[20];}peopleaccounts[20];/*定义管理员类型*/struct manageaccount{char mname[20];char mkey[20];}manageaccounts[20];/*定义借书卡类型*/struct card{char cardnumber[20]; //借书卡号和用户信息一起写入yonghu.txt文件中的}cards[20];/*定义文件指针变量*/FILE *fp1; //fp1打开用户信息文件FILE *fp2; //fp2打开管理员信息文件FILE *fp3; //fp3打开图书信息文件FILE *fp4; //打开借还书记录的文件FILE *fpa; //fpa是临时文件指针/*改变输出的字体颜色*/void color(const unsigned short color1){if(color1>=0&&color1<=15)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color1);/*仅限改变0-15的颜色;如果在0-15那么实现他的颜色因为如果超过15后面的改变的是文本背景色。
本模板是课程设计报告模板,请各位同学认真阅读以下要求:1.报告后输出时将本页删除)2.3.本设计报告左侧装订。
在虚线处装订。
4.在课程设计封皮一页上用已经设置好的宋体四号来填写各个项目。
5.在课程设计评定表一页上用宋体小四填写班级、学号、姓名、项目组、项目组长、项目组组员、本人工作简介。
组长评语一栏应由组长来给出。
6.在课程设计任务书一页的开头应按照给定的设置(黑体三号)填写好你的班级,在第五项时间安排里面应用宋体五号加粗来填写好日期范围。
7.从程序基本框架结构图开始到设计报告的最后一页都要求有页眉,内容为你的课程设计题目,宋体小五居中。
页脚中的页码已经设置好,同学们不必改动。
8.在程序基本框架结构图采用WORD中的自选图形绘制程序基本框架结构图,也就是程序流程图。
9.在程序设计说明书中应该描述程序的设计思想,重点描述自己做的那部分的设计思想。
字体用宋体小四。
10.在代码清单中打印程序已经调试好的可运行的程序代码。
要求字体为宋体五号。
(页数可增加)11.报告的最后一部分是设计总结,应在程序代码之后另起一页,主要写通过一周课程设计你自己的体会,包括你学到了什么,哪里遇到了困难解决的办法以及今后的目标。
字体用宋体小四。
12.报告的各个部分都可以不为规定的一页,自己可增加页数,但要保证开始另外一项要另起一页。
13.服务课程名称:本科添写:C语言;/专科添写:计算机语言(c)┊┊课程设计目录1.C语言课程设计成绩评定表……………………. I页2.C语言课程设计任务书………………………….II页3.程序基本框架结构图……………………………. 1页4.程序设计说明书…………………………………. 2页5.源代码清单………………………………………. 3页6.课程设计总结…………………………………….13页课程设计成绩评定表班C语言课程设计任务书一、设计目的通过本次课程设计使学生进一步加深对C语言课程内容的理解,初步掌握一般应用程序的开发方法和步骤,进一步了解与掌握C语言的编程方法和技巧,提高学生用C语言解决实际问题的能力。
河北工业大学计算机软件技术基础(VC)课程设计报告学院()班级()姓名()学号()成绩一题目:图书管理系统(编号05)二设计思路1总体设计1)分析程序功能此程序将实现以下功能:程序开始运行,录入读者信息,然后输出信息,进入图书馆增加,删除图书按Y键输入增加图书的信息,再重复是否增加图书,按Y以外的任意键放弃增加,进入查找图书功能,查找图书可按1书名2作者3编号4出版社,放弃按0,进入修改图书,进入借阅归还图书成功后退出。
采用了面向对象的程序设计思路又主函数部分和三个类组成reader 类、book类、library类分别将其数据和实现功能的函数封存在一起,将数据按分类管理和使用book类中使用reader类中对象,library 类中使用book类对象,使清晰安全。
1录入读者信息2)系总统体结构:设计程序的组成模块,简述各模块能功。
2录入图书信息3修改图书信息4注销旧书5查找图书6增加藏书7借阅图书8归还图书2各功能模块设计:说明个模块的实现方法此程序功能模块的设计方法:reader类(管理保存读者信息)在读者类存储读者信息显示读者信息,library类(管理保存图书馆藏信息)使用了友元函数录入图书信息判断是否可借、修改图书信息按编号实现1书名2作者3编号4出版社(输出其他视为放弃修改),重复修改过程,直到修改完毕按Y 以外任意键完成修改。
Book类(管理保存图书信息)有增加图书功能:输出增加书籍不增加按Y以外的任意键,否则输入增加书籍信息,重复输入增加书籍信息,增加完毕按Y以外任意键退出。
进入查找图书功能:按查找方法1书名、2作者、3编号、4出版社、放弃查找按零。
进入注销旧书功能,输出删除书籍,不删除按Y以外的任意键,(使用了查找图示功能只能用按编号查找)按Y删除查找到的书籍,重复删除过程,按Y以外的任意键退出。
修改图书信息:输出修改图书信息(使用了图书查找功能只能按编号查找)输入编号,系统查找图书,读者输入修改信息。