图书管理系统源代码

合集下载

图书管理系统程序源代码

图书管理系统程序源代码

源程序1.主窗体Private Sub add_back_Click()frmbackbookinfo.ShowEnd SubPrivate Sub add_binf_Click()frmaddbookinfo.ShowEnd SubPrivate Sub add_book_style_Click()frmaddbookstyle。

ShowEnd SubPrivate Sub add_manager_Click()frmadduser.ShowEnd SubPrivate Sub add_rinf_Click() frmaddreaderinfo.ShowEnd SubPrivate Sub add_rstyle_Click()frmaddreaderstyle.ShowEnd SubPrivate Sub change_binf_Click() frmmodifybookinfo。

ShowEnd SubPrivate Sub change_book_style_Click()frmmodifybookstyle。

ShowEnd SubPrivate Sub delete_binf_Click()frmmodifybookinfo。

ShowEnd SubPrivate Sub delete_book_style_Click()frmmodifybookstyle.ShowEnd SubPrivate Sub delete_rstyle_Click()frmmodifyreaderstyle。

ShowEnd SubPrivate Sub exit_Click()EndEnd SubPrivate Sub find_binf_Click()frmfindbook。

ShowEnd SubPrivate Sub find_lend_Click()frmfindborrowinfo。

ShowEnd SubPrivate Sub find_rinf_Click()frmfindreader.ShowEnd SubPrivate Sub password_Click()frmchangepwd。

图书馆管理系统源代码

图书馆管理系统源代码

以我给的标题写原创文档,最低1200字,要求以Markdown文本格式输出,不要带图片和AI、人工智能、Markdown、GPT等关键词,标题为:图书馆管理系统源代码# 图书馆管理系统源代码## 一、引言图书馆作为一个重要的知识资源和学术场所,对于学生和研究人员具有重要意义。

为了更好地管理图书馆资源和提供服务,图书馆管理系统应运而生。

本文将介绍图书馆管理系统的源代码设计和实现。

## 二、系统功能需求### 1. 登录功能- 提供管理员和用户登录功能- 管理员可进行图书管理、借阅管理等操作- 用户可查询图书信息、借阅情况等### 2. 图书管理- 添加新书籍信息- 修改或删除现有书籍信息- 查询图书信息,包括书名、作者、出版社等### 3. 借阅管理- 用户借阅图书- 用户归还图书- 管理员监管借阅情况### 4. 查询功能- 用户可以根据条件查询图书信息- 管理员可以查询借阅情况、用户信息等## 三、系统设计### 1. 数据库设计- 数据库包括图书信息表、用户信息表、借阅记录表等- 表之间建立关联,保证数据一致性和完整性### 2. 源代码结构```- books- README.md- book.js- bookRouter.js- users- README.md- user.js- userRouter.js- borrows- README.md- borrow.js- borrowRouter.js- index.js```### 3. 源代码逻辑- 使用Node.js构建后端服务- 使用Express框架处理路由和请求- 使用MongoDB作为数据库存储## 四、系统实现### 1. 登录功能```javascript// 用户登录router.post('/login', (req, res) => {// 处理登录逻辑});// 管理员登录router.post('/admin/login', (req, res) => { // 处理管理员登录逻辑});```### 2. 图书管理```javascript// 添加新书籍router.post('/addBook', (req, res) => {// 处理添加书籍逻辑});// 修改书籍信息router.put('/updateBook/:id', (req, res) => {// 处理修改书籍信息逻辑});// 删除书籍router.delete('/deleteBook/:id', (req, res) => {// 处理删除书籍逻辑});```### 3. 借阅管理```javascript// 用户借阅图书router.post('/borrowBook', (req, res) => {// 处理借阅图书逻辑});// 用户归还图书router.put('/returnBook/:id', (req, res) => {// 处理归还图书逻辑});```## 五、总结通过本文介绍,读者可以了解图书馆管理系统源代码的设计和实现逻辑。

图书管理系统程序代码

图书管理系统程序代码

#include <stdio.h>#include <string.h>#include <stdlib.h>#define SIZE (struct booklist *)malloc(sizeof(struct booklist))//建立已借阅图书信息结构体struct borrow{char borbook_num[10];char borbook_name[22];char return_time[15];char stu_num[15];char stu_name[15];struct borrow *next;};//建立预借图书信息结构体struct prebor_stu{char prebook_num[10];char prestu_num[15];struct prebor_stu *next;};//建立图书结构体struct booklist{char num[10];char name[22];char zuozhe[15];char leibie[10];char pub_time[10];char price[10];char condition[10];struct booklist *next;};struct booklist *create(void); /*创建图书信息链表*/struct borrow *borrow_creat(struct booklist *head); //创建已借阅图书信息链表int pre_creat(struct booklist *head); //学生登录系统预借图书并将信息存入文件prebor_stulist.txtstruct prebor_stu *prebor_creat(void); //创建预借阅图书信息链表void printf1_(struct booklist *); //输出单个基本图书的数据void store(struct booklist *head); /*保存链表中的图书信息到文件booklist.txt*/void printfb1_(struct borrow *); //输出单个借出图书的部分数据void printfb_(struct borrow *p); //输出单个借出图书的数据void printfp1_(struct prebor_stu *); //输出单个被预借出图书的部分数据void printfp_(struct prebor_stu *); //输出单个被预借出图书的数据void printf_(struct booklist *,struct borrow *,struct prebor_stu *); /*2---输出链表中的图书信息*/struct booklist *load(void); //5---从文件读入图书信息struct booklist *num_paixu(struct booklist *); //4---按编号排序struct booklist *price_paixu(struct booklist *); //3---按价格顺序排序int kcnum(struct booklist *head); //6---统计库存数void chaxun1_(struct booklist *,struct borrow *,struct prebor_stu *); //7---查询图书的编号图书的信息,并输出void chaxun2_(struct booklist *,struct prebor_stu *,struct borrow *);//7---按作者查询信息并输出void chaxun3_(struct booklist *,struct prebor_stu *,struct borrow *); //7---查询某类别图书信息并自动输出void chaxun4_(struct borrow *,prebor_stu *,struct booklist *); //7---按学号查询借阅信息struct booklist *shanchu(struct booklist *,struct borrow *,struct prebor_stu *); //9---删除数据struct borrow *shanchu2_(struct borrow *,struct borrow *); //删除一个 struct borrow 结构体的数据struct prebor_stu *shanchu3_(struct prebor_stu *,struct prebor_stu *); //删除一个 struct prebor_stu 结构体的数据void xiugai(struct booklist *,struct borrow *,struct prebor_stu *); //10---修改数据void borstore(struct borrow *borrow_head); //保存已借阅图书信息到文件borrowlist.txt//重新保存修改后的预借阅信息到文件 prebor_stulist.txt (全部覆盖)void prestore(struct prebor_stu *pre_head);struct borrow *borload(void); //从文件提取信息创建已借阅图书源信息链表struct booklist *charu(struct booklist *head,struct borrow *borrow_head); //8---将图书的数据到顺序排放的链表中.且插入后也是顺序排放的struct booklist *scanf1_(void); // 输入单个图书源数据void exchange(struct booklist *,struct booklist *) ;//交换两个结构体内的内容struct borrow *tianjia1_(struct borrow *borrow_head,struct booklist *p); //添加一个 struct borrow 结构体的数据int main(void){int n, n1, x , k = 0, flag, flag1, x1;char ch;struct booklist *head = NULL; //图书信息链表头指针struct borrow *borrow_head = NULL ; //已借阅图书信息链表头指针struct prebor_stu *pre_head = NULL ; //预借图书信息链表头指针flag1 = 0; x = x1 = 1;while(x){system("cls");printf("***************************************************************************\n");printf("* >>>>>>>>>>>>>欢迎使用君宁图书管理系统<<<<<<<<<<<<<<< *\n");printf("* 0---退出系统 5---从文件录入数据 *\n");printf("* 1---录入数据 6---统计库存数 *\n");printf("* 2---输出信息 10---修改数据 7---查询功能 *\n");printf("* 3---按价格排序 8---增加数据 *\n");printf("* 4---按编号排序 9---删除数据 *\n");printf("***************************************************************************\n");printf("请选择功能:");scanf("%d", &n);getchar();switch(n){case 0: //0---退出系统{x = 0;printf("*******谢谢使用君宁图书管理系统!******\n");printf("****** 欢迎下次使用! ******\n");break;}case 1: //1---录入数据{while(x1){system("cls");printf("*******欢迎使用君宁图书信息录入系统*******\n");printf("*** 0---放弃录入 ****\n");printf("** 1---录入图书源信息 **\n");printf("* 2---录入借出图书信息 *\n");printf("** 3---录入预借图书信息 **\n");printf("******** 祝您使用愉快 ********\n");printf("请选择功能:");scanf("%d", &n1);getchar();switch(n1){case 0:{x1 = 0;break;}case 1:{head = create( ); /*创建图书信息链表*/printf("是否将源图书信息保存到文件booklist.txt!...(Y/N) :");ch = getchar();if(ch == 'y' || ch == 'Y')store(head);getchar();break;}case 2:{if(head == NULL ){printf("请先录入图书源信息!\n");getchar();break;}else{borrow_head = borrow_creat(head); //创建已借阅图书信息链表printf("是否将源图书信息保存到文件borrowlist.txt!...(Y/N) :" );ch = getchar();if(ch == 'y' || ch == 'Y')borstore(borrow_head);getchar();break;}}case 3:{if(head == NULL ){printf("请先录入图书源信息!\n");getchar();break;}else{flag = pre_creat(head);if(flag == 1)printf("没有录入预借图书信息!\n\n");if(flag == 2)pre_head = prebor_creat(); //创建预借阅图书信息链表getchar();break;}}default :{printf("输入错误指示!\n\n");break;}}}}case 2: //2---输出信息{if(head == NULL ){printf("请先录入图书信息!\n");getchar();break;}else{printf_(head,borrow_head,pre_head);break;}}case 3: //3---按价格排序{if(head == NULL ){printf("请先录入图书信息!\n");getchar();break;}else{head = price_paixu(head);printf("是否将排序后的源图书信息保存到文件booklist.txt!...(Y/N) :");ch = getchar();if(ch == 'y' || ch == 'Y')store(head);getchar();break;}}case 4: //4---按编号排序{if(head == NULL ){printf("请先录入图书信息!\n");getchar();break;}else{head = num_paixu(head);printf("是否将排序后的源图书信息保存到文件booklist.txt!...(Y/N) :");ch = getchar();if(ch == 'y' || ch == 'Y')store(head);getchar();break;}}case 5: //11---从文件读取数据{head = load();if(head == NULL ){printf("请先录入图书信息!\n");getchar();break;}else{borrow_head = borload(); //从文件提取信息创建已借阅图书源信息链表pre_head = prebor_creat(); //创建预借阅图书信息链表getchar();break;}}case 6: //6---统计库存数{if(head == NULL ){printf("请先录入图书信息!\n");getchar();break;}else{k = kcnum(head);printf("总共有%3d本图书!\n\n", k);getchar();break;}}case 7: //7---查询信息{if(head == NULL ){printf("请先录入图书信息!\n");getchar();break;}else{while(x1){system("cls");printf("*******欢迎使用君宁图书信息查询系统*******\n");printf("****** 0---退出查询******\n");printf("***** 1---按编号*****\n");printf("**** 2---按作者****\n");printf("***** 3---按类别*****\n");printf("****** 4---按学号******\n");printf("******** 祝您使用愉快********\n");printf("******************\n");printf("********************\n");printf("请选择功能:");scanf("%d", &n1);getchar();switch(n1){case 0:{x1 = 0;break;}case 1:{chaxun1_(head,borrow_head,pre_head);getchar();break;}case 2:{chaxun2_(head,pre_head,borrow_head);getchar();break;}case 3:{chaxun3_(head,pre_head,borrow_head);getchar();break;}case 4:{chaxun4_(borrow_head,pre_head,head);getchar();break;}default :{printf("输入指示有误!\n\n");break;}}}}x1 = 1;break;}case 8:{if(head == NULL ){printf("请先录入图书信息!\n");getchar();break;}else{head = charu(head,borrow_head);printf("是否将源图书信息保存到文件booklist.txt!...(Y/N) :");ch = getchar();if(ch == 'y' || ch == 'Y')store(head);getchar();break;}}case 9: //9---删除数据{if(head == NULL ){printf("请先录入图书信息!\n");getchar();break;}else{head = shanchu(head,borrow_head,pre_head);borrow_head = borload();pre_head = prebor_creat();break;}}case 10: //10---修改数据{if(head == NULL ){printf("请先录入图书信息!\n");getchar();break;}else{xiugai(head,borrow_head,pre_head);borrow_head = borload();getchar();break;}}default :{printf("输入错误指示.请重新输入!");getchar();break;}}}return 0;}/*创建图书源信息信息链表*/struct booklist *create(void){struct booklist *head, *tail, *p;char num[10],name[22], zuozhe[15], leibie[10], pub_time[10], price[10],condition[10];head = tail = p = NULL;printf("当输入图书编号为0时结束信息输入\n");printf("请输入图书编号:");gets(num);while(strcmp(num,"0") != 0){p = SIZE;printf("请输入书名:");gets(name);printf("请输入作者:");gets(zuozhe);printf("请输入类别:");gets(leibie);printf("请输入出版时间:");gets(pub_time);printf("请输入价格:");gets(price);printf("请输入借阅情况:");gets(condition);printf("\n");strcpy(p -> num, num);strcpy(p -> name, name);strcpy(p -> zuozhe, zuozhe);strcpy(p -> leibie, leibie);strcpy(p -> pub_time, pub_time);strcpy(p -> price, price);strcpy(p -> condition, condition);p -> next = NULL;if(head == NULL)head = p;elsetail -> next = p;tail = p;printf("请输入图书编号:");gets(num);}printf("图书源信息已建立链条!\n");return head;}//创建已借阅图书源信息链表struct borrow *borrow_creat(struct booklist *head) {struct booklist *p;struct borrow *borrow_head , *p1, *tail;borrow_head = p1 = tail = NULL;for(p = head; p != NULL; p = p -> next){p1 = (struct borrow *)malloc(sizeof(struct borrow));if(strcmp(p -> condition,"借出") == 0){printf("创建借出信息:\n");strcpy(p1 -> borbook_num ,p -> num);strcpy(p1 -> borbook_name ,p -> name);getchar();printf("借阅编号为%s的图书的借阅信息:\n",p -> num);printf("请输入应归还时间:");gets(p1 -> return_time);printf("请输入学生学号:");gets(p1 -> stu_num);printf("请输入学生姓名:");gets(p1 -> stu_name);printf("\n");p1 -> next = NULL;if(borrow_head == NULL)borrow_head = p1;elsetail -> next = p1;tail = p1;}}printf("成功创建已借出信息链表!\n\n");getchar();return borrow_head;}//保存已借阅图书信息到文件 borrowlist.txtvoid borstore(struct borrow *borrow_head){FILE *fp;struct borrow *p;if((fp = fopen("borrowlist.txt","w")) == NULL){printf("File open error! \n");exit(0);}p = borrow_head;while(p != NULL){fprintf(fp,"%16s%26s%16s%16s%16s\n",p -> borbook_num, p -> borbook_name, p -> return_time,p -> stu_num, p -> stu_name);p = p -> next;}fclose(fp);printf("文件成功保存到 borrowlist.txt 中!\n");getchar();}//从文件提取信息创建已借阅图书源信息链表struct borrow *borload(void){struct borrow *p, *tail, *head;FILE *fp;head = p = tail = NULL;if((fp = fopen("borrowlist.txt","r")) == NULL){printf("文件 borrowlist.txt 打开失败!\n");getchar();exit(0);}while(!feof(fp)){p = (struct borrow *)malloc(sizeof(struct borrow));fscanf(fp,"%16s%26s%16s%16s%16s\n",p -> borbook_num, p -> borbook_name, p -> return_time,p -> stu_num, p -> stu_name);if(head == NULL)head = p;elsetail -> next = p;tail = p;}tail -> next = NULL;fclose(fp);printf("已成功从文件 borrowlist.txt 提取信息创建已借阅图书源信息!\n");return head;}//录入预借图书信息并将信息存入文件 prebor_stulist.txtint pre_creat(struct booklist *head){struct booklist *b;struct prebor_stu *p;char a[10], c[15];int n, x = 1, flag = 1;FILE *fp;b = head;p = (struct prebor_stu *)malloc(sizeof(struct prebor_stu));printf("进入预借图书!(按回车键继续、、、)\n");getchar();while(x){printf("请输入要预借阅的图书编号:");gets(a);while((strcmp(b -> num ,a) != 0) && b -> next != NULL){b = b -> next;}if(strcmp(b -> num ,a) != 0){printf("没有找到编号为%s的图书!\n", a);printf("输入--0 结束录入!(输入其他数字继续录入...)\n\n");printf("请选择功能:");scanf("%d", &n);getchar();if(n == 0){x = 0;}getchar();}else{printf("请输入学号:");gets(c);strcpy(p -> prebook_num, a);strcpy(p -> prestu_num, c);if((fp = fopen("prebor_stulist.txt","a+")) == NULL){printf("File open error! \n");exit(0);}fprintf(fp,"%16s%16s\n",p -> prebook_num, p -> prestu_num);fclose(fp);flag = 2;printf("输入--0 结束录入!(输入其他数字继续录入...)\n\n");printf("请选择功能:");scanf("%d", &n);getchar();if(n == 0){x = 0;getchar();}}}return flag;}//重新保存修改后的预借阅信息到文件 prebor_stulist.txt (全部覆盖)void prestore(struct prebor_stu *pre_head){struct prebor_stu *p;FILE *fp;p = pre_head;if((fp = fopen("prebor_stulist.txt","w")) == NULL){printf("File open error! \n");exit(0);}while(p != NULL){fprintf(fp,"%16s%16s\n",p -> prebook_num, p -> prestu_num); p = p -> next;}fclose(fp);printf("文件成功保存到 prebor_stulist.txt 中!\n");getchar();}//从文件 prebor_stulist.txt创建预借阅图书信息链表struct prebor_stu *prebor_creat(void){struct prebor_stu *p, *tail, *head;FILE *fp;head = p = tail = NULL;if((fp = fopen("prebor_stulist.txt","r")) == NULL){printf("文件 prebor_stulist.txt 打开失败!\n");getchar();}while(!feof(fp)){p = (struct prebor_stu *)malloc(sizeof(struct prebor_stu));fscanf(fp,"%16s%16s\n",p -> prebook_num, p -> prestu_num);if(head == NULL)head = p;elsetail -> next = p;tail = p;}tail -> next = NULL;fclose(fp);printf("已从文件 prebor_stulist.txt 成功读取并建立预借阅图书信息!\n");getchar();return head;}/*2---保存链表中的图书信息到文件booklist.txt*/void store(struct booklist *head){FILE *fp;struct booklist *p;if((fp = fopen("booklist.txt","w")) == NULL){printf("File open error! \n");exit(0);}p = head;while(p != NULL){fprintf(fp,"%16s%26s%16s%16s%16s%16s%16s\n",p -> num, p -> name, p -> zuozhe, p -> leibie,p -> pub_time, p -> price, p -> condition);p = p -> next;}fclose(fp);printf("文件成功保存到 booklist.txt 中!\n");getchar();}// 输入单个图书源数据struct booklist *scanf1_(void) {struct booklist *p;p = SIZE;printf("请输入图书编号:");gets(p -> num);printf("请输入书名:");gets(p -> name);printf("请输入作者:");gets(p -> zuozhe);printf("请输入类别:");gets(p -> leibie);printf("请输入出版时间:");gets(p -> pub_time);printf("请输入价格:");gets(p -> price);printf("请输入借阅情况:");gets(p -> condition);return p;}//输出单个图书的数据void printf1_(struct booklist *p) {printf("编号:");puts(p -> num);printf("书名:");puts(p -> name);printf("作者:");puts(p -> zuozhe);printf("类别:");puts(p -> leibie);printf("出版时间:");puts(p -> pub_time);printf("价格:");puts(p -> price);printf("借阅情况:");}//输出单个借出图书的部分数据void printfb1_(struct borrow *p) {printf("应归还时间:");puts(p -> return_time);printf("借阅学生学号:");puts(p -> stu_num);printf("借阅学生姓名:");puts(p -> stu_name);}//输出单个借出图书的数据void printfb_(struct borrow *p) {printf("图书编号:");puts(p -> borbook_num);printf("书名:");puts(p -> borbook_name);printf("应归还时间:");puts(p -> return_time);printf("借阅学生学号:");puts(p -> stu_num);printf("借阅学生姓名:");puts(p -> stu_name);}//输出单个被预借出图书的部分数据void printfp1_(struct prebor_stu *p) {printf("预借图书的学生学号:"); puts(p -> prestu_num);}//输出单个被预借出图书的数据void printfp_(struct prebor_stu *p) {printf("图书编号:");printf("预借阅图书的学生学号:");puts(p -> prestu_num);}/*3---输出链表中的图书信息*/void printf_(struct booklist *head, struct borrow *borrow_head,struct prebor_stu *pre_head){struct booklist *p;struct borrow *b;struct prebor_stu *pre;int x = 1, n;p = head; b = borrow_head; pre = pre_head;while(x == 1){system("cls");printf("*******欢迎使用君宁图书信息输出系统*******\n");printf("* 0---退出 *\n");printf("* 1---输出图书源信息 *\n");printf("* 2---输出借出图书信息 *\n");printf("* 3---输出预借借图书信息 *\n");printf("******** 祝您使用愉快 ********\n");printf("请选择功能:");scanf("%d", &n);getchar();switch(n){case 0:{x = 0;break;}case 1:{if(head != NULL){printf("图书源信息如下:\n");do{printf1_(p);printf("\n\n");p = p -> next;}while(p != NULL);}getchar();break;}case 2:{if(borrow_head == NULL){printf("没有借出图书信息(按回车键继续、、、)!\n");getchar();break;}else{printf("借出图书信息如下:\n");do{printfb_(b);printf("\n\n");b = b -> next;}while(b != NULL);}printf("按回车键继续、、\n");getchar();break;}case 3:{if(pre_head == NULL){printf("没有预借图书信息(按回车键继续、、、)!\n");getchar();getchar();break;}else{printf("预借借图书信息如下:\n");do{printfp_(pre);printf("\n\n");pre = pre -> next;}while(pre != NULL);}printf("按回车键继续、、\n");getchar();break;}default :{printf("输入错误(按回车键继续、、、)!\n");getchar();break;}}}}//11---从文件读入图书信息struct booklist *load(void){struct booklist *p, *tail, *head;FILE *fp;head = p = tail = NULL;if((fp = fopen("booklist.txt","r")) == NULL){printf("文件 booklist.txt 打开失败!\n");getchar();exit(0);}while(!feof(fp)){p = SIZE;fscanf(fp,"%16s%26s%16s%16s%16s%16s%16s\n",p -> num, p -> name, p -> zuozhe, p -> leibie,p -> pub_time, p -> price,p -> condition);if(head == NULL)head = p;elsetail -> next = p;tail = p;}tail -> next = NULL;fclose(fp);printf("已成功读取文件 booklist.txt ,建立源图书信息链表!\n");return head;}//4---按编号排序并输出struct booklist *num_paixu(struct booklist *head){struct booklist *p, *p1, *tail;p1 = NULL;tail = SIZE;for(p = head;p -> next != NULL; p = p -> next){for(p1 = p ->next; p1 != NULL; p1 = p1 ->next){if(strcmp(p -> num,p1 -> num) > 0){exchange(tail,p1);exchange(p1,p);exchange(p,tail);}}}printf("图书已按编号排序成功,具体信息如下:\n");for(p = head; p != NULL; p = p -> next){printf1_(p);printf("\n");}return head;}//3---按价格排序struct booklist *price_paixu(struct booklist *head) {struct booklist *p, *p1, *tail;p1 = NULL;tail = SIZE;for(p = head;p -> next != NULL; p = p -> next){for(p1 = p ->next; p1 != NULL; p1 = p1 ->next){if(strcmp(p -> price,p1 -> price) > 0){exchange(tail,p1);exchange(p1,p);exchange(p,tail);}}}printf("图书已按价格排序成功,具体信息如下:\n");for(p = head; p != NULL; p = p -> next){printf1_(p);printf("\n");}return head;}//6---统计库存数int kcnum(struct booklist *head){int i = 0;struct booklist *p;for(p = head;p != NULL; p = p -> next)i++;return i;}//7---按编号查询信息并输出void chaxun1_(struct booklist *head,struct borrow *borrow_head,struct prebor_stu *pre_head){char a[10];struct booklist *p;struct borrow *b;struct prebor_stu *p1;int x1, x2;p = head; x1 = x2 = 0;printf("请输入要查询的图书编号:");gets(a);while((strcmp(p -> num ,a) != 0) && p -> next != NULL){p = p -> next;}if(strcmp(p -> num ,a) != 0)printf("没有找到编号为%s的图书!\n", a);else{for(b = borrow_head;b != NULL; b = b -> next){if(strcmp(b -> borbook_num ,a) == 0){x1 = 1;printf("您要查询的书已借出,其具体信息如下:\n");printfb1_(b); //输出单个借出图书的数据printf1_(p);}}for(p1 = pre_head;p1 != NULL; p1 = p1 -> next){if(strcmp(p1 -> prebook_num ,a) == 0){ x2 = 1;printf("您要查询的书已预借,其具体信息如下:\n");printfp1_(p1); //输出单个被预借出图书的数据printf1_(p);}}if(x1 == 0 && x2 == 0){printf("此书未被预借!\n\n");printf("您要查询的图书信息如下:\n");printf1_(p);}}}//7---按作者查询信息void chaxun2_(struct booklist *head,struct prebor_stu *pre_head,struct borrow *borrow_head){char a[10];struct booklist *p;struct borrow *b;struct prebor_stu *pre;int flag = 1, x1 ;printf("请输入要查询的图书的作者:");gets(a);for(p = head;p != NULL; p = p -> next){if(strcmp(p -> zuozhe,a) == 0){if(flag == 1){printf("您查询的%s的所有图书信息如下:\n\n",a);flag = -1;}printf1_(p);for(b = borrow_head;b != NULL; b = b -> next){if(strcmp(b -> borbook_num ,p -> num) == 0){printfb1_(b);}}x1 = 0;for(pre = pre_head; pre != NULL; pre = pre -> next){if(strcmp(pre -> prebook_num, p -> num) == 0){printf("此书已被%s学号的学生预借!\n",pre -> prestu_num );x1 = 1;}}if(x1 == 0){printf("此书未被预借!\n");x1 = 1;}printf("\n\n");}}if(flag == 1)printf("没有找到您要查询的的图书信息!\n\n");}//7---查询某类别图书信息并自动输出void chaxun3_(struct booklist *head,struct prebor_stu *pre_head,struct borrow *borrow_head){char a[10];struct booklist *p;struct prebor_stu *pre;struct borrow *b;int flag = 1 , x1;printf("请输入要查询的图书的类别:");gets(a);for(p = head;p != NULL; p = p -> next){if(strcmp(p -> leibie,a) == 0){if(flag == 1){printf("您查询的%s的所有图书信息如下:\n\n",a);flag = -1;}printf1_(p);for(b = borrow_head;b != NULL; b = b -> next){if(strcmp(b -> borbook_num ,p -> num) == 0){printfb1_(b);}}x1 = 0;for(pre = pre_head; pre != NULL; pre = pre -> next){if(strcmp(pre -> prebook_num, p -> num) == 0){printf("此书已被%s学号的学生预借!\n",pre -> prestu_num );x1 = 1;}}if(x1 == 0){printf("此书未被预借!\n");x1 = 1;}printf("\n\n");}}if(flag == 1)printf("没有找到您要查询的的图书信息!\n\n");}//7---按学号查询图书借阅信息并自动输出void chaxun4_(struct borrow *borrow_head,struct prebor_stu *pre_head,struct booklist *head){//建立图书编号结构体struct book_num{char booknum[10];struct book_num *next;};struct prebor_stu *p ;struct borrow *b;struct booklist *p2;char a[15];int i, j;i = j = 0;struct book_num *bnumhead1, *bnumhead2, *tail, *p1;bnumhead1 = bnumhead2 = tail = p1 = NULL;printf("请输入学生学号:");gets(a);for(p = pre_head; p != NULL; p = p -> next){if(strcmp(p -> prestu_num,a) ==0){i++;p1 = (struct book_num *)malloc(sizeof(struct book_num)); strcpy( p1 -> booknum, p ->prebook_num);if(bnumhead1 == NULL)bnumhead1 = p1;elsetail -> next = p1;tail = p1;p1 -> next = NULL;}}for(b = borrow_head;b != NULL; b = b -> next){if(strcmp(b -> stu_num,a) ==0){j++;p1 = (struct book_num *)malloc(sizeof(struct book_num)); strcpy( p1 -> booknum, b ->borbook_num);if(bnumhead2 == NULL)bnumhead2 = p1;elsetail -> next = p1;tail = p1;p1 -> next = NULL;}}if(i == 0 && j == 0)printf("没有您要查询学生的借阅信息!");else{if( j != 0){printf("该生一共借了%d本书,其借阅书的信息如下:\n", j);for( p1 = bnumhead2; p1 != NULL; p1 = p1 -> next){for(p2 = head; p2 != NULL; p2 = p2 -> next){if(strcmp(p1 -> booknum, p2 -> num) == 0){printf1_(p2);if(strcmp(p2 -> condition,"借出") ==0){for(b = borrow_head;b != NULL; b = b -> next)if(strcmp(b -> borbook_num,p2 -> num) ==0)printfb1_(b);}printf("\n");}}}}if( i != 0){printf("该生一共预借借了%d本书,其借阅书的信息如下:\n", i);for( p1 = bnumhead1; p1 != NULL; p1 = p1 -> next){for(p2 = head; p2 != NULL; p2 = p2 -> next){if(strcmp(p1 -> booknum, p2 -> num) == 0){printf1_(p2);if(strcmp(p2 -> condition,"借出") ==0){for(b = borrow_head;b != NULL; b = b -> next)if(strcmp(b -> borbook_num,p2 -> num) ==0)printfb1_(b);}printf("\n");}}}}}}//9---删除数据struct booklist *shanchu(struct booklist *head,struct borrow *borrow_head,struct prebor_stu *pre_head){struct booklist *p1 , *p2;struct borrow *b;struct prebor_stu *p;char a[10];p1 = p2 = head;printf("请输入要删除的图书编号:");gets(a);while((strcmp(p1 -> num ,a) != 0) && p1 -> next != NULL) {p2 = p1;p1 = p1 -> next;}if(strcmp(p1 -> num ,a) != 0)printf("没有找到要删除的图书信息!\n");else if(p1 == head){head = p1 -> next;printf("删除成功!\n");store(head);for(b = borrow_head; b != NULL; b = b -> next){if(strcmp(b -> borbook_num,a) == 0)borrow_head = shanchu2_(borrow_head,b);}for(p = pre_head; p != NULL; p = p -> next){if(strcmp(p -> prebook_num,a) == 0)pre_head = shanchu3_(pre_head,p);}}else{p2 -> next = p1 -> next;printf("删除成功!\n");store(head);for(b = borrow_head; b != NULL; b = b -> next){if(strcmp(b -> borbook_num,a) == 0)borrow_head = shanchu2_(borrow_head,b);}for(p = pre_head; p != NULL; p = p -> next){if(strcmp(p -> prebook_num,a) == 0)pre_head = shanchu3_(pre_head,p);}}return head;}//删除一个 struct borrow 结构体的数据struct borrow *shanchu2_(struct borrow *borrow_head,struct borrow *p) {struct borrow *p1 , *p2;p1 = p2 = borrow_head;while(strcmp(p1 -> borbook_num ,p -> borbook_num) != 0) {p2 = p1;p1 = p1 -> next;}if(p1 == borrow_head){borrow_head = p1 -> next;borstore(borrow_head);}else{p2 -> next = p1 -> next;borstore(borrow_head);}getchar();return borrow_head;}//添加一个 struct borrow 结构体的数据。

图书管理系统C#源代码

图书管理系统C#源代码

using System;using System。

Collections。

Generic;using ponentModel;using System。

Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace WindowsApplication1{public partial class Form_BuyAndSale : Form{public Form_BuyAndSale(){InitializeComponent();}SQL sql;string lastSQL = ””;public void show(){listBox1。

Items。

Clear();listBox2.Items.Clear();listBox3。

Items。

Clear();if (sql。

rows。

GetLength(0) != 0){for (int i = 0; i 〈 sql。

rows。

GetLength(0); i++){listBox1.Items。

Add(sql。

rows[i, 0].ToString());listBox2.Items.Add(sql.rows[i, 1].ToString());listBox3.Items。

Add(sql。

rows[i, 2].ToString());}}else{listBox1.Text = ”";listBox2。

Text = ””;listBox3。

Text = "”;MessageBox。

Show("无符合查询条件的结果!”, "提示”);}}private void Form_BuyAndSale_Load(object sender, EventArgs e){//将窗体的任务栏隐藏this。

FormBorderStyle = System.Windows。

图书借阅管理系统代码图书管理系统源代码

图书借阅管理系统代码图书管理系统源代码

#include<stdio。

h>#include 〈stdlib。

h>#include <string.h>#define num 7 //全局定义void showmain() //显示菜单{printf("\n\n 欢迎使用图书借阅管理系统\n\n");printf(" 1、查询所有图书\n\n");printf(" 2、归还现有图书\n\n");printf(" 3、租借现有图书\n\n”);printf(”0、退出借书系统\n\n");printf(”请输入您所需的服务编号:”);}void viewbooks(int score[num],char name[num][100],char writter[num][100],double yajin[num],int free[num],double jiage[num],int flag[num]){int i;int j;for(i=1;i〈7;i++)//设置编号score[i]=i;yajin[1]=26.00;//将原图书的各项值保存yajin[2]=28.50;yajin[3]=98。

00;yajin[4]=79.80;yajin[5]=49。

00;yajin[6]=15.00;for(i=1;i<7;i++)//将原图书的各项值保存{free[i]=30;jiage[i]=0.5;}flag[1]=0; //flag为0代表已借出,为1代表未借出flag[2]=1;flag[3]=1;flag[4]=0;flag[5]=1;flag[6]=1;printf("编号\t|书名\t |作者\t|押金\t|免费天数\t|收费价格\t|出租状态\n"); //制表同时输出printf(”—--——-—---——-------—--——-————-——-———-—-—————--—————-—--——-——————-—-—---——-—\n”);for(i=1;i<7;i++){printf(”%d\t|%s\t|%s\t|%。

图书管理系统源代码

图书管理系统源代码
{
char tsname[60];
char tsbh[6];
char xm[10];
char tel[13];
char sfc[20];
int tssl;
int tsyj;
}js[n];
void main()
{
load();
help: //帮助系统
system("time /t");
system("color 2f");
printf("\t\t ");
printf("\n\t\t\t欢迎使用本系统: << %s >> ",user1);
system("time /t");
printf("\n");
printf("\t\t\t◢※※※※※※※※※※※※※※※◣\n");
printf("\t\t\t※※※※※※※※※※※※※※※※※\n");
printf("\t\t\t※ ※\n");
printf("\t\t\t※ ◎ (1) 图 书 查 询 ★ ※\n"); //有没有书名和书的总量
first1 = time(NULL); /* Gets system time */
system("cls");
system("date /t");
system("time /t");
system("color 47");
printf("\n");

vb图书管理系统源代码

vb图书管理系统源代码

Borbook:Public sqltxt As StringPublic rno As String '保存读者借书证号Public bno As String '保存读者图书编号Public xm As String '保存读者姓名Public dw As String '保存读者单位Public rs As ADODB.RecordsetPrivate Sub Comm1_Click()rno = Trim(Text1(0).Text)If rno = "" ThenMsgBox "借书证号不能为空,请输入", vbOKOnly, "信息提示"Comm2.Enabled = FalseElsesqltxt = "select * from reader where 借书证号='" + rno + "'"Set rs = exesql(sqltxt)If rs.RecordCount = 0 ThenMsgBox "该读者未登记,不能借书", vbOKOnly, "信息提示"Comm2.Enabled = FalseElseText2(0).Text = rs.Fields("姓名")Text2(1).Text = str(rs.Fields("借书总数"))Text2(2).Text = str(rs.Fields("借书总数") - rs.Fields("已借书数"))If Val(Trim(Text2(2).Text)) > 0 Thenxm = rs.Fields("姓名")dw = rs.Fields("单位")Comm2.Enabled = TrueElseMsgBox "该读者已借满图书,不能再借!", vbOKOnly, "信息提示"Comm2.Enabled = FalseEnd IfEnd IfEnd IfEnd SubPrivate Sub Comm2_Click()If Val(Trim(Text2(2).Text)) = 0 ThenMsgBox "该读者已借满图书,不能再借!", vbOKOnly, "信息提示"Comm2.Enabled = FalseExit SubEnd Ifbno = Trim(Text1(1).Text)If bno = "" ThenMsgBox "图书编号不能为空,请输入", vbOKOnly, "信息提示"Comm2.Enabled = FalseElsesqltxt = "select * from book where 图书编号='" + bno + "'"Set bs = exesql(sqltxt)If bs.RecordCount = 0 ThenMsgBox "图书编号不对旳,请重新输入", vbOKOnly, "信息提示"ElseIf bs.Fields("借否") = "借" ThenMsgBox "该图书编号相应旳图书已借出,不能再借!", vbOKOnly, "信息提示"Elsesqltxt = "select * from borrow"Set brs = exesql(sqltxt)brs.AddNewbrs.Fields("图书编号") = bnobrs.Fields("书名") = bs.Fields("书名")brs.Fields("作者") = bs.Fields("作者")brs.Fields("出版社") = bs.Fields("出版社")brs.Fields("借书证号") = rnobrs.Fields("姓名") = xmbrs.Fields("单位") = dwbrs.Fields("借书日期") = Datebrs.Updatebs.Fields("借否") = "借"bs.Updaters.Fields("已借书数") = rs.Fields("已借书数") + 1rs.UpdateText2(2).Text = str(rs.Fields("借书总数") - rs.Fields("已借书数"))End IfEnd IfEnd IfEnd SubPrivate Sub retCom_Click()Unload MeEnd SubPrivate Sub Form_Load()Comm2.Enabled = FalseEnd SubPrivate Sub DataGrid1_Click()End SubPrivate Sub Form_Load()'阐明:为什么使用recs,而不直接使用adodc1.recordset.recordcount?在调用edbook1窗体添加一种记录(拟定)后,再'返回到本表单,若不在Form_Activate()事件过程中调用adodc1.refresh进行刷新,adodc1.recordset.recordcount值'仍未增1,这样调用encomm过程时出错;若在Form_Activate()事件过程中调用adodc1.refresh进行刷新,'adodc1.recordset.recordcount值增1了,调用encomm过程时也对旳,但返回本窗体时,目前行总是第一行,显然也不行,'由于顾客在添加或修改后但愿在datagrid1中显示目前操作旳那条记录.recs = Adodc1.Recordset.RecordCountEnd SubPrivate Sub Form_Activate()DataGrid1.SetFocusCall encommEnd SubPrivate Sub Comm1_Click()flag = 1edbook1.Show vbModalEnd SubPrivate Sub Comm2_Click()flag = 2edbook1.Show vbModalEnd SubPrivate Sub Comm3_Click()If MsgBox("真旳要删除[" + Trim(Adodc1.Recordset.Fields("书名")) + "]吗?", vbYesNo, "信息提示") = vbYes ThenAdodc1.Recordset.Deleterecs = recs - 1Call encommEnd IfEnd SubPrivate Sub Comm4_Click()Unload MePrivate Sub selcmd1_Click() '拟定Dim str As Stringstr = "" '条件体现式If Trim(Text1(0).Text) <> "" ThenIf str = "" Thenstr = "图书编号='" + Trim(Text1(0).Text) + "'"Elsestr = str + " and 图书编号='" + Trim(Text1(0).Text) + "'"End IfEnd IfIf Trim(Text1(1).Text) <> "" ThenIf str = "" Thenstr = "书名='" + Trim(Text1(1).Text) + "'"Elsestr = str + " and 书名='" + Trim(Text1(1).Text) + "'"End IfEnd IfIf Trim(Text1(2).Text) <> "" ThenIf str = "" Thenstr = "作者='" + Trim(Text1(2).Text) + "'"Elsestr = str + " and 作者='" + Trim(Text1(2).Text) + "'"End IfEnd IfIf Trim(Text1(3).Text) <> "" ThenIf str = "" Thenstr = "出版社='" + Trim(Text1(3).Text) + "'"Elsestr = str + " and 出版社='" + Trim(Text1(3).Text) + "'"End IfEnd IfIf Trim(Text1(4).Text) <> "" ThenIf str = "" Thenstr = "借否='" + Trim(Text1(4).Text) + "'"Elsestr = str + " and 借否='" + Trim(Text1(4).Text) + "'"End IfEnd IfIf str <> "" ThenAdodc1.RecordSource = "select * from book where " + strAdodc1.RefreshElseAdodc1.RecordSource = "select * from book"Adodc1.RefreshEnd Ifrecs = Adodc1.Recordset.RecordCountIf recs = 0 ThenMsgBox "没有任何满足条件旳记录", vbOKOnly, "信息提示" End IfCall encommEnd SubPrivate Sub selcmd2_Click() '重置Text1(0).Text = ""Text1(1).Text = ""Text1(2).Text = ""Text1(3).Text = ""Text1(4).Text = ""End SubPrivate Sub encomm() '自定义子过程:判断Adodc1中与否存在记录If recs = 0 ThenComm2.Enabled = FalseComm3.Enabled = FalseElseComm2.Enabled = TrueComm3.Enabled = TrueEnd IfEnd SubPrivate Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer) Call endata(KeyAscii)End SubEdbook1:Dim rs As ADODB.RecordsetPrivate Sub Form_Load()If flag = 2 Then '修改操作Text1(0).Text = edbook.Adodc1.Recordset.Fields("图书编号") & ""Text1(1).Text = edbook.Adodc1.Recordset.Fields("分类号") & ""Text1(2).Text = edbook.Adodc1.Recordset.Fields("书名") & ""Text1(3).Text = edbook.Adodc1.Recordset.Fields("作者") & ""DataCombo1.Text = edbook.Adodc1.Recordset.Fields("出版社") & ""Text1(4).Text = edbook.Adodc1.Recordset.Fields("定价") & ""Text1(5).Text = edbook.Adodc1.Recordset.Fields("入库日期") & ""Text1(0).Enabled = FalseElse '添加操作Text1(5).Text = DateEnd IfEnd SubPrivate Sub Form_Activate()Adodc1.Refresh '数据源刷新End SubPrivate Sub Comm1_Click()If Trim(Text1(0).Text) = "" Or Trim(Text1(2).Text) = "" Or Trim(Text1(3).Text) = "" Or Trim(Text1(5).Text) = "" ThenMsgBox "加*数据项不能为空,请重新设立", vbOKOnly, "信息提示"Exit SubEnd IfIf flag = 1 Then '添加操作sqltxt = "select * from book where 图书编号='" + Trim(Text1(0).Text) + "'" '对book中记录进行判断Set rs = exesql(sqltxt)If rs.RecordCount <> 0 ThenMsgBox "存在相似旳图书编号", vbOKOnly, "信息提示"Text1(0).SetFocusrs.CloseExit SubElsers.CloseEnd Ifedbook.Adodc1.Recordset.AddNewedbook.Adodc1.Recordset.Fields("图书编号") = Trim(Text1(0).Text)edbook.Adodc1.Recordset.Fields("分类号") = Trim(Text1(1).Text)edbook.Adodc1.Recordset.Fields("书名") = Trim(Text1(2).Text)edbook.Adodc1.Recordset.Fields("作者") = Trim(Text1(3).Text)edbook.Adodc1.Recordset.Fields("出版社") = Trim(DataCombo1.Text)edbook.Adodc1.Recordset.Fields("定价") = Val(Trim(Text1(4).Text))edbook.Adodc1.Recordset.Fields("入库日期") = Format(Trim(Text1(5).Text), "yyyy-mm-dd")edbook.Adodc1.Recordset.Fields("借否") = "否"edbook.Adodc1.Recordset.Updaterecs = recs + 1Else '修改操作edbook.Adodc1.Recordset.Fields("图书编号") = Trim(Text1(0).Text)edbook.Adodc1.Recordset.Fields("分类号") = Trim(Text1(1).Text)edbook.Adodc1.Recordset.Fields("书名") = Trim(Text1(2).Text)edbook.Adodc1.Recordset.Fields("作者") = Trim(Text1(3).Text)edbook.Adodc1.Recordset.Fields("出版社") = Trim(DataCombo1.Text)edbook.Adodc1.Recordset.Fields("定价") = Val(Trim(Text1(4).Text))edbook.Adodc1.Recordset.Fields("入库日期") = Format(Trim(Text1(5).Text), "yyyy-mm-dd")edbook.Adodc1.Recordset.UpdateEnd IfUnload MeEnd SubPrivate Sub Comm2_Click()Unload MeEnd SubPrivate Sub selcom_Click()tna = "press"cap = "出版社"edrec.Show vbModalEnd SubPrivate Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)If Index = 1 ThenIf KeyAscii = 13 Thensqltxt = "select * from book where 分类号='" + Trim(Text1(1).Text) + "'" '对book中记录进行判断Set rs = exesql(sqltxt)If rs.RecordCount > 0 ThenText1(2).Text = rs.Fields("书名")Text1(3).Text = rs.Fields("作者")Text1(4).Text = rs.Fields("定价")DataCombo1.Text = rs.Fields("出版社")rs.CloseText1(5).SetFocusElseCall endata(KeyAscii)End IfEnd IfElseCall endata(KeyAscii)End IfEnd SubPrivate Sub DataCombo1_KeyPress(KeyAscii As Integer) Call endata(KeyAscii)End SubDim msg As StringPrivate Sub Form_Load()recs = Adodc1.Recordset.RecordCountEnd SubPrivate Sub Form_Activate()Call encommEnd SubPrivate Sub Comm1_Click()flag = 1edlev1.Show vbModalEnd SubPrivate Sub Comm2_Click()flag = 2edlev1.Show vbModalEnd SubPrivate Sub Comm3_Click()If MsgBox("真旳要删除[" + Trim(Adodc1.Recordset.Fields("级别")) + "]吗?", vbYesNo, "信息提示") = vbYes ThenAdodc1.Recordset.Deleterecs = recs - 1Call encommEnd IfEnd SubPrivate Sub Comm4_Click()Unload MeEnd SubPrivate Sub encomm()If recs = 0 ThenComm2.Enabled = FalseComm3.Enabled = FalseElseComm2.Enabled = TrueComm3.Enabled = TrueEnd IfEnd SubDim cond As StringPrivate Sub Form_Load()If flag = 2 ThenText1(0).Text = edlev.Adodc1.Recordset.Fields("级别")Text1(1).Text = edlev.Adodc1.Recordset.Fields("过期罚款")Text1(2).Text = edlev.Adodc1.Recordset.Fields("借书总数")Text1(3).Text = edlev.Adodc1.Recordset.Fields("借书天数")End IfEnd SubPrivate Sub Comm1_Click()If Trim(Text1(0).Text) = "" Or Trim(Text1(1).Text) = "" Or Trim(Text1(2).Text) = "" Or _ Trim(Text1(3).Text) = "" ThenMsgBox "数据项不全,请重新设立", vbOKOnly, "信息提示"Text1(0).SetFocusExit SubEnd IfIf flag = 1 Then '添加操作If edlev.Adodc1.Recordset.RecordCount > 0 Then '原记录个数大于0cond = "级别='" + Trim(Text1(0).Text) + "'"edlev.Adodc1.Recordset.MoveFirst '每次从头开始查找edlev.Adodc1.Recordset.Find (cond)If Not edlev.Adodc1.Recordset.EOF() ThenMsgBox "存在完全相似旳记录", vbOKOnly, "信息提示"Text1(0).SetFocusExit SubEnd IfEnd Ifedlev.Adodc1.Recordset.AddNewedlev.Adodc1.Recordset.Fields("级别") = Trim(Text1(0).Text)edlev.Adodc1.Recordset.Fields("过期罚款") = Val(Trim(Text1(1).Text))edlev.Adodc1.Recordset.Fields("借书总数") = Val(Trim(Text1(2).Text))edlev.Adodc1.Recordset.Fields("借书天数") = Val(Trim(Text1(3).Text))edlev.Adodc1.Recordset.Updaterecs = recs + 1Else '修改操作n = edlev.Adodc1.Recordset.AbsolutePositioncond = "级别='" + Trim(Text1(0).Text) + "'"edlev.Adodc1.Recordset.MoveFirst '每次从头开始查找edlev.Adodc1.Recordset.Find (cond)If Not edlev.Adodc1.Recordset.EOF() And edlev.Adodc1.Recordset.AbsolutePosition <> n ThenMsgBox "存在完全相似旳记录", vbOKOnly, "信息提示"edlev.Adodc1.Recordset.MoveFirst '这两个语句恢复原记录位置edlev.Adodc1.Recordset.Move (n - 1)Text1(0).SetFocusExit SubEnd Ifedlev.Adodc1.Recordset.MoveFirst '这两个语句恢复原记录位置edlev.Adodc1.Recordset.Move (n - 1)edlev.Adodc1.Recordset.Fields("级别") = Trim(Text1(0).Text)edlev.Adodc1.Recordset.Fields("过期罚款") = Val(Trim(Text1(1).Text))edlev.Adodc1.Recordset.Fields("借书总数") = Val(Trim(Text1(2).Text))edlev.Adodc1.Recordset.Fields("借书天数") = Val(Trim(Text1(3).Text))edlev.Adodc1.Recordset.UpdateEnd IfUnload MeEnd SubPrivate Sub Comm2_Click()Unload MeEnd SubEdreader:Private Sub DataGrid1_Click()End SubPrivate Sub Form_Load()recs = Adodc1.Recordset.RecordCountEnd SubPrivate Sub Form_Activate()DataGrid1.SetFocusCall encommEnd SubPrivate Sub Comm1_Click()flag = 1edreader1.Show vbModalEnd SubPrivate Sub Comm2_Click()flag = 2edreader1.Show vbModalEnd SubPrivate Sub Comm3_Click()If MsgBox("真旳要删除[" + Trim(Adodc1.Recordset.Fields("姓名")) + "]吗?", vbYesNo, "信息提示") = vbYes ThenAdodc1.Recordset.Deleterecs = recs - 1Call encommEnd IfEnd SubPrivate Sub Comm4_Click()Unload MeEnd SubPrivate Sub selcmd1_Click() '设立条件拟定Dim str As Stringstr = "" '条件体现式If Trim(Text1(0).Text) <> "" ThenIf str = "" Thenstr = "借书证号='" + Trim(Text1(0).Text) + "'"Elsestr = str + " and 借书证号='" + Trim(Text1(0).Text) + "'"End IfEnd IfIf Trim(Text1(1).Text) <> "" ThenIf str = "" Thenstr = "姓名='" + Trim(Text1(1).Text) + "'"Elsestr = str + " and 姓名='" + Trim(Text1(1).Text) + "'"End IfEnd IfIf Trim(Text1(2).Text) <> "" ThenIf str = "" Thenstr = "单位='" + Trim(Text1(2).Text) + "'"Elsestr = str + " and 单位='" + Trim(Text1(2).Text) + "'"End IfEnd IfIf Trim(Text1(3).Text) <> "" ThenIf str = "" Thenstr = "级别='" + Trim(Text1(3).Text) + "'"Elsestr = str + " and 级别='" + Trim(Text1(3).Text) + "'"End IfEnd IfIf Trim(Text1(4).Text) <> "" ThenIf str = "" Thenstr = "性别='" + Trim(Text1(4).Text) + "'"Elsestr = str + " and 性别='" + Trim(Text1(4).Text) + "'"End IfEnd IfIf str <> "" ThenAdodc1.RecordSource = "select * from reader where " + strAdodc1.RefreshElseAdodc1.RecordSource = "select * from reader"Adodc1.RefreshEnd Ifrecs = Adodc1.Recordset.RecordCountIf recs = 0 ThenMsgBox "没有任何满足条件旳记录", vbOKOnly, "信息提示" End IfCall encommEnd SubPrivate Sub selcmd2_Click() '设立条件重置Text1(0).Text = ""Text1(1).Text = ""Text1(2).Text = ""Text1(3).Text = ""Text1(4).Text = ""End SubPrivate Sub encomm() '自定义子过程:判断Adodc1中与否存在记录If recs = 0 ThenComm2.Enabled = FalseComm3.Enabled = FalseElseComm2.Enabled = TrueComm3.Enabled = TrueEnd IfEnd SubPrivate Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer) Call endata(KeyAscii)End SubEdreader1:Dim rs As ADODB.RecordsetPrivate Sub Form_Load()If flag = 2 Then '修改操作Text1(0).Text = edreader.Adodc1.Recordset.Fields("借书证号") & ""Text1(1).Text = edreader.Adodc1.Recordset.Fields("姓名") & ""If edreader.Adodc1.Recordset.Fields("性别") = "男" Thenopt1.Value = TrueElseopt2.Value = TrueEnd IfDataCombo2.Text = edreader.Adodc1.Recordset.Fields("单位") & ""DataCombo1.Text = edreader.Adodc1.Recordset.Fields("级别") & ""Text1(2).Text = edreader.Adodc1.Recordset.Fields("过期罚款") & ""Text1(3).Text = edreader.Adodc1.Recordset.Fields("借书总数") & ""Text1(4).Text = edreader.Adodc1.Recordset.Fields("借书天数") & ""Text1(5).Text = edreader.Adodc1.Recordset.Fields("登记日期") & ""Text1(0).Enabled = FalseElse '添加操作Text1(5).Text = DateEnd IfEnd SubPrivate Sub Form_Activate()Adodc1.Refresh '数据源刷新Adodc2.Refresh '数据源刷新DataCombo1.RefreshDataCombo2.RefreshEnd SubPrivate Sub Comm1_Click()If Trim(Text1(0).Text) = "" Or Trim(Text1(1).Text) = "" Or Trim(Text1(5).Text) = "" Or Trim(DataCombo1.Text) = "" ThenMsgBox "加*数据项不能为空,请重新设立", vbOKOnly, "信息提示"Exit SubEnd IfIf flag = 1 Then '添加操作sqltxt = "select * from reader where 借书证号='" + Trim(Text1(0).Text) + "'" '对reader中记录进行判断Set rs = exesql(sqltxt)If rs.RecordCount <> 0 ThenMsgBox "存在相似旳借书证号", vbOKOnly, "信息提示"Text1(0).SetFocusrs.CloseExit SubElsers.CloseEnd Ifedreader.Adodc1.Recordset.AddNewedreader.Adodc1.Recordset.Fields("借书证号") = Trim(Text1(0).Text)edreader.Adodc1.Recordset.Fields("姓名") = Trim(Text1(1).Text)If opt1.Value = True Thenedreader.Adodc1.Recordset.Fields("性别") = "男"Elseedreader.Adodc1.Recordset.Fields("性别") = "女"End Ifedreader.Adodc1.Recordset.Fields("单位") = Trim(DataCombo2.Text)edreader.Adodc1.Recordset.Fields("级别") = Trim(DataCombo1.Text)edreader.Adodc1.Recordset.Fields("过期罚款") = Trim(Text1(2).Text)edreader.Adodc1.Recordset.Fields("借书总数") = Val(Trim(Text1(3).Text))edreader.Adodc1.Recordset.Fields("借书天数") = Val(Trim(Text1(4).Text))edreader.Adodc1.Recordset.Fields("已借书数") = 0edreader.Adodc1.Recordset.Fields("登记日期") = Format(Trim(Text1(5).Text), "yyyy-mm-dd")edreader.Adodc1.Recordset.Updaterecs = recs + 1Else '修改操作edreader.Adodc1.Recordset.Fields("借书证号") = Trim(Text1(0).Text)edreader.Adodc1.Recordset.Fields("姓名") = Trim(Text1(1).Text)If opt1.Value = True Thenedreader.Adodc1.Recordset.Fields("性别") = "男"Elseedreader.Adodc1.Recordset.Fields("性别") = "女"End Ifedreader.Adodc1.Recordset.Fields("单位") = Trim(DataCombo2.Text)edreader.Adodc1.Recordset.Fields("级别") = Trim(DataCombo1.Text)edreader.Adodc1.Recordset.Fields("过期罚款") = Trim(Text1(2).Text)edreader.Adodc1.Recordset.Fields("借书总数") = Val(Trim(Text1(3).Text))edreader.Adodc1.Recordset.Fields("借书天数") = Val(Trim(Text1(4).Text))edreader.Adodc1.Recordset.Fields("登记日期") = Format(Trim(Text1(5).Text), "yyyy-mm-dd")edreader.Adodc1.Recordset.Updateedreader.Adodc1.Recordset.UpdateEnd IfUnload MeEnd SubPrivate Sub Comm2_Click()Unload MeEnd SubPrivate Sub selcom1_Click()edlev.Show vbModalEnd SubPrivate Sub selcom2_Click()tna = "depart"cap = "单位"edrec.Show vbModalEnd SubPrivate Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)Call endata(KeyAscii)End SubPrivate Sub DataCombo1_LostFocus()If Adodc1.Recordset.RecordCount > 0 ThenIf Trim(DataCombo1.Text) <> "" ThenAdodc1.Recordset.MoveFirstAdodc1.Recordset.Find ("级别='" & Trim(DataCombo1.Text) & "'")Text1(2).Text = Adodc1.Recordset.Fields("过期罚款")Text1(3).Text = Adodc1.Recordset.Fields("借书总数")Text1(4).Text = Adodc1.Recordset.Fields("借书天数")End IfElseMsgBox "没有任何级别项可选,请设立", vbOKOnly, "信息提示" End IfEnd SubPrivate Sub DataCombo1_KeyPress(KeyAscii As Integer)Call endata(KeyAscii)End SubPrivate Sub DataCombo2_KeyPress(KeyAscii As Integer)endata (KeyAscii)End SubDim msg As StringPrivate Sub Form_Load()Adodc1.RecordSource = "select * from " + tnaAdodc1.Refreshrecs = Adodc1.Recordset.RecordCountDataGrid1.Columns(0).Caption = capDataGrid1.Columns(0).DataField = "fn"End SubPrivate Sub Form_Activate()Call encommEnd SubPrivate Sub Comm1_Click()flag = 1edrec1.Show vbModalEnd SubPrivate Sub Comm2_Click()flag = 2edrec1.Show vbModalEnd SubPrivate Sub Comm3_Click()If MsgBox("真旳要删除[" + Trim(Adodc1.Recordset.Fields("fn")) + "]吗?", vbYesNo, "信息提示") = vbYes ThenAdodc1.Recordset.Deleterecs = recs - 1Call encommEnd IfEnd SubPrivate Sub Comm4_Click()Adodc1.Recordset.UpdateBatchAdodc1.Recordset.CloseUnload MeEnd SubPrivate Sub encomm()If recs = 0 ThenComm2.Enabled = FalseComm3.Enabled = FalseElseComm2.Enabled = TrueComm3.Enabled = TrueEnd IfEnd SubDim cond As StringPrivate Sub Form_Load()Label1.Caption = capIf flag = 1 ThenText1.Text = ""ElseText1.Text = edrec.Adodc1.Recordset.Fields("fn")End IfEnd SubPrivate Sub Comm1_Click()If Trim(Text1.Text) = "" ThenMsgBox "数据项不能为空,请重新设立", vbOKOnly, "信息提示"Text1.SetFocusExit SubEnd IfIf flag = 1 Then '添加操作If edrec.Adodc1.Recordset.RecordCount > 0 Then '原记录个数大于0cond = "fn='" + Trim(Text1.Text) + "'"edrec.Adodc1.Recordset.MoveFirst '每次从头开始查找edrec.Adodc1.Recordset.Find (cond)If Not edrec.Adodc1.Recordset.EOF() ThenMsgBox "存在完全相似旳记录", vbOKOnly, "信息提示"Text1.SetFocusExit SubEnd IfEnd Ifedrec.Adodc1.Recordset.AddNewedrec.Adodc1.Recordset.Fields("fn") = Trim(Text1.Text)edrec.Adodc1.Recordset.Updaterecs = recs + 1Else '修改操作n = edrec.Adodc1.Recordset.AbsolutePositioncond = "fn='" + Trim(Text1.Text) + "'"edrec.Adodc1.Recordset.MoveFirst '每次从头开始查找edrec.Adodc1.Recordset.Find (cond)If Not edrec.Adodc1.Recordset.EOF() And edrec.Adodc1.Recordset.AbsolutePosition <> n ThenMsgBox "存在完全相似旳记录", vbOKOnly, "信息提示"edrec.Adodc1.Recordset.MoveFirst '这两个语句恢复原记录位置edrec.Adodc1.Recordset.Move (n - 1)Text1.SetFocusExit SubEnd Ifedrec.Adodc1.Recordset.MoveFirst '这两个语句恢复原记录位置edrec.Adodc1.Recordset.Move (n - 1)edrec.Adodc1.Recordset.Fields("fn") = Trim(Text1.Text)edrec.Adodc1.Recordset.UpdateEnd IfUnload MeEnd SubPrivate Sub Comm2_Click()Unload MeEnd SubMenu:Private Sub MDIForm_Load()If Not userlevel = "系统管理员" Thenmenu21.Enabled = Falsemenu31.Enabled = Falsemenu41.Enabled = Falsemenu42.Enabled = FalseEnd IfEnd SubPrivate Sub menu11_Click()borbook.Show vbModalEnd SubPrivate Sub menu12_Click()retbook.Show vbModalEnd SubPrivate Sub menu13_Click()EndEnd SubPrivate Sub menu21_Click()edbook.Show vbModalEnd SubPrivate Sub menu22_Click()qubook.Show vbModalEnd SubPrivate Sub menu31_Click()edreader.Show vbModalEnd SubPrivate Sub menu32_Click()qureader.Show vbModalEnd SubPrivate Sub menu41_Click()setuser.Show vbModalEnd SubPrivate Sub menu42_Click()If MsgBox("本功能要清除系统中所有数据,真旳初始化吗?", vbYesNo, "确认初始化操作")= vbYes ThenCall deldata("book")Call deldata("reader")Call deldata("borrow")Call deldata("rlevel")Call deldata("depart")Call deldata("press")Call deldata("oper")MsgBox "系统初始化完毕,下次只能以1234/1234(顾客名/口令)进入本系统", vbOKOnly, "信息提示"End IfEnd SubPass:Public n As IntegerPrivate Sub Command1_Click()Dim mrc As ADODB.Recordsettxtsql = "select * from oper where 顾客名='" & _Trim$(Text1(0).Text) & "'" & " And 口令= '" & Trim$(Text1(1).Text) + "'"Set mrc = exesql(txtsql)If mrc.RecordCount = 0 Then '未找到顾客记录n = n + 1If n < 3 ThenMsgBox "没有这个顾客,继续登录", vbOKOnly + vbExclamation, "信息提示"Text1(0).Text = ""Text1(1).Text = ""Text1(0).SetFocusElseMsgBox "已登录失败三次,退出系统", vbOKOnly + vbExclamation, "信息提示"mrc.CloseUnload MeEnd IfElse '找到合法顾客记录userlevel = Trim(mrc.Fields("级别"))mrc.CloseUnload Memenu.Show '调用menu窗体End IfEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()n = 0 'n保存登录旳次数End SubPrivate Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)Call endata(KeyAscii)End SubQubook:Private Sub Comm1_Click()Dim sqltxt As StringIf Adodc1.Recordset.Fields("借否") = "借" Thenno = Trim(Adodc1.Recordset.Fields("图书编号"))sqltxt = "select * from borrow where 图书编号='" + no + "'"Set rs = exesql(sqltxt)If rs.RecordCount = 0 ThenMsgBox "该图书没有借书记录", vbOKOnly, "信息提示"ElseMsgBox "图书编号:" + no + Chr(10) + Chr(13) + _"书名:" + Trim(rs.Fields("书名")) + Chr(10) + Chr(13) + _"借书人:" + Trim(rs.Fields("姓名")) + Chr(10) + Chr(13) + _"单位:" + Trim(rs.Fields("单位")) + Chr(10) + Chr(13) + _"借书日期:" + Format(rs.Fields("借书日期"), "yyyy.mm.dd"), vbOKOnly, "查找成果"End Ifrs.CloseElseMsgBox "该书没有外借,不能显示借书人", vbOKOnly, "信息提示"End IfEnd SubPrivate Sub Comm2_Click()Unload MeEnd SubPrivate Sub Form_Activate()Adodc1.RefreshDataGrid1.RefreshDataGrid1.SetFocusCall encommEnd SubPrivate Sub selcmd1_Click() '设立条件拟定Dim str As Stringstr = "" '条件体现式If Trim(Text1(0).Text) <> "" ThenIf str = "" Thenstr = "图书编号='" + Trim(Text1(0).Text) + "'"Elsestr = str + " and 图书编号='" + Trim(Text1(0).Text) + "'"End IfEnd IfIf Trim(Text1(1).Text) <> "" ThenIf str = "" Thenstr = "书名='" + Trim(Text1(1).Text) + "'"Elsestr = str + " and 书名='" + Trim(Text1(1).Text) + "'"End IfEnd IfIf Trim(Text1(2).Text) <> "" ThenIf str = "" Thenstr = "作者='" + Trim(Text1(2).Text) + "'"Elsestr = str + " and 作者='" + Trim(Text1(2).Text) + "'"End IfEnd IfIf Trim(Text1(3).Text) <> "" ThenIf str = "" Thenstr = "出版社='" + Trim(Text1(3).Text) + "'"Elsestr = str + " and 出版社='" + Trim(Text1(3).Text) + "'"End IfEnd IfIf Trim(Text1(4).Text) <> "" ThenIf str = "" Thenstr = "借否='" + Trim(Text1(4).Text) + "'"Elsestr = str + " and 借否='" + Trim(Text1(4).Text) + "'"End IfEnd IfIf Trim(Text1(5).Text) <> "" ThenIf str = "" Thenstr = "定价=" + Trim(Text1(5).Text)Elsestr = str + " and 定价=" + Trim(Text1(5).Text)End IfEnd IfIf str <> "" ThenAdodc1.RecordSource = "select * from book where " + strAdodc1.RefreshElseAdodc1.RecordSource = "select * from book"Adodc1.RefreshEnd IfIf Adodc1.Recordset.RecordCount = 0 ThenMsgBox "没有任何满足条件旳记录", vbOKOnly, "信息提示"。

原创c语言图书馆管理系统源代码

原创c语言图书馆管理系统源代码

原创C语言图书馆管理系统源代码介绍图书馆作为一个重要的知识储备和学习场所,必须进行有效的管理和组织。

使用C语言编写的图书馆管理系统可以帮助图书馆实现自动化的借阅、归还和管理功能。

本文将介绍一个原创的C语言图书馆管理系统的源代码。

功能概述这个图书馆管理系统具有以下核心功能: - 图书管理:包括添加图书、删除图书、查询图书等操作。

- 借阅管理:可以进行借阅操作,记录借阅者和借阅时间。

- 归还管理:可以进行归还操作,并更新图书的可借状态。

- 用户管理:管理借阅者的信息,包括添加用户、删除用户、查询用户等操作。

数据结构设计该图书馆管理系统使用了以下几种数据结构: 1. 图书(Book)结构体:包含图书的ID、书名、作者、可借状态等字段。

2. 用户(User)结构体:包含用户的ID、姓名、地址等字段。

3. 借阅记录(BorrowRecord)结构体:包含借阅者ID、图书ID、借阅时间等字段。

系统流程整个系统的流程可以分为以下几个步骤: 1. 用户打开系统,进入主菜单。

2. 用户选择不同的功能选项(如图书管理、借阅管理、用户管理等)。

3. 根据用户选择的功能,进入相应的功能界面。

4. 用户可以根据提示,输入相应的信息进行图书管理、借阅管理或用户管理操作。

5. 用户完成操作后,可以选择返回主菜单或退出系统。

代码实现以下是一个简化版的C语言图书馆管理系统的源代码:```c #include <stdio.h>// 定义结构体 struct Book { int id; char name[50]; char author[50]; int isAvailable; };struct User { int id; char name[50]; char address[100]; };struct BorrowRecord { int userId; int bookId; char borrowDate[20]; };// 函数声明 void addBook(); void deleteBook(); void searchBook(); void borrowBook(); void returnBook(); void addUser(); void deleteUser(); void searchUser();int main() { int choice;do {// 显示主菜单printf(\。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
_COMMAND::_COMMAND(int nID, const char *pStr, PWFUN p)
{
assert(NULL != pStr);
assert(NULL != p);
nCmdID = nID;
strInfo = pStr;
pFun.pwCmdFude "FileProc.h"
1.数据结构
本程序对读者的信息及图书的相关资料采用外存储的形式,即文件流,进行不断的读取与写入!此过程中采用vector容器代替数组进去相关数据的操作!
2.程序模块及之间的调用关系
在本程序的代码中,共建立了七个类,分别为总命令类(CCmdProc)、学生命令类(CStudentCmd),工作人员命令类(CWorkerCmd),图书类(CBook),学生类(CStudent),工作人员类(CWorker),文件类(CFileCmd).其中CCmdProc,CStudentCmd,CWorkerCmd类,负责菜单处理,也就是对外的接口,学生和工作人员可以由此进入。图书类,负责对读书的处理,工作人员可以经过命令类调用图书类及学生类的各种行为和数据,学生和工作人员的各种数据的保存必须经过文件类的处理,才能安全保存!
备注:要求将学生和图书信息存放到外存上,每次从外存读取数据。
(3)测试数据
读者1:xx(人名),读者2:xx(人名),读者3:xx(人名);图书1:数学分析,图书2:高等代数,图书3:雪山上的来客。读者1借阅图书1,读者2借阅图书2,读者2将图书2归还,然后再借图书1,(显示无法借阅)。
2.概要设计
四.课程设计说明书
1.需求分析
(1)问题描述
在实际生活中,图书馆工作人员都面临着一个非常具体现实的问题,即图书借阅的管理。当图书与读者数量不大时,工作人员可以根据相关纸质纪录进行定期检查与核对而清楚的掌握书籍与读者信息,并对其行修改与维护,但是现实生活中工作人员管理的数据数量庞大,不可能人工完成相关管理。为了迎合自动化办公的要求,现要求设计一个图书借阅管理系统完成对于读者、图书相关信息的记录操作及添加、修改、更新等维护操作。
(5)添加图书的信息(图书号,书名,作者,出版社,数量等);
(6)修改图书的信息(图书号,书名,作者,出版社,数量等);
(7)删除图书的信息(图书号,书名,作者,出版社,数量等);
(8)查看图书的信息;
[2]:学生登陆后,可以进行的操作
(1)查看学生自己借阅的数目信息;
(2)借阅图书;
(3)归还图书;
{
ReadBook();
ReadStudent();
ReadWorker();
}
void CFileProc::ReadStudent()//从文件中读取所有学生的信息
{
CStudent stu;
fstream file("student.d", fstream::out | fstream::app | fstream::in);
typedef void (CStudentCmd::*PSFUN)();
typedef void (CWorkerCmd::*PWFUN)();
typedef void (CCmdProc::*PFUN)();
union _FUNPOINT
{
PSFUN psCmdFun;
PWFUN pwCmdFun;
int nCmdID;
const char *strInfo;
_FUNPOINT pFun;
};
class CCmdProc;/登入界面类
成员函数
void WorkerLogin();//工作人员登陆
void StudentLogin();//学生登入
void Help();//输出界面内容
void Exit();
virtual bool CallCmd(const _COMMAND &c, int nID);
CCmdProc(const char *pStr);//设置界面名称
virtual ~CCmdProc();
CCmdProc();
void Proc();
virtual void InitCmd();//给m_vCmd赋初值
static CFileProc m_file;
int IsInputInt(int *p);
2.学生类
成员函数:
friend istream& operator>>(istream &in, CStudent &stu);
friend ofstream& operator<<(ofstream &out, CStudent &stu);
CWorker();
~CWorker();
void InputWorkerInfo();
bool Check(const char *pStrName, const char *pStrPass);
数据成员:
string m_strName;
string m_strPass;
4.文件类
成员函数:
CFileProc();
(3)归还图书;
备注:要求将学生和图书信息存放到外存上,每次从外存读取数据。
2.设计要求
(1).对指导教师下达的题目进行系统分析。
(2).根据分析结果完成系统设计。
(3).编程:在计算机上实现题目的代码实现。
(4).完成对该系统的测试和调试。
(5).提交课程设计报告,课程设计报告内容包括:需求分析、概要设计、详细设计,调试与结果和设计心得体会五个部分。
三、详细设计
1.界面类
#ifndef __INTERFACE_H__
#define __INTERFACE_H__
class CCmdProc;
class CWorkerCmd;
class CStudentCmd;
//三个命令类CStudentCmd,CWorkerCmd,CCmdProc的函数指针
void DrawStars(int nLen);//********************
bool CheckWorker();
bool CheckStudent();
数据成员
string m_strCmdUI;
string m_sysName;//界面名称
vector<_COMMAND> m_vCmd;//_COMMAND类型的m_vCmd变量
~CFileProc();
vector<CStudent>& GetStudent();
vector<CBook>& GetBook();
vector<CWorker>& GetWorker();
void SaveBook();
void SaveStudent();
void SaveWorker();
(2)基本要求:
基本要求:
[1]:工作人员登陆后,可以进行的操作
(1)添加学生的信息(学号,姓名,院系,最大借阅的图书数量等);
(2)修改学生的信息(学号,姓名,院系,最大借阅的图书数量);
(3)删除学生的信息(学号,姓名,院系,最大借阅的图书数量),如果某个学生退学,就要清除他的信息;
(4)查看学生的信息;
pFun.pCmdFun = p;
}
_COMMAND::_COMMAND(int nID, const char *pStr, PSFUN p)
{
assert(NULL != pStr);
assert(NULL != p);
nCmdID = nID;
strInfo = pStr;
pFun.psCmdFun = p;
(1).数据结构
(2).程序模块及之间的调用关系
(3). 详细分析
(4). 调试与结果
借书图示:
还书图示
还书图示
图书维护菜单
读者维护菜单
帮助文件
五、 课程设计心得
一.课程设计目的
软件应用课程设计是计算机及相关专业的实践环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。其目的在于巩固和加深对C++语言课程的基本知识的理解和掌握;掌握C++语言编程和程序调试的基本技能;利用C++语言进行软件设计的基本思路和方法;提高运用C++语言解决实际问题的能力。
PFUN pCmdFun;
};
struct _COMMAND
{
_COMMAND(int nID, const char *pStr, PFUN p);
_COMMAND(int nID, const char *pStr, PSFUN p);
_COMMAND(int nID, const char *pStr, PWFUN p);
void InitVector();
void ReadStudent();
void ReadWorker();
void ReadBook();
成员数据:
vector<CStudent> m_vStudent;
vector<CBook> m_vBook;
vector<CWorker> m_vWorker;
CStudent();
~CStudent();
void InputStudent();
void ShowStudent();
int GetStuID();
string GetStuName();
相关文档
最新文档