图书管理系统源程序
#include
#include
#include
struct Book{
int num; //图书的编号
char name[80]; //图书的名字
char author[80]; //图书作者
double price; //图书价格
int time; //出版日期
char pub[80]; //图书的出版社
char kind[80]; //图书的类别
struct Book *next;
};
struct Book * Create(); //创建图书信息
struct Book * addlist(struct Book *head,struct Book *book); //增加新图书信息int yanzheng(struct Book *head,int m); //验证编号是否存在
void menu(); //菜单函数
struct Book * Delete(struct Book *head); //删除图书
void traverse(struct Book *head); //浏览图书
void find(struct Book *head); //查找图书
void find_num(struct Book *head); //按图书编号查找
void find_name(struct Book *head); //按书名查找
void find_kind(struct Book *head); //按图书类别查找
void find_author(struct Book *head); //按图书作者名查找
void find_time(struct Book *head); //按图书出版时间查找
void change(struct Book *head); //修改图书信息
struct Book *sort(struct Book*head); //为图书排序
struct Book *sort_num(struct Book*head);
void order_num(struct Book *temp_head); //按图书编号排序。。。
void order_name(struct Book *temp_head); //按图书名排序
void order_time(struct Book *temp_head); //按图书出版时间排序
void fprint(struct Book *head); //将链表写入文件
struct Book *load(); //从文件中读取信息并建成链表
int main(void)
{
menu(); //调用菜单函数
return 0;
}
void menu()
{
struct Book *head = NULL,*p;
int choice;
int num,time;
double price;
char name[80],author[80];
char kind[80],pub[80];
int size = sizeof(struct Book);
char choice1,a;
int y=1,n,c,c1=123;
char b[10],b1[10]="zgy";
char answer;
while(y){
system("cls");
printf("\n");
printf("\t\t 班级:软件工程1102 \n ");
printf("\t\t 学号:201116040221 \n ");
printf("\t\t 姓名:张国宇\n "); there2:
printf("\n");
printf("\t\t--------------------------------\n");
printf("\t\t|********** 欢迎光临***********|\n");
printf("\t\t|****** 图书信息管理系统*******|\n");
printf("\t\t|==========1-用户登录===========|\n");
printf("\t\t|==========0-退出系统===========|\n");
printf("\t\t--------------------------------\n");
printf(" 请输入您的选择:");
scanf("%d",&n);
printf("\n");
getchar();
switch(n){
case 0:
y=0;
break;
case 1:
there3:
printf(" 请输入您的用户名(zgy):");
gets(b);
printf("\n");
printf(" 请输入您的密码(123):");
scanf("%d",&c);
getchar();
printf("\n");
if(strcmp(b,b1)!=0||c!=c1){
printf(" 验证失败,请重新输入!\a\n");
system("cls");
goto there3;
}
else{
printf(" 验证通过!请按Enter键进入!\a\n");
system("cls");
do{
there1:
printf("\t\t-------欢迎使用图书管理系统---------\n");
printf("\t\t[******图书管理系统菜单*****]\n");
printf("\t\t[******1.图书信息输入*******]\n");
printf("\t\t[******2.新图书信息录入*****]\n");
printf("\t\t[******3.图书信息浏览*******]\n");
printf("\t\t[******4.图书信息查找*******]\n");
printf("\t\t[******5.图书信息排序*******]\n");
printf("\t\t[******6.图书信息修改*******]\n");
printf("\t\t[******7.删除图书信息*******]\n");
printf("\t\t[******0.退出***************]\n");
printf("请输入你的选择:\n");
scanf("%d",&choice);
switch(choice){
case 1:
printf("此操作将清空文件内所有信息,是否确认?确认'Y'返回'N'。\n"); //若新建,则文件夹里的信息会被清空,故需要这步判断。。。
scanf("%s",&choice1);
getchar();
if(choice1=='Y'||choice1=='y'){
head = Create();
printf("添加成功!\n");
printf("是否将新信息保存到文件?(y/n)\n");
scanf("%c",&a);
getchar();
switch(a){
case 'n':
break;
case 'y':
fprint(head);
traverse(head);
printf("保存成功!\n");
getchar();
break;
}
system("PAUSE");
system("cls");
}
else{
system("PAUSE");
system("cls");
goto there1;
}
break;
case 2:
head=load(); //读入文件的内容,下同
there:
do{
printf("请输入新图书编号:");
scanf("%d",&num);
n=yanzheng(head,num);
if(n==0)
break;
else
printf("您输入的编号已存在,请重新输入!\n");
}while(1);
getchar();
printf("请输入新图书书名:");
gets(name);
printf("请输入新图书作者:");
gets(author);
printf("请输入新图书的出版社名字:");
gets(pub);
printf("请输入新图书种类:");
gets(kind);
printf("请输入新图书的价格:");
scanf("%lf",&price);
getchar();
printf("请输入新图书的出版日期:");
scanf("%d",&time);
getchar();
printf("\n");
p = (struct Book*)malloc(size);
p ->num = num;
strcpy(p ->name ,name);
strcpy(p ->author,author);
p ->price = price;
p ->time = time;
strcpy(p ->pub ,pub);
strcpy(p ->kind,kind);
p->next = NULL;
head=addlist(head,p);
printf("请选择是否继续添加:Y继续;N 结束;\n");
scanf("%c",&answer);
if(answer=='Y'||answer=='y')
goto there;
printf("添加成功!\n");
head=sort_num(head); //调入函数,使得图书默认按照图书编号排序
fprint(head); //写入文件
traverse(head);
system("PAUSE");
system("cls");
break;
case 3:
head=load(); //若不输入,直接从文件夹里录入,则需要传递头指针。。。下同。。。
traverse(head); //遍历图书信息
system("PAUSE");
system("cls");
break;
case 4:
head=load();
find(head);
system("PAUSE");
system("cls");
break;
case 5:
head=load();
head=sort(head); //为图书排序
printf("排序成功!\n");
fprint(head);
traverse(head);
system("PAUSE");
system("cls");
break;
case 6:
head=load();
change(head); //修改图书信息
system("PAUSE");
system("cls");
break;
case 7:
head=load();
head=Delete(head); //删除图书
fprint(head);
system("PAUSE");
system("cls");
break;
case 0:
break;
default:
printf("无效选项!请重新输入。\n");
goto there1;
system("PAUSE");
break;
}
}while(choice != 0);
}
break;
default:
printf(" 无效选项!请重新输入。\n");
system("PAUSE");
system("cls");
goto there2;
system("PAUSE");
break;
}
break;
}
}
//创建图书信息
struct Book * Create()
{
struct Book *head,*p,*tail;
int num,time;
double price;
char name[80],author[80];
char kind[80],pub[80];
int size = sizeof(struct Book);
head = tail = NULL;
printf("请输入图书编号:");
scanf("%d",&num);
getchar();
while(num != 0){
printf("请输入图书书名:");
gets(name);
printf("请输入图书作者:");
gets(author);
printf("请输入图书的出版社名字:");
gets(pub);
printf("请输入图书种类:");
gets(kind);
printf("请输入图书的价格:");
scanf("%lf",&price);
getchar();
printf("请输入图书的出版日期:");
scanf("%d",&time);
getchar();
printf("\n");
p = (struct Book*)malloc(size);
p ->num = num;
strcpy(p ->name ,name);
strcpy(p ->author,author);
p ->price = price;
p ->time = time;
strcpy(p ->pub ,pub);
strcpy(p ->kind,kind);
p->next = NULL;
if(head == NULL)
{
head = tail = p;
}
else
{
tail->next = p;
tail = p;
}
printf("请输入图书编号(按0即可结束输入):");
scanf("%d",&num);
getchar();
}
return head;
}
//添加新图书信息
struct Book *addlist(struct Book *head,struct Book *book) //默认添加到图书的最后。{
struct Book *ptr,*ptr1;
ptr1=head;
ptr =book;
if(head== NULL){
head = ptr;
head->next = NULL;
}
else {
while(ptr1->next!=NULL){
ptr1=ptr1->next;
}
ptr1->next=ptr;
ptr->next=NULL;
}
return head;
}
//验证添加的图书编号是否已存在
int yanzheng(struct Book *head,int m)
{
struct Book *p;
p=head;
while(p!=NULL){
if(p->num==m)
break;
p=p->next;
}
if(p==NULL)
return 0;
else
return 1;
}
//浏览图书信息
void traverse(struct Book *head)
{
struct Book *ptr;
if(head==NULL){
printf("\n无图书信息!\n");
getchar();
return;
}
else{
printf(" 图书信息列表如下\n");
printf("\t=============================================================== =================\n");
printf("\t| 编号| 图书名|作者名|出版社|类别|出版时间|价格|\n");
for(ptr=head;ptr!=NULL;ptr=ptr->next){
printf("\t|%-6d|%-14s|%-10s |%-14s |%-8s |%-8d |%-7.2f |\n",ptr->num,ptr->name,ptr->author,ptr->pub,ptr->kind,ptr->time,ptr->price);
}
printf("\t============================================================ ====================\n");
}
}
//删除图书信息
struct Book * Delete(struct Book *head)
{
struct Book *p1,*p2;
int num;
if(head == NULL)
{
printf("无图书信息!请先录入信息!\n");
return head;
}
else{
printf("请输入你要删的书号:");
scanf("%d",&num);
getchar();
if(head->num ==num){ //删除头指针数据
p1=head;
head=head->next;
free(p1);
printf("删除成功!\n");
return head;
}
else{
p1= head;
p2= head->next;
while(p2!=NULL){
if(p2->num==num){
p1->next = p2->next;
free(p2);
printf("删除成功!\n");
return head;
}
else{
p1=p2;
p2=p1->next;
}
if(p2==NULL){
printf("你输入的图书不存在!请重新输入。\n");
break;
}
}
}
}
return head;
}
//将新链表写入文件中
void fprint(struct Book *head)
{
FILE *fp;
struct Book *p1;
if((fp=fopen("图书信息.txt","w"))==NULL){
printf("文件图书信息打开失败!\n");
exit(0);
}
for(p1=head;p1;p1=p1->next){
fprintf(fp,"%d %s %s %s %s %d %lf\n",p1->num,p1->name,p1->author,p1->pub,p1->kind,p 1->time,p1->price);
}
fclose(fp);
}
//从文件中读取图书信息
struct Book *load()
{
FILE *fp;
struct Book *head,*tail,*p1;
head=tail=NULL;
if((fp=fopen("图书信息.txt","r"))==NULL){ //判断是否为空,如果为空就关闭了直接返回null,如果不是空文本那就把这个关了下面重新打开文本
printf("文件图书信息打开失败!\n");
exit(0);
}
int isend=fgetc(fp);//用于判断是否是空文本
fclose(fp);
if(isend!=-1){
if((fp=fopen("图书信息.txt","r"))==NULL){
printf("文件图书信息打开失败!\n");
exit(0);
}
while(!feof(fp)){
p1=(struct Book *)malloc(sizeof(struct Book));
fscanf(fp,"%d%s%s%s%s%d%lf\n",&p1->num,p1->name,p1->author,p1->pub,p1->kind,&p 1->time,&p1->price);
if(head==NULL)
head=p1;
else
tail->next=p1;
tail=p1;
}
tail->next=NULL;
fclose(fp);
}
return head;
}
//查找图书
void find(struct Book *head)
{
int a;
printf("\t\t=================================\n");
printf("\t\t[****图书管理系统查找菜单*******]\n");
printf("\t\t[******1.按图书编号查询*********]\n");
printf("\t\t[******2.按图书名查询***********]\n");
printf("\t\t[******3.按图书类别查询*********]\n");
printf("\t\t[******4.按作者名查询***********]\n");
printf("\t\t[******5.按出版时间查询*********]\n");
printf("\t\t[******0.退出查询***************]\n");
printf("\t\t=================================\n");
printf("请输入你的选择:");
scanf("%d",&a);
getchar();
switch(a){
case 0:
break;
case 1:
find_num(head);
break;
case 2:
find_name(head);
break;
case 3:
find_kind(head);
break;
case 4:
find_author(head);
break;
case 5:
find_time(head);
break;
default:
printf("您的输入有误!\n");
break;
}
}
//根据图书编号查找图书信息
void find_num(struct Book *head)
{
struct Book *p;
int num;
printf("请输入你要查找的图书书号:\n");
scanf("%d",&num);
getchar();
p=head;
while(p!=NULL)
{
if(p->num==num)
break;
p=p->next;
}
if(p==NULL){
printf("你查找的图书不存在!");
return;
}
else{
printf(" 你要查找的图书信息如下\n");
printf("\t=============================================================== =================\n");
printf("\t| 编号| 图书名|作者名|出版社|类别|出版时间|价格|\n");
printf("\t|%-6d|%-14s|%-10s |%-14s |%-8s |%-8d |%-7.2f |\n",p->num,p->name,p->author,p->pub,p->kind,p->time,p->price);
printf("\t============================================================ ====================\n");
}
return;
}
//按书名查找图书
void find_name(struct Book *head)
{
struct Book *p;
char name[20];
int a=0;
printf("请输入你要查找的图书书名:\n");
gets(name);
p=head;
while(p!=NULL)
{
if(strcmp(p->name,name)==0){
a=1;
break;
}
p=p->next;
}
if(a==0){
printf("你查找的图书不存在!");
return;
}
else{
printf(" 你要查找的图书信息如下\n");
printf("\t=============================================================== =================\n");
printf("\t| 编号| 图书名|作者名|出版社|类别|出版时间|价格|\n");
while(p!=NULL){
if(strcmp(p->name,name)==0){
printf("\t|%-6d|%-14s|%-10s |%-14s |%-8s |%-8d |%-7.2f |\n",p->num,p->name,p->author,p->pub,p->kind,p->time,p->price);
}
p=p->next;
}
printf("\t============================================================ ====================\n");
}
return;
}
//按图书类别查找
void find_kind(struct Book *head)
{
struct Book *p;
char kind[20];
int a=0;
printf("请输入你要查找的图书类别:\n");
gets(kind);
p=head;
while(p!=NULL)
{
if(strcmp(p->kind,kind)==0){
a=1;
break;
}
p=p->next;
}
if(a==0){
printf("你查找的图书不存在!");
return;
}
else{
printf(" 你要查找的图书信息如下\n");
printf("\t=============================================================== =================\n");
printf("\t| 编号| 图书名|作者名|出版社|类别|出版时间|价格|\n");
while(p!=NULL){
if(strcmp(p->kind,kind)==0){
printf("\t|%-6d|%-14s|%-10s |%-14s |%-8s |%-8d |%-7.2f |\n",p->num,p->name,p->author,p->pub,p->kind,p->time,p->price);
}
p=p->next;
}
printf("\t============================================================ ====================\n");
}
return;
}
//按图书作者名字查找图书信息
void find_author(struct Book *head)
{
struct Book *p;
char author[20];
int a=0;
printf("请输入你要查找的图书作者名:\n");
gets(author);
p=head;
while(p!=NULL)
{
if(strcmp(p->author,author)==0){
a=1;
break;
}
p=p->next;
}
if(a==0){
printf("你查找的图书不存在!");
return;
}
else{
printf(" 你要查找的图书信息如下\n");
printf("\t=============================================================== =================\n");
printf("\t| 编号| 图书名|作者名|出版社|类别|出版时间|价格|\n");
while(p!=NULL){
if(strcmp(p->author,author)==0){
printf("\t|%-6d|%-14s|%-10s |%-14s |%-8s |%-8d |%-7.2f |\n",p->num,p->name,p->author,p->pub,p->kind,p->time,p->price);
}
p=p->next;
}
printf("\t============================================================ ====================\n");
}
return;
}
//按图书出版时间查找
void find_time(struct Book *head)
{
struct Book *p;
int a=0,time;
printf("请输入你要查找的图书的出版时间:\n");
scanf("%d",&time);
p=head;
while(p!=NULL)
{
if(p->time==time){
a=1;
break;
}
p=p->next;
}
if(a==0){
printf("你查找的图书不存在!");
return;
}
else{
printf(" 你要查找的图书信息如下\n");
printf("\t=============================================================== =================\n");
printf("\t| 编号| 图书名|作者名|出版社|类别|出版时间|价格|\n");
while(p!=NULL){
if(p->time==time){
printf("\t|%-6d|%-14s|%-10s |%-14s |%-8s |%-8d |%-7.2f |\n",p->num,p->name,p->author,p->pub,p->kind,p->time,p->price);
}
p=p->next;
}
printf("\t============================================================ ====================\n");
}
return;
}
//修改图书信息
void change(struct Book *head)
{
int num,b;
char c;
struct Book *p;
printf("请输入要修改的图书编号:");
scanf("%d",&num);
p=head;
while(p!=NULL){
if(p->num==num)
break;
p=p->next;
}
if(p==NULL){
printf("没有找到该编号的图书!\n");
getchar();
}
else{
printf("\t\t=================================\n");
printf("\t\t[****图书管理系统修改菜单*******]\n");
printf("\t\t[******1.修改图书编号***********]\n");
printf("\t\t[******2.修改图书名*************]\n");
printf("\t\t[******3.修改作者名*************]\n");
printf("\t\t[******4.修改图书出版社*********]\n");
printf("\t\t[******5.修改图书类别***********]\n");
printf("\t\t[******6.修改出版时间***********]\n");
printf("\t\t[******7.修改图书价格***********]\n");
printf("\t\t[******8.修改图书全部***********]\n");
printf("\t\t[******0.退出查询***************]\n");
printf("\t\t=================================\n");
printf("请选择你的选择:");
scanf("%d",&b);
getchar();
switch(b){
case 1:
printf("请输入新编号:");
scanf("%d",&p->num);
printf("修改成功!\n");
getchar();
break;
case 2:
printf("请输入新图书名:");
gets(p->name);
printf("修改成功!\n");
break;
case 3:
printf("请输入新作者名:");
gets(p->author);
printf("修改成功!\n");
break;
case 4:
printf("请输入新出版社:");
gets(p->pub);
printf("修改成功!\n");
break;
case 5:
printf("请输入新类别:");
gets(p->kind);
printf("修改成功!\n");
break;
case 6:
printf("请输入新出版时间:");
scanf("%d",&p->time);
printf("修改成功!\n");
getchar();
break;
case 7:
printf("请输入新价格:");
scanf("%f",&p->price);
printf("修改成功!\n");
getchar();
break;
case 8:
printf("请输入新图书编号:");
scanf("%d",&p->num);
printf("请输入新图书名:");
scanf("%s",p->name);
getchar();
printf("请输入新作者名:");
scanf("%s",p->author);
getchar();
printf("请输入新出版社:");
scanf("%s",p->pub);
getchar();
printf("请输入新类别:");
scanf("%s",p->kind);
getchar();
printf("请输入新出版时间:");
scanf("%d",&p->time);
getchar();
printf("请输入新价格:");
scanf("%lf",&p->price);
getchar();
printf("修改成功!\n");
getchar();
break;
case 0:
break;
default :
printf("您的输入有误!\n");
break;
}
printf("是否将修改后的信息保存到文件中?(y/n)\n");
scanf("%c",&c);
getchar();
switch(c){
case 'y':
fprint(head);
printf("保存成功!\n");
getchar();
break;
case 'n':
break;
}
}
}
struct Book * sort(struct Book *head)
{
附录 主页面(MDImain): Private Sub addbook_Click() add_book.Show End Sub Private Sub addreader_Click() add_reader.Show End Sub Private Sub adduser_Click() add_user.Show End Sub Private Sub backbook_Click() back_book.Show End Sub Private Sub borrowbook_Click() borrow_book.Show End Sub Private Sub cuibackbook_Click() cuiback_book.Show End Sub Private Sub findbook_Click() find_book.Show End Sub Private Sub findreader_Click() find_reader.Show End Sub Private Sub MDIForm_Load() End Sub Private Sub modifybook_Click() change_book.Show End Sub Private Sub modifypwd_Click()
change_pwd.Show End Sub Private Sub modifyreader_Click() change_reader.Show End Sub Private Sub delbook_Click() del_book.Show End Sub Private Sub delreder_Click() del_reader.Show End Sub Private Sub quitsys_Click() End End Sub 登陆(login): Option Explicit Dim cnt As Integer '记录确定次数 Private Sub Command1_Click() Dim sql As String Dim rs_login As New ADODB.Recordset If Trim(txtuser.Text) = "" Then '判断输入的用户名是否为空MsgBox "没有这个用户", vbOKOnly + vbExclamation, "" txtuser.SetFocus Else sql = "select * from 用户表where 用户名='" & txtuser.Text & "'" rs_login.Open sql, conn, adOpenKeyset, adLockPessimistic If rs_login.EOF = True Then MsgBox "没有这个用户", vbOKOnly + vbExclamation, "" txtuser.SetFocus Else '检验密码是否正确 If Trim(rs_login.Fields(1)) = Trim(txtpwd.Text) Then userID = txtuser.Text userpow = rs_login.Fields(2) rs_login.Close Unload Me MsgBox "欢迎登录到图书管理系统!", vbOKOnly + vbExclamation, "" MDImain.Show Else
目录一:需求分析 二:系统设计 1.系统功能模块的设计 2.系统主要工作流程 三:系统数据库的设计1.概念设计 2.关系数据库的逻辑设计 四:总结
图书管理系统 一:需求分析 图书管理系统需要满足来自图书馆工作人员、普通用户和借阅者三方面人员的需求。图书馆工作人员对图书借阅者的借阅及还书要求进行操作,同时形成借书或还书报表给借阅者查看确认,还可通过图书编号、借阅者证号等查询相应的借阅情况及查看已归还的图书信息(即历史信息);普通用户的需求是查询图书馆所存的图书的相关情况;图书借阅者的需求是查看自己的相关信息及查询自己的借阅情况。 图书借阅者可直接查看图书馆图书情况,如果图书借阅者根据本人借书证号和密码登录系统,还可以进行本人借书情况的查询和维护部分个人信息。一般情况下.图书借阅者只应该查询和维护本人的借书情况和个人信息.若查询和维护其他借阅者的借书情况和个人信息.就要知道其他图书借阅者的借书证号和密码。本功能实现对馆内图书信息的查询。可以通过图书名称、作者的名字和出版社来查询相应的图书信息,此查询可模糊查询也可精确查询。所以不但满足了图书借阅者的要求,还保护了图书借阅者的个人隐私。 图书馆工作人员有对图书借阅者借书和还书记录进行操作的权限,所以需对工作人员登陆本模块进行更多的考虑。在此模块中,图书馆工作人员可以为图书借阅者加入借书记录或是还书记录,并生成
相应的报表给用户查看和确认。图书馆工作人员可以浏览、查询、统计、添加借阅图书的基本信息及删除已归还的图书的基本信息,但不能删除和修改已经借阅的图书相关信息,当删除某条图书借阅的基本信息记录时,应实现对该图书借阅者借阅记录的级联删除。本功能实现对图书信息的管理和统计。 图书馆管理人员功能的信息量大,数据安全性和保密性要求最高。本功能实现对图书信息、借阅者信息、总体借阅情况信息的管理和统计、工作人员和管理人员信息查看及维护。图书馆管理员可以浏览、查询、添加、删除、修改、统计图书的基本信息;浏览、查询、统计、添加、删除和修改图书借阅者的基本信息,浏览、查询、统计图书馆的借阅信息,但不能添加、删除和修改借阅信息,这部分功能应该由图书馆工作人员执行。但是,删除某条图书借阅者基本信息记录时,应实现对该图书借阅者借阅记录的级联删除,并且还应具有生成催还图书报表.并打印输出的功能。 二:系统设计 1.系统功能模块的设计 该系统的主要功能有对书籍信息的管理,书籍信息的查询,对用户的管理等,对各项能进行分块、集中、关联、优化,按照结构化程序设计的要求,设计功能模块如图所示。
图书管理系统 系统功能: 1.借书:根据借书人提出的图书编号(id)查询该图书,如果该图书现存量(store)不为0,则提示输入借阅者的学号(num),为借书人办理借书手续,提示用户该书已被 借出。 2.归书:根据借书人的学号查询该读者的信息,若有该读者,则提示输入所借书籍的编号(id),为该读者办理还书手续,提示该书已还。 3.书籍管理:弹出书籍管理界面,输入所要执行操作的号码: (1)增加书籍:弹出注册新书的窗口,按照提示输入所增加书籍的信息,最后,提示用户该书已被注册。 (2)删除书籍:弹出删除书籍的窗口,输入所要删除书籍的编号(id),输出该书的信息,确认是否删除该书,1为删除,0为放弃。 (3)修改书籍:弹出修改书籍的窗口,输入所要修改书籍的编号(id),输出该书的信息,确认是否修改该书,1为修改,0为放弃。之后按照提示重新输入书籍的信息。 4.读者管理:弹出读者管理界面,输入所要执行操作的号码: (1)增加读者:弹出注册读者的窗口,按照提示输入所增加读者的信息,最后,提示用户该读者已被注册。 (2)删除书籍:弹出删除读者的窗口,输入所要删除读者的学号(num),输出该读者的信息,确认是否删除该读者,1为删除,0为放弃。 (3)修改书籍:弹出修改读者的窗口,输入所要修改读者的学号(num),输出该读者的信息,确认是否修改该读者,1为修改,0为放弃。之后按照提示重新输入读者的信息。 5.搜索:此搜索包括两方面的搜索,书籍搜索以及读者搜索,弹出搜索的窗口,按照提示输 入所要搜索的内容,1为书籍搜索,2为读者搜索: (1)搜索书籍:弹出搜索书籍的窗口,按照提示输入所要搜索的方式,包括按<1>书名搜索, <2>书号搜索,<3>作者搜索,<4>出版社搜索,<5>出版时间搜索;根据所选方式输入相 应的内容,若是该书籍存在,则输出该书籍的信息,否则,返回主界面。 (2)搜索读者:弹出搜索读者的窗口,按照提示输入所要搜索的方式,包括按<1>名字搜索, <2>学号搜索;根据所选方式输入相应的内容,若是该读者存在,则输出该读者的信息, 否则,返回主界面。 6.退出:退出图书管理系统。 图书类设计:
目录 题目简述 -------------------------------- 01 需求分析 -------------------------------- 01 数据结构 -------------------------------- 01 功能模块 -------------------------------- 02 程序设计 -------------------------------- 02 运行截图 -------------------------------- 04 分析总结 -------------------------------- 08 程序源码 -------------------------------- 08
图书信息管理系统 题目简述: 题目名称:图书信息管理系统 要求:使用图形用户界面,用数据库建立1或2个图书信息表,能连接数据库并实现查询、增加、删除、修改等功能。 需求分析: 图书信息管理系统应该具备图书的信息管理功能和流通管理功能。其中,信息管理功能包括查找,增加,修改,删除,显示全部信息等模块。流通管理功能包括图书借阅,归还等模块。因此分别设计各个模块,实现不同的功能。 数据结构: 用SQL Sever 建立数据库的表,用一张表存放图书的ID号码,图书名称,图书的所有者,图书状态,图书的使用者(允许为空)。具体设计如下图所示: 图书ID,图书名称,图书所有者,图书的状态,图书使用者(允许为空)均为varchar(50)类型,在Java中可以方便的查询。图书存储信息的具体内容如下图所示:
功能模块: 程序设计: 主框架设计: 主框架上方包含三个按钮,分别是“系统管理”、“图书信息管理”和“图书流通管理”,定义JMenuBar类的对象、JMenu类的对象和JMenuItem类的对象,分别表示菜单栏、菜单组和菜单选项,然后调用初始化函数,将不同类的对象通过setText()函数设定不同的文本,然后将其添加到窗口容器中。对每个按钮分别添加不同的消息监听,响应相应的消息,调用不同的类完成不同的功能。消息监听功能详见源代码bookMain类。 图书信息管理模块包括增加图书,删除图书,编辑图书,查找图书和显示图书信息。具体的方法实现在bookBean中实现,当用户点击相应的按钮时,消息监听模块就会调用bookBean的构造函数产生一个bookBean的对象,然后通过对象调用bookBean类中的相应方法,完成事件的相应。 增加图书信息模块: 调用bookAdd类的构造函数产生一个该类的对象,在初始化函数中显示信息输入对话
图书管理系统功能性需求说明如下: ?图书管理系统能够为一定数量的借阅者提供服务。每个借阅者能够拥有唯 一标识其存在的编号。图书馆向每一个借阅者发放图书证,其中包含每一 个借阅者的编号和个人信息。提供的服务包括:提供查询图书信息、查询 个人信息服务和预定图书服务等。 ?当借阅者需要借阅图书、归还书籍时需要通过图书管理员进行,即借阅者 不直接与系统交互,而是通过图书管理员充当借阅者的代理和系统交互。 ?系统管理员主要负责系统的管理维护工作,包括对图书、数目、借阅者的 添加、删除和修改。并且能够查询借阅者、图书和图书管理员的信息。 ?可以通过图书的名称或图书的ISBN/ISSN号对图书进行查找。 回答下面问题: 1)该系统中有哪些参与者? 2)确定该系统中的类,找出类之间的关系并画出类图 3)画出语境“借阅者预定图书”的时序图 2.(1)借阅者图书管理员系统管理员 (2)用户类、用户角色类、图书类、预定类、借阅类、书目类 (3)时序图
网络的普及带给了人们更多的学习途径,随之而来的管理远程网络教学的“远程网络教学系统”诞生了。 “远程网络教学系统”的功能需求如下: ●学生登录网站后,可以浏览课件、查找课件、下载课件、观看教学视频。 ●教师登录网站后,可以上传课件、上传教学视频、发布教学心得、查看教 学心得、修改教学心得。 ●系统管理员负责对网站页面的维护、审核不合法课件和不合法教学信息、 批准用户注册。 1)学生需要登录“远程网络教学系统”后才能正常使用该系统的所有功能。 如果忘记密码,可与通过“找回密码”功能恢复密码。请画出学生参与者 的用例图。 2)教师如果忘记密码,可以通过“找回密码”功能找回密码。请画出教师参与者的用例图。 (1)用例图一
第一章需求分析 1.1设计内容 利用c++的文件操作能力设计开发一个小型的图书管信息管理系统,至少具有如下功能:查寻所有图书信息、通过输入图书编号来完成查找某一本图书信息、添加图书信息、删除图书信息以及通过学生学号实现图书借阅功能。操作界面要符合用户的一般习惯,界面易于读者明白理解,图形或文本界面都可以。 1.2 设计任务 要求:明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用高级语言进行程序设计的能力,重点提高用C++进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。掌握模块化编程的基本方法与步骤;巩固和加深学生对C++课程基本知识的理解与掌握,培养学生利用C++进行软件操作的能力和技巧。 1.3 基本要求 (1)通过提示菜单选择可以进行的操作。 (2)将图书的信息存入文件中,并命名为BookInfo.txt。 (3)将图书借阅情况信息存入文件中,并命名为SendInfo.txt。 (4)在本系统中可以进行管理系统包含的基本操作,其中包括: a)查看所有图书的信息。
b)输入一本图书的图书编号,从当前图书中进行查找,如果找到则显示该图书的相关信息,如果没有找到则给出提示信息。 c)添加一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存在则提示重新输入,否则将该图书按照顺序插入到相应位置。 d)删除一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存在则将该图书删除,否则给出提示信息,提示该图书不存在。 e)借阅一本图书,需要给出学号和图书编号,如果图书编号不存在则重新输入,直到输入正确为止,并将学号和相应的图书编号存入SendInfo.txt文件中。 (5)图书基本信息包括图书编号、书名、作者、出版社和价钱这些简单信息。 (6)图书信息文件中每一行存放一本图书的信息。 (7)借阅信息文件中每一行存放一本书的借阅情况。 (8)对老师.学生的信息进行登记处理,包括姓名、学号教师编号、学院班级等。 (9)对图书的金额进出管理,对一丢失的图书进行处罚、对超期归还的图书进行赔偿金额计算。 第二章系统功能设计
源程序清单 1、文件名 login(login.frm) 功能说明:整个系统的登陆界面,需要输入用户名和登陆密码才能进入到系统中,进行借阅等操作。 源代码: Option Explicit Dim cnt As Integer Private Sub Command1_Click() Dim sql As String Dim rs_login As New ADODB.Recordset If Trim(Combo1.Text) = "" Then MsgBox "没有这个用户", vbOKOnly + vbExclamation, "" Combo1.SetFocus Else sql = "select * from 系统管理 where 用户名='" & Combo1.Text & "'" rs_login.Open sql, conn, adOpenKeyset, adLockPessimistic If rs_login.EOF = True Then MsgBox "没有这个用户", vbOKOnly + vbExclamation, "" Combo1.SetFocus Else If Trim(rs_login.Fields(1)) = Trim(txtpwd.Text) Then userID = Combo1.Text rs_login.Close Unload Me form1.Show Else MsgBox "密码不正确", vbOKOnly + vbExclamation, "" txtpwd.SetFocus End If
End If cnt = cnt + 1 If cnt = 3 Then Unload Me End If Exit Sub End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() Dim connectionstring As String connectionstring = "provider=Microsoft.Jet.oledb.4.0;" & _ "data source=book.mdb" conn.Open connectionstring cnt = 0 End Sub Private Sub txtuser_Change() End Sub 2、文件名 form1(form1.frm) 功能说明:整个系统的主界面,其中包括图书管理、读者管理、图书借阅管理、系统管理、关于,以及在这下面的子菜单。 源代码: Private Sub add_admin_Click() frmadduser.Show End Sub Private Sub add_back_book_Click() frmbackbookinfo.Show
1.1程序设计代码 登录模块 if(username.Text.Trim()==""||password.Text.Trim()=="") MessageBox.Show("请输入用户名和密码","提示"); else { if (radioManage.Checked == true) { string strcon = "Data Source=SIMON-VAIO;Initial Catalog=lkl2;Integrated Security=True;"; //连接数据库的字符串,用于指定数据库地址,名称,账号,密码,连接方式SqlConnection sqlCon = new SqlConnection(strcon); //实例化并定义一个数据库连接 sqlCon.Open(); //打开数据库连接 string sql = "select * from login where usernum=usernum and userpassword=suerpassword"; //定义要查询sql语句 SqlCommand cmd = new SqlCommand(sql, sqlCon); //实例化并定义sql语句和数据库路径 cmd.Parameters.Add("usernum", SqlDbType.NChar, 20); //定义cmd查询命令的字段属性,loginname sqldbtype nchar(20) cmd.Parameters.Add("suerpassword", SqlDbType.NChar, 20); //同上 cmd.Parameters["usernum"].Value = username.Text; //将username中的text保存到变量loginname cmd.Parameters["suerpassword"].Value = password.Text; //同上 SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) { this.Visible=false; Form2 Formmain = new Form2(); //应该是实例化一个主窗体的 this.Hide(); //应该是切换到主窗口的或关闭自己的 Formmain.Show(); //应该是打开一个主窗体的 dr.Close();//关闭dr的数据库连接 } else// if (dr.Read())读取失败则执行如下代码 MessageBox.Show("密码错误,请重新输入!"); //显示提示信息 } else if (radioPerson.Checked==true)
基于java的图书管理系统源代码声明:本系统是基于C/S的图书管理系统,主要使用的是Oracle数据库,下面附所有实现代码 package library; import java.awt.BorderLayout; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.ResultSet; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; public class book_add extends JFrame implements ActionListener{ DataBaseManager db=new DataBaseManager(); ResultSet rs; JPanel panel1,panel2; JLabel book_id_label,book_name_label,author_label, press_label,press_date_label,price_label,book_num_label,borrowed_num _label,a ddress;
基于UML的图书馆管理系统建模设计 一、摘要 面向对象的软件工程,同传统的面向过程的软件工程相比,在需求的获取、系统分析、设计和实现方面都有着很大的区别。UML是OOA和OOD的常用工具。使用UML来构建软件的面向对象的软件工程的过程,就是一个对系统进行不断精化的建模的过程。这些模型包括用例模型、分析模型、设计模型,然后,我们需要使用具体的计算机语言来建立系统的实现模型。当然,在整个软件工程中,我们还需要建立系统的测试模型,以保证软件产品的质量。 使用面向对象的工具来构建系统,就应该使用面向对象的软件工程方法。然而,我们经常会发现,在实际的开发过程中,很多开发人员虽然能够理解UML的所有图形,却仍然不能得心应手的使用UML来构建整个项目,其很大的原因,是仍然在使用原有的软件工程方法,而不清楚如何使用UML来建立系统的这些模型,不清楚分析和设计的区别,以及他们之间的转化。 应用软件系统,就其本质来说,是使用计算机对现实世界进行的数字化模拟。应用软件的制造过程,按照UML的方法,就是建立这一系列模型的过程。关于这个图书馆系统,基本的需求比较简单,就是允许学生可以在图书馆借阅和归还图书,另外,也可以通过网络或者图书馆的终端来查阅和预订书。当然,图书馆管理员也可以对图书进行管理。为了简化系统,我们没有把图书馆中的人员作细分。 本文只是对使用UML的过程做一个探讨,着眼于使用UML进行建模的过程,说明各个层次的模型之间的区别和联系,展示系统演进的过程,而不会深入UML的细节方面。对于更加复杂的系统,其分析和设计的方法是相通的,可以举一反三。 二、图书馆管理系统可行性分析 随着政府机关与广大企事业单位内部网络的广泛建立,在通用信息平台上构筑高效实用的协同工作和自动化办公应用系统,满足信息高度共享和即时发布的需求,有效实现内部知识管理,已成为众多用户的共同需求。 图书管理系统,为政府机关与广大企事业单位自动化办公提供了一个较好的解决方案。在开发过程中,按照软件工程的步骤,从设计到开发采用了面向对象的思想和技术,采用了SQL SERVER 2000数据库,使得本系统可以方便的和其他子系统进行数据交换。同时,注意从软件的图形应用界面上优化软件质量,使得本系统具有很强的可操作性。 三、图书馆管理系统需求分析 3.1、系统目标设计 系统开发的总目标是实现内部图书借阅管理的系统化、规范化和自动化。 能够对图书进行注册登记,也就是将图书的基本信息(如:书的编号、书名、作者、价格等)预先存入数据库中,供以后检索。 能够对借阅人进行注册登记,包括记录借阅人的姓名、编号、班级、年龄、性别、地址、电话等信息。 提供方便的查询方法。如:以书名、作者、出版社、出版时间(确切的时间、时间段、某一时间之前、某一时间之后)等信息进行图书检索,并能反映出图书的借阅情况;以借阅人编号对借阅人信息进行检索;以出版社名称查询出版社联系方式信息。 提供对书籍进行的预先预订的功能。 提供旧书销毁功能,对于淘汰、损坏、丢失的书目可及时对数据库进行修改。
图书标准管理系统含源代码可以运行
组长:何关瑶学号11107200105 组员:汪芳 李玉珏 马文磊 雷盛华 第一章需求分析 1.1设计内容 利用c++的文件操作能力设计开发一个小型的图书管信息管理系统,至少具有如下功能:查寻所有图书信息、通过输入图书编号来完成查找某一本图书信息、添加图书信息、删除图书信息以及通过学生学号实现图书借阅功能。操作界面要符合用户的一般习惯,界面易于读者明白理解,图形或文本界面都可以。 1.2 设计任务 要求:明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用高级语言进行程序设计的能力,重点提高用C++进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。掌握模块化编程的基本方法与步骤;巩固和加深学生对C++课程基本知识的理解与掌握,培养学生利用C++进行软件操作的能力和技巧。 1.3 基本要求 (1)通过提示菜单选择可以进行的操作。 (2)将图书的信息存入文件中,并命名为BookInfo.txt。 (3)将图书借阅情况信息存入文件中,并命名为SendInfo.txt。 (4)在本系统中可以进行管理系统包含的基本操作,其中包括: a)查看所有图书的信息。 b)输入一本图书的图书编号,从当前图书中进行查找,如果找到则显
示该图书的相关信息,如果没有找到则给出提示信息。 c)添加一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存在则提示重新输入,否则将该图书按照顺序插入到相应位置。 d)删除一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存在则将该图书删除,否则给出提示信息,提示该图书不存在。 e)借阅一本图书,需要给出学号和图书编号,如果图书编号不存在则重新输入,直到输入正确为止,并将学号和相应的图书编号存入SendInfo.txt 文件中。 (5)图书基本信息包括图书编号、书名、作者、出版社和价钱这些简单信息。 (6)图书信息文件中每一行存放一本图书的信息。 (7)借阅信息文件中每一行存放一本书的借阅情况。 (8)对老师.学生的信息进行登记处理,包括姓名、学号教师编号、学院班级 等。 (9)对图书的金额进出管理,对一丢失的图书进行处罚、对超期归还的图书 进行赔偿金额计算。
毕业设计_图书管理系统 一、数据库设计数据库设CREATE DATABASE TSGL GO USE TSGL GO CREATE TABLE Bmanage ( bId varchar(10) PRIMARY KEY, bName varchar(50), --添加图书--图书编号 --书名 bNumber varchar(10), --书数目) GO bSore varchar(50) --分类 CREATE TABLE Madmin ( mName varchar(10)PRIMARY KEY, mPwd varchar(25), mAge varchar(8), mSex varchar(4), mNumber varchar(15), mrole varchar(8) ) GO --图书员管理 --图书管理员姓名--图书管理员密码 --图书管理员年龄 --图书管理员性别 --图书管理员电话 --图书管理员角色
CREATE TABLE Reader ( rSno varchar (10) PRIMARY KEY , rName varchar (10), rPwd varchar (25), rAge varchar (8), rSex varchar (4), rState varchar (8), rNumber varchar (15), rEmail varchar (25), --读者信息表reader --读者号 --姓名 --密码 --年龄 --性别 --状态 --电话号码 --电子邮件rAdress varChar (50), --地址) GO rGrade varChar (15), rClass varchar (15), rRole varchar (8) --年级 --班级 --角色 CREATE TABLE Rrecord ( rSno varchar (10) PRIMARY KEY , rName varChar (10), bId varchar (10), bName varChar (50), bTime varchar (10), bBackTime varchar (10) ) GO CREATE TABLE SysSet ( rRole varchar (8)PRIMARY KEY , rState varchar (8), Fine float (25), rDay varchar (8) --读者编号学号 --读者姓名 --图书编号 --图书名称 --借书时间 --还书时间 --读者角色 --读者可借书数 --过期罚款设置 --可借书天数 ) 二、界面截图及说明 1) 登录窗口(实现管理员与馆长的登陆)
xxxx学院 课 程 设 计 报 告 设计名称:数据库课程软件设计 班级: 姓名: 学号: 指导教师: xx 时间: 2010.6.1—2010.6.16
一、课程设计目的 二、课程设计任务与要求1.设计任务 2.设计要求 三、原始依据 四.课程设计说明书 1. 需求分析 (1)问题描述 (2)基本要求 (3)测试数据 2. 概要设计 (1).数据结构 (2).程序模块及之间的调用关系(3). 详细分析 (4). 调试与结果 借书图示: 还书图示 还书图示 图书维护菜单 读者维护菜单 帮助文件
五、课程设计心得 一.课程设计目的 软件应用课程设计是计算机及相关专业的实践环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。其目的在于巩固和加深对C++语言课程的基本知识的理解和掌握;掌握C++语言编程和程序调试的基本技能;利用C++语言进行软件设计的基本思路和方法;提高运用C++语言解决实际问题的能力。 二.课程设计任务与要求: 1.设计任务 基本要求: [1]: 工作人员登陆后,可以进行的操作 (1)添加学生的信息(学号,姓名,院系,最大借阅的图书数量等); (2)修改学生的信息(学号,姓名,院系,最大借阅的图书数量); (3)删除学生的信息(学号,姓名,院系,最大借阅的图书数量),如果某个学生退学,就要清除他的信息; (4)查看学生的信息; (5)添加图书的信息(图书号,书名,作者,出版社,数量等); (6)修改图书的信息(图书号,书名,作者,出版社,数量等); (7)删除图书的信息(图书号,书名,作者,出版社,数量等); (8)查看图书的信息; [2]: 学生登陆后,可以进行的操作 (1)查看学生自己借阅的数目信息; (2)借阅图书; (3)归还图书; 备注:要求将学生和图书信息存放到外存上,每次从外存读取数据。 2.设计要求 (1).对指导教师下达的题目进行系统分析。 (2).根据分析结果完成系统设计。 (3).编程:在计算机上实现题目的代码实现。 (4).完成对该系统的测试和调试。 (5).提交课程设计报告,课程设计报告内容包括:需求分析、概要设计、详细设计,调试与结果和设计心得体会五个部分。 三.原始依据 已完成C++语言课程学习,有语言编程基础,能够熟练运用C++语言进行程
C#代码清单 共1个项目,包含5个类。 项目:librarysystem 类: 主类代码: namespace librarysystem { PublicationISBN = PublicationISBN; = PublicationName; = PublicationAuthor; = PublicationType; = PublicationStatus; } } } 读者类代码: namespace librarysystem { 询图书"); ("2.借书服务"); ("3.还书服务"); ("4.新出版物入库"); ("5.录入新读者"); ("6.查询读者的借阅信息"); ("7.退出管理系统"); ("-------------------------------------------------------------------"); bool flag; do { flag = false; ("请选择:"); string key = (); switch (key) { case"1": ("请输入需要查询图书的书名:"); ShowPubInfo(); break; case"2": ("请输入您的姓名:");
(); ShowBorrowInfo(); break; case"3": ("请输入您的姓名:"); (); ShowReturnInfo(); break; case"4": ("请按照提示逐步输入需要入库出版物的信息……"); ShowAddPublications(); break; case"5": ("请按照提示逐步输入新注册读者的信息……"); ShowAddReaders(); break; case"6": ("请输入您的姓名: "); (); ShowRedPubInfo; break; case"7": flag = false; break; default: ("无此业务,是否重新选择(y/n)?"); string answer = (); if (answer != "y") { flag = false; } else { flag = true; } break; } } while (flag); } /*显示查询到的出版物信息*/ public void ShowPubInfo() {
#i n c l u d e<> #include <> #include <> #define SIZE (struct booklist *)malloc(sizeof(struct booklist)) .(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); .(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(); .(Y/N) :"); ch = getchar(); if(ch == 'y' || ch == 'Y') store(head); getchar(); break; } } case 4: .(Y/N) :"); ch = getchar(); if(ch == 'y' || ch == 'Y') store(head); getchar(); break; } } case 5: .(Y/N) :"); ch = getchar(); if(ch == 'y' || ch == 'Y') store(head); getchar(); break; } } case 9: .)\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("","a+")) == NULL)
图书馆管理系统 1.信息描述 图书馆中有各种类型的图书,图书信息包括:图书编号、图书名称、作者、出版社、种类、价格、出版时间等;读者信息包括:姓名、性别、单位、出生日期等。 2.预计功能描述 1. 基础数据维护。 2. 图书的插入。(数量>1) 3. 图书的删除与修改。 4. 图书查询。 5. 图书借阅与归还。(可以查询图书当前被谁借走及剩余数量。每人能同时最多能借5 本书,超过5本不能再借阅。) 6. 读者查询。可以查询读者目前已借的图书信息及借阅时间与归还时间 7. 权限设置。 8. 帮助等。 3.功能的实现 3.1主界面设置 主界面中仅有一个MainMenu控件,如图所示: 在“管理员登录”中输入以下代码: procedure TMain.AdLoginClick(Sender: TObject); begin
FrmLogin.Caption:='管理员登陆'; //把登陆界面标题改为“管理员登陆” FrmLogin.ShowModal; //显示登陆界面 end; 在“用户登录”中输入以下代码: procedure TMain.CoLoginClick(Sender: TObject); begin FrmLogin.Caption:='用户登陆'; //把登陆界面标题改为“用户登录” FrmLogin.ShowModal; //显示登陆界面 end; 在“退出”中输入以下代码(为简便起见,下文中未注明的“退出”与“取消”按钮与此操作相同,不予以再次注明): procedure TMain.ExitClick(Sender: TObject); begin close; end; 3.2登录界面的设置 登录界面的主要控件:2个Lable、2个Edit、2个BitButton、ADOQuery、DataSourse。如图: 在确定按钮中输入以下代码: procedure TFrmLogin.BtnOKClick(Sender: TObject); Var CmdStr: String; //CmdStr存放查询语句 UsrType: integer; //UsrType存放用户类型 begin ADOQryUser.SQL.Clear; CmdStr:='select* From 用户(管理员)Where 用户名='+QuotedStr(EdtUserName.Text)+'and 口令='+QuotedStr(EdtPass.Text);
模块设计 基础模块 SqlSession: 利用mybatis获取jdbc,其中有inter.select,update,select等方法 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sesson = sqlSessionFactory.openSession(); Dao基础模块 所有的dao都继承于BaseDao; 代码 /** *保存利用mybatis的xml * model 保存的对象 *id mybatis的id名 */ Public void Save(BaseModel model,String id){ sesson.inster(id model); } …… Model基础模块 所有的模型都继承于BaseModel; 代码片段 /** *字段编号 */ Private int id; Public void setId(String id){ This.id = id; } Public String getId(){
Return id; } 添加书籍 代码片段 Book book = new Book(); book.setId(…..); …….. Book.setTitle(….); BooksManageDao bookDao = new BooksManageDao(); bookDao .save(“addBook”,book); 删除书籍 代码片段 BookDao bookDao = new BookDao(); Book book = (Book) bookDao .getModel(id); BooksManageDao bookDao = new BooksManageDao(); bookDao .delete(“delete Book”,book); 更新书籍
源程序 1.主窗体 Private Sub add_back_Click() frmbackbookinfo.Show End Sub Private Sub add_binf_Click() frmaddbookinfo.Show End Sub Private Sub add_book_style_Click() frmaddbookstyle.Show End Sub Private Sub add_manager_Click() frmadduser.Show End Sub Private Sub add_rinf_Click() frmaddreaderinfo.Show End Sub Private Sub add_rstyle_Click() frmaddreaderstyle.Show End Sub Private Sub change_binf_Click() frmmodifybookinfo.Show End Sub Private Sub change_book_style_Click() frmmodifybookstyle.Show End Sub Private Sub delete_binf_Click() frmmodifybookinfo.Show End Sub Private Sub delete_book_style_Click() frmmodifybookstyle.Show End Sub Private Sub delete_rstyle_Click() frmmodifyreaderstyle.Show End Sub Private Sub exit_Click() End End Sub Private Sub find_binf_Click() frmfindbook.Show End Sub Private Sub find_lend_Click() frmfindborrowinfo.Show