C#軟件開發(fā)工具實訓(xùn)
前言
隨著學(xué)校的發(fā)展,學(xué)生人數(shù)不斷增加,各種需要處理的學(xué)生信息也變多了。那么一款用于處理學(xué)生信息的學(xué)生信息管理系統(tǒng)應(yīng)運而生,該系統(tǒng)具有提高學(xué)生管理工作效率的特點。學(xué)生信息管理系統(tǒng)可以讓學(xué)生信息管理工作,規(guī)范、科學(xué),從而減少學(xué)校工作人員的負(fù)擔(dān)的。
學(xué)生檔案管理系統(tǒng)是學(xué)校工作人員管理學(xué)生信息的工具,能使學(xué)生信息實現(xiàn)系統(tǒng)化、規(guī)范化和自動化,其中心任務(wù)是用計算機對學(xué)生信息進行常規(guī)管理,如查詢、修改、增加、刪除,針對這樣的需求設(shè)計了學(xué)生檔案管理系統(tǒng)。
本系統(tǒng)主要包括學(xué)生信息查詢、學(xué)生課程查詢、班級管理等幾部分。其功能主要有:
1、有關(guān)學(xué)籍等信息的輸入,包括輸入學(xué)生基本信息、所在班級、所學(xué)課程和成績等。
2、學(xué)生信息的查詢,包括查詢學(xué)生基本信息、所在班級、已學(xué)課程和成績等。
3、學(xué)生信息的修改。
4、班級管理信息的輸入,包括輸入班級設(shè)置、年級信息等。
5、班級管理信息的查詢。
6、班級管理信息的修改。
7、學(xué)生課程的設(shè)置和修改。
8、系統(tǒng)管理:修改密碼,退出系統(tǒng)。
學(xué)生信息管理系統(tǒng)是典型的信息管理系統(tǒng)(MIS),其開發(fā)主要包括后臺數(shù)據(jù)庫的建立和維護以及前端應(yīng)用程序的開發(fā)兩個方面。對于前者要求建立起數(shù)據(jù)一致性和完整性強、數(shù)據(jù)安全性好的庫。而對于后者則要求應(yīng)用程序功能完備,易使用等特點。
1.緒論
1.1問題的提出
隨著科學(xué)的進步,計算機技術(shù)方面也迅猛發(fā)展,比如計算機網(wǎng)絡(luò)技術(shù)與數(shù)據(jù)庫技術(shù)方面,這些方面的進步改變了人們生活工作的方式。網(wǎng)絡(luò)技術(shù)的應(yīng)用使得計算機之間通信、信息共享成為可能,而數(shù)據(jù)庫技術(shù)的應(yīng)用則為人們提供了數(shù)據(jù)存儲、信息檢索、信息分析等功能,從而使得工作更有效率。
數(shù)據(jù)庫始于20世紀(jì)60年代,經(jīng)過40多年的發(fā)展,現(xiàn)在已經(jīng)是變成了一種體系,成為計算機軟件的一個不可替代的分支。數(shù)據(jù)庫技術(shù)展現(xiàn)的是如今數(shù)據(jù)管理的方法,使計算機的應(yīng)用切實融入到國民經(jīng)濟各個領(lǐng)域,在數(shù)據(jù)處理領(lǐng)域發(fā)揮著越來越大的作用。
我國的教育是一個影響著國家興盛的重要行業(yè),隨著市場經(jīng)濟體制的發(fā)展,根據(jù)社會主義制度的中國特有的國情發(fā)展,我國對教育也是大力扶持與重視的,這樣就使教育業(yè)向規(guī)范性與現(xiàn)代化的方向高速發(fā)展,教育事業(yè)從各方面提高工作效率,取得很好的經(jīng)濟效益,而一些新興的、比較小的教育機構(gòu)還沒有全部具備這種功能。由此可見,隨著我國教育的快速發(fā)展,計算機信息技術(shù)在教育上的應(yīng)用會更加普及。
1.2項目開發(fā)的目的及意義
學(xué)生信息管理系統(tǒng)是將計算機技術(shù)和教學(xué)、教務(wù)工作相結(jié)合,按照學(xué)校的工作流程設(shè)計完成的。為了使學(xué)生信息管理系統(tǒng)在學(xué)院的管理中發(fā)揮更大的作用,讓工作過程的更加簡便,提高工作效率和工作質(zhì)量,系統(tǒng)應(yīng)具有實用性、簡便性和適用性,與此同時要做到科學(xué)性,對每個數(shù)據(jù)庫要有條不紊的管理,防止錯亂,能夠按照用戶的要求進行簡單查詢和復(fù)合查詢,實現(xiàn)報表打印,能夠?qū)Σ樵兘Y(jié)果進行分類匯總,注意數(shù)據(jù)的安全性,方便用戶的操作,盡量避免復(fù)雜操作。
在學(xué)校,用計算機管理學(xué)生的信息已經(jīng)越來越時尚了。用計算機不僅可以提高單位時間內(nèi)做的事,還可以讓錯誤發(fā)生到最低,更重要的是可以保證學(xué)校資料的安全性,從而提高了學(xué)校的管理能力。因此學(xué)生信息管理系統(tǒng)對于學(xué)校來說,是必不可少的。
2.開發(fā)工具的選擇
本系統(tǒng)的開發(fā)使用的是MICROSOFT公司的VisualStudio.net開發(fā)工具,利用其提供的各種面向?qū)ο蟮拈_發(fā)工具,尤其是控件和簡潔的數(shù)據(jù)庫的智能化對象,在很短時間就能建立起系統(tǒng)應(yīng)用原型,對初始原型系統(tǒng)進行需求迭代,不斷修正和改進,以達到用戶滿意的系統(tǒng)。
本系統(tǒng)采用的數(shù)據(jù)庫是MicrosoftSQLServer2008,它是一個支持多用戶的新型數(shù)據(jù)庫,適用于大中規(guī)模的數(shù)據(jù)量需求,提供了一個全面的數(shù)據(jù)庫平臺,它可以用一個單獨的分析存儲進行強大的分析。具有數(shù)據(jù)壓縮、備份壓縮、分區(qū)表并行等特點。
3.系統(tǒng)分析
3.1業(yè)務(wù)流程分析
班級管理業(yè)務(wù)流程圖:
教務(wù)處可以對班級信息進行管理,可以講班級信息下發(fā)給班主任,班主任與教務(wù)處的交互。
圖3.1班級管理業(yè)務(wù)流程圖
學(xué)生信息管理業(yè)務(wù)流程圖:
學(xué)生信息管理的功能完成的是教務(wù)處傳遞學(xué)生檔案給老師,學(xué)生信息管理具有學(xué)生信息的篩選、添加、修改、刪除等功能。

圖3.2學(xué)籍管理業(yè)務(wù)流程圖
課程管理業(yè)務(wù)流程圖:
課程信息管理的功能完成的是教務(wù)處分配課程給教師,課程信息管理具有查詢、添加、修改、刪除等功能。
圖3.3成績管理業(yè)務(wù)流程圖
成績信息管理業(yè)務(wù)流程圖:
成績信息管理的功能完成的是教務(wù)處分配課程給教師,課程信息管理具有查詢、添加、修改等功能。
圖3.4成績管理業(yè)務(wù)流程圖
4.學(xué)生信息管理系統(tǒng)(總體設(shè)計)
4.1系統(tǒng)功能設(shè)計
學(xué)生信息管理系統(tǒng)是一個完整的學(xué)校學(xué)生信息管理系統(tǒng)。在本系統(tǒng)中主要包括學(xué)生信息管理功能、班級管理功能、課程信息管理功能、學(xué)生成績管理功能等。它們的具體描述如下:
4.1.1用戶登錄和退出功能
用戶登錄功能主要包括的功能如下:
配置數(shù)據(jù)庫:靈活的配置數(shù)據(jù)庫以保證在不同的電腦主機上使用該系統(tǒng)。
4.1.2班級管理功能
班級管理功能主要實現(xiàn)班級的管理功能,如班級的添加、修改和刪除等。在系統(tǒng)中主要包括:添加新的班級和年級信息、修改班級和年級信息、刪除班級和年級信息。
4.1.3學(xué)生信息管理功能
學(xué)生檔案管理功能主要對學(xué)生信息的管理,如學(xué)生信息的添加、修改和刪除等。在系統(tǒng)中主要包括:查詢新的學(xué)生信息、添加新的學(xué)生信息、修改學(xué)生信息、刪除學(xué)生信息。
4.1.4課程信息管理功能
課程管理功能主要對課程信息的管理,如課程信息的添加、修改和刪除等。在系統(tǒng)中主要包括:添加新的課程信息、修改課程信息、刪除課程信息。
4.1.5學(xué)生成績管理功能
學(xué)生成績管理功能主要對學(xué)學(xué)生成績的管理,如學(xué)生成績的添加、修改和刪除等。在系統(tǒng)中主要包括:添加新的學(xué)生成績、修改學(xué)生成績、刪除學(xué)生成績。
4.2功能模塊設(shè)計:
4.3數(shù)據(jù)庫設(shè)計
數(shù)據(jù)庫的物理結(jié)構(gòu)如下:
注意:主鍵:PK外鍵:FK
院系表Department
字段 | 類型 | 備注 |
DeptId | int | PK院系ID |
DeptCode | Nvarchar(50) | 院系代碼 |
DeptName | Nvarchar(50) | 院系名稱 |
Contact | Nvarchar(50) | 聯(lián)系電話 |
專業(yè)表Major
字段 | 類型 | 備注 |
MajorId | int | PK專業(yè)ID |
MajorCode | Nvarchar(50) | 專業(yè)代碼 |
MajorName | Nvarchar(50) | 專業(yè)名稱 |
DeptId | int | FK院系ID |
Note | ntext | 專業(yè)簡介 |
班級表Class
字段 | 類型 | 備注 |
ClassId | int | PK班級ID |
ClassCode | Nvarchar(50) | 班級代碼 |
ClassName | Nvarchar(50) | 班級名稱 |
MajorId | int | FK專業(yè)ID |
學(xué)生表Students
字段 | 類型 | 備注 |
SutId | int | PK學(xué)生ID |
SutCode | Nvarchar(50) | 學(xué)號 |
SutName | Nvarchar(50) | 姓名 |
ClassId | int | FK班級ID |
Native | Nvarchar(100) | 籍貫 |
Born | datetime | 出生日期 |
National | Nvarchar(50) | 民族 |
Political | Nvarchar(50) | 政治面貌 |
Sex | Nvarchar(10) | 性別 |
Grade | int | 入學(xué)年份 |
Contact | Nvarchar(50) | 電話號碼 |
Photo | image | 相片 |
Note | ntext | 備注 |
課程表Course
字段 | 類型 | 備注 |
CourseId | int | PK課程ID |
CourseCode | Nvarchar(50) | 課程代碼 |
CourseName | Nvarchar(50) | 課程名稱 |
Note | ntext | 課程描述 |
Teacher | Nvarchar(50) | 授課老師 |
Credits | int | 學(xué)分 |
成績表Results
字段 | 類型 | 備注 |
ResultsId | int | PK成績ID |
SutId | Nvarchar(50) | FK學(xué)生ID |
CourseId | Nvarchar(50) | FK課程ID |
Score | int | 分?jǐn)?shù) |
SemesterId | Nvarchar(50) | FK學(xué)期ID |
學(xué)期表Semester
字段 | 類型 | 備注 |
SemesterId | int | PK學(xué)期ID |
SemesterName | Nvarchar(50) | 學(xué)期(例如:2011-2012學(xué)年第一學(xué)期、2011-2012學(xué)年第二學(xué)期、2012-2013學(xué)年第一學(xué)期、2012-2013學(xué)年第二學(xué)期、2013-2014學(xué)年第一學(xué)期、2013-2014學(xué)年第二學(xué)期) |
5.系統(tǒng)操作流程圖
首先是我們的登陸界面,這里將會驗證密碼(默認(rèn)教務(wù)處管理員用戶名:admin密碼:admin),如果密碼正確將登陸成功,可以選擇系統(tǒng)管理、學(xué)生信息管理等對它們進行添加、刪除、修改等相應(yīng)的操作,操作完畢后再系統(tǒng)管理里安全退出即可。
6.系統(tǒng)詳細(xì)設(shè)計
6.1學(xué)生信息管理系統(tǒng)的界面與實現(xiàn)
系統(tǒng)啟動運行后,將出現(xiàn)用戶登錄窗體(圖6.1),當(dāng)用戶輸入用戶名或者密碼錯誤講不能登陸。(默認(rèn)用戶名為admin密碼為admin)
圖6.1系統(tǒng)登錄界面
部分代碼如下:
privatevoidbtnLogin_Click(objectsender,EventArgse)
{
if(txtUserName.Text.Trim().Length==0)
{
MessageBox.Show("用戶名不能為空!","提示");
txtUserName.Focus();
}
elseif(txtPwd.Text.Trim().Length==0)
{
MessageBox.Show("密碼不能為空!","提示");
txtUserName.Focus();
}
else
{
if(UsersBLL.GetUsersLogin(txtUserName.Text.Trim(),txtPwd.Text.Trim(),outusers))
{
AdminFormaf=newAdminForm(users);
af.Show();
this.Hide();
}
else
{
MessageBox.Show("用戶名或密碼錯誤!","提示");
}
}
}
6.2主窗口的設(shè)計
用戶輸入正確的用戶名和密碼以后程序即進入主窗口(圖6.2),本模塊是本系統(tǒng)的應(yīng)用界面,在本界面上集成了本系統(tǒng)的所有功能,共有6個功能菜單(功能模塊),從而實現(xiàn)了本系統(tǒng)從基礎(chǔ)資料管理、班級管理、學(xué)生信息管理、課程管理、成績管理、系統(tǒng)管理等系統(tǒng)的具體功能,同時,在系統(tǒng)管理模塊中可以完成對本系統(tǒng)的安全性管理。
圖6.2主窗口界面
6.2.1班級管理界面設(shè)計
本系統(tǒng)的班級管理窗口如下圖所示:
圖6.3班級窗口界面
添加、修改、刪除功能的主要代碼如下:
///根據(jù)ID修改
///
publicstaticintUpdateClass(ClassClassModel)
{
stringsql=string.Format("UPDATEClasssetClassCode='{0}',ClassName='{1}',MajorId={2}whereClassId={3}",ClassModel.ClassCode,ClassModel.ClassName,ClassModel.MajorId,ClassModel.ClassId);
returnDBHelper.ExecuteCommand(sql);
}
///
///根據(jù)主鍵刪除
///
publicstaticintDeleteClass(intId)
{
stringsql=string.Format("deletefromClasswhereClassId={0}",Id);
returnDBHelper.ExecuteCommand(sql);
}
///
///查詢條數(shù)
///
publicstaticintCountNumber(stringNewWHere)
{
stringsql="";
if(!string.IsNullOrEmpty(NewWHere))
{
sql="selectcount(*)fromClasswhere"+NewWHere;
}
else
{
sql="selectcount(*)fromClass";
}
returnDBHelper.GetIntScalar(sql);
}
///
///分頁
///
publicstaticListPageSelectClass(intpageSize,intpageIndex,stringWhereSrc,stringPXzd,stringPXType)
{
Listlist=newList();
stringsql=string.Format("SELECTtop{0}*FROMClasswhereClassIdnotin(selecttop{1}ClassIdfromClasswhere1=1{2}orderby{3}{4})and1=1{2}orderby{3}{4}",pageSize,pageSize*pageIndex,WhereSrc,PXzd,PXType);
using(DataTabletable=DBHelper.GetDataSet(sql))
{
list=GetList(table);
}
returnlist;
}
///
///根據(jù)主鍵查詢實體
///
publicstaticClassGetIdByClass(intId)
{
stringsql=string.Format("SELECT*FROMClasswhereClassId={0}",Id);
ClassClassModel=newClass();
using(DataTabletable=DBHelper.GetDataSet(sql))
{
ClassModel=GetMode(table);
}
returnClassModel;
}
///
///查詢?nèi)?/p>
///
publicstaticListAllData(stringWhereSrc,stringPXzd,stringPXType)
{
Listlist=newList();
stringsql="select*fromClasswhere1=1";
if(!string.IsNullOrEmpty(WhereSrc))
{
sql+=string.Format(WhereSrc+"orderby{0}{1}",PXzd,PXType);
}
else
{
sql+=string.Format("orderby{0}{1}",PXzd,PXType);
}
using(DataTabletable=DBHelper.GetDataSet(sql))
{
list=GetList(table);
}
returnlist;
}
///
///私有方法
///
privatestaticListGetList(DataTabletable)
{
Listlist=newList();
foreach(DataRowrowintable.Rows)
{
ClassClassModel=newClass();
ClassModel.ClassId=Convert.ToInt32(row["ClassId"]);
ClassModel.ClassCode=Convert.ToString(row["ClassCode"]);
ClassModel.ClassName=Convert.ToString(row["ClassName"]);
ClassModel.MajorId=Convert.ToInt32(row["MajorId"]);
list.Add(ClassModel);
}
returnlist;
}
6.2.2學(xué)生信息管理界面設(shè)計
圖6.4學(xué)生信息管理界面
導(dǎo)出Excel的主要代碼:
privatevoidbtnExport_Click(objectsender,EventArgse)
{
try
{
ExportExcel("學(xué)生信息資料.xls");
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message,"提示");
return;
}
}
privatevoidExportExcel(stringfileName)
{
stringsaveFileName="";
SaveFileDialogsaveDialog=newSaveFileDialog();
saveDialog.DefaultExt="xls";
saveDialog.Filter="Excel文件|*.xls";
saveDialog.FileName=fileName;
saveDialog.ShowDialog();
saveFileName=saveDialog.FileName;
if(saveFileName.IndexOf(":")<0)return;//被點了取消
Microsoft.Office.Interop.Excel.ApplicationxlApp=newMicrosoft.Office.Interop.Excel.Application();
if(xlApp==null)
{
MessageBox.Show("無法創(chuàng)建Excel對象,可能您的電腦未安裝Excel");
return;
}
Microsoft.Office.Interop.Excel.Workbooksworkbooks=xlApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbookworkbook=workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Microsoft.Office.Interop.Excel.Worksheetworksheet=(Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
//寫入標(biāo)題
for(inti=0;i<dgvView.ColumnCount;i++)
{
worksheet.Cells[1,i+1]=dgvView.Columns[i].HeaderText;
}
for(intr=0;r<dgvView.Rows.Count;r++)
{
for(inti=0;i<dgvView.ColumnCount;i++)
{
worksheet.Cells[r+2,i+1]=dgvView.Rows[r].Cells[i].Value;
}
System.Windows.Forms.Application.DoEvents();
}
worksheet.Columns.EntireColumn.AutoFit();//列寬自適應(yīng)
if(saveFileName!="")
{
try
{
workbook.Saved=true;
workbook.SaveCopyAs(saveFileName);
}
catch(Exceptionex)
{
MessageBox.Show("導(dǎo)出文件時出錯,文件可能正被打開!n"+ex.Message);
}
}
xlApp.Quit();
GC.Collect();//強行銷毀
MessageBox.Show(fileName+"保存成功","提示",MessageBoxButtons.OK);
}
}
6.2.3課程管理界面設(shè)計
圖6.4課程管理界面
查詢的部分代碼如下:
///
///查詢條數(shù)
///
publicstaticintCountNumber(stringNewWHere)
{
stringsql="";
if(!string.IsNullOrEmpty(NewWHere))
{
sql="selectcount(*)fromClasswhere"+NewWHere;
}
else
{
sql="selectcount(*)fromClass";
}
returnDBHelper.GetIntScalar(sql);
}
///
///分頁
///
publicstaticListPageSelectClass(intpageSize,intpageIndex,stringWhereSrc,stringPXzd,stringPXType)
{
Listlist=newList();
stringsql=string.Format("SELECTtop{0}*FROMClasswhereClassIdnotin(selecttop{1}ClassIdfromClasswhere1=1{2}orderby{3}{4})and1=1{2}orderby{3}{4}",pageSize,pageSize*pageIndex,WhereSrc,PXzd,PXType);
using(DataTabletable=DBHelper.GetDataSet(sql))
{
list=GetList(table);
}
returnlist;
}
///
///根據(jù)主鍵查詢實體
///
publicstaticClassGetIdByClass(intId)
{
stringsql=string.Format("SELECT*FROMClasswhereClassId={0}",Id);
ClassClassModel=newClass();
using(DataTabletable=DBHelper.GetDataSet(sql))
{
ClassModel=GetMode(table);
}
returnClassModel;
}
///
///查詢?nèi)?/p>
///
publicstaticListAllData(stringWhereSrc,stringPXzd,stringPXType)
{
Listlist=newList();
stringsql="select*fromClasswhere1=1";
if(!string.IsNullOrEmpty(WhereSrc))
{
sql+=string.Format(WhereSrc+"orderby{0}{1}",PXzd,PXType);
}
else
{
sql+=string.Format("orderby{0}{1}",PXzd,PXType);
}
using(DataTabletable=DBHelper.GetDataSet(sql))
{
list=GetList(table);
}
returnlist;
}
6.2.4成績信息管理界面設(shè)計
成績信息管理界面,基本上是一個信息顯示全面的界面,可以比較詳細(xì)的知道該學(xué)生的信息,以及哪一學(xué)期考試的成績,展示如圖:
圖6.5成績信息管理界面
愛華網(wǎng)



