版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE2实训报告实训报告题目:通讯录院系:信息科技学院专业:计算机科学与技术姓名:***学号:****指导教师:******日期:2012年1月7日桂林电子科技大学信息科技学院目录1问题定义………………………42系统设计………………………42.1总体设计…………………42.2详细设计………………62.2.3输入记录模块……………………72.2.4查询记录模块………………………82.2.5更新记录模块………………………82.2.6统计记录模块………………………83系统实现…………………93.1编码………………………93.1.1程序预处理………………………93.1.2主函数main()………………93.1.3主菜单界面……………………93.1.4表格形式显示记录……………103.1.5记录查找定位……………………103.1.6格式化输入数据…………………103.1.7增加记录……………………103.1.8查询记录……………………10…3.1.9删除学生记录……………………113.1.10修改记录………………………113.1.11插入记录………………………123.1.12统计记录……………….…123.1.13排序记录………………………133.1.14存储记录………………………133.1.15截图……….……………17前言课程设计环节是应用型本科院校非常重要的一个教学环节,是学完一门课后应用本课知识及以前的知识积累而进行的综合性、开放性的训练。通过课程设计,不仅能够使学生得到系统的技能训练,巩固和加强所学得专业理论知识,而且能够培养学生工程意识、创新能力、团队精神等综合素质,培养学生的设计能力和解决实际问题的能力。C语言由于其强大的功能,丰富的表达能力,高效的代码,良好的移植性和灵活性,自1972年问世以来,经久不衰,即使现在出现了面向对象的程序设计方法和开发工具,但它仍然是人们学习程序设计的首选语言,用它训练和提高编程技术,以及开发应用程序等。我们通过《C语言程序设计》这门课程的学习,已经能编写解决小问题的程序,对程序的开发也有了初步的认识,还掌握了C语言的基本语法,这一过程确确实实令我们感到欣喜,有点计算机可以完成自我任务的成就感。但是,对于程序设计而言,学习C的步伐不应该停留于此。我们最终的目的应该是掌握开发大型综合程序的方法,即遵循软件工程的开发步骤和结构化程序设计思想,用C语言开发出解决复杂问题的大型综合程序。可是对于多数学生来说,学习了C语言后,除了应付各种考试之外,别无它用,对TurboC语言丰富的函数知之甚少,加上DOS环境所限,因而对C语言兴趣不大,也感到C语言比较难以掌握。本实训就是为了让学生在学完C语言后进一步了解C语言的知识,掌握C语言在软件开发方面的使用方法,希望通过此次实训,不仅能提高学生学习C语言的兴趣,更为今后学习其它专业知识及开发程序打下坚实的基础。本指导书中有些内容借鉴了互联网上相关程序的设计思想,在此对相关者表示衷心的感谢。由于时间、经验及水平的原因,不当、不足之处,请大家提出宝贵意见。编者通讯录系统本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和单链表的各种基本操作。本程序中涉及结构体、单链表、文件等方面的知识。通过本程序的训练,使学生能对C语言的文件操作有一个更深刻的了解,掌握利用单链表存储结构实现对学生成绩管理的原理,为进一步开发出高质量的管理信息系统打下坚实的基础。1、问题定义创建一个通讯录管理系统。假设系统中每个人录只包括姓名、电话号码,如下图所示,选择任意菜单后,实现相应功能。在问题定义阶段要考虑题目的可行性和需求分析,接下来进入开发阶段,完成系统设计和系统实现的任务。2、系统设计2.1总体设计采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,然后分别设计各个小任务。需要注意的是划分出来的模块应该相对独立但又相关,且容易理解。可以用模块化层次结构图(即模块图)来分析其任务的划分,一般从上到下进行,最上面一层是主模块,下面各层是其上一层模块的逐步细化描述。本通讯录系统要求采用数组实现,它由如下五大功能模块组成:输入记录模块:完成将数据存入文件的工作。记录可以从以二进制形式存储的数据文件中读入,也可从键盘逐个输入学生记录。学生记录由学生的基本信息和成绩信息字段构成。当从数据文件中读入记录时,也就是把在以记录为单位存储的数据文件中,将记录逐条复制到数组中。查询记录模块:逐一查找文件名对应文件,打开读数。更新记录模块:打开相应文件,对其中数据更改。输出记录模块:重文件中读出数据,转出存入数组中,再由数组输出。2.2详细设计2.2.1数据结构设计通讯录结构体直接由外部文件分隔储存,进行文件建立,结合外部搜索完成基本结构。2.2.2定义数组函数执行流程//通讯录Dlg.h:headerfile//#if!defined(AFX_DLG_H__37C8ABEA_DB2A_4346_9B9E_B2B26BE0014A__INCLUDED_)#defineAFX_DLG_H__37C8ABEA_DB2A_4346_9B9E_B2B26BE0014A__INCLUDED_#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000///////////////////////////////////////////////////////////////////////////////CMyDlgdialogclassCMyDlg:publicCDialog{//Constructionpublic: structstudent{ CStringcsCode; //学号 CStringcsName; //姓名}structStudent[20]; intnStudentNum; intnAccordNum; intnAccordItem[20];intnumber; CMyDlg(CWnd*pParent=NULL); //standardconstructor//DialogData //{{AFX_DATA(CMyDlg) enum{IDD=IDD_MY_DIALOG}; CString m_csCode; CString m_csName; CString m_csSearchCode; CString m_csSearchName; //}}AFX_DATA //ClassWizardgeneratedvirtualfunctionoverrides //{{AFX_VIRTUAL(CMyDlg) protected: virtualvoidDoDataExchange(CDataExchange*pDX); //DDX/DDVsupport //}}AFX_VIRTUAL//Implementationprotected: HICONm_hIcon; //Generatedmessagemapfunctions //{{AFX_MSG(CMyDlg) virtualBOOLOnInitDialog(); afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam); afx_msgvoidOnPaint(); afx_msgHCURSOROnQueryDragIcon(); afx_msgvoidOnButton1(); afx_msgvoidOnButton2(); afx_msgvoidOnButton3(); afx_msgvoidOnButton4(); afx_msgvoidOnButton5(); virtualvoidOnOK(); //}}AFX_MSG DECLARE_MESSAGE_MAP()};//{{AFX_INSERT_LOCATION}}//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.#endif//!defined(AFX_DLG_H__37C8ABEA_DB2A_4346_9B9E_B2B26BE0014A__INCLUDED_)public: structstudent{ CStringcsCode; //定义号码 CStringcsName; //定义姓名以结构体完成 }structStudent[10]; intnStudentNum;//定义数组的位置标记的,用于录入时移动数组 intnAccordNum;//查询时,用于找到数组位置 intnAccordItem[10];intnumber;将其都定义在主界面PUBLIC之中。输入记录模块voidCMyDlg::OnButton1(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(TRUE); //刷新提取数据 structStudent[nStudentNum].csCode=m_csCode; //录入数据 structStudent[nStudentNum].csName=m_csName; nStudentNum++;m_csCode="";//将输入栏变空m_csName=""; UpdateData(FALSE);//刷新录入数据}查询记录模块BOOLbAccordCode=FALSE;//用于判断对错 BOOLbAccordName=FALSE; CStringcsBuffer; nAccordNum=0; //附初值 UpdateData(TRUE); for(inti=0;i<nStudentNum;i++)//for循环查询 {if(m_csSearchCode==""||m_csSearchCode==structStudent[i].csCode)//判断是否符合,查询数据。 {bAccordCode=TRUE; } else{bAccordCode=FALSE;}if(m_csSearchName==""||m_csSearchName==structStudent[i].csName) {bAccordName=TRUE;} else{bAccordName=FALSE;}if(bAccordCode==TRUE&&bAccordName==TRUE) {nAccordItem[nAccordNum]=i;nAccordNum++;} }if(nAccordNum>0)//确定存在时进行输出{m_csSearchCode=structStudent[nAccordItem[0]].csCode;m_csSearchName=structStudent[nAccordItem[0]].csName;UpdateData(FALSE);}}}更新记录模块voidCMyDlg::OnButton3(){UpdateData(TRUE); //TODO:Addyourcontrolnotificationhandlercodehere number=0;for(inti=0;i<nStudentNum;i++)//重复查找功能 {if(m_csSearchName==""||m_csSearchName==structStudent[i].csName)number=i;structStudent[number].csCode=m_csSearchCode;//重新赋值structStudent[number].csName=m_csSearchName;}m_csSearchCode="";m_csSearchName="";UpdateData(FALSE);函数功能描述voidCMyDlg::OnButton1()录入voidCMyDlg::OnButton2()查询voidCMyDlg::OnButton3()修改voidCMyDlg::OnButton4()删除voidCMyDlg::OnButton5()对话框转接完成在上述系统设计后,即可着手进行系统实现的工作,开始程序代码的编写。3、系统实现3.1编码classCMyDlg:publicCDialog{//Constructionpublic: structstudent{ CStringcsCode; //定义号码 CStringcsName; //定义姓名以结构体完成 }structStudent[10]; intnStudentNum;//定义数组的位置标记的,用于录入时移动数组 intnAccordNum;//查询时,用于找到数组位置 intnAccordItem[10];intnumber;voidCMyDlg::OnButton1(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(TRUE); structStudent[nStudentNum].csCode=m_csCode; structStudent[nStudentNum].csName=m_csName; nStudentNum++;m_csCode="";m_csName=""; UpdateData(FALSE);}voidCMyDlg::OnButton2(){ //TODO:Addyourcontrolnotificationhandlercodehere BOOLbAccordCode=FALSE; BOOLbAccordName=FALSE; CStringcsBuffer; nAccordNum=0; UpdateData(TRUE); for(inti=0;i<nStudentNum;i++) {if(m_csSearchCode==""||m_csSearchCode==structStudent[i].csCode) {bAccordCode=TRUE; } else{bAccordCode=FALSE;}if(m_csSearchName==""||m_csSearchName==structStudent[i].csName) {bAccordName=TRUE;} else{bAccordName=FALSE;}if(bAccordCode==TRUE&&bAccordName==TRUE) {nAccordItem[nAccordNum]=i;nAccordNum++;} }csBuffer.Format("你查询的信息在左边显示,如过没有显示信息既则没此人记录。",nAccordNum);MessageBox(csBuffer,"Attention",MB_OK|MB_ICONINFORMATION);if(nAccordNum>0){m_csSearchCode=structStudent[nAccordItem[0]].csCode;m_csSearchName=structStudent[nAccordItem[0]].csName;UpdateData(FALSE);}}voidCMyDlg::OnButton3(){UpdateData(TRUE); //TODO:Addyourcontrolnotificationhandlercodehere number=0;for(inti=0;i<nStudentNum;i++) {if(m_csSearchName==""||m_csSearchName==structStudent[i].csName)number=i;structStudent[number].csCode=m_csSearchCode;structStudent[number].csName=m_csSearchName;}m_csSearchCode="";m_csSearchName="";UpdateData(FALSE);}voidCMyDlg::OnButton4(){ UpdateData(TRUE); //TODO:Addyourcontrolnotificationhandlercodehere number=0;for(inti=0;i<nStudentNum;i++) {if(m_csSearchName==""||m_csSearchName==structStudent[i].csName)number=i;structStudent[number].csCode="";structStudent[number].csName="";}m_csSearchCode="";m_csSearchName="";UpdateData(FALSE);}voidCMyDlg::OnButton5(){ //TODO:Addyourcontrolnotificationhandlercodehere jja; a.DoModal();}//通讯录Dlg.cpp:implementationfile//#include"stdafx.h"#include"通讯录.h"#include"通讯录Dlg.h"#include"jj.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CAboutDlgdialogusedforAppAboutclassCAboutDlg:publicCDialog{public: CAboutDlg();//DialogData //{{AFX_DATA(CAboutDlg) enum{IDD=IDD_ABOUTBOX}; //}}AFX_DATA //ClassWizardgeneratedvirtualfunctionoverrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport //}}AFX_VIRTUAL//Implementationprotected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg():CDialog(CAboutDlg::IDD){ //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT}voidCAboutDlg::DoDataExchange(CDataExchange*pDX){ CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg,CDialog) //{{AFX_MSG_MAP(CAboutDlg) //Nomessagehandlers //}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CMyDlgdialogCMyDlg::CMyDlg(CWnd*pParent/*=NULL*/) :CDialog(CMyDlg::IDD,pParent){ //{{AFX_DATA_INIT(CMyDlg) m_csCode=_T(""); m_csName=_T(""); m_csSearchCode=_T(""); m_csSearchName=_T(""); //}}AFX_DATA_INIT //NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32 m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);}voidCMyDlg::DoDataExchange(CDataExchange*pDX){ CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CMyDlg) DDX_Text(pDX,IDC_csCode1,m_csCode); DDX_Text(pDX,IDC_csName1,m_csName); DDX_Text(pDX,IDC_csSearchCode,m_csSearchCode); DDX_Text(pDX,IDC_csSearchName,m_csSearchName); //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CMyDlg,CDialog) //{{AFX_MSG_MAP(CMyDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1,OnButton1) ON_BN_CLICKED(IDC_BUTTON2,OnButton2) ON_BN_CLICKED(IDC_BUTTON3,OnButton3) ON_BN_CLICKED(IDC_BUTTON4,OnButton4) ON_BN_CLICKED(IDC_BUTTON5,OnButton5) //}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CMyDlgmessagehandlersBOOLCMyDlg::OnInitDialog(){ CDialog::OnInitDialog();nStudentNum=0; nAccordNum=0; //Add"About..."menuitemtosystemmenu. //IDM_ABOUTBOXmustbeinthesystemcommandrange. ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX<0xF000); CMenu*pSysMenu=GetSystemMenu(FALSE); if(pSysMenu!=NULL) { CStringstrAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if(!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu); } } //Settheiconforthisdialog.Theframeworkdoesthisautomatically //whentheapplication'smainwindowisnotadialog SetIcon(m_hIcon,TRUE); //Setbigicon SetIcon(m_hIcon,FALSE); //Setsmallicon //TODO:Addextrainitializationhere returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}voidCMyDlg::OnSysCommand(UINTnID,LPARAMlParam){ if((nID&0xFFF0)==IDM_ABOUTBOX) { CAboutDlgdlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID,lParam); }}//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,//thisisautomaticallydoneforyoubytheframework.voidCMyDlg::OnPaint(){ if(IsIconic()) { CPaintDCdc(this);//devicecontextforpainting SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0); //Centericoninclientrectangle intcxIcon=GetSystemMetrics(SM_CXICON); intcyIcon=GetSystemMetrics(SM_CYICON); CRectrect; GetClientRect(&rect); intx=(rect.Width()-cxIcon+1)/2; inty=(rect.Height()-cyIcon+1)/2; //Drawtheicon dc.DrawIcon(x,y,m_hIcon); } else { CDialog::OnPaint(); }}#if!defined(AFX_JJ1_H__6B15ED22_1E33_4C03_BC92_B4C82ADABF2B__INCLUDED_)#defin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026恒风聚能新能源(甘肃)有限公司招聘考试参考题库及答案解析
- 2026年甘肃电投常乐发电有限责任公司招聘30人考试备考题库及答案解析
- 2026年怒江州福贡县公安局辅警招聘(9人)考试备考试题及答案解析
- 2026重庆医科大学附属第一医院工作人员招聘考试备考题库及答案解析
- 2026年1月重庆市万州区高峰街道办事处公益性岗位招聘4人考试参考试题及答案解析
- 2026年广东水利电力职业技术学院高职单招职业适应性测试备考试题有答案解析
- 胺碘酮的患者生活质量改善
- 2026浙江绍兴市本级卫生健康单位第一次招聘硕士博士研究生、高级专家和医学类工作人员80人考试参考试题及答案解析
- 2026年西湖区转塘街道编外用工招聘备考题库参考答案详解
- 2026年韶关市大宝山资源综合利用有限公司招聘备考题库含答案详解
- JJF1033-2023计量标准考核规范
- 电子电路基础-电子科技大学中国大学mooc课后章节答案期末考试题库2023年
- 四年级科学上册期末试卷及答案-苏教版
- DB51T 2875-2022彩灯(自贡)工艺灯规范
- 小学数学人教版六年级上册全册电子教案
- 主要负责人重大危险源安全检查表
- 《工程经济学》模拟试题答案 东北财经大学2023年春
- 2023-2024学年广西壮族自治区来宾市小学数学五年级下册期末自测试卷
- 2023年福海县政务中心综合窗口人员招聘笔试模拟试题及答案解析
- GB/T 25129-2010制冷用空气冷却器
- FZ/T 01057.2-2007纺织纤维鉴别试验方法 第2部分:燃烧法
评论
0/150
提交评论