您的位置: 首页>>技术支持>>正文
学生成绩查分系统(C++脚本)
发表日期:2005-5-12

代码内容
//******************************//
//  学生成绩查分系统(演示案例)  //
//  宁波宇讯信息技术有限公司    //
//   2005年4月 www.sms2008.net  //
//******************************//
//适用范围:短信网关服务器(专业版)
//使用方法:编辑您的手机短信,如:CF#0503#003,并发送指定的手机号,如:13XXXXXXXXX,系统将返回该学生的成绩。
TADOConnection dbSchool;
//连接学校数据库
void ConnectDatabase()
{
  string SConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%S;Persist Security Info=False";
  dbSchool = new TADOConnection(nil);
  try
  {
    dbSchool.Connected   = false;
    dbSchool.LoginPrompt = false;
    dbSchool.ConnectionString = Format(SConnStr, [ProgramPath() + "脚本库\\演示案例\\DemoData.mdb"]);
    //ShowMessage(dbSchool.ConnectionString);
    dbSchool.Connected   = true;
  }
  except
  {
    ShowMessage("数据库连接失败!");
  }
}
//关闭学校数据库连接
void DisconnectDatabase()
{
  dbSchool.Connected = false;
  delete dbSchool;
}
//查询学生成绩 StdNo=学号,StdPwd=查询密码
bool QueryStudentScore(string StdNo, string StdPwd, string &Content)
{
  Result = False;
  TADOQuery Query = new TADOQuery(nil);
  try
  {
    Query.Connection = dbSchool;
    Query.Close;
    Query.SQL.Clear;
    Query.SQL.Add("SELECT * FROM 成绩表 WHERE (学号=:StdNo) AND (密码=:StdPwd)");
    Query.Parameters[0].Value = StdNo;   //学号
    Query.Parameters[1].Value = StdPwd;  //密码
    Query.Open;
    if (Query.IsEmpty == false) {
        Content = Query.FieldByName("姓名").AsString + ":你的期中考试成绩为," +
                  "语文:" + Query.FieldByName("语文").AsString + "分/" +
                  "数学:" + Query.FieldByName("数学").AsString + "分/" +
                  "英语:" + Query.FieldByName("英语").AsString + "分";
                   
      Result = true;
    }
    Query.Close;
  }
  finally
  {
    delete Query;
  }
  
  return(Result);
}
//----------------------------------------------------------------------------//
//短信网关服务启动后的处理事件
void SMSGateWay_OnStartServer(TObject Sender)
{
  //ShowMessage("OnStartServer");
  ConnectDatabase();
}
//短信网关服务停止后的处理事件
void SMSGateWay_OnStopServer(TObject Sender)
{
  //ShowMessage("OnStopServer");
  DisconnectDatabase();
}
//收到新短信后的处理事件
void SMSGateWay_OnRecvSMS(TObject Sender, string SMSPhoneNo, string SMSMessage,
  TDateTime TimeStamp)
{
  string sCommand, sStdNo, sStdPwd, sContent;
  int Len, Idx;
  Variant Params;
  if (Trim(SMSMessage) == "000") { return; }  //系统运行状态查询命令
  //简单检查是不是手机号码查询
  //if ((!BeginWithString("13", SMSPhoneNo)) || (Length(SMSPhoneNo)!=11)) { return; }
  //查分格式为:命令字#学号#查询密码,如:CF#0501#001
  Len = StringToArray(SMSMessage, "#", Params);   //拆分短信内容
  if (Len <= 2) {
    SendSMS(SMSPhoneNo, "您的查询格式不正确。正确的格式为:命令字#学号#查询密码。如:CF#0501#001", "");
    return ;
  }
  sCommand = Params[0];
  Idx = StringPosArray("CF#PW", "#", sCommand);  //定位命令字的位置
  switch(Idx)
  {
    case 0:  //CF
      {
        sStdNo  = Trim(Params[1]); //学生学号
        sStdPwd = Params[2];       //查询密码
        if (!QueryStudentScore(sStdNo, sStdPwd, sContent)) { //开始查成绩
            sContent = "您的身份验证无法通过!";
        }
      }
    case 1:  sContent = "修改密码的功能尚未实现。"; //PW
    case -1: sContent = "您的命令字不正确。正确的命令字可为:CF查分,PW修改密码。";
  }
  SendSMS(SMSPhoneNo, sContent, "");
}
//发送短信后的处理事件
void SMSGateWay_OnSendSMS(TObject Sender, string SMSPhoneNo, string SMSMessage,
  string CustomNo, bool Succeed)
{
  //ShowMessage("OnSendSMS " + SMSPhoneNo + " / " + SMSMessage)
}
//主程序开始处
{
  //ShowMessage("KoSMSGateWay");
}

宇讯短信 By 
相关主题 推荐阅读
相关主题
·常见问题解答
·如何在程序中加入短信收发功能?
·小灵通如何与手机互发短信?
·学生成绩查分系统(Delphi脚本)
·学生成绩查分系统(C++脚本)
·学生成绩查分系统(VB脚本)
·学生成绩查分系统(JS脚本)
·通过短信发送电子邮件(VB脚本)

Copyright © 2004-2007  宁波宇讯信息技术有限公司 版权所有 kobizsoft@gmail.com 浙ICP备05011577号
电话:0574-87366657、013586560310 邮编:315040  地址:宁波市契闸街都市仁和中心8-7

点击这里可直接咨询