先新建一个数据库(access):建立Microsoft Access->命名为Text->否->打开->设计(添加学生所需信息)->表保存命名为lm(information)->否
②进行ADO配置
“开始” ->“程序” ->“Borland Delphi 7” ->“File” ->“Open Project” ->“Project1” ->Ctrl+F12选择“Main” ,按F12后出现MainForm窗体:
1)在程序主窗体MainForm上放置一个 “ADOConnection1”在Properties里LoginPrompt的属性设为false;ConnectionString ->Use ConnectionString 点Build” ->“Microsoft Jet 4.0 OLE DB Provider”后点“下一步”,选择创建的Access 2003 数据库的路径->“测试连接”出现成功后点“确定”->ok;Connected属性设为True
2)在主窗体上放一个“ADOTable1”属性Connection->ADOConnection1,属性TableName->lm,属性Active->T(简称阀门)
3) 在主窗体上放DataSource1->DataSet->ADOTable14)在主窗体上放一个-DBGrid1-->DataSource->DataSource1
①splashForm在工程文件(.dpr)中核心代码
SplashForm := TSplashForm.Create(Application) //启动屏创建
Application.CreateForm(TMainForm, MainForm) //创建主窗体
Application.CreateForm(TLoginForm, LoginForm) //创建用户验证窗体
SplashForm.Close //关闭启动屏窗体
SplashForm.Free //释放启动屏窗体所占的内存
②loginForm核心代码
LoginForm.ModalResult := mrOK//确定按钮,可以进入主界面
LoginForm.ModalResult := mrCancel //取消按钮
③mainForm 核心代码
1) 在Onshow中的核心代码:
LoginForm.ShowModal
if LoginForm.ModalResult = mrCancel then
Application.Terminate//(登陆界面进入主界面的过程中只要用户名密码都对时,登陆界面自动消失)
2) 在录入按钮的核心代码:
ADOQuery1.SQL.Clear
ADOQuery1.SQL.Add('Insert Into lm(num, name, sex,
shijian,class,zhuzhi,link,gs,yy,jsj)')
ADOQuery1.SQL.Add('Values (:snum,:sname,:ssex,:sshijian,
:sclass,:szhuzhi,:slink,:sgs,:syy,:sjsj)')
ADOQuery1.Parameters.ParamByName('sNum').Value := Edit1.Text
(输入学生的基本信息跟各科成绩后,点“录入”,便可在DBGrid1中添加所输入的信息)。
3) 在修改按钮的核心代码:
ADOQuery1.SQL.Clear
ADOQuery1.SQL.Add(‘Update lm')
ADOQuery1.SQL.Add(‘set num=:snum, name=:sname sex=:ssex,shijian=:sshijian,class=:sclass,zhuzhi=:szhuzhi,link=:slink,gs=:sgsyy=:syy,jsj=:sjsj')
ADOQuery1.SQL.Add(‘ Where Num = :sNum2')
ADOQuery1.Parameters.ParamByName(‘snum').Value := Edit11.Text
(在“输入要修改的学号”处输入某学号,再重新输入该基本信息与各科成绩,点击即可)。
4) 在删除按钮的核心代码:
ADOQuery1.SQL.Clear
ADOQuery1.SQL.Add(‘Delete From lm Where num = :snum')
ADOQuery1.Parameters.ParamByName(‘snum').Value := Edit1.Text
ADOQuery1.ExecSQL
showmessage(‘ok')//d出对话框,提示 *** 作成功
(输入学号,即可删除该学号的全部信息)。
5) 在查询按钮的核心代码:
ADOQuery2.Close
ADOQuery2.SQL.Clear
ADOQuery2.SQL.Add(‘Select * From lm Where num = :snum')
ADOQuery2.Parameters.ParamByName(‘snum').Value :=Edit1.Text
ADOQuery2.Open
(通过输入学号,点击“查询”按钮后即可查询该学号对应的信息)。
6) 刷新核心代码:
ADOTable1.Close
ADOTable1.Open//对录入,修改,删除,查询的 *** 作数据进行刷新。
#include <string.h>#include <iostream.h>
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 = 0Lang = CHINESEType = 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<iostream.h>
#include<string.h>
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->Info.GetCode()
while(current!=head&&temp!=data){
current=current->rlink
temp = current->Info.GetCode()
}
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<leni++){ // 循环读入链表各结点
is>>tt
dlist.Insert(tt)
}
return is
}
template<typename T>
ostream&operator<<(ostream&os, DblList<typename T>&dlist){
DblNode<T>*tempP
int len = dlist.Length()
os<<len<<' '
tempP=dlist.head->rlink
while(tempP!=dlist.head){ // 循环输出链表各结点
os<<tempP->Info
tempP = tempP->rlink
}
return os
}
#include "class.h"
#include "dblist.h"
#include <fstream.h>
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()// 读入图书馆信息
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)