嵌入式系统课程设计报告详解
嵌入式系统课程设计报告
题目7(序号) 学生成绩查询系统(题目)
专 业: 软件工程
班 级: 软件二班
姓 名: xx
学 号: 2019320100
指导教师: 张辉
日 期: 2021.12.21
目 录
目录
1 设计目的……………………………………………………………………………………………………………………………….. 3
2 开发环境……………………………………………………………………………………………………………………………….. 3
3 设计任务及要求…………………………………………………………………………………………………………………… 3
4 实现过程……………………………………………………………………………………………………………………………….. 3
5 编译与运行结果…………………………………………………………………………………………………………………… 4
6 总结……………………………………………………………………………………………………………………………………….. 4
题目7学生成绩查询系统
1 设计目的
设计学生成绩查询系统,其中包括学生信息管理、成绩管理、学生成绩查询功能。
2、开发环境
软件:
Visual Studio 2005
硬件:
CHSINT WINCE6.0 模拟器
3、设计任务及要求
在Visual Studio 2005环境下,编写程序。
设计要求:
- 设计学生成绩查询系统,要求有管理员用户和学生用户。其中管理员用户能够进行学生信息管理,成绩管理。学生用户能够进行成绩查询。
- 创建SQLite数据表:包括学生信息表(学号,姓名,专业,班级),成绩表(学号,科目,成绩)。
- 在管理员用户权限下,能够进行学生信息管理,对学生信息进行增删查改。能够进行成绩管理,对学生成绩进行增删查改。
- 在学生用户权限下,能够输入学号,点击查询,查询到该学号学生的所有科目的成绩。
4 实现过程
BOOL CdbDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
CoInitializeEx(NULL,COINIT_MULTITHREADED);//初始化 COM
Database db;//新建一个 Database 类
LPTSTR dbname = L"dbtest.sdf";//文件名为 dbtest.sdf
if (db.Finddatabase(dbname) == FALSE)
{
HRESULT hr;
登录系统使用用户 ID,用户名与用户密码
LPTSTR CreateSql = L"CREATE TABLE Students (Name NVARCHAR(20), XH
NVARCHAR(20), RXNF NVARCHAR(20), ZY NVARCHAR(20),BJ NVARCHAR(20),id NVARCHAR(20)
not NULL primary key)";
// Create database
hr = db.CreateDatabase(dbname);
hr = db.ExecuteSQL(dbname, CreateSql);
}
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
之后再添加两个 Dialog 分别对应“修改学生信息”(IDD_DIALOG_EDIT),“显示学生
信息”(IDD_DIALOG_DISPLAY)。
IDD_DIALOG_EDIT 对话框中界面如下图所示:
其中“查询”按钮函数如下:
“保存修改”按钮函数如下:
(4)退出登录模块
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
Application.Restart();
}
}
管理员登录模块
(1)管理员界面模块
(2)成绩添加模块
代码:
private void toolStripMenuItem3_Click(object sender, EventArgs e)
{
//初始化信息录入窗口,进行输入
InfoInput inputForm = new InfoInput();
inputForm.Show();
}
private void buttonAdd_Click(object sender, EventArgs e)
{
//将学生信息录入
string sex;
sex = "男";
else
sex = "女";
strConnection += @"Data Source=" + Application.StartupPath + "\\StudentInfo.mdb";
OleDbConnection objConnection = new OleDbConnection(strConnection);
OleDbCommand cmd = new OleDbCommand("insert into [information] " +
"([name],[studentID],[class],[sex],[email],[courseOne],[courseTwo],[courseThree])values ('" +
objConnection.Open();
//添加成功或失败分别弹出对应提示框
{
MessageBox.Show("成功添加同学的信息!");
this.Close();
}
else
MessageBox.Show("添加失败,请确定是否添加该同学相关信息");
objConnection.Close();
}
(3)成绩查询模块
代码:
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
//查询学生信息
string checkInfo = "";
strConnection += @"Data Source=" + Application.StartupPath + "\\StudentInfo.mdb";
OleDbConnection objConnection = new OleDbConnection(strConnection);
objConnection.Open();
OleDbCommand objCommand = new OleDbCommand("select * from information", objConnection);
OleDbDataReader reader = objCommand.ExecuteReader();
switch (flag) //分别根据姓名,学号,邮箱查询学生信息
{
case 1:
break;
case 2:
break;
case 3:
break;
}
if (checkInfo.Length == 0 || checkInfo.Trim() == string.Empty)
{
//输入查询信息为空,直接列出所有学生信息
this.init(reader);
}
else
{
//依据输入查询信息checkInfo查询学生信息并显示到显示区
while (reader.Read())
{
if (reader["name"].ToString().Equals(checkInfo) || reader["studentID"].ToString().Equals(checkInfo)
|| reader["email"].ToString().Equals(checkInfo))
{
ListViewItem lvi = new ListViewItem(reader["name"].ToString());
}
}
}
// 关闭Reader.
reader.Close();
objConnection.Close();
}
(4)成绩修改模块
代码:
private void toolStripMenuItem2_Click(object sender, EventArgs e)
{
MessageBox.Show("未选中修改项!");
else
{
xiugai xi = new xiugai();
strConnection += @"Data Source=" + Application.StartupPath + "\\StudentInfo.mdb";
OleDbConnection objConnection = new OleDbConnection(strConnection);
objConnection.Open();
OleDbCommand objCommand = new OleDbCommand("select * from information where name='"
OleDbDataReader reader = objCommand.ExecuteReader();
reader.Read();
//sex = reader["sex"].ToString();
if (reader["sex"].ToString() == "男")
else
//objConnection.Close();
//objCommand.ExecuteNonQuery();
objConnection.Close();
xi.Show();
}
}
private void button1_Click(object sender, EventArgs e)
{
string sex;
sex = "男";
else
sex = "女";
strConnection += @"Data Source=" + Application.StartupPath + "\\StudentInfo.mdb";
OleDbConnection objConnection = new OleDbConnection(strConnection);
objConnection.Open();
cmd.ExecuteNonQuery();
objConnection.Close();
MessageBox.Show("修改成功!");
}
(5)成绩删除模块
代码:
private void toolStripMenuItem4_Click(object sender, EventArgs e)
{
MessageBox.Show("未选中删除项!");
else
{
strConnection += @"Data Source=" + Application.StartupPath + "\\StudentInfo.mdb";
OleDbConnection objConnection = new OleDbConnection(strConnection);
OleDbCommand cmd = new OleDbCommand("delete from information where name='"
objConnection.Open();
cmd.ExecuteNonQuery();
objConnection.Close();
MessageBox.Show("删除成功!");
}
}
}
“删除”按钮函数如下:
void CEditDlg::OnBnClickedButtonDelete()
{
CString id;
GetDlgItem(IDC_EDIT_QUID)->GetWindowText(id);
HRESULT hr = NOERROR;
Database db;
TCHAR sql[1024];
hr = db.ConnectDB(L"dbtest.sdf");
wsprintf(sql,TEXT("DELETE FROM Students where id = '%s'"),id);
hr = db.GetRowset(sql);
hr = db.DisconnectDB();
if (hr != NOERROR)
{
MessageBox(L"删除失败!");
OnOK();
}
else
{
MessageBox(L"删除成功!");
OnCancel();
}
}
在 IDD_DIALOG_DISPLAY 对话框中,添加 OnInitDialog 函数,
BOOL CDisplayDlg::OnInitDialog()
{
CDialog::OnInitDialog();
实现
m_listctrl.InsertColumn(0,L"姓名",LVCFMT_IMAGE|LVCFMT_LEFT,60);
m_listctrl.InsertColumn(1,L"学号",LVCFMT_IMAGE|LVCFMT_LEFT,60);
m_listctrl.InsertColumn(2,L"入学年份",LVCFMT_IMAGE|LVCFMT_LEFT,60);
m_listctrl.InsertColumn(3,L"专业",LVCFMT_IMAGE|LVCFMT_LEFT,60);
m_listctrl.InsertColumn(4,L"班级",LVCFMT_IMAGE|LVCFMT_LEFT,60);
m_listctrl.InsertColumn(5,L"ID",LVCFMT_IMAGE|LVCFMT_LEFT,60);
Database db;
db.ConnectDB(L"dbtest.sdf");
CString str;
TCHAR sql[1024];
//客户 ID
wsprintf(sql,TEXT("select count(1) from Students"));
HRESULT hr = db.GetRowset(sql);
int rownumber = *db.g_TTSInfo – 48;//db.gTTSInfo 是 char 值即 ASCII 码,转换为 int 型需要-48。即总
条数
db.DisconnectDB();
int i=0;
int id = 1;
do
{
db.ConnectDB(L"dbtest.sdf");
wsprintf(sql,TEXT("select Name from Students where id = %d"),id);
db.GetRowset(sql);
str = db.g_TTSInfo;
m_listctrl.InsertItem(i,str);
db.DisconnectDB();
db.ConnectDB(L"dbtest.sdf");
wsprintf(sql,TEXT("select xh from Students where id = %d"),id);
db.GetRowset(sql);
str = db.g_TTSInfo;
m_listctrl.SetItemText(i,1,str);
db.DisconnectDB();
db.ConnectDB(L"dbtest.sdf");
wsprintf(sql,TEXT("select rxnf from Students where id = %d"),id);
db.GetRowset(sql);
str = db.g_TTSInfo;
m_listctrl.SetItemText(i,2,str);
db.DisconnectDB();
db.ConnectDB(L"dbtest.sdf");
wsprintf(sql,TEXT("select zy from Students where id = %d"),id);
db.GetRowset(sql);
str = db.g_TTSInfo;
m_listctrl.SetItemText(i,3,str);
db.DisconnectDB();
db.ConnectDB(L"dbtest.sdf");
wsprintf(sql,TEXT("select bj from Students where id = %d"),id);
db.GetRowset(sql);
str = db.g_TTSInfo;
m_listctrl.SetItemText(i,4,str);
db.DisconnectDB();
db.ConnectDB(L"dbtest.sdf");
wsprintf(sql,TEXT("select id from Students where id = %d"),id);
db.GetRowset(sql);
str = db.g_TTSInfo;
m_listctrl.SetItemText(i,5,str);
db.DisconnectDB();
i++;
id=id+1;
}
while(id<=rownumber);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
5 编译与运行结果
6 总结
本次系统设计让我知道了进行管理系统开发这样的工作,要有恒心,要能静下新来做,而不能浮躁。要善于同同学和老师交流与合作,善于获取各种有用的资源。?
培养独立思考,深入研究,分析问题、解决问题的能力。独立自主设计和编码等一系列的程序。通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。?
更让我认识到一个系统开发的过程中编码不是重要的,最重要的是分析系统、建立起系统模型。只有分析出来才能进行编码。在分析一个系统前,操作者必须要对将要开发的系统所涉及到的各方面知识有一个整体的认识,然后将系统的模型建立起来。?
在程序编写中,我认识到软件要有简便的界面,良好的程序风格。拥有这些条件,程序的可读性才会好,开发的复杂度才能大大减少,修改代码时更加容易下手。