📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, Grids, DBGrids, DB, DBTables, StdCtrls, ExtCtrls, DBCtrls,
ComCtrls;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
NAllStudents: TMenuItem;
NAStudent: TMenuItem;
NAddStudent: TMenuItem;
NDelStudent: TMenuItem;
NAllCourses: TMenuItem;
NACourse: TMenuItem;
NAddCourse: TMenuItem;
NDelCourse: TMenuItem;
NAllCS: TMenuItem;
NDoCS: TMenuItem;
NUnDoCS: TMenuItem;
NCbyS: TMenuItem;
NSbyC: TMenuItem;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Database1: TDatabase;
Table_S: TTable;
QueryC_S: TQuery;
Table_SSID: TStringField;
Table_SSname: TStringField;
Table_SCCount: TSmallintField;
Table_C: TTable;
Table_CCID: TStringField;
Table_CCname: TStringField;
Table_CSCount: TSmallintField;
Label1: TLabel;
QueryC_SSID: TStringField;
QueryC_SSname: TStringField;
QueryC_SCID: TStringField;
QueryC_SCname: TStringField;
TableC_S: TTable;
StatusBar1: TStatusBar;
procedure NAllStudentsClick(Sender: TObject);
procedure NAllCoursesClick(Sender: TObject);
procedure NAllCSClick(Sender: TObject);
procedure NAStudentClick(Sender: TObject);
procedure NACourseClick(Sender: TObject);
procedure NAddStudentClick(Sender: TObject);
procedure NAddCourseClick(Sender: TObject);
procedure NDoCSClick(Sender: TObject);
procedure NCbySClick(Sender: TObject);
procedure NSbyCClick(Sender: TObject);
procedure NDelStudentClick(Sender: TObject);
procedure NDelCourseClick(Sender: TObject);
procedure NUnDoCSClick(Sender: TObject);
private
{ Private declarations }
procedure SetStatusBar(DataSet:TDataSet);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
//根据数据集控件设置状态栏
procedure TForm1.SetStatusBar(DataSet:TDataSet);
var
count:integer;
begin
count:=DataSet.RecordCount;
if count=0 then
StatusBar1.Panels[1].Text:='目前该表中没有记录'
else
StatusBar1.Panels[1].Text:='目前该表中共有记录'+inttostr(count)+'条';
end;
procedure TForm1.NAllStudentsClick(Sender: TObject);
begin
//显示所有学生列表
Label1.Caption:='所有学生列表';
Table_S.Filtered:=false;
Table_S.Refresh;
DataSource1.DataSet:=Table_S;
if Table_S.RecordCount=0 then
showmessage('目前没有任何学生!');
//设置状态栏
SetStatusBar(Table_S);
end;
procedure TForm1.NAllCoursesClick(Sender: TObject);
begin
//显示所有课程列表
Label1.Caption:='所有课程列表';
Table_C.Filtered:=false;
Table_C.Refresh;
DataSource1.DataSet:=Table_C;
if Table_S.RecordCount=0 then
showmessage('目前没有任何课程');
SetStatusBar(Table_C);
end;
procedure TForm1.NAllCSClick(Sender: TObject);
begin
//显示所有选课列表
Label1.Caption:='所有选课列表';
QueryC_S.Filtered:=false;
QueryC_S.Close;
QueryC_S.Open;
DataSource1.DataSet:=QueryC_S;
if QueryC_S.RecordCount=0 then
showmessage('目前没有任何选课记录');
//设置状态栏
SetStatusBar(QueryC_S);
end;
procedure TForm1.NAStudentClick(Sender: TObject);
var
SID:string;
begin
//查询单个学生
SID:='';
SID:=inputBox('学生查询','请输入要查询的学生的学号好吗','');
if SID<>'' then
begin
Label1.Caption:='学生学号为'''+SID+'''的情况';
Table_S.Filter:='SID='''+SID+'''';
Table_S.Filtered:=True;
if Table_S.RecordCount=0 then
begin
showmessage('查无此人');
end;
end
else
showmessage('没有查询学生');
//设置状态栏
SetStatusBar(Table_S);
end;
procedure TForm1.NDelStudentClick(Sender: TObject);
var
SID:string;
begin
//删除一个学生
SID:='';
SID:=inputBox('删除学生','请输入要删除的学生的学号好吗','');
if SID<>'' then
begin
//查找该学生
Table_S.Filter:='SID='''+SID+'''';
Table_S.Filtered:=True;
if Table_S.RecordCount=0 then
showmessage('删除失败,查无此人!')
else
//察看该学生读课信息
if Table_S.FieldByName('CCount').AsInteger>0 then
showmessage('删除失败,此人还有课程在读!')
else
Table_S.Delete;
end
else
showmessage('没有删除学生');
//最后显示所有学生列表
NAllStudents.Click;
end;
procedure TForm1.NDelCourseClick(Sender: TObject);
var
CID:string;
begin
//删除一门课程
CID:='';
CID:=inputBox('删除课程','请输入要删除的课程编号好吗','');
if CID<>'' then
begin
//查找该课程
Table_C.Filter:='CID='''+CID+'''';
Table_C.Filtered:=True;
if Table_C.RecordCount=0 then
showmessage('删除失败,查无此课!')
else
//察看该课程选课人数
if Table_C.FieldByName('SCount').AsInteger>0 then
showmessage('删除失败,此课程还有学生在读!')
else
//删除
Table_C.Delete;
end
else
showmessage('没有删除课程');
//最后显示所有课程列表
NAllCourses.Click;
end;
procedure TForm1.NACourseClick(Sender: TObject);
var
CID:string;
begin
//查询一门课程
CID:='';
CID:=inputBox('课程查询','请输入要查询的课程编号好吗','');
if CID<>'' then
begin
Label1.Caption:='课程编号为'''+CID+'''的情况';
Table_C.Filter:='CID='''+CID+'''';
Table_C.Filtered:=True;
if Table_C.RecordCount=0 then
showmessage('查无此课');
end
else
showmessage('没有查询课程');
//设置状态栏
SetStatusBar(Table_C);
end;
procedure TForm1.NCbySClick(Sender: TObject);
var
SID:string;
begin
//根据学生查他的选课情况
SID:='';
SID:=inputBox('请输入学号','请输入要查询的学生的学号好吗','');
if SID<>'' then
begin
Table_S.Filter:='SID='''+SID+'''';
Table_S.Filtered:=true;
if Table_S.RecordCount=0 then
showmessage('查无此人')
else
begin
Label1.Caption:='学生学号为'''+SID+'''的选课情况';
QueryC_S.Filter:='SID='''+SID+'''';
QueryC_S.Filtered:=True;
DataSource1.DataSet:=QueryC_S;
if QueryC_S.RecordCount=0 then
showmessage('该生没有选课');
end;
end
else
showmessage('没有查询');
//设置状态栏
SetStatusBar(QueryC_S);
end;
procedure TForm1.NSbyCClick(Sender: TObject);
var
CID:string;
begin
//根据课程查该课程的选课情况
CID:='';
CID:=inputBox('请输入课程编号','请输入要查询的课程编号好吗','');
if CID<>'' then
begin
Table_C.Filter:='CID='''+CID+'''';
Table_C.Filtered:=true;
if Table_C.RecordCount=0 then
showmessage('查无此课')
else
begin
Label1.Caption:='课程编号为'''+CID+'''的选课情况';
QueryC_S.Filter:='CID='''+CID+'''';
QueryC_S.Filtered:=True;
DataSource1.DataSet:=QueryC_S;
if QueryC_S.RecordCount=0 then
showmessage('该课没有人选');
end;
end
else
showmessage('没有查询');
//设置状态栏
SetStatusBar(QueryC_S);
end;
//增加一个学生
procedure TForm1.NAddStudentClick(Sender: TObject);
var
SID, Sname:string;
begin
//设置输入框
Form2.Caption:='增加学生';
Form2.Label1.Caption:='请输入学生信息';
Form2.Label2.Caption:='学生学号';
Form2.Label3.Caption:='学生姓名';
//弹出输入框并返回信息
if Form2.ShowModal=mrOK then
begin
//查找该生是否已经存在
SID:=Form2.Edit1.Text;
Sname:=Form2.Edit2.Text;
Table_S.Filter:='SID='''+SID+'''';
Table_S.Filtered:=True;
if Table_S.RecordCount>0 then
showmessage('该学生已经存在!')
else //不存在则添加
Table_S.AppendRecord([SID,Sname,0]);
end;
//最后显示所有学生列表
NAllStudents.Click;
end;
//增加一门课程
procedure TForm1.NAddCourseClick(Sender: TObject);
var
CID, Cname:string;
begin
//设置输入框
Form2.Caption:='增加课程';
Form2.Label1.Caption:='请输入课程信息';
Form2.Label2.Caption:='课程编号';
Form2.Label3.Caption:='课程名称';
//弹出输入框并返回信息
if Form2.ShowModal=mrOK then
begin
//查找该课是否已经存在
CID:=Form2.Edit1.Text;
Cname:=Form2.Edit2.Text;
Table_C.Filter:='CID='''+CID+'''';
Table_C.Filtered:=True;
if Table_C.RecordCount>0 then
showmessage('该课程已经存在!')
else //不存在则添加
Table_C.AppendRecord([CID,Cname,0]);
end;
//最后显示所有课程列表
NAllCourses.Click;
end;
//选课
procedure TForm1.NDoCSClick(Sender: TObject);
var
SID, CID:string;
count:integer;
begin
//设置输入框
Form2.Caption:='选课';
Form2.Label1.Caption:='请输入选课信息';
Form2.Label2.Caption:='学生学号';
Form2.Label3.Caption:='课程编号';
//弹出输入框并返回信息
if Form2.ShowModal=mrOK then
begin
SID:=Form2.Edit1.Text;
CID:=Form2.Edit2.Text;
//查找该生是否存在
Table_S.Filter:='SID='''+SID+'''';
Table_S.Filtered:=true;
if Table_S.RecordCount=0 then
begin
showmessage('查无此人!');
exit;
end;
//查找该课是否存在
Table_C.Filter:='CID='''+CID+'''';
Table_C.Filtered:=true;
if Table_C.RecordCount=0 then
begin
showmessage('查无此课!');
exit;
end;
//查找是否该生已经选了该课程
QueryC_S.Filter:='CID='''+CID+''' and SID='''+SID+'''';
QueryC_S.Filtered:=true;
if QueryC_S.RecordCount>0 then
showmessage('该生已选该课!')
else
begin
//增加选课
TableC_S.AppendRecord([CID,SID]);
//设置Students表的选课数目
count:=Table_S.FieldByName('CCount').AsInteger;
Table_S.Edit;
Table_S.FieldByName('CCount').AsInteger:=count+1;
Table_S.Post;
//设置Course表的选课数目
count:=Table_C.FieldByName('SCount').AsInteger;
Table_C.Edit;
Table_C.FieldByName('SCount').AsInteger:=count+1;
Table_C.Post;
end;
end
else
showmessage('没有选课');
//最后显示所有选课情况
NAllCS.Click;
end;
//退课
procedure TForm1.NUnDoCSClick(Sender: TObject);
var
SID, CID:string;
count:integer;
begin
//设置输入框
Form2.Caption:='退课';
Form2.Label1.Caption:='请输入退课课信息';
Form2.Label2.Caption:='学生学号';
Form2.Label3.Caption:='课程编号';
//弹出输入框并返回信息
if Form2.ShowModal=mrOK then
begin
SID:=Form2.Edit1.Text;
CID:=Form2.Edit2.Text;
//查找该生是否存在
Table_S.Filter:='SID='''+SID+'''';
Table_S.Filtered:=true;
if Table_S.RecordCount=0 then
begin
showmessage('查无此人!');
exit;
end;
//查找该课是否存在
Table_C.Filter:='CID='''+CID+'''';
Table_C.Filtered:=true;
if Table_C.RecordCount=0 then
begin
showmessage('查无此课!');
exit;
end;
//查找是否该生已经选了该课程
QueryC_S.Filter:='CID='''+CID+''' and SID='''+SID+'''';
QueryC_S.Filtered:=true;
if QueryC_S.RecordCount=0 then
showmessage('该生未选该课!')
else
begin
//删除该选课信息
TableC_S.Filter:='CID='''+CID+''' and SID='''+SID+'''';
TableC_S.Filtered:=true;
TableC_S.Delete;
//更新Students表中的选课数目
count:=Table_S.FieldByName('CCount').AsInteger;
Table_S.Edit;
Table_S.FieldByName('CCount').AsInteger:=count-1;
Table_S.Post;
if Table_S.FieldByName('CCount').AsInteger=0 then
showmessage('此人已经没有任何课程在读');
//更新Course表中的选课人数
count:=Table_C.FieldByName('SCount').AsInteger;
Table_C.Edit;
Table_C.FieldByName('SCount').AsInteger:=count-1;
Table_C.Post;
if Table_C.FieldByName('SCount').AsInteger=0 then
showmessage('此课已经没有任何人在读');
end;
end;
//最后显示所有选课情况
NAllCS.Click;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -