当前位置:文档之家› Windows程序课程设计报告

Windows程序课程设计报告

Windows程序课程设计报告
Windows程序课程设计报告

window程序课程设计

简单的学生信息

管理应用程序

学生姓名:韩慧

学生学号: 031140312

班级: 031140--3

二〇一三年十二月

简单的学生信息管理应用程序

一、设计目的、内容及要求

1.1设计目的

1. 了解Windows编程的基础知识,掌握MFC应用程序的基本知识;

2. 基本掌握面向对象程序设计的基本思路和方法;

3. 掌握用VC++开发应用程序的的一般步骤和方法;

1.2设计内容

利用所学的基本知识, 设计一个简单的学生信息管理应用程序,具有以下功能:①实现学生信息的存储,可以用文件来实现。②编程实现学生信息的添加、删除、修改、浏览和查询等功能。

1.3设计要求

1. 用VC++进行编码,实现应用程序的功能。注重编码质量,代码要有适当

的注释;

2. 采用单文档多视图方式,左边为树视图,右边为列表视图,左边一级节点

为中原工学院,二级节点为计算机学院和软件学院,三级节点为计算机学院的三个专业。要求可以动态增加节点。楼便为列表视图,包含学生的学号、性别、姓名各科成绩等。右边也可以实现动态增加

3. 当选中节点时,显示对应的学生信息。如当选中”中原工学院”时选中所用的

学生信息,选中“计算机学院”时,显示所有计算机学院学生信息

4. 采用序列化方式保存和读取学生信息

二、主要的数据结构

1.数组集合类:CObArray m_stuObArray;

2.树:

3.序列化类数据

三、基本思路

基于树视图类建立单文档应用程序,插入列表视图类,切分窗口,左边为树视图,右边为列表视图。插入学生信息对话框,创建序列化类,并利用数组集合类储存学生信息。在主菜单中添加添加、修改、删除、查询菜单,并在文

档类中一一添加其映射函数。在列表视图类写入输出函数,在树视图类中添加click映射函数,调用列表试图中的输出函数,是两个视图之间建立关系。

四、步骤及主要代码

4.1设计并创建切分窗口完善视图

1.用MFC AppWizard (exe)创建一个单文档应用程序Student。在第六步中将视图类的基类选择为CtreeView。

2.用MFC ClassWizard添加一个新的ClistView的派生类ClistView。打开CmainFrame.h文件,为CmainFrame类添加下列变量成员:

public:

CSplitterWnd m_wndSplitter;

3.用MFC ClassWizard为CMainFrame类添加OnCreatClient函数,并添加下列代码:

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)

{

m_wndSplitter.CreateStatic(this,1,2);

m_wndSplitter.SetRowInfo(0,400,0);

m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CStudentView),CSize(400, 600),pContext);

m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(ClistView),CSize(400,600) ,pContext);

return TRUE;

}

4.在MainFrm.cpp的前面添加下列语句:

#include "MainFrm.h"

#include "StudentView.h"

#include "listView.h"

在StudentView.cpp的前面添加下列下列语句:

#include "StudentDoc.h"

#include "StudentView.h"

#include "listView.h"

在StudentDoc.cpp的前面添加:

#include "StudentDoc.h"

#include "listView.h"

#include "StudentView.h"

打开StudentView.h文件,在class CStudentView : public CtreeView语句前面添加:class CStudentDoc;

class CStudentView : public CTreeView

5.为CstudentView添加void类型函数creatTree()函数,并添加下列代码

void CStudentView::creatTree()

{

CTreeCtrl& m_TreeCtrl = GetTreeCtrl();

m_TreeCtrl.DeleteAllItems();

HTREEITEM hRoot,hParent,hChild,pS;

hRoot=m_TreeCtrl.InsertItem("中原工学院",0,1);

hParent=m_TreeCtrl.InsertItem("计算机学院",hRoot);

m_TreeCtrl.InsertItem("网络工程",hParent);

m_TreeCtrl.InsertItem("软件工程",hParent);

m_TreeCtrl.InsertItem("计算机科学",hParent);

hParent=m_TreeCtrl.InsertItem("软件学院",hRoot);

BOOL flag=TRUE;

CStudentDoc *doc=GetDocument();

int nIndex=doc->m_stuObArray.GetSize();

for(int n=0;n

{

CStudentInfo *stu=(CStudentInfo*)doc->m_stuObArray.GetAt(n);

CString str1=stu->strSpecial;

CString str2=stu->strAcademy;

if(!m_TreeCtrl.ItemHasChildren(hRoot))//判断根节点是否有子节点

{

hParent=m_TreeCtrl.InsertItem(str2,hRoot);

m_TreeCtrl.InsertItem(str1,0,1,hParent);

}

else

{

hParent=m_TreeCtrl.GetChildItem(hRoot);

pS=hParent;

for(;pS!=NULL;pS=m_TreeCtrl.GetNextItem(pS,TVGN_NEXT))

{

CString strItem1=m_TreeCtrl.GetItemText(pS);

if(strItem1==str2)flag=FALSE;

}

if(flag)

{

hParent=m_TreeCtrl.InsertItem(str2,hRoot);

m_TreeCtrl.InsertItem(str1,0,1,hParent);

}

else

{

if(!m_TreeCtrl.ItemHasChildren(hParent))//判断是否有子节点

m_TreeCtrl.InsertItem(str1,0,1,hParent);

else

{

hChild=m_TreeCtrl.GetChildItem(hParent);

for(;hChild!=NULL;hChild=m_TreeCtrl.GetNextItem(hChild,TVGN_NEXT))

{

CString strItem2=m_TreeCtrl.GetItemText(hChild);

if(strItem2==str1)flag=TRUE;

}

if(!flag)m_TreeCtrl.InsertItem(str1,0,1,hParent);

}

}

}

}

SetCtrlStyle(m_TreeCtrl.GetSafeHwnd(),

TVS_HASLINES|TVS_LINESA TROOT|TVS_HASBUTTONS);

}

6.为CstudentView添加SetCtrlStyle(HWND hWnd, DWORD dwNewStyle)函数,并写入下列代码:

void CStudentView::SetCtrlStyle(HWND hWnd, DWORD dwNewStyle)

{

LONG lStyle;

lStyle = GetWindowLong(hWnd, GWL_STYLE);//获取当前窗口style

lStyle &= ~LVS_TYPEMASK; //清除显示方式位

lStyle |= dwNewStyle; //设置style

SetWindowLong(hWnd, GWL_STYLE, lStyle);//设置style

}

7.在CStudentView::OnInitialUpdate中添加一些初始化代码:

void CStudentView::OnInitialUpdate()

{

CTreeView::OnInitialUpdate();

CTreeCtrl& m_TreeCtrl = GetTreeCtrl();

m_TreeCtrl.DeleteAllItems();

creatTree();

}

8.为ClistView类添加print(CStudentInfo *dlg) 和SetCtrlStyle(HWND hWnd,DWORD dwNewStyle)函数,并添入下列代码:

void SetCtrlStyle(HWND hWnd,DWORD dwNewStyle)

{

DWORD dwOldStyle;

dwOldStyle=GetWindowLong(hWnd,GWL_STYLE);

if((dwOldStyle&LVS_TYPEMASK)!=dwNewStyle)

{

dwOldStyle&=~LVS_TYPEMASK;

dwNewStyle|=dwOldStyle;

SetWindowLong(hWnd,GWL_STYLE,dwNewStyle);

}

}

void ClistView::print(CStudentInfo *dlg)

{

CListCtrl&m_listctrl=GetListCtrl();

m_listctrl.InsertItem(0,dlg->strName);

m_listctrl.SetItemText(0,1,dlg->strNO);

if(dlg->bMale)

m_listctrl.SetItemText(0,2,"男");

else

m_listctrl.SetItemText(0,2,"女");

m_listctrl.SetItemText(0,3,dlg->tBirth.Format("%Y-%m-%d"));

m_listctrl.SetItemText(0,4,dlg->strAcademy);

m_listctrl.SetItemText(0,5,dlg->strSpecial);

CString str;

str.Format("%d",dlg->English);

m_listctrl.SetItemText(0,6,str);

str.Format("%d",dlg->Computer);

m_listctrl.SetItemText(0,7,str);

}

9.在ClistView::OnInitialUpdate中添加初始化代码:

void ClistView::OnInitialUpdate()

{

CListView::OnInitialUpdate();

CListCtrl&m_listctrl=GetListCtrl();

SetCtrlStyle(m_listctrl.m_hWnd,LVS_REPORT);

for(int n=0;n<8;n++)

m_listctrl.DeleteColumn(0);

CString strHeader[8]={"姓名","学号","性别","出生年月","学院","专业","英语","计算机"};

int nWidth[8]={100,80,60,100,150,150,80,80};

for(int nCol=0;nCol<8;nCol++)

m_listctrl.InsertColumn(nCol,strHeader[nCol],LVCFMT_LEFT,nWidth[nCol]); }

4.2文档序列化——建立可序列化类

1.选择“文件”→“新建”菜单命令,显示出“新建”对话框。单击“文件”标签在左边的列表框中选择C/C++ Header File项,在右边的“文件”下的编辑框中键入StudentInfo.h,单击“确定”按钮。

2.在文档窗口中输入下列代码:

class CStudentInfo:public CObject

{

public:

CString strName; //姓名

CString strNO; //学号

BOOL bMale; //性别,是否为男

CTime tBirth; //出生年月

CString strAcademy; //学院

CString strSpecial; //专业

int English; //英语成绩

int Computer; //计算机成绩

DECLARE_SERIAL(CStudentInfo) //序列化声明

public:

CStudentInfo(){};

CStudentInfo(CString name,CString id,BOOL male,CTime birth,CString academy,CString special,int eng,int comp);

void Serialize(CArchive &ar);

};

3.再次选择““文件”→“新建”菜单命令,显示出“新建”对话框。单击“文件”标签在左边的列表框中选择C++ Source File项,在右边的“文件”下的编辑框中键入StudentInfo.cpp,单击“确定”按钮。

4.在文档窗口中输入下面的代码:

#include "stdafx.h"

#include "StudentInfo.h"

CStudentInfo::CStudentInfo(CString name,CString id,BOOL male,CTime birth,CString academy,CString special,int eng,int comp)

{

strName=name;

strNO=id;

bMale=male;

tBirth=birth;

strAcademy=academy;

strSpecial=special;

English=eng;

Computer=comp;

}

IMPLEMENT_SERIAL(CStudentInfo,CObject,1)

void CStudentInfo::Serialize(CArchive &ar)

{

if(ar.IsStoring())

ar<

else

ar>>strName>>strNO>>bMale>>tBirth>>strAcademy>>strSpecial>>English>>Co mputer;

}

4.3添加并处理对话框

1.向应用程序中添加一个对话框资源,标题定为“学生信息管理”,创建此对话框为CstuInfoDlg。

2.打开对话框网格,参照下图为对话框添加控件:

3.为各个控件增加成员变量:

4.为CstuInfoDlg类添加一个BOOL型成员变量m_bMale,并设置该变量的初始值:

CStuInfoDlg::CStuInfoDlg(CWnd* pParent /*=NULL*/)

: CDialog(CStuInfoDlg::IDD, pParent)

{

m_bMale=FALSE;

//{{AFX_DATA_INIT(CStuInfoDlg)

……

//}}AFX_DATA_INIT

}

5.用MFC ClassWizard为单选按钮IDC_RADIO_MALE添加BN_CLICKED 的消息映射,并增加下列代码:

void CstuInfoDlg::OnRadioMale()

m_bMale=TRUE;

6.用MFC ClassWizard为单选按钮IDC_RADIO_FEMALE添加BN_CLICKED的消息映射,并增加下列代码:

void CstuInfoDlg::OnRadioFemale()

m_bMale=FALSE;

7.再添加一个对话框资源,标题认定为“学生信息管理”,创建此对话框类为CstuDlg。按下图添加控件,并为控件增加成员变量:

4.4添加并处理菜单项

1.在StudentDoc.cpp文件的开始处,添加包含CStuInfoDlg和CstuDlg类的头文件包含。

#include "StudentDoc.h"

#include "StuInfoDlg.h"

#include "StuDlg.h"

2.在菜单资源的主菜单中添加顶层菜单项“学生信息管理(&M)”,在该顶层菜单项中添加子菜单“添加(&A)”(ID_STUINFO_ADD),“修改(&X)”(ID_STUINFO_MODIFY),“删除(&D)”(ID_STUINFO_DELETE),“查询(&Q)”(ID_STUINFO_QUERY)。

3.用MFC ClassWizard为CstudentDoc添加处理菜单项ID_STUINFO_ADD,ID_STUINFO_MODIFY,ID_STUINFO_DELETE和ID_STUINFO_QUERY的COMMAND的消息,并添加下列代码:

void CStudentDoc::OnStuinfoAdd() //添加

{

CStuInfoDlg dlg;

BOOL flag=TRUE;

//根据姓名判断是否已存在

if(dlg.DoModal()!=IDOK)return;

int nIndex=m_stuObArray.GetSize();

for(int n=0;n

{

CStudentInfo *stu=(CStudentInfo*)m_stuObArray.GetAt(n);

if(stu->strName==dlg.m_strName)

{

AfxMessageBox("此学生信息已存在");

flag=FALSE;

}

}

if(flag)

{

CStudentInfo*pStudent=new

CStudentInfo(dlg.m_strName,dlg.m_strNO,dlg.m_bMale,dlg.m_tBirth,

dlg.m_strAcademy,dlg.m_strSpecial,dlg.m_english,dlg.m_computer);

m_stuObArray.Add(pStudent);

POSITION pos=GetFirstViewPosition();

CStudentView *stu=(CStudentView*)GetNextView(pos);

stu->creatTree();

SetModifiedFlag(); //设置文档更改标志

UpdateAllViews(NULL); //更新视图

}

}

void CStudentDoc::OnStuinfoQuery() //查询

{

CStuDlg dlg;

BOOL flag=TRUE;

if(dlg.DoModal()!=IDOK)return;

int nIndex=m_stuObArray.GetSize();

if(nIndex==0)

AfxMessageBox("无学生信息");

else

{

for(int n=0;n

{

CStudentInfo *stu=(CStudentInfo*)m_stuObArray.GetAt(n);

if(stu->strName==dlg.m_strNm)

{

POSITION pos=GetFirstViewPosition();

GetNextView(pos);

ClistView *list=(ClistView*)GetNextView(pos);

CListCtrl&m_list=list->GetListCtrl();

m_list.DeleteAllItems();

list->print(stu);

flag=FALSE;

}

}

//判断是否找到

if(flag)

AfxMessageBox("无此学生信息");

}

}

void CStudentDoc::OnStuinfoDelete() //删除

{

CStuDlg dlg;

BOOL flag=TRUE;

if(dlg.DoModal()!=IDOK)return;

int nIndex=m_stuObArray.GetSize();

if(nIndex==0)

AfxMessageBox("无学生信息");

else

{

for(int n=0;n

{

CStudentInfo *stu=(CStudentInfo*)m_stuObArray.GetAt(n);

if(stu->strName==dlg.m_strNm)

{

CStudentInfo *stu=(CStudentInfo*)m_stuObArray.GetAt(n);

delete m_stuObArray.GetAt(n);

m_stuObArray.RemoveAt(n,1);

AfxMessageBox("已删除");

flag=FALSE;

break;

SetModifiedFlag(); //设置文档更改标志

UpdateAllViews(NULL); //更新视图

}

}

//判断是否找到

if(flag)

AfxMessageBox("无此学生信息");

}

}

void CStudentDoc::OnStuinfoModify() //修改

{

CStuDlg dlg;

CStuInfoDlg dl;

BOOL flag=TRUE;

if(dlg.DoModal()!=IDOK)return;

int nIndex=m_stuObArray.GetSize();

if(nIndex==0)

AfxMessageBox("无学生信息");

else

{

for(int n=0;n

{

CStudentInfo *stu=(CStudentInfo*)m_stuObArray.GetAt(n);

if(stu->strName==dlg.m_strNm)

{

dl.m_strName=stu->strName;

dl.m_strNO=stu->strNO;

dl.m_bMale=stu->bMale;

dl.m_tBirth=stu->tBirth;

dl.m_strAcademy=stu->strAcademy;

dl.m_strSpecial=stu->strSpecial;

dl.m_english=stu->English;

dl.m_computer=stu->Computer;

dl.DoModal();

stu->strName=dl.m_strName;

stu->strNO=dl.m_strNO;

stu->bMale=dl.m_bMale;

stu->tBirth=dl.m_tBirth;

stu->strAcademy=dl.m_strAcademy;

stu->strSpecial=dl.m_strSpecial;

stu->English=dl.m_english;

stu->Computer=dl.m_computer;

SetModifiedFlag(); //设置文档更改标志

UpdateAllViews(NULL); //更新视图

flag=FALSE;

}

}

//判断是否找到

if(flag)

AfxMessageBox("无此学生信息");

}

}

4.5修改CStudentDoc类代码

1.在StudentDoc.h文件的class CStudentDoc : public Cdocument前面,添加包含CStudentInfo类的头文件。

#include "StudentInfo.h"

2.为CStudentDoc类添加成员变量:

public:

CObArray m_stuObArray;

3.在CstudentDoc类析构函数CStudentDoc::~CstudentDoc中添加下列代码:CStudentDoc::~CStudentDoc()

{

int nIndex=m_stuObArray.GetSize();

while(nIndex--)

delete m_stuObArray.GetAt(nIndex);

m_stuObArray.RemoveAll();

}

4.在CStudentDoc::Serialize(CArchive& ar)函数中添加下列代码:

void CStudentDoc::Serialize(CArchive& ar) {

if (ar.IsStoring())

{

m_stuObArray.Serialize(ar);

}

else

{

m_stuObArray.Serialize(ar);

}

}

5.编译。

心得体会及参考文献

1、心得体会

两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学不断的探讨、学习、推敲,无形中提高了对Visual C++的理解。

课程设计是对我们这门课程知识综合应用的实践训练,考察了我们对所学知识的掌握与应用程度。对于编程,老师一直强调要注重上机操作,通过课程设计,我对此有了更深的理解。书本上的理论知识固然重要,但从真正的操作中我们会收获更多,有时自认为很合理的逻辑,到了电脑上就是不能运行,或得到的并不是自己想要的结果,这就需要我们不断的调试,纠错,找出问题所在并一一解答,从中我们受益匪浅。

如今我不再认为编程枯燥反而觉得它很有趣,而且越来越觉得这门学问很精深,当自己的程序很好的运行时,会有一种小小的成就感。在以后的学习中我一定会再接再厉,不断提高自己。感谢老师这一学期的辛勤教导。

2、参考文献

高等院校程序设计规划教材《Visual C++ 教程》郑阿奇主编丁有和编著。

课程设计报告模板)

课程设计报告模板()

————————————————————————————————作者: ————————————————————————————————日期: ?

课程设计(论文)任务书 软件学院软件+电商专业09级(2)班 一、课程设计(论文)题目基本模型机设计与实现 二、课程设计(论文)工作自2011年6月 20 日起至2011年 6月 24日止。 三、课程设计(论文) 地点:计算机组成原理实验室(5#301) 四、课程设计(论文)内容要求: 1.课程设计的目的 通过课程设计的综合训练,在掌握部件单元电路实验的基础上,进一步掌握整机 概念。培养学生实际分析问题、解决问题和动手能力,最终目标是想通过课程设计的形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务。 2.课程设计的任务及要求 1)基本要求? (1)课程设计前必须根据课程设计题目认真查阅资料; (2)实验前准备好实验程序及调试时所需的输入数据; (3)实验独立认真完成; (4)对实验结果认真记录,并进行总结和讨论。 2)课程设计论文编写要求 (1)按照书稿的规格撰写打印课设论文 (2)论文包括目录、绪论、正文、小结、参考文献、附录等 (3)正文中要有问题描述、实验原理、设计思路、实验步骤、调试过程与遇到问题的解决方法、总结和讨论等 (4)课设论文装订按学校的统一要求完成 3)课设考核 从以下几方面来考查:

(1)出勤情况和课设态度; (2)设计思路; (3)代码实现; (4)动手调试能力; (5)论文的层次性、条理性、格式的规范性。 4)参考文献 [1]王爱英.计算机组成与结构[M]. 北京:清华大学出版社, 2007. [2] 王爱英. 计算机组成与结构习题详解与实验指导[M]. 北京:清华大学出版社, 2007. 5)课程设计进度安排 内容天数地点 构思及收集资料1图书馆 实验与调试 3 实验室 撰写论文 1 图书馆 6)任务及具体要求 设计实现一个简单的模型机,该模型机包含若干条简单的计算机指令,其中至少包括输入、输出指令,存储器读写指令,寄存器访问指令,运算指令,程序控制指令。学生须根据要求自行设计出这些机器指令对应的微指令代码,并将其存放于控制存储器,并利用机器指令设计一段简单机器指令程序。将实验设备通过串口连接计算机,通过联机软件将机器指令程序和编写的微指令程序存入主存中,并运行此段程序,通过联机软件显示和观察该段程序的运行,验证编写的指令和微指令的执行情况是否符 合设计要求,并对程序运行结果的正、误分析其原因。 学生签名: 亲笔签名 2011年6月20 日 课程设计(论文)评审意见 (1)设计思路:优( )、良()、中( )、一般()、差( ); (2)代码实现:优()、良()、中()、一般()、差();

C语言程序设计课程设计题目

1 一元稀疏多项式的运算 问题描述:设有两个带头指针的单链表表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理。 实现要求: ⑴输入并建立多项式; ⑵输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……c n,e n,其中n是多项式的项数,c i,e i分别为第i项的系数和指数。序列按指数降序排列; ⑶多项式A和B相加,建立多项式A+B,输出相加的多项式; ⑷多项式A和B相减,建立多项式A-B,输出相减的多项式; ⑸多项式A和B相乘,建立多项式A×B,输出相乘的多项式; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 测试数据: (1) (2x+5x8-3.1x11)+(7-5x8+11x9) (2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15) (3)(x+x2+x3)+0 (4)(x+x3)-(-x-x-3) 2 成绩排序 假设某年级有4个班,每班有45名同学。本学期有5门课程考试,每门课程成绩是百分制。假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中,完成以下操作要求: ⑴编写一个成绩生成函数,使用随机数方法,利用随机函数生成学生的各门课程的成绩(每门课程的成绩都是0∽100之间的整数),通过调用该函数生成全部学生的成绩; ⑵编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中; ⑶用冒泡排序法对4个班的成绩按每个同学的平均成绩的以非递增方式

进行班内排序; ⑷用选择排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序; ⑸对已按平均成绩排好序的4个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 3 迷宫问题 问题描述:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 实现要求: ⑴实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 ⑵编写递归形式的算法,求得迷宫中所有可能的通路; ⑶以方阵形式输出迷宫及其通路。 [测试数据] 迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口。 1 2 3 4 5 6 7 8 实现提示:

综合程序课程设计题目汇总1

*注意 2人一组共同完成一个题目,任务书要求分工必须明确。对 于题目比较容易的,也可1人一个题目。可以从如下题目中选择,教师也可以自拟题目,但必须达到足够难度。 题目设计:赵敏孙成立 题目1、计算器程序设计 [问题描述]:设计一个多功能计算器,可以完成基本的计算。 [设计要求]: 1.具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。依次输入第一个运算数、运算符(+,-,*,/)、第二个运算数,然后输出结果。结果可以作为下一个运算的第一运算数。按‘C’清屏,按‘R’返回菜单。 例如:输入:2 + 5 输出:7 2.实现单运算符表达式计算的功能。输入的操作数可以包含整数或浮点数。输入表达式如下: 例如:输入:2+5 输出:7 3.除数为零或者输入的不是数字时进行异常处理 题目2、两个源程序的相似性判别 [问题描述] 对于两个C语言的源程序清单,用哈希表的方法分别统计两个程序中使用C语言关键字的情况,并最终按定量的计算结果,得出两份源程序清单的相似性。[基本要求] C语言关键字的哈希表可以自建,也可以利用《数据结构及应用算法教程》(严蔚敏陈文博编著清华大学出版社)书中8.10的哈希表。此题的工作主要

是扫描给定的源程序,累计在每个源程序中C 语言关键字出现的频度。在扫描源程序过程中,每遇到关键字就查找哈希表,并累加相应关键字出现的频度。为保证查找效率,建议自建哈希表的平均查找长度ASL 不大于2。 扫描两个源程序所统计的所有关键字不同频度,可以得到两个向量。如下面简单的例子所示: 关键字 程序1种关键字频度 程序2种关键字频度 哈希地址 0 1 2 3 4 5 6 7 8 9 X 1=[4,3,0,4,3,0,7,0,0,2] X 2=[4,2,0,5,4,0,5,2,0,1] 通过计算向量X1和X2的相对距离来判断两个源程序的相似性,相对距离的计算方法是 1/2 1212121/21/21/21/2 121122||(()())||||()()T T T X X X X X X s X X X X X X ---==???,T 表示向量的转置。 按例子所给的数据,s ≈0.13。显然当X 1=X 2时,s=0,反映出可能是同一个程序;s 值越大,则两个程序的差别可能也越大。 [测试数据] 做几个编译和运行都无误的C 程序,程序之间有相近的和差别大的,用上述方法求s,并对比差异程度。 [实现提示] 本题的很大工作量将是对源程序扫描,区分出C 程序的每一关键字。可以为C 语言关键字集建一棵键树,扫描源程序和在键树中查找同步进行,以取得每一个关键字。 题目3、 学生成绩管理系统 现有学生成绩信息,内容如下

网络程序课程设计报告模版

《高级网络程序设计》 课程设计报告 题目FTP文件传输协议学号11102410 姓名倪福柱 计算机网络工程教研室 2015年01月12 日

目录 一、实验目的……………………………………………………… 二、实验内容和要求……………………………………………….. 1、实验内容…………………………………………………….. 2、具体要求…………………………………………………….. 三、需要完成的的内容………………………………………………………… 1.FTP系统模型……………………………………………………………. 2. 系统功能设计…………………………………………………………… 2.1总体设计…………………………………………………………... 2.2系统实现…………………………………………………………… 四、具体实现步骤……………………………………………………………….. 1. FTPClient用户界面的实现………………………………………………. 2. FTPClient控制连接的实现………………………………………………. 3. FTPClient数据传输连接的实现…………………………………………. 3.1下载文件操作……………………………………………………….. 3.1下载文件操作……………………………………………………….. 3.3显示服务器的路径………………………………………………….. 3.4进入服务器更改路径……………………………………………….. 4. FTPServer控制连接的实现……………………………………………… 5. FTPServer数据传输线程的实现………………………………………… 5.1读取本地文件下载给客户端………………………………………… 5.2接收客户端的上传的文件…………………………………………… 5.3获取服务器本地系统路径…………………………………………… 五、实验结果……………………………………………………………………. 六、实验心得…………………………………………………………………….

Java课程设计小游戏

《高级语言程序设计》课程设计报告 1、程序设计说明书 【设计题目】 雷霆行动游戏程序 【问题描述】 雷霆行动是一款供大家休闲娱乐的小游戏,游戏通过鼠标控制我方飞机hero的移动,达到躲闪敌机的目的;利用鼠标键发射子弹和导弹,达到击毁敌机的目的,摧毁敌机有积分。此游戏为闯关积分类小游戏。 【软件功能】 1.按鼠标左键,游戏开始。 2.利用鼠标移动控制hero自由移动,闪躲敌方子弹。 3.利用鼠标左键发射子弹,实现打中敌方飞机的功能;利用鼠标右键释放导弹,实现摧毁大量敌 机的功能,击中一个敌方飞机积一分。 4.hero碰到对方子弹会消耗生命,消耗生命的多少,依据子弹的不同而不同。 5.一关之后会进入下一关。 6.游戏右上角红色的进度条表示hero的生命,当红色全部消失之后,游戏结束,显示死亡。 7.游戏结束后,可重新开始,同1。 【算法思想】 1.创建游戏主界面,确定窗口的坐标。 2.设计游戏开始界面显示信息及信息坐标。 3.设置游戏进行中的信息,hero的移动、释放子弹和导弹,达到击毁敌机的目的。 4.处理游戏进行中的子弹、大爆、爆炸、敌机消失和存在的条件。 5.设置进入下一关的条件。 6.设计游戏结束界面显示信息及信息坐标。 7.处理游戏重新开始满足的条件。 8.装载图像。 9.对游戏进行调试和改进,使这个游戏更加完善。 【类的设计】 本程序共有七个类: 1.MainPanel 属性:BBv为子弹数组,EEv为敌机数组,BOMBv为爆炸数组,EBv为敌机子弹数组,DBv 为大爆数组,E-num为敌机数量,E-max敌机最大数,E-vel为敌机速度,E-mov为敌机 横移几率,E-hit为敌机开火几率,Sum为击毁敌机数量,hero-hp为hero生命,back至 db-2均为图片,tracker为媒体跟踪器,y为背景滚动变量,seq为hero的动画变量,isfire 为hero开火,isblast为是否发爆,blastnum为大爆的数量,blastc为控制大爆,f、ff、s、 ss均为游戏界面上显示的信息; 方法:MainPanel(Game)构造方法,paint(Graphics)建立游戏开始界面如显示的文字,run()控制对象移动,BBmove(int,int)子弹的移动方法,DBmove(int,int)大爆的移动方法, mouseDragged(MouseEvent) 鼠标的拖拽用来保证hero不出界,mouseMoved(MouseEvent) 鼠标的移动用来控制hero移动,mousePressed(MouseEvent) 鼠标按键在组件上按下时调 用,重新开始游戏,mouseClicked(MouseEvent)鼠标按键在组件上单击(按下并释放) 时调用,释放子弹,mouseReleased(MouseEvent)鼠标按钮在组件上释放时调用, mouseEntered(MouseEvent)鼠标进入组件上调用,mouseExited(MouseEvent)鼠标离开组 件时调用;

程序设计基础课程设计

设计题目:学生成绩管理系统班级:计0902 姓名:付乐颖 学号:20091221067 完成日期:2010.10.15

1. 课程设计目的和要求 随着科学的发展和社会的进步,许多过去有人工处理的繁杂事务开始交付计算机来完成。学生成绩管理系统可以说是一个得力助手,它利用计算机对学生成绩进行统一管理,实现学生成绩信息管理工作流程的系统化、规范化和自动化,提高了广大教师的工作效率。 本程序旨在训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件等的各种基本操作,使学生能对C语言的文件操作有一个更深的理解。为进一步开发出高质量的信息管理系统打下坚实的基础。 2. 课程设计任务内容 学生包含以下信息项:学号、姓名、学院、班级、高数成绩、英语成绩、C语言成绩、总分、平均分。系统的主要功能包括: 1. 创建学生成绩信息文件,根据提示输入学生的各项信息,计算出总分和平均分,然后按学号对学生信息进行排序,并将排序后的学生成绩信息存储到一个二进制文件中。 2. 增加学生信息,在原有学生信息文件的基础上增加新的学生成绩信息,要求:增加后的学生信息仍按学号排序,并继续保存至原文件。 3. 删除学生信息,提示用户输入要进行删除操作的学号,如果在文件中有该信息存在,则将该学号所对应的学生信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。 4. 修改学生信息,提示用户输入要进行修改操作的学号,如果在文件中有该息存在,则将提示用户输入该学号对应的要修改的选项,结果保存至原文件,并提示用户选择是否继续进行修改操作。 5. 按不同条件对学生信息进行查询操作,输出满足条件的学生信息。 (1) 按学号查询,输入一个学号,输出对应的学生信息。

java课程设计2013级大纲以及设计报告

珠海学院课程教学大纲 课程名称:java程序课程设计 适用专业: 2013级计算机科学与技术 课程类别:专业基础课 制订时间:2014年12月 计算机科学与技术系制

目录 1java程序课程设计教学大纲 2 java程序课程设计说明书 3 java程序课程设计报告(模板) 4 java程序课程设计成绩评定表 java程序课程设计教学大纲 (2011年制订,2014年修订) 一、课程编号: 二、前修课程:java程序设计 三、学分:2学分 四、学时: 32学时 五、课程性质与任务: 1.课程性质:《java程序课程设计》是吉林大学珠海学院计算机科学与技术系为本科生各专业开设的专业实践课。计算机科学与技术系本科生在完成《java 程序设计》课程学习后,通过本课程进入专业实践训练环节,其主要目的是使学生深入理解并实践在《java程序设计》课程中所学的有关知识,通过课程设计增强学生的实践动手能力,提高学生独立分析和解决实际问题的能力。培养学生配合完成任务的能力,为学生毕业后的实际工作打好基础。 课程设计是培养学生综合运用所学知识锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。Java语言的应用十分广泛,例如大型信息系统、通信、网络控制等。java课程设计对增强学生对基础知识的掌握和综合运用是非常必要,对后续许多专业课程的学习和实践训练都具十分重要的意义。 2.课程任务:本课程要求学生在学习了java基础编程的相关技术后,将课本中多个章节的编程技术灵活运用到一些复杂的综合例题中去,使学生了解应用问题

的分析方法和设计解决实际问题的具体过程,掌握应用java进行程序设计的基本规范和技巧,掌握面向对象编程的设计思想,重点掌握java的基本语法规则、输入输出方法、网络编程、多线程编程、小应用程序、数据库编程的综合应用。通过编程掌握调试java程序的基本技巧、模块化应用程序和测试运行复杂应用程序的基本流程。 六、课程教学基本要求提供足够多的程序设计选题,题目应覆盖面较为广泛,部分题目要具有开放性,要求每个学生根据自己的实际情况选择题目,经教师批准后即可进入实际工作阶段。 课程设计结束对每个学生进行验收,要求每个学生提交合格的课程设计报告,还要保证程序能够运行,能够讲清楚自己的工作。老师在检查过程中可针对程序提出问题,学生回答,若程序无法运行得到结果并且具有大量编译错误,而且对程序的内容无法正确解释,则实践老师可以根据实际情况给予评分为不及格,若程序可以运行,但完成的界面以及方法不够完善,则酌情扣分,若程序运行无问题,则提问回答不好的也要相应扣分。课程设计课程集中安排在第十一周。每个同学都要提交初期、中期和最后的文档,提交课程设计报告,要求在规定时间内提交文档。最后验收时,若文档不全,成绩受到一定影响。 七、学时分配表 2011年 12 月8日 java程序课程设计说明书

程序设计报告模板

北京化工大学计算机科学与技术专业2014程序设计实训报告 题目:个人记账软件 专业:计算机科学与技术 班级:计科1305 指导教师:江志英

2014程序设计实训任务书

目录 2014程序设计实训任务书...................................... 错误!未定义书签。目录..................................................... 错误!未定义书签。第一章需求分析.............................................. 错误!未定义书签。 引言............................................... 错误!未定义书签。 任务概述........................................... 错误!未定义书签。 数据描述........................................... 错误!未定义书签。 功能需求........................................... 错误!未定义书签。 运行需求........................................... 错误!未定义书签。 任务计划........................................... 错误!未定义书签。第二章概要设计.............................................. 错误!未定义书签。 总体设计........................................... 错误!未定义书签。 面向对象设计....................................... 错误!未定义书签。 运行界面设计....................................... 错误!未定义书签。第三章详细设计.............................................. 错误!未定义书签。 ........................................................ 错误!未定义书签。第四章测试分析............................................. 错误!未定义书签。第五章用户手册(可选)..................................... 错误!未定义书签。第六章课程设计总结.......................................... 错误!未定义书签。附录:程序代码(仅电子版需要、纸质版不需要)................. 错误!未定义书签。

三子棋小游戏课程设计

三子棋小游戏课程设计 计算机学院计算机科学与技术专业《程序设计综合课程设计》报告 (2011/2012学年第一学期) 学生姓名: 学生班级: 学生学号: 指导教师: 2012年01月04日 三 子 棋 小 游 戏 目录 第一章程序设计的目的和要求 1 1.1课程设计的目的 ......1 1.2课程设计的要求 1 第二章课程设计任务内容 3 2.1课程设计题目 3 2.2课程设计介绍 3 第三章详细设计说明 ..4 3.1 流程逻 辑............................................................ .4 3.2 限制条 件 (5)

3.3 运行结 果 (5) 3.4 实验过 程 (8) 第四章实验总结及特色 11 4.1调试结果及截图 11 第五章课程设计心得及体会 13 附录? 参考文献 15 附录? 程序代码 16 第一章课程设计目的和要求 目的 通过此次课程设计,进一步加深对C++语言和运用的了解,将理论知识运用于开发的实践,并在实践中逐步掌握软件工具的使用。 巩固已经学习过的C++理论知识;进一步学习程序设计、程序调试的能力。 进一步学习面向对象编程的知识和程序调试的能力; 增强Visual C++编程环境的应用能力 掌握并且熟练应用《C++程序设计》中所学知识,并学会运用。 掌握函数功能的划分方法,并运用此方法解决问题。学会程序测试方案的制定,并且实现程序的测试。 通过此次实践,积累经验,提高分析和解决问题的能力。 第二节要求 课程设计需要从整体来考虑,在大的方向下来考虑小的模块,在继续分工。作到最小化,可执行化。

程序设计基础课程设计报告 内容样例

第一章目的与要求 书上有。 第二章需求分析 软件设计的一个重要的环节就是需求分析。本章在对ATM取款机管理系统的应用情况作了全面调查的基础上,确定系统目标,并对系统所需要的基础功能进行分析,从而确定用户的需求。以下是ATM取款机管理系统所需要的需求分析。 ATM管理系统包括六个模块:登录,挂失功能,修改密码,取款功能,转账功能,查询功能。 ①登录: 输入银行卡的账号,密码,验证银行卡的卡号,密码是否正确,之后进入主界面 ②挂失功能: 确认是否对银行卡进行挂失,挂失后账户无法操作 ③修改密码: 用户可自由对其银行卡密码进行修改,修改之后的新密码将会覆盖其原密码 ④取款功能: 用户可自由取得所持银行卡内的存款,所取款数必须在其原有账户余额之内 ⑤转账功能: 用户可将本账户中的存款转入其他账户,转账过程中,需要转入账户的账

号 ⑥查询功能: 用户可查询用户信息,其中包括用户姓名、用户身份证号码、银行卡号以及存款余额 模拟ATM取款机的操作: 首先录入账户信息,格式如下 ㈠、登录功能:输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。 ㈡、查询功能:查询账户余额。 ㈢、取款功能:取款,更新余额。 ㈣、挂失功能:挂失后,该账户不能进行任何操作。 ㈤、修改密码:输入原密码和新设置密码。 ㈥、转账功能:输入转账的转出账户以及转账金额,进行转账。

第三章设计分析 3.1、ATM系统管理 3.1.1系统基本功能 首先,确定系统中存在两种用户,一种是ATM,可以进行信息录入和后台管理。另外一种是取款人,取款人主要是进行信息的查询,不能进行信息录入。所以在创建类的时候,先创建一个ATM类,然后创建取款人类,并与ATM 类形成有元,进而继承ATM的所有功能,并添加录入信息的功能。 基本功能: 登录功能---------输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。 查询功能---------查询账户余额。 取款功能---------取款,更新余额。 挂失功能---------挂失后,该账户不能进行任何操作。 修改密码---------输入原密码和新设置密码。 转账功能---------输入转账的转出账户以及转账金额,进行转账。、

软件综合课程设计教学大纲

珠海学院课程教学大纲 课程名称:计算机软件综合课程设计 适用专业: 2015级软件工程专业 课程类别:专业基础课 制订时间:2017年6月 计算机科学与技术系制

目录 1 《计算机软件综合课程设计》教学大纲 2 《计算机软件综合课程设计》(模板) 3 《计算机软件综合课程设计》成绩评定表

《计算机软件综合课程设计》教学大纲 一、课程设计基本信息 课程代码: 课程名称:计算机综合应用课程设计 课程学时:32学时 课程学分:2.0 适用对象:计算机科学与技术专业、软件工程专业 先修课程:高级语言程序设计、数据结构、操作系统、数据库原理与应用 二、课程设计目的和任务 本课程设计是检验计算机专业的学生在大学主干课程完成之后,为了加深和巩固学生对前两年所学理论和应用知识的理解,同时提高学生综合运用的能力和分析问题、解决的问题的能力而开设的一门实践课程。 通过本环节学生能够充分把前两年学到的知识综合应用到实际的编程实践中,可以进一步巩固所学到的理论。通过实现一个中等规模的应用软件,提高利用计算机系统解决实际问题的能力,为顺利毕业、进入社会打好基础;通过对程序的规范编写,可以培养学生良好的编程风格,包括程序结构形式,行文格式和程序正文格式等;并培养学生的上机调试能力。 三、课程设计方式 1、课程设计题目的选定 采用指导教师提供参考题目与学生自主命题相结合的办法选定课程设计题目。要求不多于4个人一个小组,不得重复,所涉及数据库的基本表至少在5张表以上,在尽量满足数据库设计原则的前提下,允许适当冗余以提高检索的速度。其中学生自主命题需要指导教师严格的审核,看是否满足课程要求,检查是否为重复课题。 2、课程设计任务的完成

图书管理程序课程设计报告模板

北京理工大学珠海学院课程设计说明书 _2011_—_2012_学年第_2_学期 题目: 图书管理程序 学院:计算机学院 专业班级: 11计算机科学与技术X班 学号: XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX 学生姓名:xx XX 指导教师: XXX 成绩: 时间: XXXX 年 X 月 xX 日

北京理工大学珠海学院 课程设计任务书 2011 ~2012 学年第 2 学期 学生姓名: XXXXX 专业班级: XX计算机科学与技术XX 班 指导教师: XXXXX 工作部门:计算机学院 一、课程设计题目 图书管理程序 二、课程设计内容 使用文本命令行界面;用文件保存图书馆里的图书信息;能实现图书信息的增、删、改、查等功能。 三、进度安排 (1)1-2学时,选定题目、分析需求、理解需求; (2)3-4学时,程序设计,定义数据类型、数据处理方式; (3)5-10学时,编写程序、调试、测试; (4)11-12学时,编写设计报告; (5)13-16学时,答辩。 四、基本要求 (1)只能使用C++语言,源程序要有适当的注释,使程序容易阅读 (2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)学生可自动增加新功能模块(视情况可另外加分) (4)建立文件操作类、界面显示类及相关接口类,用文件读写实现。 (5)写出课程设计报告,应不少于3000字(不含附录),同一组学生只需提交1份,但必须在报告中列明分工。

课程负责人签名: XXXX年 X月 XX日

课程设计分工安排

课程设计成绩评定表

图书管理程序 摘要 二十一世纪是信息的社会,信息作为社会最主要的资源,将成为战略资源引起人们广泛的关注。如何获取信息?图书是我们最好的获取信息的方式,但由于图书馆图书收藏量大大增加,使传统的图书管理员的工作日益繁重起来。迫使人们起用新的管理方法来管理图书,如何把图书管理员从繁重的工作中解脱出来呢? 科学技术日新月异的进步,让人类生活发生了巨大的变化,计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用。信息化时代的到来成为不可抗拒的潮流,人类文明正在进入一个崭新的时代。因此,图书管理系统也以方便、快捷、费用低的优点正慢慢地进入人们的生活,将传统的图书管理方式彻底的解脱出来,提高效率,减轻工人人员以往繁忙的工作,减小出错的概率,使读者可以花更多的时间在选择书和看书上。从而使人们有更多时间来获取信息、了解信息、掌握信息。 关键词:图书管理系统工程信息管理系统 VC++

计算机图形学课程设计——扫雷游戏程序设计

计算机图形学课程设计——扫雷游戏程序设计

《计算机图形学》课程设计报告 VC++扫雷游戏的程序设计 专业班级: 小组成员:

指导老师: 日期:2012年12月24日 1、需求分析 本课程设计实现类似于Windows XP操作系统自带的扫雷游戏。该设计以V isual C++ 6.0为开发环境, Windows 7/XP为程序运行平台。在程序设计中,把整个雷区看成一个二维数组,把雷方块定义为具有所在雷区二维数组的行和列、当前状态、方块属性、历史状态的结构体,采用了MFC机制解决问题的方法。整个游戏程序包括了布雷、扫雷过程和结果三个阶段,在处理鼠标响应事件中伴随着GDI绘图。程序通过调试运行,实现简单的设计目标,满足扫雷游戏初学者的需要。 通过本课程设计,以便更好的巩固计算机图形学相关知识,掌握课程设计基本的方法和技巧,同时增加同学之间的团队合作精神以及培养分析问题、解决问题的能力。 2.总体设计 2.1 功能概述 扫雷游戏的游戏界面如图1所示。在这个界面中,由众多面积均等的小方块所组成的区域称之为雷区,雷区的大小由用户设置的游戏等级决定。

图1 游戏开始时,系统会在雷区中随机布下若干个地雷。安放地雷的小方块称之为雷方块,其他的称之为非雷方块。部署完毕后,系统会在其他非雷方块中填充一些数字。某一个具体数字表示与其紧邻的8个方块 中有多少雷方块。玩家可以根据这些信息去判断是否可以鼠标点击方块, 并把认为是地雷的方块打上标识。当玩家将所有地雷找出后,其余的非雷方块区域都已打开,此时游戏结束。在游戏过程中,一旦错误地打开了雷方块则立即失败,游戏结束。 游戏规则总结: ●开始:按左键开始游戏,按按钮或菜单重新开始。 ●左键:按下时,是雷则结束,非雷则显示数字。 ●数字:代表此数字周围一圈八格中雷的个数。 ●右键:奇次按下表示雷,偶数按下表示对上次的否定。 ●结束:左键按到雷结束,找出全部雷结束。 在游戏开始后,雷区上方有两个计数器。右边的计数器显示用户扫

程序设计基础课程设计

1 矩阵的操作(6人) 设有两个矩阵A=(a ij)m×n,B=(b ij)p×q 实现要求: ⑴编写矩阵输入函数INPUT_MAT,通过该函数完成矩阵的输入并返回保存矩阵的数组和对应矩阵的行数、列数。(不能使用全局变量) ⑵编写矩阵输出函数OUTPUT_MAT,通过该函数完成矩阵的输出。 ⑶求矩阵的转置,矩阵的转置A’=(a ji)n×m,转置前输出原矩阵,转置后输出转置矩阵。 ⑷求矩阵A、B的和。矩阵A和B能够相加的条件是:m=p,n=q;矩阵A和B如果不能相加,请给出提示信息;若能够相加,则求和矩阵C并输出C。 C=A+B=(c ij)m×n,其中c ij=a ij+b ij ⑸求矩阵A、B的积。矩阵A和B能够相乘的条件是:p=n;矩阵A和B 如果不能相乘,请给出提示信息;若能够相乘,则求积矩阵D并输出D。 D=A×B=(d ij)m×q,其中d ij=∑a ik×b kj,k=1,2,……,n ⑹设计一个菜单,具有求矩阵的转置、求矩阵的和、求矩阵的积、退出等基本的功能。在求矩阵的和或求矩阵的积时要求能够先提示输入两个矩阵的,然后再进行相应的操作。

2 数据汇总 (6人) 问题描述: 在数据处理中经常需要对大量数据进行汇总,将相同关键字记录的某些数据项的值叠加起来,生成一个分类汇总表。 假设某超级市场销售有m种商品(假设商品的编号为1,2,3,┅┅,m),有n台前台收款机(假设收款机的编号为1,2,3,┅┅,n)进行收款,以记录的形式提供给计算机,每个记录表示某台收款机的一种商品一次交易的数量和销售额。记录由4个域组成:收款机编号、商品编号、销售数量、销售金额。构造一个结构体类型,每次销售数据以一个结构体变量保存在一个数据文件中。实现要求: ⑴编写实现将数据记录插入到数据文件的最后的函数; ⑵编写以收款机为单位的数据分类处理函数。构造n个单链表,每个链表保存一台收款机的销售记录,这n个单链表的头指针存放在一个指针数组中,通过数组的下标就可以知道是哪台收款机。读取数据文件的记录,将所有的销售记录(数据文件中的全部记录)分解插入到n个单链表; ⑶统计每台收款机的销售总额; ⑷编写以商品为单位的数据分类处理函数。构造m个单链表,每个链表保存一种商品的销售记录,这m个单链表的头指针存放在一个指针数组中,通过数组的下标就可以知道是哪种商品。读取数据文件的记录,将所有的销售记录(数据文件中的全部记录)分解插入到m个单链表; ⑸以商品为单位,统计每种商品的销售总额。 ⑹设计一个菜单,具有插入数据记录、按收款机统计销售总额、按商品统计销售总额、退出系统等最基本的功能。

Web程序设计课程设计报告模板

Web程序设计课程设计报告课程设计题目:某电子杂志网站 姓名:肖琴霞 专业:软件工程(国际教育) 班级:10211133 学号:1021113321 指导教师:吴光明 2013 年 3 月 10 日

一、设计目的 《Web应用开发课程设计》是实践性教学环节之一,是《Web程序设计》课程的辅助教学课程。通过课程设计,使学生掌握Web网站的基本概念,结合实际的操作和设计,巩固课堂教学内容,使学生掌握软件开发的基本概念、原理和技术,将理论与实际相结合,应用现有的开发工具,规范、科学地完成一个完整地应用软件的设计与实现,把理论课与实验课所学内容做一综合,并在此基础上强化学生的实践意识、提高其实际动手能力和创新能力。 当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正使得计算机被广泛的应用于信息管理系统。计算机的最大好处在于利用它能够进行信息管理和查询。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。制作电子杂志网站可以方便读者阅读,且可以扩大读者的视野以及提高阅历。 二、设计解决方案 问题解决方案: 经过分析,我们决定利用ASP编程,使用Dreamweaver MX作前端开发工具,利用SQLServer2000作后台数据库管理,数据库驱动使用ADO。 前台功能模块:系统主界面与登录程序设计,杂志查询及订阅,读者服务模块,杂志分类设计等。 后台功能模块:管理主界面与登录程序设计,最新杂志信息管理模块,杂志订阅管理模块,在留言管理模块设计等。后台管理的建立,使管理员可以通过后台很容易的对杂志城进行管理,比如:对最畅销杂志,公告和杂志城注册用户进行添加,删除等管理工作,还可以对读者在线留言的处理。 三、电子杂志网需求分析 3.1 需求分析 需求分析是整个设计过程的基础,最困难、最消耗时间的一步。它的最终结果是提供

《贪吃蛇游戏课程设计》报告

贪吃蛇游戏程序设计 一、课程设计任务 贪吃蛇小游戏程序设计 二、设计要求 通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。 (1).收集资料,分析课题,分解问题,形成总体设计思路; (2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍; (3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行; (4).完成课程设计报告,并进行答辩 三、需求分析 3.1、程序功能 贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。 3.2、设计思想 程序关键在于表示蛇的图形及蛇的移动。用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇

的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失也是画矩形块和覆盖矩形块。为了便于理解,定义两个结构体:食物与蛇。 3.3、流程图

四、设计的具体实现 (1)函数定义 函数定义是对各个基础函数的定义,并且设置需要运用的信息,便于调用 #define N 200 #define M 200 #include"graphics.h" #include #include #include #include #include #include #include #define LEFT 97//A #define RIGHT 100//D #define DOWN 115//S #define UP 119//W #define Esc 0x011b int i,key; int score=0; int gamespeed=250;//游戏速度可根据实际情况自行调整 struct Food { int x;//食物的横坐标 int y;//食物的纵坐标 int yes;//判断是否要出现食物的变量}food;//食物的结构体 struct Snake { int x[M]; int y[M]; int node;//蛇的节数 int direction;//蛇的移动方向 int life;//蛇的生命,0表示活着,1表示死亡 }snake; void Init();//图形驱动 void Close();//图形结束 void DrawK();//开始画面 void GamePlay();//玩游戏的具体过程void GameOver();//游戏结束 void PrScore();//输出成绩 (2)主函数main( ) 主函数是程序的主流程,首先定义使用到的常数、全局变量及函数原型说明,然后初始化图形系统,调用函数DrawK()画出开始画面,调用函数GamePlay(),即玩游戏的具体过程,游戏结束后调用Close()关闭图形系统,结束程序 void main()//主函数 { Init();//图形驱动 DrawK();//开始画面

《测量程序设计课程设计》指导书-2015

测量数据处理程序设计指导书 设计名称:测量数据处理程序设计 计划周数:2周 适用对象:测绘工程专业本科 先修课程:测量学,测量平差基础,大地控制测量,测量程序设计 一、设计目的 测量数据处理程序设计是学生在系统学习完大地控制测量学、测量平差基础、测量程序设计等相关课程之后,为了系统理解控制网平差的整体过程及综合运用科学工具而安排的。通过课程设计主要达到以下几个目的:掌握控制网平差课程设计具体内容、方法和步骤;通过理论联系实际,进一步巩固已学到的专业理论知识,并加深对理论的认识;培养学生对编写代码,上机调试和编写说明书等基本技能;锻炼学生阅读各类编程参考书籍及加以编程运用的能力。 二、设计内容及日程 在VB、 VC软件或matlab科学计算软件的平台上,选择的具体课程设计题目,进行程序设计与实现,共计10个工作日,工作程序如下: 三、设计的组织: 1.设计领导 (1)指导教师:由教研室指派教师、实验员兼任。

职责:全面组织设计大纲的实施,完成分管工作及相关技术指导。 (2)设计队长:学生班长兼任。 职责:协助教师做好本班学生的人员组织工作。 (3)设计组长:每组一人。 职责:组织执行下达的设计任务,安排组内各成员的工作分工。 2.设计分组 学生实习作业组由3~4人组成(含组长一人)。 四、设计内容 在VB、VC或MATLAB 软件平台上,按选择的设计题目进行相关程序开发 1、闭合导线简易平差、附合导线简易平差支导线计算 2、闭合水准网计算、附合水准网简易平差 3、地形图编号(新、旧两种方法) 4、误差椭圆的参数的计算与绘制误差椭圆 5、水准网严密平差 6、高斯正反算计算 7、高斯投影换带计算 8、七参数大地坐标转换(WGS84-bj54坐标转换、WGS84-CGCS2000坐标转换) 9、四参数坐标转换(西安80-bj54坐标转换、CGCS2000-bj54坐标转换、CGCS2000-西安80坐 标转换(平面) 10、大地高转换为正常高的计算 11、工程投影变形超限的处理 12、遥感图像数据处理 13、曲线(曲面)拟合 14、摄影测量空间后方交会 15、****管理信息系统设计与开发 五、上交成果 1) 小组利用vb、vc或matlab编写的软件包一个及测试数据一份 2)小组关于所开发程序设计说明书一份 3) 个人课程设计的心得一份 4)小组答辩PPT一份

C语言程序设计课程设计报告

C语言程序设计课程设计实验报告 一、设计名称:学生成绩管理查询系统 实验项目性质:综合性 所涉及课程:C语言程序设计 计划学时:实验学时12 二、设计目的: 1.通过本课程设计,培养上机动手能力,使学生巩固《C语言程序设计》课 程学习的内容,掌握工程软件设计的基本方法,强化上机动手能力,闯过编程关; 2.为后续各门计算机课程的学习打下坚实基础。 3.理解程序设计的思路,掌握结构化程序设计的方法,综合使用C语言进行 程序编写,巩固常用的C语言概念,如数组、指针、结构体、链表、文件操作等,注意良好的程序设计风格的培养。提高编写程序解决实际问题的能力、调试程序的技能。 三、设计环境(软件、硬件及条件) 1.硬件:PC机 2.软件:Turbo C++ 四、设计说明: 程序系统的结构:用一系列图表列出本程序系统内的每个程序(包括每

个模块和子程序)的名称、标识符和它们之间的层次结构关系。 主程序: ●新建:输入记录(遇#号时停止输入)。 ●插入:在指定位置插入记录。 ●显示:列出所有记录。 ●查询: 1、按学号查询; 2、按名字排序。 ●删除: 1、按学号删除; 2、按名字删除; 3、删除所有记录。 ●排序: 1、按语文成绩排序; 2、按英语成绩排序; 3、按数学成绩排序。 ●保存:保存为任意名字,系统自动加后缀名为.txt。 ●读取:读取程序目录下的后缀名为.txt的文件。 ●退出:退出程序。 五、各功能模块的具体实现,用图表表示。

输入记录 显示 按学号(姓名)查询信息

按学号(姓名)删除信息 Y N 读取文件

保存文件

六、各模块(函数)的功能介绍,数据结构设计描述,参数说明等。 STUDENT *init(); /*初始化链表*/ STUDENT *create(); /*新建链表*/ STUDENT *del_no(STUDENT *h);/*按学号删除信息*/ STUDENT *del_name(STUDENT *h); /*按姓名删除信息*/ void print(STUDENT *h); /*显示信息函数*/ void search_no(STUDENT *h); /*按学号搜索*/ void search_name(STUDENT *h); /*按姓名搜索*/ STUDENT *insert(STUDENT *h); /*插入信息函数*/ void sort(STUDENT *h);/* 排序函数*/ void save(STUDENT *h);/*保存数据到文件*/ void load(STUDENT *h); /*从文件读取数据*/ int menu_main(); /*菜单函数*/ void inputs(char *prompt,char *s,int count);/*输出信息*/ 七、程序代码: Enter records\n"); printf(" 2. Add records\n"); printf(" 3. List records\n"); printf(" 4. Search records\n"); printf(" 5. Delete records\n"); printf(" 6. Sort records\n"); printf(" 7. Save files\n"); printf(" 8. Load files\n"); printf(" 9. Quit\n\n"); printf("*****************************************\n");

相关主题
文本预览
相关文档 最新文档