




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、湖南科技大學(xué)VC+ 課程設(shè)計(jì)報(bào)告學(xué)籍管理信息系統(tǒng)學(xué)生姓名:楊朝勇學(xué)號(hào):1007010204 年級(jí)專業(yè):10級(jí)信息技術(shù) 班級(jí):信息技術(shù)1班指導(dǎo)老師:李建湘 學(xué)院:數(shù)學(xué)與計(jì)算科學(xué)提交日期:2012年12月目錄一、開發(fā)背景3二、系統(tǒng)分析.4【2.1】需求分析.4三、系統(tǒng)設(shè)計(jì).4【3.1】系統(tǒng)進(jìn)入界面的流程圖.5【3.2】用戶管理管理.5【3.3】信息維護(hù).5【3.4】記錄查詢.5【3.5】報(bào)表輸出.5四、功能模塊分析.4【4.1】系統(tǒng)管理模塊.4【4.2】報(bào)表輸出模塊.4【4.3】學(xué)生信息管理模塊.4五、開發(fā)環(huán)境.5六、系統(tǒng)演示.7【6.1】系統(tǒng)登錄.7【6.2】系統(tǒng)主界面.7【6.3】系統(tǒng)管理.8
2、【6.4】學(xué)生信息管理.9七、系統(tǒng)實(shí)現(xiàn)思路19八、存在的不足與對(duì)策20九、心得與體會(huì)20十、主要程序代碼21【10.1】鏈表類.21【10.2】對(duì)話框類的實(shí)現(xiàn)代碼.29十一、參考文獻(xiàn)41一、 開發(fā)背景Ø 對(duì)于一個(gè)只有十個(gè)以下學(xué)生的學(xué)校來說,老師可以憑借自己的記憶力記住學(xué)生的基本信息、學(xué)籍成績(jī)等資料。Ø 但是對(duì)于一個(gè)幾十人、上百人、甚至上千人的學(xué)校來說,光憑管理者的記憶力肯定是不夠的,采用手工記錄的方式會(huì)非常不方便。如果有一款管理軟件能夠完成學(xué)校信息的管理,這樣會(huì)大大減輕管理者的負(fù)擔(dān)。 二、 系統(tǒng)分析1. 需求分析【2.1】 需要有一個(gè)記錄學(xué)生的學(xué)號(hào)、姓名、性別、性別等基本信
3、息的學(xué)生基本信息管理模塊。三、 系統(tǒng)設(shè)計(jì)【3.1】 系統(tǒng)的進(jìn)入界面流程圖【3.2】用戶管理管理者用自己的用戶名和密碼登錄該系統(tǒng)。【3.3】信息維護(hù)管理著進(jìn)入該系統(tǒng)后可以添加,刪除?!?.4】記錄查詢管理者可以學(xué)生學(xué)號(hào)查詢和學(xué)生姓名查詢。【3.5】報(bào)表輸出輸出學(xué)校所有學(xué)生的信息。進(jìn)入系統(tǒng)后的流程界面如下:四、 模塊分析【4.1】. 系統(tǒng)登錄注冊(cè)和注銷系統(tǒng)開始運(yùn)行就出現(xiàn)系統(tǒng)登錄對(duì)話框,密碼正確后才能進(jìn)入主界面(默認(rèn)用戶名:shan密碼為123),用戶還可以注銷,注冊(cè)和退出功能?!?.2】顯示模塊顯示模塊將輸出所有學(xué)生的所有的信息 ?!?.3】 修改模塊首先由用戶輸入要修改的學(xué)生的姓名或者學(xué)號(hào),然后
4、系統(tǒng)用修改函數(shù)查找,顯示該名學(xué)生的資料,然后系統(tǒng)提示用戶輸入需要修改學(xué)生的資料?!?.4】查詢模塊首先由用戶輸入要查詢的學(xué)生的學(xué)號(hào)或者姓名,然后系統(tǒng)用查詢函數(shù)查找,顯示該名學(xué)生的信息?!?.5】刪除模塊首先由用戶輸入要?jiǎng)h除的單個(gè)學(xué)生姓名或者學(xué)號(hào),然后調(diào)用刪除函數(shù),刪除該名學(xué)生的資料?!?.6】 清空模塊系統(tǒng)將會(huì)把所有學(xué)生的資料全部刪除,將鏈表清空。五、 開發(fā)環(huán)境【5.1】系統(tǒng)開發(fā)平臺(tái):Visual C+ 6.0。【5.2】運(yùn)行平臺(tái):Windows 2000/Windows XP/Windows 2003/Windows Vista/windows7。六,系統(tǒng)演示【6.1】登錄系統(tǒng)當(dāng)?shù)卿浵到y(tǒng)時(shí),
5、出現(xiàn)對(duì)話框 ,輸入用戶名:楊朝勇 密碼123【6.2】 系統(tǒng)主界面當(dāng)管理者輸入正確的密碼后,驗(yàn)證成功后,進(jìn)入系統(tǒng)的主界面如下:【6.3】系統(tǒng)管理打開系統(tǒng)管理點(diǎn)擊注冊(cè),當(dāng)用戶名注冊(cè)成功打開系統(tǒng)管理退出【6.4】學(xué)生信息管理1,打開學(xué)生信息管理點(diǎn)擊添加信息添加信息成功2,打開學(xué)生信息管理刪除信息刪除學(xué)生信息成功3打開學(xué)生信息管理點(diǎn)擊修改學(xué)生信息輸入修改學(xué)生姓名:4,打開學(xué)生信息管理按學(xué)號(hào)查詢查詢成功:5,打開學(xué)生信息管理按學(xué)生姓名查找如果該系統(tǒng)沒有改學(xué)生信息提示6,打開學(xué)生信息管理系統(tǒng)查詢所有者信息如果該系統(tǒng)中沒有有學(xué)生信息則顯示該系統(tǒng)中為空,則會(huì)提示是否向該系統(tǒng)中添加數(shù)據(jù)如果該系統(tǒng)中有學(xué)生信息,
6、則顯示所有學(xué)生的信息7,打開學(xué)生信息管理系統(tǒng)清除所信息 對(duì)話框會(huì)提示是否清空所有學(xué)生的信息七、系統(tǒng)實(shí)現(xiàn)思路用一個(gè)鏈表類來實(shí)現(xiàn)所有的功能,鏈表類中封裝了如下功能:int LinkListInsert(string &name,string &id,int &age);/在第一個(gè)位置插入數(shù)據(jù)int GetFirst(linklist &first); /得到第一個(gè)位置的元素int GetNext(linklist &pos,linklist &next); /得到指定位置的下一個(gè)位置int GetPre(linklist &pos,linkl
7、ist &pre);/得到指定位置的上一個(gè)位置int FindByName(string &name,linklist &object,linklist &pre); /按姓名查找int FindById(string &id,linklist &object,linklist &pre);/按學(xué)號(hào)查找int Edit(linklist &object,string &name,string &id,int &age);/修改指定元素int Delete(linklist &object);/刪除指
8、定元素的后一個(gè)int SaveAll();/保存int LoadAll();/載入 在MFC中應(yīng)用該類即可實(shí)現(xiàn)該系統(tǒng)。八,存在的不足與對(duì)策鑒于本人水平有限及時(shí)間等方面的原因,該系統(tǒng)的功能比較簡(jiǎn)單,不足之處有:首先,一次性只能輸入一個(gè)數(shù)據(jù),當(dāng)下一次輸入時(shí),信數(shù)據(jù)會(huì)覆蓋原來的數(shù)據(jù),不能永久保存,因而不具有實(shí)際用途,僅停留在單純的編程水平,并不能用于實(shí)際;第二,查詢能力不強(qiáng),而且沒有設(shè)置對(duì)一些簡(jiǎn)單的信息進(jìn)行修改,刪除及對(duì)同樣的姓名全部刪除其信息等功能。對(duì)于一些不正確的輸入可能會(huì)造成一些難以預(yù)料的結(jié)果,因此,請(qǐng)盡可能的輸入正確信息。這些不足請(qǐng)老師多多諒解。今后設(shè)計(jì)者會(huì)更多的學(xué)習(xí)編程技巧,不斷的提高程序
9、設(shè)計(jì)水平。九,心得體會(huì)經(jīng)過幾個(gè)星期的設(shè)計(jì)和開發(fā),系統(tǒng)基本開發(fā)完畢。在本次課程設(shè)計(jì)中困難遇到不少,比如文本文件的操作,i/o流,string,Cstring類,容器類相關(guān)的成員函數(shù),全局參數(shù)的傳遞等。由于這是第一次進(jìn)行課程設(shè)計(jì)沒有經(jīng)驗(yàn)很多地方多不盡人意,函數(shù)的實(shí)現(xiàn)不夠完善等等。由于設(shè)計(jì)時(shí)間較短,所以該系統(tǒng)還有許多不盡如人意的地方,功能不夠完善等多方面問題。在這次系統(tǒng)開發(fā)的過程中,我深深體會(huì)到了做一個(gè)系統(tǒng),首先進(jìn)行需求分析的重要性,了解了一個(gè)系統(tǒng)的制作,從功能分析到功能模塊分析、與其他系統(tǒng)的關(guān)系,再到后臺(tái)數(shù)據(jù)存儲(chǔ)設(shè)計(jì)及各功能模塊的創(chuàng)建都需要從整體上考慮設(shè)計(jì)。這些都有待以后進(jìn)一步改進(jìn)。通過實(shí)踐對(duì)于我
10、以后的學(xué)習(xí)是一筆不小的財(cái)富!特別是自己編的函數(shù)用戶注冊(cè)模塊。希望在以后數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)中能開發(fā)出更強(qiáng)大的系統(tǒng),希望以后能夠在這方面有更多的創(chuàng)新和強(qiáng)化。十,程序的主要代碼【1】鏈表類:頭文件/*/*鏈表類基本操作:*/*/#ifndef LINKLIST_H#define LINKLIST_H#include <string>#define FALSE 0#define TRUE 1#define OVERFLOW -2/#define OK 1/#define ERROR 0using namespace std;typedef struct LNodestring Name; st
11、ring Id;int Age;int Length; /表長(zhǎng)struct LNode *next;LNode,*linklist;class LinkListpublic:LinkList(); /在構(gòu)造函數(shù)中初始化一個(gè)頭結(jié)點(diǎn)LinkList(); int LinkListInsert(string &name,string &id,int &age);/在第一個(gè)位置插入數(shù)據(jù)int GetFirst(linklist &first); /得到第一個(gè)位置的元素int GetNext(linklist &pos,linklist &next); /
12、得到指定位置的下一個(gè)位置int GetPre(linklist &pos,linklist &pre);/得到指定位置的上一個(gè)位置int FindByName(string &name,linklist &object,linklist &pre); /查找int FindById(string &id,linklist &object,linklist &pre);int Edit(linklist &object,string &name,string &id,int &age);/修改指定元素
13、int Delete(linklist &object);/刪除指定元素的后一個(gè)int DisplayAll();int SaveAll();/保存int LoadAll();/載入private:linklist A;#endif實(shí)現(xiàn)源文件:#include <iostream>#include "LinkList.h"#include <fstream>LinkList:LinkList()A=new LNode;/構(gòu)建一個(gè)頭結(jié)點(diǎn)if(!A)exit(OVERFLOW);/內(nèi)存分配失敗cout<<"error!&qu
14、ot;<<endl;A->Age=0;A->Id=""A->Name=""A->next=NULL;A->Length=0;LinkList:LinkList()linklist p,q;p=A;while(p->next!=NULL)q=p->next;delete p;p=q;delete p;A=NULL;p=NULL;q=NULL;int LinkList:LinkListInsert(string &name,string &id,int &age)linklist
15、B;B=new LNode;if(!B)exit(OVERFLOW);/內(nèi)存分配失敗cout<<"error!"<<endl;return FALSE;B->Age=age;B->Id=id;B->Name=name;B->next=A->next;/把元素插入第一個(gè)位置A->next=B;A->Length+;return TRUE;int LinkList:GetFirst(linklist &first)if(A->Length=0)cout<<"no value!&
16、quot;<<endl;first=A;return FALSE;elsefirst=A->next;return TRUE;int LinkList:GetNext(linklist &pos,linklist &next)if(A->Length=0)cout<<"that is the last,no value!"<<endl;next=NULL;return FALSE;elsenext=pos->next;return TRUE;int LinkList:FindByName(string &
17、amp;name,linklist &object,linklist &pre)if(A->Length=0)cout<<"no value!"<<endl;object=NULL;return FALSE;elselinklist p;p=A->next;pre=A;while(p)if(name=p->Name)object=p;return TRUE;pre=p;p=p->next;cout<<"no element!"<<endl;return FALSE;i
18、nt LinkList:FindById(string &id,linklist &object,linklist &pre)if(A->Length=0)cout<<"no value!"<<endl;object=NULL;return FALSE;return TRUE;int LinkList:LoadAll()string name;string id;int length;int age;ifstream input("output.txt");if(input)input>>
19、length;int i=0;while(!input.eof()&&i+<length)input>>name>>id>>age;LinkListInsert(name,id,age);input.close();return TRUE;elsecout<<"can not load any data!"<<endl;input.close();return FALSE;【10.2】對(duì)話框類的實(shí)現(xiàn)代碼 BOOL C1007010212Dlg:OnInitDialog()CDialog:OnI
20、nitDialog();/ Add "About." menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)if (IsIconic()CPaintDC dc(this); / device co
21、ntext for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon
22、 + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();/ The system calls this to obtain the cursor to display while the user drags/ the minimized window.HCURSOR C1007010212Dlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;void C1007010212Dlg:OnBtnAdd() / TODO: Add your control notifi
23、cation handler code hereCDlgAdd add;LinkList data;if(IDOK=add.DoModal()data.LoadAll();/載入原有數(shù)據(jù)UpdateData();/CString strA = "A"std:string strB = "B"strA = strB.data(); / CString -> string/strB = LPCSTR(strA); / string -> CString if(""=add.m_name)MessageBox("信息不
24、完整!n請(qǐng)重新輸入!");return;if(""=add.m_id)MessageBox("信息不完整!n請(qǐng)重新輸入!");return;if(0=add.m_age)MessageBox("信息不完整!n請(qǐng)重新輸入!");return;string name,id;name=LPCSTR(add.m_name);id=LPCSTR(add.m_id);/將CString 轉(zhuǎn)換為string;data.LinkListInsert(name,id,add.m_age);data.SaveAll(); /保存數(shù)據(jù)m_list
25、_stuinfo.DeleteAllItems();OnBtnDisplay();AfxMessageBox("信息添加成功!");void C1007010212Dlg:OnBtnDisplay() / TODO: Add your control notification handler code herem_list_stuinfo.DeleteAllItems();LinkList data;linklist first,next;data.LoadAll();/載入數(shù)據(jù)if(!data.GetFirst(first)if(IDOK=AfxMessageBox(&q
26、uot;沒有數(shù)據(jù),是否請(qǐng)輸入數(shù)據(jù)!",MB_OKCANCEL)OnBtnAdd();elsewhile(first)char age5;memset(age,0,5);m_list_stuinfo.InsertItem(0,first->Name.c_str();m_list_stuinfo.SetItemText(0,1,first->Id.c_str();itoa(first->Age,age,10);m_list_stuinfo.SetItemText(0,2,age);if(data.GetNext(first,next)first=next;void C1
27、007010212Dlg:OnBtnDeleteall() / TODO: Add your control notification handler code hereLinkList data;data.LoadAll();if(IDOK=AfxMessageBox("確定清空數(shù)據(jù)n清空后將不可恢復(fù)!",MB_OKCANCEL)data.SaveNull();AfxMessageBox("數(shù)據(jù)已清空");m_list_stuinfo.DeleteAllItems();elsereturn ;void C1007010212Dlg:OnBtnDelet
28、e() / TODO: Add your control notification handler code hereCDlgDelete a;LinkList data;linklist object,pre;data.LoadAll();a.DoModal();UpdateData();string name;name=LPCSTR(a.m_name);if(data.FindByName(name,object,pre)if(IDOK=AfxMessageBox("確定刪除數(shù)據(jù)n清空后將不可恢復(fù)!",MB_OKCANCEL)data.Delete(pre);data.
29、SaveAll();m_list_stuinfo.DeleteAllItems();OnBtnDisplay();elseAfxMessageBox("沒有該生信息!");void C1007010212Dlg:OnBtnFindbyname() / TODO: Add your control notification handler code hereLinkList data;linklist object,pre;string str;data.LoadAll();CDlgFindByName a;a.DoModal();UpdateData();str=LPCST
30、R(a.m_name);if(data.FindByName(str,object,pre)CDlgDisplay b;CString na,id;na.Format("%s",object->Name.c_str();id=object->Id.data();b.m_age=object->Age;b.m_id=id;b.m_name=na;b.DoModal();UpdateData(FALSE);elseAfxMessageBox("沒有該生信息!");return ;void C1007010212Dlg:OnBtnFindby
31、id() / TODO: Add your control notification handler code hereLinkList data;linklist object,pre;string str;data.LoadAll();CDlgFindById a;a.DoModal();UpdateData();str=LPCSTR(a.m_id);if(data.FindById(str,object,pre)CDlgDisplay b;CString na,id;na.Format("%s",object->Name.c_str();id=object->Id.data();b.m_age=object->Age;b.m_id=id;b.m_name=na;b.DoModal();UpdateData(FALSE);elseAfxMessageBox("沒有該生信息!");return ;void C1007010212Dlg:OnBtnEdit() / TODO: Add your control notification
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 聲音課堂活動(dòng)方案
- 地震宣講活動(dòng)方案
- 太湖慈善活動(dòng)方案
- 大牌鞋店活動(dòng)方案
- 大型車展活動(dòng)方案
- 大學(xué)班級(jí)舉行活動(dòng)方案
- 夜晚走訪群眾活動(dòng)方案
- 城管市容教育活動(dòng)方案
- 復(fù)興小學(xué)家長(zhǎng)會(huì)活動(dòng)方案
- 地產(chǎn)越野活動(dòng)方案
- MOOC 鐵路行車組織-北京交通大學(xué) 中國大學(xué)慕課答案
- 璀璨山?!鞒?石家莊海山公園景觀設(shè)計(jì)
- 鐵礦石提煉與冶煉技術(shù)
- 國家職業(yè)技術(shù)技能標(biāo)準(zhǔn) 6-16-02-07 石油開采工 人社廳發(fā)202226號(hào)
- 普通高中語文課程標(biāo)準(zhǔn)2023
- 混凝土配合比自動(dòng)計(jì)算書
- 過敏性休克搶救步驟流程圖
- 華南理工大學(xué)2019級(jí)大學(xué)物理(I)期末試卷A卷及答案
- 國開學(xué)習(xí)網(wǎng)《小學(xué)語文教學(xué)研究》形考任務(wù)1-5答案
- 骨代謝標(biāo)志物在骨質(zhì)疏松診療中的應(yīng)用指南
- 電氣控制及Plc應(yīng)用技術(shù)電子教案
評(píng)論
0/150
提交評(píng)論