图书馆管理系统数据库【基于VB环境下中学排课管理系统的开发】

图书馆管理系统数据库【基于VB环境下中学排课管理系统的开发】,第1张

摘 要采用VB开发环境,搭配Access小型数据库进行开发。该系统采用按照教师名字来排课,一个教师可以任同一年级的不同班级的课程。关键是,同一时刻,一个教师不能同时教两个班,这样可以减少检查课程冲突的时间,提高排课效率。该系统分三大模块:条件设置、课表管理、账户管理。其中,条件设置包含班级设置、教师设置、时间设置;课表管理包含课程安排、课表调整、课表查询打印;账户管理包含密码管理和权限管理。

关键词课程安排;VB;Access数据库

一、模块设计

模块是软件结构的基础,软件结构的好坏完全由模块的属性体现出来,把软件模块化的目的是为了降低软件复杂性,使软件设计,测试,调试,维护等工作变得简易,但随着模块数目的增加,通过接口连接这些模块的工作量也随之增加。基于上述原因,在进行总体规划的初步设想中,以中学各种资源和资源的分配为依据,综合多种相关因素,将该系统划分成以下四个子功能模块:用户管理子系统、数据管理子系统、排课管理子系统、课表查询子系统。在数据库设计上,遵循“功能分离,数据共享”的原则。

二、功能分解

1用户管理子系统功能:用户密码的设置和修改,用户权限的设置,用户重新登陆。2数据管理子系统功能:包括对教室、教师、班级和课表数据的保存、查询、更新、删除。3排课管理子系统功能:包括手动排课、修改课表这一部分。4课表查询子系统功能:对于具体的班级、教师、进行课表查询,打印。

三、数据库设计

1班级信息表。班级信息表负责维护班级信息,主要包括班级名称、班级人数、所在教室、班主任(每一班只能有一个班主任)。

2账户信息管理表。账户信息管理表包括用户名称、用户密码、用户权限。管理员可以使用所有功能,但是普通用户不能运行条件设置等功能,只能修改密码和查询课表。

3教师信息表。教师信息表是维护教师的信息表,包括教师编号、教师姓名、所任年级及课程、电话、邮箱等。系统规定每个任课教师只能任一门课,不允许跨级代课,但是一个教师可以任多个班级的课程。此系统最终是按照老师名字来排课的,所以在教师所任课程这个字段里,年级和课程同时显示,这样排课的时候,冲突可以减少很多。

4时间段信息表。时间段信息表负责维护学校每天的教学时间安排,包括节号、时间段。

5排课信息表。排课信息表负责对课程进行安排,包括班级名称、节号、星期一、星期二、星期三、星期四、星期五。因为一个老师是带两个班的,所以按老师名字来排课,这样冲突就比较少。但是课程输出时候课程名和老师名是同时显示的。

四、用户界面设计

1登陆模块的设计。登录界面是用户最先看到的系统的界面,所以直观上给用户的感觉很重要,所以做一个好的界面,提高软件的亲和力。

2主窗体界面的设计。主窗体全部采用jcbutton按钮过渡到其他窗体,是便于使用,清晰明了。

这张图标题显示是super管理员,是因为是以管理员身份登录的。

图1-1系统主窗体界面

3系统管理模块的设计。出于安全考虑,此系统设置了访问权限。不一样的用户的账户管理界面是不一样的。此系统共设置了两类用户:普通用户和管理员。普通用户的账户管理仅限于修改密码,管理员的账户管理包含密码管理和用户信息的管理。此外,普通用户不能运用条件设置等功能,但管理员可以运用。

4条件设置模块的设计。条件设置模块总共包含班级设置、教师设置、时间设置这三个子模块。班级设置模块负责班级信息的添加、删除、查询等 *** 作;教师设置模块负责教师信息的添加、删除、查询等 *** 作;时间设置模块负责时间的修改 *** 作等。条件设置功能仅限于管理员使用,普通用户没有访问权限。

五、系统总结

此排课系统是针对初中或者以下的学校,所以比较简单。主要是排课算法的设计,这部分解决了,其他就相对简单了。系统已经经过测试,可以进行简单的排课。但由于本人水平有限,系统还是存在一些缺陷,没有方方面面都考虑到。比如说,像微机课这类课,一般都是全班学生去机房的,而不是在固定的教室上,那么排课的时候,就多了限制条件,都由于本人的水平有限而被忽略了。系统创新的地方是,在排课的时候考虑到,如果两个班的某节课是自习课,也就是说不排课,那这不应该算为课程重复。系统的设计过程经历了两种方案,第一种方案是按照课程名来排课,后来发现如果以课程名来排课,那么课程冲突就比较厉害,达不到提高排课效率的目的。第二种方案,也就是现在这种,是以老师名字来排课,规定老师只能带同一年级的多个班(一般情况下是两个班),所任课程仅限一门,那么一个班的课表出来后,另一个班排课时冲突的地方就比较少。最后课表生成时,班主任以及课表和任课老师同时显示。

参考文献:

[1]李玉林VB毕业设计指南与项目实践[M]北京:科学出版社,2007

[2]杨诚忠 Access 2003快速入门教程[M]北京:航空工业出版社,2000

[3]黄诚 Access数据库开发[J]凯里学院学报,2008,26(06):79-81

#include <stringh>

#include <iostreamh>

class Book{ // 书籍基类

protected:

char Title[40]; // 书名

long Code; // 条码

int Type; // 0表示书,1表示杂志

public:

Book();

Book(char title,long code);

void SetCode(long code){ Code = code; }

void SetTitle(char tl){ strcpy(Title,tl); }

void SetType(bool type){Type = type; }

int GetType(){ return Type; }

long GetCode(){ return Code;}

virtual void Show(); // 显示书的信息

friend ostream& operator<<(ostream& , Book&); // 重载插入运算符

friend istream& operator>>(istream& is, Book&); // 重载提取运算符

Book Next; // 为创建每个读者所借书链表而定义指针

};

class Item :public Book{ //书的款目

// char Title[40]; // 书名

char Author[20]; // 著者名

char IndexCode[10]; // 分类号

// long Code; // 条码

public:

Item();

Item(char author,char title,char index,int code);

Item(Item &);

void SetAuthor(char);

void SetIndexCode(char);

virtual void Show(); // 显示书的信息

friend ostream& operator<<(ostream& os, Item&); // 重载插入运算符

friend istream& operator>>(istream& is, Item&); // 重载提取运算符

public:

};

class Magazine:public Book { //杂志类

int Volume;

enum LANG {CHINESE=1,ENGLISH} Lang; // 枚举变量,确定语言类别

public:

Magazine():Book(){Volume = 0; Lang = CHINESE; Type = 1; }

Magazine(char title,int vol,LANG lang,int code);

Magazine(Magazine&);

void SetVolume(int vol){Volume = vol;}

void SetLang(int lang){Lang = (LANG)lang;}

virtual void Show(); // 显示杂志的信息

friend ostream& operator<<(ostream& os, Magazine&); // 重载插入运算符

friend istream& operator>>(istream& is, Magazine&); // 重载提取运算符

};

class Reader{ // 读者信息类

char Name[20]; // 姓名

char Position[20]; // 职务

int Age; // 年龄

long Code; // 借书证号

Book items; // 所借书链表

public:

Reader();

Reader(char name,char posi,int age,int code);

// Reader(Reader&);

~Reader();

long GetCode(){return Code;}

void SetName(char);

void SetPosition(char);

void SetAge(int);

void SetCode(long);

void AddBook(Item); // 添加所借书

void AddBook(Magazine); // 添加所借杂志

void DelBook(Book it); // 还书后减少所借书

void ShowBooks(); // 显示所借书

void Show(); // 显示读者信息

friend ostream& operator<<(ostream& os, Reader&); // 重载插入运算符

friend istream& operator>>(istream& is, Reader&); // 重载提取运算符

public:

int Counter; //计数器,统计所借书数目

};

class Manager{ // 管理员类

char Name[20]; // 姓名

int Age; // 年龄

int Code; // 工号

friend class Library; // 将图书馆类声明为友元

public:

Manager(){}

Manager(char,int,int);

long GetCode(){ return Code;}

void Show();

friend ostream& operator<<(ostream& os, Manager&); // 重载插入运算符

friend istream& operator>>(istream& is, Manager&); // 重载提取运算符

};

class Loan { // 借阅信息类

int Type; // 0表示书,1表示杂志

Item item; // 借阅书

Magazine mag; // 借阅杂志

Reader reader; // 借阅者

Manager manager; // 借书 *** 作员

int Code;

friend class Library; // 将图书馆类声明为友元

public:

Loan(){ }

Loan(Loan & l);

int GetCode(){ return Code;}

void Show();

friend ostream& operator<<(ostream& os, Loan&); // 重载插入运算符

friend istream& operator>>(istream& is, Loan&); // 重载提取运算符

};

、、、、、、、、、、、、、、、、、、、、、、、

#include<iostreamh>

#include<stringh>

class Reader;

template<typename T> class DblList;

template<typename T> class DblNode{

public:

T Info;//数据域

DblNode<T> llink,rlink; //前驱(左链)、后继(右链)指针

public:

DblNode(T data);//一般结点

DblNode();//头结点

T GetInfo(){return Info;};

friend class DblList<T>;

friend class Library;

};

template<typename T>class DblList{

DblNode<T> head,current;

public:

DblList();

~DblList();

void Insert(const T& data);

DblNode<T> Remove(DblNode<T> p);

void Print();

int Length();//计算链表长度

DblNode<T> Find(T data);//搜索数据与定值相同的结点

DblNode<T> Find(int data);//按某个关键字查找

void MakeEmpty(); //清空链表

void ShowList(); //显示链表各结点

friend istream& operator>>(istream&, DblList<typename T>&); // 重载输入流运算符

friend ostream& operator<<(ostream& os, DblList<typename T>& dlist); // 重载输出流运算符

friend class Library;

//其它 *** 作

};

template<typename T> DblNode<T>::DblNode(){

llink=rlink=NULL;

}

template<typename T> DblNode<T>::DblNode(T data){

info=data;

llink=NULL;

rlink=NULL;

}

template<typename T> DblList<T>::DblList(){//建立表头结点

head=new DblNode<T>();

head->rlink=head->llink=head;

current=NULL;

}

template<typename T> DblList<T>::~DblList(){

MakeEmpty();//清空链表

delete head;

}

template<typename T> void DblList<T>::MakeEmpty(){

DblNode<T> tempP;

while(head->rlink!=head){

tempP=head->rlink;

head->rlink=tempP->rlink;//把头结点后的第一个节点从链中脱离

tempP->rlink->llink=head;//处理左指针

delete tempP; //删除(释放)脱离下来的结点

}

current=NULL; //current指针恢复

}

template<typename T> void DblList<T>::Insert(const T & data){//新节点在链尾

current=new DblNode<T>;

current->Info=data;

current->rlink=head;//注意次序

current->llink=head->llink;

head->llink->rlink=current;

head->llink=current;//最后做

}

template<typename T> DblNode<T> DblList<T>::Remove(DblNode<T> p){ // 删除结点

current=head->rlink;

while(current!=head&¤t!=p) current=current->rlink;

if(current==head) current=NULL;

else{//结点摘下

p->llink->rlink=p->rlink;

p->rlink->llink=p->llink;

p->rlink=p->llink=NULL;

}

return current;

}

template<typename T> DblNode<T> DblList<T>::Find(T data){ // 按结点查找

current=head->rlink;

while(current!=head&¤t->Info!=data) current=current->rlink;

if(current==head) current=NULL;

return current;

}

template<typename T> DblNode<T> DblList<T>::Find(int data){ // 按数据值查找结点

current=head->rlink;

int temp =current->InfoGetCode();

while(current!=head&&temp!=data){

current=current->rlink;

temp = current->InfoGetCode();

}

if(current==head) current=NULL;

return current;

}

template<typename T> void DblList<T>::Print(){ // 输出链表

current=head->rlink;

while(current!=head){

cout<<current->Info<<'\t';

current=current->rlink;

}

cout<<endl;

}

template<typename T> int DblList<T>::Length(){ // 取得链表长度

int count=0;

current=head->rlink;

while(current!=head){

count++;

current=current->rlink;

}

return count;

}

template<typename T> void DblList<T>::ShowList(){ // 输出链表各结点

int count=0;

current=head->rlink;

while(current!=head){

current->GetInfo()Show();

current=current->rlink;

}

return ;

}

template<typename T>

istream& operator>>(istream& is, DblList<typename T> &dlist){

int len;

T tt; // 定义局部变量读入一个结点

is>>len;

for(int i= 0 ;i<len; i++){ // 循环读入链表各结点

is>>tt;

dlistInsert(tt);

}

return is;

}

template<typename T>

ostream& operator<<(ostream& os, DblList<typename T> &dlist){

DblNode<T> tempP;

int len = dlistLength();

os<<len<<' ';

tempP=dlisthead->rlink;

while(tempP!=dlisthead){ // 循环输出链表各结点

os<<tempP->Info;

tempP = tempP->rlink;

}

return os;

}

#include "classh"

#include "dblisth"

#include <fstreamh>

class Library{ // 封装图书馆流通业务的类

DblList<Item> item; // 在馆图书链表

DblList<Magazine> mag; // 在馆杂志链表

DblList<Reader> reader; // 读者链表

DblList<Loan> loan; // 借阅信息链表

DblList<Manager> manager; // 管理员信息链表

int itemNum; // 记录在馆图书数目

int magNum; // 记录在馆杂志数目

int readerNum; // 记录读者数目

int loanNum; // 记录借阅信息数目

int managerNum; // 记录管理员数目

ofstream itemFileOut; // 文件流对象,保存图书馆书籍数据

ifstream itemFileIn; // 文件流对象,读入图书馆书籍数据

ofstream magFileOut; // 文件流对象,保存图书馆杂志数据

ifstream magFileIn; // 文件流对象,读入图书馆杂志数据

ofstream readerFileOut; // 文件流对象,保存图书馆读者数据

ifstream readerFileIn; // 文件流对象,读入图书馆读者数据

ofstream loanFileOut; // 文件流对象,保存图书馆借阅信息数据

ifstream loanFileIn; // 文件流对象,读入图书馆借阅信息

ofstream managerFileOut; // 文件流对象,保存图书馆管理员数据

ifstream managerFileIn; // 文件流对象,读入图书馆管理员数据

public:

Library(); // 构造函数

~Library(); //析构函数

void Run(); // 图书馆类的运行函数

void CreateBibliotheca(); // 创建书目

void CreateReader(); // 创建读者库

void CreateManager(); // 创建管理员信息

int ShowMainMenu(); // 显示主菜单函数

void Borrow(); // 借书 *** 作

void Return(); // 还书 *** 作

void Require(); // 查询 *** 作

void SaveInfo(); // 保存图书馆信息

void OpenInfo(); // 读入图书馆信息

};

如果你想学好c#的话,我还是建议你自己多动手写写,在写的过程中有不懂不会的地方再向人求助,不要一上来就要别人做,这样对你有什么好处呢?别人写的代码你看不懂还不是白搭。

多写写,多练练才会有收获。

说实话,你这个项目还是算得上是一个比较大的项目了,如果你忍忍真真的把这根项目做完,那么对你的变成能力一定有所提升的。这个项目肯定是要使用三层来做的了,不然后期不好维护。

还是建议你自己动手写,在开发的过程中有不懂的不会的再来针对具体的疑问提出问题求助!

个人建议,也希望你能接受!

以上就是关于图书馆管理系统数据库【基于VB环境下中学排课管理系统的开发】全部的内容,包括:图书馆管理系统数据库【基于VB环境下中学排课管理系统的开发】、数据库系统原理课程设计 -----图书借阅管理系统、数据库课程设计:图书管理系统要求用C#.NET(vs2008做),数据库用SQL Server2005做。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9698541.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存