用VC++制作一个图书出版管理系统
C语言:书店管理系统

C语言:书店管理系统#include "stdio.h"#include <string.h>#define MAXNUM 1000typedef struct{char isbn[10]; /*书号*/char bkname[20]; /*书名*/char author[10]; /*作者*/float price; /*单价*/int num; /*数量(单位:册)*/} BOOK;int bknum;BOOK bk[MAXNUM];rdata(){FILE *fp;if ((fp=fopen("e:\\lth019\\bkstore\\bookdata.txt","rb"))==NULL){printf("Can not open the file!\n");return;}fread(&bknum,sizeof(int),1,fp);fread(bk,sizeof(BOOK),bknum,fp);fclose(fp);}bklist(){int i;clrscr();printf(" Isbn bkname author price num\n"); printf("----------------------------------------------------------------\n");for(i=0;i<bknum;i++)putout();printf("-------------------------BOOK LIST END---------------------------\n");printf("Press any key to return...");getch();}void wdata(){FILE *fp;if ( (fp=fopen("e:\\lth019\\bkstore\\bookdata.txt","wb"))==NULL) {printf("Can not open the file!\n");return;}fwrite(&bknum , sizeof(int) , 1 , fp);fwrite(bk, sizeof(BOOK), bknum, fp);fclose(fp);}void bookin(){char s[10],bn[20],au[10];int i,nn;float pp;printf("input isbn(000 to end input):");scanf("%s",s);while(strcmp(s,"000")!=0){if ((i=found(s))<bknum){ printf("Have found!\n");putout();printf("input the number:");scanf("%d",&nn);bk[i].num+=nn;{putout();getch();}printf("input isbn(000 to end input):");scanf("%s",s);}else{printf("A new book input,\nPlease input bkname,author,price,num\n");strcpy(bk[i].isbn,s);scanf("%s%s",bn,au);strcpy(bk[i].bkname,bn);strcpy(bk[i].author,au);scanf("%f%d",&pp,&nn );bk[i].price=pp;bk[i].num=nn;bknum++;{putout();getch();}printf("input isbn(000 to end input):");scanf("%s",s);break;}}}showsold(BOOK sold[],int n){int i;printf("\n\n\n -------------The Books are selling-----------------\n");for(i=0;i<n;i++)printf(" %-10s%-20s%-10s%-8.2f%-8d\n",sold[i].isbn,sold[i].bkname,sold[i].author,sold[i].price,sold[i].num);}int found(char isbn[]){int i;for(i=0;i<bknum;i++)if(strcmp(isbn,bk[i].isbn)==0) break;return i;}void booksale(){ char isbn[10];BOOK sold[100];int soldnum=0,i;float total=0;clrscr();printf("Please input isbn(000 to end input):");scanf("%s",isbn);while(strcmp(isbn,"000")!=0){if((i=found(isbn))<bknum)if(bk[i].num>0)sold[soldnum++]=bk[i],bk[i].num--;else{printf("\Not enough!Pressany key to continue...");getch();} else{printf("\Not enough!Pressany key to continue...");getch();}clrscr();for(i=0,total=0;i<soldnum;i++)total+=sold[i].price;if(soldnum){ showsold(sold,soldnum);printf(" ----------------------------------------------\n");printf("\n The total %8.2f\n\n\n",total);}printf("\n input isbn(000 to end input):");scanf("%s",isbn);}}void search(){ char s[10]; char found; char isbn[20];char num[10]; char au[20]; char name[20];int t,i;printf("=================\n");printf(" 1.search with isbn \n");printf(" 2.search with author \n");printf(" 3.search with bookname \n");printf("=================\n");printf(" please chose one way : ");scanf("%d",&t);if(t==1){ printf(" please input isbn : ");scanf("%s",&s);for(found=0,i=0 ; i<bknum ; i++)if(strcmp(s,bk[i].isbn)==0){printf("Have found!\n");putout();found++;}else continue;if(!found) printf("Not found!");getch();}if(t==2){ printf(" please input author: ");scanf("%s",au);for(found=0,i=0;i<bknum;i++)if(strcmp(au,bk[i].author)==0){printf("Have found!\n");putout();found++;}else continue;if(!found) printf("Not found!");getch();}if(t==3){ printf(" please input bookname: ");scanf("%s",name);for(found=0,i=0;i<bknum;i++)if(strcmp(bk[i].bkname,name)==0){printf("Have found!\n");putout();found++;}else continue;if(!found) printf("Not found!");getch();}}Delete(){ char s[10],t;int found=0,i,j;printf("please input isbn of the book:");scanf("%s",s);for(i=0 ; i<bknum ; i++)if( strcmp(s,bk[i].isbn)==0 )break;if (i<bknum){ found=1;printf("Found!\n");putout();printf("Are you sure to delete?(Y/N):"); flushall(); scanf("%c",&t);if(t=='y'||t=='Y'){ for(;i<=bknum;i++)bk[i]=bk[i+1];}bknum--;}else printf("This book did't delete!");getch();}putout(){ int i;printf(" %-10s%-20s%-10s%-8.2f%-8d\n",bk[i].isbn,bk[i].bkname,bk[i].author,bk[i].price,bk[i].num); }int showsel(){int sel;clrscr();printf("--------------------------ManiMenus-------------------------\n\n"); printf(" 0. Exit\n");printf(" 1. BookList\n");printf(" 2. BookIn\n") ;printf(" 3. BookSale\n");printf(" 4. Save\n ");printf(" 5. Delete\n");printf(" 6. Search\n");printf("\n------------------------------------------------------------\n"); printf(" Input the selection:");scanf("%d",&sel);return sel;}main(){int sel; char yes;clrscr();rdata();sel=showsel();while(1){ switch(sel){case 0:printf("Are sure to Save?(Y/N) ");flushall();scanf("%c",&yes);if(yes=='Y'||yes=='y') { wdata(); exit(0); }exit(0);case 1:bklist();break;case 2:bookin();break;case 3:booksale();break;case 4:wdata();break;case 5:Delete();break;case 6:search();break;default :break;}sel=showsel();}}。
原创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(\。
c语言课程设计图书馆管理系统

c语言课程设计图书馆管理系统一、教学目标本课程的教学目标是使学生掌握C语言编程基础,能够运用C语言设计简单的图书馆管理系统。
具体分为三个维度:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础。
2.技能目标:学生能够运用C语言进行程序设计,具备编写、调试和运行C语言程序的能力。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决问题的能力,培养学生的创新精神和团队合作意识。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础,以及图书馆管理系统的项目实践。
具体安排如下:1.第一章:C语言概述,介绍C语言的历史、特点和基本语法。
2.第二章:数据类型和运算符,学习基本数据类型、字符串、运算符及其优先级。
3.第三章:控制结构,学习条件语句、循环语句和跳转语句。
4.第四章:函数,学习函数的定义、声明和调用,以及常用标准库函数。
5.第五章:数组和字符串,学习一维数组、多维数组、字符串的基本操作。
6.第六章:指针,学习指针的概念、运算和应用。
7.第七章:结构体和文件,学习结构体的定义和应用,以及文件的读写操作。
8.第八章:图书馆管理系统项目实践,运用所学知识设计并实现一个简单的图书馆管理系统。
三、教学方法本课程采用多种教学方法相结合的方式,包括:1.讲授法:讲解C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础。
2.案例分析法:通过分析典型的图书馆管理场景,引导学生运用C语言进行程序设计。
3.实验法:让学生动手编写、调试和运行C语言程序,提高学生的实践能力。
4.小组讨论法:分组进行项目实践,培养学生的团队合作意识和问题解决能力。
四、教学资源1.教材:《C程序设计语言》(K&R)或《C语言 Primer》(第五版)。
2.参考书:《C语言编程思想》、《C语言深度探索》。
3.多媒体资料:课件、教学视频、在线教程。
VC++课程设计图书管理系统

一、课程设计题目:图书管理系统二、功能描述1工作人员登陆后,可以进行的操作:(1)添加学生的信息(学号,姓名,院系,最大借阅的图书数量等);(2)修改学生的信息(学号,姓名,院系,最大借阅的图书数量);(3)删除学生的信息(学号,姓名,院系,最大借阅的图书数量),如果某个学生退学,就要清除他的信息;(4)查看学生的信息;(5)添加图书的信息(图书号,书名,作者,出版社,数量等);(6)修改图书的信息(图书号,书名,作者,出版社,数量等);(7)删除图书的信息(图书号,书名,作者,出版社,数量等);(8)查看图书的信息;2 学生登陆后,可以进行的操作:(1)查看学生自己借阅的数目信息;(2)借阅图书;(3)归还图书;备注:要求将学生和图书信息存放到外存上,每次从外存读取数据。
三、模块的功能与联系return 1;}return 0;}Reader *query(int readerid)etno()==readerid && read[i].gettag()==0){return &read[i];}return NULL;}void disp() isp();}void readerdata();ettag()==0)((char *)&read[i],sizeof(read[i]));();}};void RDatabase::readerdata(){char choice;char rname[20];int readerid;Reader *r;while (choice!='0'){cout <<"\n\n\t\t\t读者维护\n\n\n\t\t 1 新增\n\n\t\t 2 更改\n\n\t\t 3 删除\n\n\t\t 4 查找\n\n\t\t 5 显示\n\n\t\t 6 全删\n\n\t\t 0 退出"<<endl;cin >> choice;switch (choice){case '1':cout << "输入读者编号:";cin >> readerid;cout << "输入读者姓名:";cin >> rname;addreader (readerid,rname);break;case '2':cout << "输入读者编号:";cin >> readerid;r=query(readerid);if (r==NULL){cout << " 该读者不存在 "<<endl;break;}cout << "输入新的姓名:";cin >> rname;r->setname(rname);break;case '3':cout << " 输入读者编号:";cin >> readerid;r=query(readerid);if (r==NULL){cout <<" 该读者不存在" << endl; break;}r->delbook();break;case '4':cout << "读入读者编号:";cin >> readerid;r=query(readerid);if (r==NULL){cout <<"该读者不存在"<< endl; break;}r->disp();break;case '5':disp();break;case '6':clear();break;default:cout<<"输入错误,请从新输入:";break;}}}ddbook(n,na);return 1;}return 0;}Book *query(int bookid)etno()==bookid &&book[i].gettag()==0) {return &book[i];}return NULL;}void bookdata();ettag()==0)book[i].disp();}~BDatabase()ettag()==0)((char *)&book[i],sizeof(book[i]));();}};void BDatabase::bookdata(){char choice;char bname[40];int bookid;Book *b;while (choice!='0'){cout <<"\n\n\n\t\t\t图书维护 "<<endl<<endl;cout<<"\t\t1 新增\n \t\t2 更改\n\t\t3 删除\n\t\t4 查找\n\t\t5 显示\n\t\t6 全删\n\t\t0 退出"<<endl;cin >> choice;switch (choice){case '1':cout << "输入图书编号:"<<endl;cin >> bookid;cout << "输入图书书名:"<<endl; cin >> bname;addbook(bookid,bname);break;case '2':cout << "输入图书编号:"<<endl; cin >> bookid;b=query(bookid);if (b==NULL){cout << " 该图书不存在 "<<endl; break;}cout << "输入新的书名:"<<endl; cin >> bname;b->setname(bname);break;case '3':cout <<" 读入图书编号:"<<endl; cin >> bookid;b=query(bookid);if (b==NULL){cout <<" 该图书不存在" << endl; break;}b->delbook();break;case '4':cout << " 读入图书编号:"<<endl;cin >> bookid;b=query(bookid);if (b==NULL){cout <<" 该图书不存在"<< endl;break;}b->disp();break;case '5':disp();break;case '6':clear();break;default:cout<<"输入错误,请从新输入:"; }}}//main() 函数的实现,程序的主界面的引导void main(){char choice;int bookid,readerid;RDatabase ReaderDB;Reader *r;BDatabase BookDB;Book *b;while(choice!='0'){cout <<endl<<endl<<"\t\t\t 图书管理系统\n\n\n";cout <<"\t\t\t1 借书\n\n\t\t\t2 还书 \n\n\t\t\t3 图书维护\n\n\t\t\t4 读者维护\n\n\t\t\t0 离开"<<endl;cin >> choice;switch (choice){case '1':cout <<" 借书读者编号:";cin >>readerid;cout <<" 图书编号: ";cin >>bookid;r=(readerid);//按编号查找if (NULL==r){cout <<" 不存在该读者,不能借书"<< endl; break;}b=(bookid);if (b==NULL){cout <<" 不存在该图书,不能借书"<< endl; break;}if (b->borrowbook()==0){cout << " 该图书已借出,不能借书"<< endl; break;}r->borrowbook(b->getno());break;case '2':cout<<"还书\n 读者编号:";cin >>readerid;cout << " 图书编号:";cin >>bookid;r=(readerid);if (r==NULL){cout <<" 不存在该读者,不能还书" << endl; break;}b=(bookid);if (b==NULL){cout <<" 不存在该图书,不能还书" <<endl; break;}b->retbook();r->retbook(b->getno());break;case '3':();break;case '4':();break;default:cout<<"输入错误,请从新输入:"; }}}五、运行效果1界面2借书3还书4图书维护5读者维护六、存在不足即预期解决方法1查找到图书后,无法显示是否已借出。
实操考核:用C#开发一个图书管理系统

实操考核:用C#开发一个图书管理系统引言图书管理系统是一个常见的管理系统,在图书馆、学校和其他机构中被广泛使用。
通过使用C#语言开发一个图书管理系统,我们能够练习和巩固我们在C#编程方面的知识和技能。
本文将引导你从头开始构建一个基本的图书管理系统,并提供一些相关的代码示例和实操建议。
1. 项目概述1.1 项目背景图书管理系统主要用于记录和管理图书的信息,包括书名、作者、出版社、ISBN等。
用户可以通过系统进行图书的借阅、归还、查询等操作。
这个系统需要能够在存储和管理大量图书信息的同时,提供快速和准确的查询结果。
1.2 项目目标本项目的目标是通过C#语言开发一个简单但功能完整的图书管理系统。
系统应具备以下基本功能: - 记录和管理图书信息:包括书名、作者、出版社、ISBN等; - 借阅和归还图书:用户能够借阅和归还图书,并记录借阅和归还的时间; -查询图书信息:用户能够通过书名、作者、ISBN等关键字查询图书信息; - 统计和报表功能:系统能够生成各种统计信息和报表,如借阅次数、出版社统计等。
2. 系统设计2.1 数据模型设计在开发图书管理系统之前,我们首先需要设计系统的数据模型。
数据模型定义了系统中的实体及其之间的关系。
在本系统中,我们可以定义以下几个实体:- 图书(Book):包括书名、作者、出版日期、出版社、ISBN等属性; - 用户(User):包括用户名、密码、角色等属性; - 借阅记录(BorrowRecord):包括借阅时间、归还时间、借阅状态等属性。
2.2 系统架构设计系统架构设计是指确定系统的整体结构和组成部分。
在本项目中,我们可以采用三层架构设计,将系统分为表示层、业务逻辑层和数据访问层。
•表示层(Presentation Layer):负责与用户进行交互,接收用户的输入和展示查询结果等。
•业务逻辑层(Business Logic Layer):负责处理系统的业务逻辑,例如借阅、归还、查询等操作。
基于vc++的C语言图书馆管理系统课程设计报告

图书管理课程设计学生姓名:学生学号:所在班级:任课教师:图书馆管理系统【设计目的】图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等. 试设计一图书信息管理系统,使之能提供以下功能:1)系统以菜单方式工作2)图书信息录入功能(图书信息用文件保存)--输入3)图书信息浏览功能--输出4)查询和排序功能:(至少一种查询方式)--算法5)按书名查询6)按作者名查询7)图书信息的删除与修改(可选项)*/【设计思路】根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中去,所以应该提供下个结构体和文件的输入等操作:在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现:另外还需提供选择菜单实现功能,在运行时达到所要求的目的。
【总体设计】图1 系统功能模块图【详细设计】1.主函数主函数设计要求简洁,只提供部分提示语和函数的调用【程序】#include<stdio.h>#include<stdlib.h>#include<conio.h>int get(){int o;scanf("%d",&o);}struct BOOK{int ID,usr[10],total,store,days[10];char name[31],aurthor[21];}books[100];/*上面是结构体的定义,用于存放书籍及借书的信息。
*/void page_title(char*menu_item){printf("图书管理系统\n-%s-\n",menu_item);}/*通过参数menu_item,可以显示当前的状态。
*/void return_confirm(){printf("\n按任意返回\n");getch();}/*上面是返回前请求确认的函数,以便在返回前观察结果*/int search_book(){int n,i;printf("输入图书序号:");scanf("%d",&i);for(n=0;n<100;n++){if(books[n].ID==i){printf("书名:%s\n",books[n].name);printf("作者:%s\n",books[n].aurthor );printf("存数:%d of ",books[n].store );printf("%d\n",books[n].total);return n;}}printf("\n输入错误或无效图书序号\n");return -1;}/*上面的函数是在数组中找到图书号匹配的记录,显示其信息并返回数组下标,如果找不到相应记录则提示错误并返回-1。
C语言课程设计-小型书店管理系统

C语言课程设计-小型书店管理系统简介本文档旨在设计一个小型书店管理系统,使用C语言实现。
该系统将提供以下功能:1. 登录:管理员和员工可以使用自己的账号和密码登录系统。
2. 书籍管理:管理员可以添加、编辑和删除书籍信息。
3. 销售管理:员工可以记录每一笔销售,包括售出的书籍、销售时间和销售数量。
4. 会员管理:系统可以管理会员信息,包括会员的姓名、手机号码和积分等。
5. 库存管理:系统可以记录书籍的库存信息,包括书籍的数量和位置。
功能说明登录- 系统启动时,提示用户输入账号和密码。
- 系统验证账号和密码是否正确,允许管理员和员工登录。
- 登录成功后,进入主菜单。
书籍管理- 管理员在主菜单选择书籍管理,可以进行以下操作:- 添加书籍:输入书籍的名称、作者、出版社和价格等信息,保存到系统中。
- 编辑书籍:选择要编辑的书籍,并修改相关信息。
- 删除书籍:选择要删除的书籍,并从系统中删除。
- 查看书籍列表:显示系统中所有的书籍信息。
销售管理- 员工在主菜单选择销售管理,可以进行以下操作:- 记录销售:选择要销售的书籍,并输入销售的数量。
- 系统更新库存信息,并生成销售记录,包括销售时间、图书名称和数量等。
- 销售记录可以用于后续的统计和分析。
会员管理- 管理员在主菜单选择会员管理,可以进行以下操作:- 添加会员:输入会员的姓名、手机号码和积分等信息,保存到系统中。
- 编辑会员信息:选择要编辑的会员,并修改相关信息。
- 删除会员:选择要删除的会员,并从系统中删除。
- 查看会员列表:显示系统中所有的会员信息。
库存管理- 系统会记录每本书籍的库存数量和位置。
- 当员工记录销售时,系统会自动更新库存信息。
- 员工可以在主菜单选择库存管理,查看当前库存情况。
技术实现本系统将使用C语言进行开发,主要使用以下技术:1. 数据结构:使用结构体来表示书籍、会员和销售记录等信息。
2. 文件操作:使用文件保存和读取数据,以实现数据的持久化。
基于VC多文档模式的图书管理系统

基于VC多文档模式的图书管理系统随着图书馆藏书的日益丰富和读者需求的多样化,传统的图书管理系统已经难以满足图书馆运营的需求。
为了提高图书馆的管理效率和读者的借阅体验,本文将介绍一种基于VC多文档模式的图书管理系统。
该系统综合运用了Visual C++(VC)多文档模式和数据库技术,实现对图书资源的有效管理。
用户需求:系统需满足不同类型用户(如普通读者、图书管理员等)的需求,提供不同的操作权限和管理功能。
功能需求:系统需具备的基本功能包括书籍信息管理(新增、修改、删除等)、借阅信息管理(借书、还书、预约等)、读者信息管理(新增、修改、删除等)以及系统设置(用户管理、权限设置等)。
性能需求:系统应具备稳定、快速、安全等性能特点,确保在大规模数据情况下仍能保持良好的运行状态。
本系统的整体架构采用C/S架构,由客户端和服务器端两部分组成。
客户端采用VC多文档模式,实现对不同文档的切换和操作;服务器端采用数据库技术,实现对图书资源的数据存储和管理。
数据库设计:采用关系型数据库(如MySQL、SQL Server等),设计合理的表结构和字段,满足图书信息、借阅信息、读者信息等数据的存储和管理需要。
界面设计:基于VC多文档模式,设计友好的图形用户界面(GUI),使不同类型用户能够方便快捷地进行操作。
流程设计:明确系统各功能模块的操作流程,确保系统的流程清晰、易于理解和操作。
编码:根据详细设计,采用C++语言和VC开发环境进行编码实现。
调试:在编码实现过程中,进行严格的调试,确保每个功能模块都能正常运行。
测试:对整个系统进行全面的测试,包括单元测试、集成测试和系统测试,确保系统的稳定性和可靠性。
通过实际测试来验证系统的正确性和可靠性。
测试结果表明,本系统能够实现对图书资源的有效管理,提高了图书馆的管理效率和读者的借阅体验。
具体测试结果如下:系统在处理大量数据时,仍能保持高效的性能表现。
界面设计友好,操作流程简洁明了,方便不同类型的用户使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
案例三用VC++制作一个图书出版管理系统关键词:DAO数据源创建系统集成消息函数数据记录导航器制作3.1 系统设计的目的和意义出版社图书出版管理是一个庞大的任务,传统方式的图书管理将会造成巨大的人力和物力的浪费,因此能否实现计算机管理呢?回答是可以的。
本案例将用VC++制作一个图书出版管理系统,他可以基本实现图书出版管理的大部分功能。
本案例将采用简化的过程代码和完整的系统集成技术,并采用DAO数据源创建方法。
在以DAO方式创建数据环境时,实现了数据源的引入和应用程序的制作。
在程序中我们利用了消息函数,并自己创建了一组数据记录导航程序和数据修改程序,程序利用了简单的消息映射过程代码,实现了对数据集的导航、浏览、增加和删除的功能。
3.2 系统功能设计本系统具有一般系统的数据处理功能,如数据录入、增加、修改、删除等,另外,本系统将涉及多个对话框及对话框之间的相互切换。
3.3 数据库与数据表的设计本系统将首先创建一个“图书出版管理系统”数据库,并在它之中创建三个数据表,一个是“出版图书基本信息”数据表,一个是“图书分类”表,一个是“图书出售信息”表。
3.3.1定义数据表结构数据表是数据库中的“元素”,数据库是数据表的集合。
数据库和数据表是任何数据库应用系统所不可缺少的基本要素,因此我们需要首先创建数据表。
先定义“出版图书基本信息”数据表的结构,如表3.1所示,他专门用于记录出版社出版的图书的基本情况。
表2.1 “出版图书基本信息”数据表结构“图书分类”数据表的结构定义如表3.2所示。
表3.2 “图书分类”数据表的结构“图书出售信息”数据表的结构如表3.3所示。
表3.3 “图书出售信息”数据表的结构3.3.2 数据库与数据表创建过程利用Microsoft Access创建数据库及其数据表的步骤如下:(1)启动Microsoft Office 2003中的Microsoft Access 2003应用程序,出现图3.1所示对话框。
图3.1 新建数据库选择(2)选择创建一个空数据库,单击“确定”按钮之后出现保存对话框,确定保存数据库的文件位置(创建的数据库保存的位置为D: \ VC++写作案例\CH3\)和创建的数据库名称为“图书出版管理系统”即可,随后出现图3.2所示界面。
图3.2 数据库中的数据表操作界面在数据库操作界面中,用户可以打开已经存在的数据表,并进行数据处理操作,也可以创建新的数据表或删除已经存在的表。
(3)双击“设计”菜单,即可以设计一个新的数据表结构:图3.3是“图书出版基本信息”数据表结构的创建界面,用户可按表3.1定义的结构进行创建即可。
图3.3 “图书出版基本信息”数据表设计用同样的方法,可以创建其他两个数据表,这在后面的系统制作中将会用到。
数据表结构一经创建,用户可以打开该数据表,在数据表输入一些基本数据,以在后面的系统设计中体现设计的效果。
3.4 图书出版管理系统应用程序框架在VC++中创建应用程序,可以通过向导首先创建一个应用程序的框架,应用程序框架为用户提供了一个基本购开发过程。
在这里,首先介绍制作“图书出版管理系统”的基本框架的过程和方法。
其过程如下:(1)启动VC++程序,出现VC+开发平台。
(2)在VC++主菜单中单击“文件|新建”菜单项,出现工程类型选择对话框,在工程类型选择对话框中选择工程类型为“MFC AppWizard [exe]”。
(3)在“工程”编辑框中输入“图书出版管理系统”。
(4)在“位置”列表框中选择“D: \ VC++写作案例\CH3\”。
(5)选择创建新工作区和适应的Win32平台,如图3.4所示。
图3.4 新工程创建设置(6)单击“确定”按钮,出现应用程序类型选择对话框,如图3.5所示。
图3.5 设置应用程序类型(7)在应用程序类型选择对话框中选择“单个文档”、“文档查看体系结构支持”并设置资源语言为“中文”。
(8)单击“下一步”按钮进行进一步的设置;选择包含的数据库,如图3.6所示。
图3.6 选择包含的数据库(9)选择“查看数据库不使用文件支持”返项。
(10)中击“Data Source”按钮,出现图3.7所示的数据源创建对话框。
在数据源连接方式中选择ODBC方式,并通过开关按钮选样“D:\ VC++写作案例\Ch3\图书出版管理系统.mdb”作为系统制作的数据源,如图3.7所示。
图3.7 数据源连接方式与数据源选择在这里我们选择ODBC数据源类型,即选择一种开放式数据源连接的驱动程序类型作为系统的数据源。
往往在单击OK按钮后会出现找不到该数据库文件的信息提示,因为作为ODBC数据源,必须先创建一个数据源名并进行数据源登录。
这里我们将采用一种通用的方法,即在Microsoft Windows98(Microsoft Windows 2000/Me/XP中也一样)中,利用开放式数据源创建与连接的公用程序ODBC进行数据源名称的创建与连接。
其方法如下;(9)打开Microsoft Windows98控制面板。
(10)双击ODBC DataSource(32Bit)程序图标,出现“ODBC数据源管理器”对话框,如图1.13所示。
(11)在“用户数据源”列表框中选择名称为“MS Access Database”的选项。
(12)单击“添加”按钮,然后在出现的对话框中选择使用何种驱动程序来安装数据源。
如图1.14所示。
图1.13 ODBC数据源管理器图1.14 选择安装数据源的驱动程序在图1.14中选择“Microsoft Access Driver(*.mdb)”,作为安装数据源的驱动程序。
(13)单击“完成”按钮,出现数据源安装对话框,如图1.15所示。
图1.15 数据源安装对话框作为所创建或安装的数据源,需要一个数据源名称,以便于在应用系统制作中加以引用和识别,因此,需要为数据源命名,这里我们将其命名为“人事管理数据库”。
然后在图1.15所示对话框中对该数据源进行描述户可以填写如下内容:“该数据库用于创建人事管理系统”。
数据库文件“人事管理数据库”是保存在磁盘文件中的,为此需要引入该数据库作为数据源。
(14)单击“选择”按钮,出现图1.16所示的数据库选取对话框。
图1.16 数据库文件选取选取数据库文件并确认之后,回到图1.15所示对话框,再在图1.15所示对话框中单击“确定”按钮,回到ODBc数琚源管理器对话框,结束数据源的安装过程。
此后可以发现,在ODBC数据源管理器中出现了“人事管理数据库”这样一个数据源,它就是供用户使用的本地机上的ODBC数据源,如图1.17所示。
图1.17数据源安装结束(15)有了本地机上可供用户使用的数据源之后,在图1.12所示对话框的ODBC 列表中选择“人事管理数据库”数据源即可(该数据源就是前面安装的适合于本地机用户使用的ODBC数据源文件)。
(16)单击OK按钮,出现该数据源中的数据表、数据查询或视图的选择对话框,因为在一个数据源也即一个数据库中,往往存在多个数据表、查询或视图。
这里选择的数据表就是“人事管理系统”的单文档界面所使用的数据表“人事管理数据表”,如图1.18所示。
图1.18 选择数据源中的数据表单击OK按钮确认后,即回到数据源设置对话框,如图1.19所示。
图1.19 数据源设置对话框(18)在图3.6所示对话框中单击“完成”按钮,即出现创建应用程序基本框架的全部信息提示:该信息提示总结了创建应用段序框架全部的设置内容,用户可以浏览该信息,如果与需要的设置不符,则需要重新创建应用程序框架,以满足后面程序开发的需要:否则,在后面已经制作了一定内容之后再来修改框架,将造成一定的损失。
单击“确定”按钮后即出现新创建的应用程序的工作区,如图3.8所示。
3.5 开发图书出版基本信息处理对话框在图书出版管理系统中,图书出版的基本信息处理是一个重要的方面,为此我们首先需要创作这样一个界面。
在工程向导生成的两个对话框中,一个是主界面,一个是About对话框。
我们就需要在主界面中制作图书出版的基本信息处理功能。
3.5.1 在对话框中放入控件并进行属性设置对话框的制作开发就是对控件进行开发制作,一个对话框只是—个容器,他可以容纳别的控件并产生作用,为此,制作开发对话框,首先需要在对话框中放入必要的控件,操作步骤如下:(1)删除对话框IDD_MY_FORM中的“TODO:在这个对话框里设置表格控制”文本提示框。
(2)在对话框中放入一些标签控件、分组框控件、编辑框控件及命令按钮控件,对话框布局如图3.9所示。
图3.9 对话框布局其中,标签控件的属性如表3.4所示。
表3.4标签对象的基本属性两个分组框控件的基本属性如表3.5所示。
表3.5 分组框对象的基本属性编辑框控件的属性设置如表3.6所示。
表3.6 编辑框对象的基本属性命令按钮控件的基本属性如表3.7所示。
表3.7 命令按钮对象的基本属性3.5.2 对编辑框进行数据绑定在以上对话框的控件中,除标签控件用于标示之外,编辑框控件必须与数据集进行数据绑定,命令按钮必须进行过程代码编制才能执行相应的任务。
因此用户需要首先将每一个编辑框控件与工程中引入的数据源中的字段进行数据绑定。
如何进行数据绑定呢?由于存在多个编辑框控件,因此我们仅以“图书编号”编辑框控件的数据绑定为例加以说明,其他编辑框控件的数据绑定操作可以如法炮制。
首先修改数据源的字段映射的成员变量,其方法如下:(1)用鼠标选中编辑框IDC_EDIT_BH控件,然后单击鼠标右键,出现一个快捷菜单。
(2)快捷菜单中单击“建立类向导”菜单项,出现一个消息映射对话框。
(3)将消息映射选项卡切换到“成员变量”选项卡,如图3.10所示。
图3.10 “成员变量”选项卡(4)在“成员变量”选项卡的Class name列表框中选择数据集CmySet,此时将出现创建数据源时产生的数据源字段的全部成员变量。
往往全部字段的成员变量名为自动生成的,而且按自然编号排列,这样在建立编辑框与字段映射时很不方便,因此需要修改其数据集中全部字段的成员变量名称,通常按字段名称的中文拼音字母重新定义字段的成员变量,重新定义字段的成员变量之前,需要先删除原字段成员变量,然后再单击“增加成员变量”按钮定义新的成员变量,其全部字段的成员变量如图3.11所示。
图3.11 重新定义成员变量的结果接下来,我们就可以为“图书编号”编辑框控件与字段成员变量进行映射。
(5)在图3.11所示的对话框的Class name列表框中选择CmyView,出现对话框全部成员列表,如图3.12所示。
图3.12 成员名称列表(6)在成员名称列表中选择IDC_EDIT_BH编辑框,然后单击Add Variable 按钮,出现选择字段映射成员变量的列表框,在字段映射成员变量列表框中选择“图书编号”字段的成员变量名称即可,如图3.13所示。