vc大作业报告学生信息管理系统

合集下载

C语言大作业——学生信息管理系统

C语言大作业——学生信息管理系统

《程序设计综合课程设计》报告学生姓名: ______ ______ ____________________________学生班级: __________________________________ ____________学生学号: ____________指导教师: ______2014年6 月22 日目录第1章Visual C++简介及其优点第5章总结附录源程序学生信息管理系统前言学生信息档案的管理对于学校的管理者来说至关重要,学生信息是高等学校非常重要的一项数据资源,是一个教育单位不可缺少一部分。

特别是近几年来,国家政策的调整,我国高等院校大规模的扩招,给高等院校的教学管理、学生管理、后勤管理等方面都带来不少的冲击。

其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依靠人工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高,目前我国各类高等院校中还有相当一部分学生档案管理还停留在纸介质的基础上,尤其是中、小学对学生档案的管理更是落后,这样的管理机制已经不能适应时代发展的要求,其管理方法将浪费许多人力和物力。

随着科学技术的不断提高,日渐成熟,计算机应用的普及已进入人类社会生活的各个领域,并发挥着越来越重要的作用。

这种传统的手工管理模式必然被以计算机为物质基础的信息管理方法所取代。

作为计算机应用的一部分,使用计算机对学生档案进行管理,有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、大、保密性好、寿命长、成本低等。

这些优点能够极大地提高学生档案管理的效率,也是学校向科学化、正规化管理发展的必要条件,更是各个高等院校与世界接轨的重要条件。

第1章 Visual C++简介及其优点VC++是微软公司开发的一个IDE(集成开发环境),换句话说,就是使用c++的一个开发平台有些软件就是这个编来的...另外还有VB,VF.只是使用不同语言...但是, vc++是Windows平台上的C++编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较大。

通过用c语言编写学生信息管理系统后的总结

通过用c语言编写学生信息管理系统后的总结

通过用c语言编写学生信息管理系统后的总结学生信息管理系统是一种方便高效的工具,能够帮助学校和教育机构对学生信息进行统一管理和查询。

在我使用C语言编写学生信息管理系统的过程中,我深刻地意识到了该系统的重要性和优势。

首先,学生信息管理系统能够提高信息管理的效率和准确性。

传统的学生信息管理方式通常是使用纸质档案和表格进行记录,这样容易产生错误和混乱。

而学生信息管理系统通过自动化的方式进行数据存储和管理,大大降低了手工操作的错误率。

学校工作人员可以通过系统快速查询和更新学生信息,提高了工作效率。

此外,学生信息管理系统还具备数据安全性较高的特点。

通过对学生信息进行密码保护和权限设置,系统能够保证只有授权人员才能访问和修改学生信息。

同时,系统还提供数据备份和恢复功能,防止数据丢失或损坏。

在编写学生信息管理系统的过程中,我也遇到了一些挑战和问题。

首先,要对学生信息进行合理的数据库设计和数据结构设计,确保存储和查询的高效性和准确性。

其次,还要针对不同用户的需求进行系统界面的设计,使其易于操作和管理。

最后,还要注意系统的安全性和稳定性,避免数据泄露和系统崩溃等问题。

总结起来,通过使用C语言编写学生信息管理系统,我认识到该系统的重要性和优势。

它能够提高学校的信息管理效率、准确性和安全性,为学校提供全面的信息展示和查询功能。

在今后的学习和工作中,我将进一步完善系统的功能和性能,使其更好地服务于学校和教育机构,并尽可能地满足用户的需求。

C语言学生管理系统综合实验报告

C语言学生管理系统综合实验报告

编写一学生信息管理系统,用来管理学生基本信息及成绩信息试验目的本实验为学生提供了一个既动手又动脑,上机实践的机会。

学生通过分析和解决该实验, 将课本上的理论知识和实际有机地结合起来,锻炼学生分析、解决较复杂问题的能力,提高 学生编写综合系统程序的能力。

实验内容编写一个学生信息管理系统,主要用来管理学生基本信息及成绩信息。

系统功能模块如下图:具体要求为:实验名称 小型学生信息管理系统实验报告实验项目 专业班级 姓名XXX 学号指导教师成绩 日期数据数Lg 占据退出平均不及显1.建立学生信息,每个学生的信息应包括:学号、姓名、性别、班级、至少3门课程的成绩;2.数据输入:输入学生的各项信息;3.数据修改:根据输入学生的学号可以选择修改该学生的信息;4.数据处理:可以选择处理方式为:排序、查询、统计。

其中:a)排序:按学号排序b)查询:根据学号查询成绩C)统计:可以选择统计各学生的平均成绩或统计所有存在不及格科目的学生;5.数据输出:输出学生的相应结果信息;6.退出:退出整个学生信息管理系统。

7.输出结果截屏的第一条记录一定要反映出你自己的真实信息。

程序组织结构图、函数调用关系图四、程序清单#in cludevstdio.h>#in clude<iostream.h>#i ncludevstri ng.h> struct stude ntchar num[10];char n ame[10];char sex[4];char clas[20];int yw,sx,yy;float ave;}stu[100];inti,j;void Inp utDataOchar x;while(1)printf("\t 学号:");sca nf("%s",stu[i]. nu m);printf("\t 姓名:");sea nf("%s",stu[i]. name);printf("\t 性别: ");scan f("%s",stu[i].sex);prin tf("\t 班级: ");scan f("%s",stu[i].clas);prin tf("\t 语文: ");scan f("%d",&stu[i].yw);printf("\t 数学:");scan f("%d",&stu[i].sx);printf("\t 英语:");scan f("%d",&stu[i].yy);stu[i].ave=float((stu[i].yw+stu[i].sx+stu[i].yy)/3.0);i++;printf("\t 是否继续输入数据(Y.N)");cin>>x;if(x==' n'||x=='N') break;printf(" \n");void EditDataOint coun t=0;char str[1O];prin tf("\n 请输入学生学号:");cin> >str;while (co un t<i)if(strc mp (str,stu[co un t]. num )==0)printf("学号姓名性别班级语文数学英语\n");prin tf("%-11s",stu[cou nt], nu m);printf(" \n");Pl1nff(=%—13s-「)八p rinff(=%—8s-「n aPl1nff(=%—16s-「sucounq.c-as)八Pl1nff(=%—6crguaounq.yw=pri nff(=%—6空•Pl1m%—4crguaounq.yy=prinmvrxprin殳break-counf++八if(counfvHi)e-seprin tf("\n\t 修改数据:\n"); printf("\t 学号:");sea nf("%s",stu[i]. nu m);prin tf("\t 姓名:");sea nf("%s",stu[i]. name);prin tf("\t 性别: ");scan f("%s",stu[i].sex);printf("\t 班级: ");scan f("%s",stu[i].elas);printf("\t 语文: ");scan f("%d",&stu[i].yw);prin tf("\t 数学: ");scan f("%d",&stu[i].sx);scan f("%d",&stu[i].yy);prin tf("\t英语:");stu[co un t].ave=float((stu[co un t].yw+stu[co un t].sx+stu[co un t].yy)/3.0);void sx() struct stude nt temp;int a,b,c;for(a=0;a<i-1;a++)c=a;for(b=a+1;b<i;b++)if(stu[b].ave>stu[c].ave)c=b;temp=stu[b];stu[b]=stu[c];sfurc 一Hfemp八Pl1nff(= 盘E甸可璋;MR〔云)priw ——fo「(CHOqrc++)pl1mf(=%—1」s=guaLnum=pri nff(=%—l 3S= gurcLname)八Pl1mf(=%—8s=gus.sex)-prinm.%二6s=gus.cpl1mf(=%—6crguaLyw)-Pl1mf(=%—6crgus.sx)-Pl1mf(=%—4crgus.yy)-prinmvrxprintf("void cx()int coun t=0;char str[1O];prin tf("\n 请输入要查询的学生学号:");cin> >str;while (co un t<i)if(strc mp (str,stu[co un t]. num )==0)printf("学号姓名性别班级语文数学英语\n");prin tf("%-11s",stu[cou nt], nu m);prin tf("%-13s",stu[cou nt], name);prin tf("%-8s",stu[cou nt].sex);prin tf("%-16s",stu[cou nt].clas);prin tf("%-6d",stu[cou nt].yw);prin tf("%-6d",stu[cou nt].sx);prin tf("%-4d",stu[cou nt].yy);prin tf("\n");printf("break;coun t++;if(co un t>=i)printf("\n 无该学号学生");printf(" \n");elseprin tf("\n");void tjpjf()int coun t=0;stu[i].ave=float((stu[i].yw+stu[i].sx+stu[i].yy)/3.0);printf(" 学号姓名平均分\n");printf("for(j=0;j<i;j++)while(co un t<i)for(j=0;j<i;j++)prin tf("%-21s",stu[cou nt]. nu m);{prin tf("%-21s",stu[cou nt], name);prin tf("%-6.2f",stu[cou nt].ave);coun t++;prin tf("\n");}printf("void tjbhgrsOint j,co un t=0;printf(" for(j=0;j<i;j++)if(stu[j].yw<60||stu[j].sx<60||stu[j].yy<60)\n");printf(" 有不及格科目的学生是:\n");printf(" 学号姓名性别班级语文数学英语\n");\n");{{prin tf("%-11s",stu[cou nt], nu m);prin tf("%-13s",stu[cou nt].n ame);prin tf("%-8s",stu[cou nt].sex);prin tf("%-16s",stu[cou nt].clas);prin tf("%-6d",stu[cou nt].yw);prin tf("%-6d",stu[cou nt].sx);prin tf("%-4d",stu[cou nt].yy);prin tf("\n");coun t++;printf(" void tj()\n");char x;{while(1){prin tf("\t 1. 统计平均分 2. 统计不及格学生信息 3. 返回\n");prin tf("\n\t 请选择具体的统计内容:");cin>>x;prin tf("\n");switch(x){case '1':tjpjf();break;case 2:tjbhgrs();break;case 3:break;} if(x==3)prin tf("\t \n");prin tf("\t 1.按学号排序\n");prin tf("\t 2.查询printf("\t break;prin tf("\n");}}void Data Proc(){char x;while(1){printf("\t 处理数据\n");prin tf("\t \n");prin tf("\t 1.按学号排序\n"); prin tf("\t 2.查询printf("\tprin tf("\n\t 请选择具体的处理内容:");cin>>x;prin tf("\n"); switch(x)case '1':sx();break;case '2':cx();break;case 3:tj();break;case '4':break;if(x=='4')break;printf("\t 3.统计\n");printf("\t 4.返回主菜单\n");\n");prin tf("\n");void DataOut put()int coun t=0;printf(" 学号姓名性别班级语文数学英语\n");printf(" \n");while(co un t<i)prin tf("%-11s",stu[cou nt], nu m);prin tf("%-13s",stu[cou nt]. name);prin tf("%-8s",stu[cou nt].sex);prin tf("%-16s",stu[cou nt].clas);prin tf("%-6d",stu[cou nt].yw);prin tf("\t* *\n");prin tf("\t*学生信息管理系统*\n");prin tf("\t**\n");prin tf("%-6d",stu[cou nt].sx);prin tf("%-6d",stu[cou nt].yy);coun t++;prin tf("\n");printf(" void mai n()char x;while(1){ printf("\t********************************************\n");\n");prin tf("\t*输入数据*\n");1.prin tf("\t* 2. 修改数据*\n");prin tf("\t* 3. 处理数据*\n");prin tf("\t* 4. 输出数据*\n");prin tf("\t* 5. 退出*\n");prin tf("\t* *\n");printf("\t********************************************\n");prin tf("\n\t 请选择需要进行的操作:");cin> >x; prin tf("\n");switch(X){ case '1':I np utData();break;case 2:EditData();break;case 3:Data Proc();break;case '4':DataOut put();break;case '5':printf(" 谢谢使用!\n");break;if(x=='s') break;prin tf("\n");五、运行结果八、实验总结(调试分析、体会、致谢)从这一次的综合实验中,我感触很深可以这么说,为了这个实验花费比较的功夫。

c语言学生信息管理系统设计报告

c语言学生信息管理系统设计报告

c语言学生信息管理系统设计报告随着教学质量和教学管理的要求不断提高,校园管理系统对于诸多困难领域的改善服务开始发挥着重要作用,而学生信息技术系统设计是实现校园管理质量提升的重要手段之一。

实施学生信息管理系统可以提高人力资源管理的效率,降低办理各项业务的成本,将学校管理变得更加规范和有效。

本报告旨在设计一套C语言学生信息管理系统,用于学校信息管理与市场营销管理,实现数据的及时收集、存储和处理,同时,改善学校的教学管理,提高教学质量,提升学生的学习体验。

首先,系统设计将涉及到C语言的语法和结构,以便理解和实现学生信息的管理。

其次,关于系统的功能,可以从学生信息管理、任课管理、教学管理、学术科研、职位设置、绩效考核等方面进行完善。

针对关键管理系统,为了实现系统的可靠性和安全性,将采用多种数据库技术,包括SQL Server、Oracle、MySQL等数据库技术,以及主流计算机语言C++、Java等,实现数据库的操作、学生信息管理系统的开发、学习管理系统的开发等技术需求。

此外,本报告还将对相关技术以及软件测试等内容进行分析,以保证学生信息管理系统的可靠性和稳定性。

本报告的完成,必须充分考虑C语言的基本知识,以及C语言学生信息管理系统在实施过程中的可能风险。

在实施过程中,应该通过计算机技术的应用、软件测试、数据库技术的改进等多方面分析,以保证系统在实施过程中的高效稳定性。

综上所述,本报告将实施C语言学生信息管理系统,实现学校信息管理与市场营销管理,旨在收集、存储和处理数据,同时提高教学管理的质量,提升学生的学习体验,实现学校的管理变得更加规范和有效。

此外,本报告还将深入探讨如何利用计算机技术、数据库技术、软件测试等相关技术,保证学生信息管理系统的可靠性和安全性。

学生信息管理系统实验报告

学生信息管理系统实验报告

一、实验目的1. 熟悉学生信息管理系统的基本功能和操作流程。

2. 掌握数据库设计的基本方法,能够根据需求设计合理的数据库结构。

3. 熟悉编程语言和开发工具,能够编写简单的数据库应用程序。

4. 提高团队合作能力和沟通能力。

二、实验环境1. 操作系统:Windows 102. 开发工具:Visual Studio 20193. 数据库:MySQL 5.74. 编程语言:C#三、实验内容1. 需求分析学生信息管理系统主要用于对学生信息进行管理,包括学生基本信息、成绩、课程、班级等。

系统应具备以下功能:(1)学生信息管理:增加、删除、修改、查询学生信息。

(2)成绩管理:录入、修改、查询学生成绩。

(3)课程管理:增加、删除、修改、查询课程信息。

(4)班级管理:增加、删除、修改、查询班级信息。

(5)统计分析:对学生成绩、课程等进行统计分析。

2. 数据库设计根据需求分析,设计如下数据库表:(1)学生信息表(student)字段名 | 数据类型 | 说明--- | --- | ---id | int | 学生编号(主键)name | varchar(50) | 学生姓名gender | varchar(10) | 性别age | int | 年龄class_id | int | 班级编号(外键)(2)成绩表(score)字段名 | 数据类型 | 说明--- | --- | ---id | int | 成绩编号(主键)student_id | int | 学生编号(外键)course_id | int | 课程编号(外键)score | float | 成绩(3)课程表(course)字段名 | 数据类型 | 说明--- | --- | ---id | int | 课程编号(主键)name | varchar(50) | 课程名称credit | int | 学分(4)班级表(class)字段名 | 数据类型 | 说明--- | --- | ---id | int | 班级编号(主键)name | varchar(50) | 班级名称3. 系统设计(1)界面设计采用Windows窗体应用程序,界面包括以下部分:- 主界面:展示系统功能菜单。

vc大作业报告学生信息管理系统)

vc大作业报告学生信息管理系统)

高级程序设计项目训练报告指导教师:黄欢时间 2012 年 7 月 27 日专业年级: 姓名:学号:报告分程序功能:1) 学生基本信息录入功能2) 学生信息查询功能3)学生信息的删除学生信息包括:姓名、性别、学号、班级、出生年月、手机号码、已经获得学分等输入输出数据的说明:输入学生信息点击确定,在“学生信息查询”中输入姓名,就可以在“查询结果”中输出相应信息。

报告内容一、分析设计的是一个基于MFC对话框的C++应用程序,创建了一个主对话框,和一些必要的子对话框。

在主对话框中添加列表控件用来显示学生的基本信息。

主要用到了在MFC中运用编辑框的只是,还有插入位图。

二、操作运行后点击“学生信息录入”显示:输入相关信息在确定。

在选中信息点击删除,可进行删除操作。

点击“学生信息查询”显示:输入名字,若有信息储存,则在查询结果中显示,若无信息储存则显示:主代码:// zxyDlg.cpp : implementation file//#include "stdafx.h"#include "zxy.h"#include "zxyDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif//////////////////////////////////////////////////////////////////// /////////// CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog{public:CAboutDlg();// Dialog Data//{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support//}}AFX_VIRTUAL// Implementationprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)// No message handlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()//////////////////////////////////////////////////////////////////// /////////// CZxyDlg dialogCZxyDlg::CZxyDlg(CWnd* pParent /*=NULL*/): CDialog(CZxyDlg::IDD, pParent){//{{AFX_DATA_INIT(CZxyDlg)// NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CZxyDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CZxyDlg)DDX_Control(pDX, IDC_BUTTON3, m_button_change);DDX_Control(pDX, IDC_BUTTON2, m_button_del);DDX_Control(pDX, IDC_BUTTON1, m_button_enter);DDX_Control(pDX, IDC_LIST4, m_list_ctrl);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CZxyDlg, CDialog)//{{AFX_MSG_MAP(CZxyDlg)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)//}}AFX_MSG_MAPEND_MESSAGE_MAP()//////////////////////////////////////////////////////////////////// /////////// CZxyDlg message handlersBOOL CZxyDlg::OnInitDialog(){CDialog::OnInitDialog();// 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){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon// TODO: Add extra initialization herem_list_ctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);CRect rect;m_list_ctrl.GetClientRect(&rect);int nColInterval=rect.Width()/16;m_list_ctrl.InsertColumn(0,_T("学号"),LVCFMT_LEFT,nColInterval*3);m_list_ctrl.InsertColumn(1,_T("姓名"),LVCFMT_LEFT,nColInterval*2);m_list_ctrl.InsertColumn(2,_T("性别"),LVCFMT_CENTER,nColInterval*1+5);m_list_ctrl.InsertColumn(3,_T("班级"),LVCFMT_LEFT,nColInterval*2);m_list_ctrl.InsertColumn(4,_T("出生日期"),LVCFMT_LEFT,nColInterval*3);m_list_ctrl.InsertColumn(5,_T("电话号码"),LVCFMT_LEFT,nColInterval*3);m_list_ctrl.InsertColumn(6,_T("已获学分"),LVCFMT_LEFT,nColInterval*2);return TRUE; // return TRUE unless you set the focus to a control }void CZxyDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}// If you add a minimize button to your dialog, you will need the code below// to draw the icon. For MFC applications using the document/view model,// this is automatically done for you by the framework.void CZxyDlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // device context 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 + 1) / 2;// Draw the icondc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}}// The system calls this to obtain the cursor to display while the user drags// the minimized window.HCURSOR CZxyDlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}#include "MyDialog_enter.h"void CZxyDlg::OnButton1(){// TODO: Add your control notification handler code hereCMyDialog_enter *pwd=new CMyDialog_enter(this);pwd->Create(IDD_DIALOG1,this);pwd->ShowWindow(1);}#include "student.h"void CZxyDlg::List_Show(void){m_list_ctrl.DeleteAllItems();int nItem = m_list_ctrl.GetItemCount();for (int i=0;i<people[0].AllNumber||i==people[0].AllNumber;i++,nItem++) {m_list_ctrl.InsertItem(nItem, people[i].sno);m_list_ctrl.SetItemText(nItem, 1,people[i].sname);m_list_ctrl.SetItemText(nItem, 2,people[i].sex);m_list_ctrl.SetItemText(nItem, 3,people[i].inst);m_list_ctrl.SetItemText(nItem, 4,people[i].brondata);m_list_ctrl.SetItemText(nItem, 5,people[i].phone);m_list_ctrl.SetItemText(nItem, 6,people[i].grade);}}void CZxyDlg::OnButton2(){// TODO: Add your control notification handler code hereint nItem=m_list_ctrl.GetSelectionMark();//AfxMessageBox(people[nItem].sname,MB_OK);if (nItem==-1){AfxMessageBox("您未选择任何内容!",MB_OK);}else{if (AfxMessageBox("确认删除学生"+people[nItem].sname+"的信息?",MB_YESNO)==IDYES){for (;nItem<people[0].AllNumber;nItem++){people[nItem].All_Copy(people[nItem+1]);}people[0].AllNumber--;List_Show();}}}#include "MyDialog_2.h"void CZxyDlg::OnButton3(){// TODO: Add your control notification handler code hereCMyDialog_2 *pwnd=new CMyDialog_2(this);pwnd->Create(IDD_DIALOG2,this);pwnd->ShowWindow(1);}BOOL CZxyDlg::PreTranslateMessage(MSG* pMsg) //屏蔽回车和ESC按键{// TODO: 在此添加专用代码和/或调用基类{// 屏蔽回车和ESC 键// 屏蔽ESC 键退出if (pMsg->message == WM_KEYDOWN && pMsg->wParam == 0x1b)return TRUE;// 回车if (pMsg->message == WM_KEYDOWN && pMsg->wParam == 0x0d )return TRUE;}return CDialog::PreTranslateMessage(pMsg);}遇到的问题及解决方法(编译错误提示及如何解决)1、主要遇到了一些成员变量添加错误的问题,在通过Ctrl+W操作显示窗口中重新添加后得以改正,是缺少成员变量的问题。

c语言程序设计大作业学生信息管理系统

c语言程序设计大作业学生信息管理系统

一、概述随着信息技术的不断发展和应用,计算机程序设计作为重要的基础课程,对学生的综合能力有着重要的培养作用。

在C语言程序设计课程中,大作业是检验学生对知识的掌握和应用能力的重要环节。

学生信息管理系统作为一种常见的大作业题目,涉及到了文件操作、结构体、指针等多个知识点,对学生的理论知识掌握和实战能力都有一定的考验。

二、需求分析学生信息管理系统是一个管理学生基本信息的软件,具有录入、查找、删除、修改等功能。

在设计学生信息管理系统的时候,首先要明确系统的功能需求,并且考虑到系统的扩展性和健壮性。

1. 学生基本信息包括学号、尊称、性别、芳龄、专业等内容,系统应具备录入学生信息的功能,并且能够将信息保存在文件中,方便下次使用。

2. 用户可以通过查找功能根据学号或尊称查询学生信息,系统需要具备高效的查找算法。

3. 可以对学生信息进行删除和修改操作,需要保证操作的准确性和安全性。

4. 系统需要具备良好的用户界面,方便用户的操作和管理。

三、系统设计在进行学生信息管理系统的设计时,需要考虑到系统的模块化和扩展性,将整个系统划分为多个模块,进行单独设计和测试。

1. 学生信息录入模块:负责接收用户输入的学生信息,并将信息写入文件中。

2. 学生信息查找模块:通过学号或尊称进行查找操作,需要设计高效的查找算法。

3. 学生信息删除模块:实现对学生信息的删除功能。

4. 学生信息修改模块:实现对学生信息的修改功能。

5. 用户界面设计:设计友好的用户界面,方便用户的操作和管理。

四、系统实现在进行系统实现时,需要根据设计的模块进行逐一实现和测试,保证系统的稳定性和功能完整性。

1. 学生信息录入模块实现:接收用户输入的学生信息,并将信息写入文件。

2. 学生信息查找模块实现:设计高效的查找算法,并实现根据学号或尊称进行查找操作。

3. 学生信息删除模块实现:实现对学生信息的删除功能,并确保操作的准确性和安全性。

4. 学生信息修改模块实现:实现对学生信息的修改功能,保证信息的一致性。

基于VC++的学生信息管理系统课设报告

基于VC++的学生信息管理系统课设报告

1 绪论随着信息技术在管理上越来越深入而广泛地应用,管理信息系统的实施在技术上已经逐步成熟。

管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机的组织起来,就必须建立与自身特点相适应的管理信息系统。

随着学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长。

面对庞大的信息量学要有信息管理系统来提高学生信息管理系统的效率。

通过这样的系统可以做到信息的规范管理,科学统计和快速查询,修改,添加,删除等,从而减少管理方面的工作量。

本次课程设计的学生管理系统主要用于学校学生信息管理,其主要任务是用计算机对学生各种信息进行日常管理,如添加,修改,删除,查询和排序等等。

根据这些要求我通过在Visual C++6.0的环境下进行系统的设计,数据库设计,窗口及相应的程序设计来完成设计学生管理系统。

2 系统设计用SQL Sever 2008设计学生信息数据库,数据库表项中包括学号,姓名,年龄,性别,出生年月,地址,电话,E-mail。

连接数据库,编写VC++程序,实现以下功能:(1)学生信息的录入功能(2)学生信息的浏览功能(3)学生信息的查询功能(可以按学号,姓名进行查询)(4)学生信息的排序(可以按学号,姓名进行排序)(5)学生信息的删除和修改功能系统结构图如图1:图1 系统结构图说明:在主窗口可以直接排序、删除和浏览。

查询条件、修改信息和添加信息都需要在弹出的模态对话框中输入,在主窗口显示。

实现功能总程序流程图如图2:图2 程序流程图流程图说明:首先进行初始化,进入主窗口,在主窗口有进入各种操作的按钮,判断是什么功能的按钮按下,进入相应功能。

若是删除、排序或者浏览按钮,则直接在主窗口显示相应的结果;若是添加按钮被按下,则弹出对话框,在对话框中输入要添加的学生的信息,确定后保存;若是修改按钮被按下,则弹出对话框,在对话框中填写修改后希望保存的信息,确定后保存修改;若是查询按钮被按下,弹出对话框,输入查询条件,确认后在主窗口显示信息。

c语言大作业学生管理系统

c语言大作业学生管理系统

c语言大作业学生管理系统随着信息化的快速发展,计算机技术已经深入到各个领域。

在教育领域中,学生管理系统是学校管理学生信息的重要工具。

本次大作业将以“c语言大作业学生管理系统”为题,介绍如何使用c语言开发一个简单的学生管理系统。

一、需求分析学生管理系统需要实现以下功能:1、添加学生信息2、查询学生信息3、修改学生信息4、删除学生信息5、显示所有学生信息二、设计1、定义数据结构为了存储学生信息,我们可以定义一个结构体,包含学生的姓名、学号、性别、年龄等信息。

cinclude <stdio.h>include <stdlib.h>include <string.h>typedef struct {char name;char id;char gender;int age;Student;2、定义函数为了实现学生管理系统的各个功能,我们可以定义以下函数:1、add_student():添加学生信息2、query_student():查询学生信息3、modify_student():修改学生信息4、delete_student():删除学生信息5、display_students():显示所有学生信息三、实现下面是一个简单的实现示例:cinclude <stdio.h>include <stdlib.h>include <string.h>typedef struct {char name;char id;char gender;int age;Student;void add_student(Student *students, int *num_students) { Student student;printf("Enter name: ");scanf("%s", );printf("Enter ID: ");scanf("%s", student.id);printf("Enter gender: ");scanf("%s", student.gender);printf("Enter age: ");scanf("%d", &student.age);students[*num_students] = student;(*num_students)++;printf("Student added successfully.C语言学生信息管理系统实验报告C语言学生信息管理系统实验报告一、实验目的本实验旨在通过使用C语言编写学生信息管理系统,提升我们的编程技能和系统设计能力。

C语言学生信息管理系统实验报告

C语言学生信息管理系统实验报告

C语言学生信息管理系统实验报告 -C语言学生信息管理系统实验报告一、实验目的本次实验旨在通过C语言编程实现一个简单的学生信息管理系统,以帮助学生更好地理解和掌握C语言的基本语法、数据类型、程序控制结构以及文件操作等知识点。

同时,通过实际操作,提高学生的编程能力和问题解决能力。

二、实验内容1、系统的基本功能:实现学生信息的输入、存储、查询、修改和删除等操作。

2、数据存储方式:使用文件存储学生信息,保证数据的持久性。

3、用户界面:实现一个简单的命令行界面,方便用户进行操作。

三、实验步骤及实现1、打开一个新文件,命名为“student_info.txt”,用于存储学生信息。

2、定义一个结构体,包含学生的基本信息,如学号、姓名、年龄、性别等。

3、编写程序,实现学生信息的输入、存储和输出。

4、编写程序,实现学生信息的查询、修改和删除操作。

5、在命令行界面中,使用scanf函数获取用户输入的指令,并根据指令执行相应的操作。

6、在操作结束后,将结果显示在命令行界面上。

四、实验结果与分析1、学生信息管理系统的基本功能已经实现,可以正常进行学生信息的输入、存储、查询、修改和删除等操作。

2、使用了文件操作函数,可以将学生信息持久化存储,避免了每次运行程序都需要重新输入信息的麻烦。

3、通过实际操作,学生对C语言的基本语法、数据类型、程序控制结构以及文件操作等知识点有了更深入的理解和掌握。

五、实验总结与建议1、在实现学生信息管理系统时,需要注意数据的正确性和完整性,尤其是输入数据时需要做好错误处理。

2、在实现系统功能时,可以进一步优化代码,提高程序的效率和可读性。

3、可以增加更多的功能,如统计学生人数、打印学生信息等,以使系统更加完善。

4、在实际应用中,需要考虑系统的安全性和稳定性,如数据的备份和恢复、系统的异常处理等。

通过本次实验,学生对C语言有了更深入的理解和掌握,同时提高了编程能力和问题解决能力。

建议在今后的实验中,注重理论与实践相结合,提高学生的实际应用能力。

C++大作业:学生信息管理系统(附代码)

C++大作业:学生信息管理系统(附代码)

学生信息管理系统(附代码)题目要求:设计一个类CStudent,类中包含一个学生的基本数据如下:编号,姓名,性别,年龄,数学成绩,计算机成绩,外语成绩。

并假设编号为整数,且从1号往后连续编码;姓名为字符串,性别为字符。

如:1 LiPing m 18 89 98 94请采用binary文件形式,并使用随机读写处理方式,对自定义CStudent类的对象数据进行存储与读写处理(即是说,总按具有连续编码的编号num为“序”来对文件中的各对象数据进行随机读写处理)。

并设计该类的成员函数,而且对输出运算符“<<”进行重载,使该运算符能够完成将一个学生的信息输出到屏幕上。

要求成员函数完成以下功能:(1)从键盘输入一个学生的有关信息,并将它们存入到数据文件中(按编号来确定写出位置)。

(2)按编号对学生信息进行检索并将检索结果显示在屏幕上。

(3)按姓名对学生信息进行检索并将检索结果显示在屏幕上。

(4)计算某编号学生的总成绩与平均成绩。

(5)列出所有总成绩超过n分的性别为s同学的有关信息(n,s由用户从键盘输入)。

Code:1. /****************************************2. *名称: student.cpp *3. *描述: 学生管理程序*4. *功能: 添加,修改,按条件查询学生信息*5. *环境: Fedora Linux 11 & GCC & x86 *6. *备注: davelv第一次Class于2010-01-10 *7. *更新: 新建了可复用的搜索模板searchframe *8. ****************************************/9.10. #include <iostream>11. #include <cstring>12. #include <vector>13. #include <fstream>14. #include <cstdlib>15.16. using namespace std;17. #define CIN_LEN 1024//缓冲区长度18. #define FILENAME "data"//数据文件名19. /////////////////////////////////////20. // 结构和类//21. ///////////////////////////////////22. struct data//学生个人信息23. {24. int id;//学号25. char name[20];//名字26. char major[20];//专业27. char sex;//性别28. double ch,en,ma;//成绩29. int grade;//年级30. };31.32. class CStudent33. {34. protected:35. bool altered;//是否修改36. data info;//学生信息37. public:38. static int nowid ;//新学生自增id39. static void displayhead();//显示表头40. static void displayshorthead();//显示短表头41. CStudent();//构造42. void displayinfo();//显示全部学生信息43. void displayshortinfo();//显示学生短信息44. double getsum();//取总成绩45. double getave();//取得平均分46. double getch();//取语文成绩47. double geten();//取外语成绩48. double getma();//取数学成绩49. int set(bool isnew);//设置学生信息50. int getgrade();//取年级51. int getid();//取学号52. bool isaltered();//取是否修改53. char getsex();//取性别54. char* getname();//取姓名55. char* getmajor();//取专业56. data* getinfo();//取学生全部信息57. //定义友元函数以便重载运算符58. friend ostream& operator<<(ostream&,const CStudent&);59. friend istream& operator>>(istream&,CStudent&);60.61. };62.63. int CStudent::nowid = 1;//初始化类静态成员64.65. CStudent::CStudent()//基类构造66. {67. info.id=CStudent::nowid++;//子增id68. strcpy(,"None");//名字69. info.ch=0;//语文成绩70. info.en=0;//外语成绩71. info.ma=0;//数学成绩72. info.grade=1;//年级73. altered=false;//未被修改74. }75.76. int CStudent::getgrade()77. {78. return info.grade;79. }80.81. double CStudent::getsum()82. {83. return info.ch+info.en+info.ma;84. }85. double CStudent::getave()86. {87. return (info.ch+info.en+info.ma)/3;88. }89. double CStudent::getch()90. {91. return info.ch;92. }93.94. double CStudent::geten()95. {96. return info.en;97. }98.99. double CStudent::getma()100. {101. return info.ma;102. }103.104. int CStudent::getid()105. {106. return info.id;107. }108.109. char CStudent::getsex()110. {111. return info.sex;112. }113.114. char * CStudent::getname()115. {116. return ;117. }118. bool CStudent::isaltered()119. {120. return altered;121. }122. data *CStudent::getinfo()123. {124. return &info;125. }126. void CStudent::displayinfo()127. {128. cout<<*this<<"\t"<<getsum()<<"\t"<<getave()<<endl;//利用重载运算符输出129. }130. void CStudent::displayshortinfo()131. {132. cout << *this<<endl;133. }134. void CStudent::displayhead()135. {136. cout<<"\n\t学号\t姓名\t性别\t专业\t年级\t中文\t英文\t数学\t总分\t平均分\n"; 137. }138. void CStudent::displayshorthead()139. {140. cout<<"\n\t学号\t姓名\t性别\t专业\t年级\t中文\t英文\t数学\n";141. }142. int CStudent::set(bool isalter)143. {144. cout<<"输入学生信息:\n";145. displayshorthead();146. if (isalter)147. displayshortinfo();148. cout<<"\t"<<info.id<<"\t";149. cin.clear();150. cin>> *this;//从标准输入获取学生信息151. altered=true;//已修改152.153. if(cin.fail())154. {155. cout<<"录入失败\n";156. cin.clear();157. cin.ignore(CIN_LEN,'\n');//这两行是用来清空输入缓冲158. return -1;159. }160. else161. {162. cout<<"录入成功\n";163. return 1;164. }165. }166.167. //重载输出符168. ostream &operator<<(ostream& out,const CStudent &right)169. {170. //输出学生的全部信息171. out <<"\t"<<.id<<"\t"<<<<"\t"<<.sex<<"\t" 172. <<.major<<"\t"<<.grade<<"\t"<<.ch<<"\t" 173. <<.en<<"\t"<<.ma;174. return out;175. }176. //重载输入符177. istream& operator>>(istream& in,CStudent& right)178. {179. //输入除ID外的其他信息180. in >>>>.sex>>.major181. >>.grade>>.ch>>.en>>.ma; 182. return in;183. }184.185. /////////////////////////////////186. // 初始化函数//187. ////////////////////////////////188. int initial(vector<CStudent*> &stu)189. {190. fstream file;//输入文件191. CStudent *p;192.193. file.open(FILENAME, fstream::in|fstream::binary);//二进制输入打开194.195. if (!file)//文件是否打开成功196. return -1;197. while( file.peek()!=EOF )//是否到文件末尾198. {199. p=new CStudent();//新建一个学生对象200. file.read((char*) p->getinfo(),sizeof(data));//读入学生对象201. if(file.fail())//检查读入是否失败202. return -2;203. stu.push_back(p);//对象加入vector204. }205. if(!stu.empty())//如果从文件读入了对象206. CStudent::nowid = stu.back()->getid()+1;//则自增id设置为最后一个学生id+1 207. file.close();//关闭208. return stu.size();//返回对象个数209. }210. ////////////////////////////////211. // 信息增加函数//212. ///////////////////////////////213. void insert(vector<CStudent*> &stu)214. {215. char c='y';//输入控制字符216.217. int flag = 1;//标志位,1表示新增成功218.219. CStudent *p=new CStudent();220.221. while(c != 'n')//是否继续新增222. {223. flag = p->set(false);//设置学生信息224. if( flag == 1 )//如果设置成功225. {226. stu.push_back(p);//对象加入vector227. p = new CStudent();//新建下一个对象228. }229. cout << "是否继续添加学生(any/n)?";230. cin.clear();231. cin.ignore(CIN_LEN,'\n');232. cin.get(c);233. }234. //删除最后一个新建的对象,因为没有使用它235. delete p;236. CStudent::nowid--;237. }238.239. ///////////////////////////////240. // 查询全部信息函数//241. /////////////////////////////242. int comparebynone(const void *a, const void *b )243. {244. return 0;245. }246. ////////////////////////////////247. // 按学号比较函数//248. //////////////////////////////249. int comparebyid(const void *a, const void *b )250. {251. return *(const int *)a - ((CStudent *)(b))->getid();252. }253. ///////////////////////////////254. // 按姓名比较函数//255. //////////////////////////////256. int comparebyname(const void *a, const void *b )257. {258. return strcmp((const char *)a, (const char *)(((CStudent *)b)->getname())); 259. }260. ////////////////////////////////261. // 按年级比较函数//262. //////////////////////////////263. int comparebygrade(const void *a, const void *b)264. {265. return (*(const int *)a - ((CStudent *)b)->getgrade());266. }267. /////////////////////////////////////268. // 按总分和性别比较函数//269. ///////////////////////////////////270. int comparebymarkandsex(const void *a, const void *b)271. {272. double mark;273. char sex;274. sscanf((const char*)a,"%lf%c",&mark,&sex);275. return !(276. ( ((CStudent*)b)->getsum() >= mark )277. && ( (sex =='n') || (sex == ((CStudent*)b)->getsex()) )278. );279.280.281. }282. ///////////////////////////////283. // 搜索模板//284. /////////////////////////////285. template <typename T>286. void searchframe(const char *info, T &condition ,vector<CStudent *> &stu, int (*compare)(const void *a, const void *b) ,bool isalter)287. {288. char c='y';289. int flag;290. while(c != 'n')291. {292. cin.clear();293.294. if(info != NULL)295. {296. cout<< "输入"<<info<<":";297. //cin.ignore(CIN_LEN,'\n');298. cin>>condition;299. }300.301. if(cin.fail())302. {303. cout << "输入错误\n";304. }305. else306. {307. //遍历vector查找308. for(vector<CStudent*>::size_type ix =flag=0; ix!=stu.size(); ++ix)309. { //判断是name是否相等310. if(compare(&condition,stu[ix]) == 0)311. {312. if( isalter )313. stu[ix]->set(isalter);314. else315. {316. if(flag == 0)317. CStudent::displayhead();318. stu[ix]->displayinfo();319. }320. flag = 1;321. }322. }323. if (flag == 0)//没有查到324. {325. cout<<"没有";326. if(info == NULL)327. cout<<"符合条件";328. else329. cout<<info<<"为"<<condition;330. cout<<"的学生\n";331. }332. }333. cout << "是否继续(any/n)?";334. cin.clear();335. cin.ignore(CIN_LEN,'\n');336. cin.get(c);337. }338. }339.340. ////////////////////////////////341. // 信息检索函数//342. //////////////////////////////343. void fetch(vector<CStudent*> &stu)344. {345. int choose,id,grade;346. char name[20],markandsex[20];347.348. while (true)349. {350. cout << "\n\t1.显示全部学生信息\n"351. "\t2.按学号查学生信息\n"352. "\t3.按姓名查学生信息\n"353. "\t4.按年级查学生信息\n"354. "\t5.按成绩和性别查询\n"355. "\t6.返回上级菜单\n\n";356. lchoose:357. cout<<"输入您的选择:";358. choose=0;359. cin>>choose;360. switch(choose)361. {362. case 1 :searchframe(NULL,choose,stu,comparebynone,false); break; 363. case 2 :searchframe("学号",id,stu,comparebyid,false); break;364. case 3 :searchframe("姓名",name,stu,comparebyname,false); break;365. case 4 :searchframe("年级",grade,stu,comparebygrade,false); break;366. case 5 :searchframe("分数和性别",markandsex,stu,comparebymarkandsex,false); break;367. case 6 :return ;368. default: cout<<"输入有误\n";cin.clear();cin.ignore(CIN_LEN,'\n');goto lchoose;369. }370. }371. }372. ////////////////////////////////373. // 信息保存函数//374. //////////////////////////////375. int save(vector<CStudent*> &stu)376. {377. fstream file;378.379. file.open(FILENAME, fstream::out|fstream::binary);//二进制写打开文件380. if (!file)//判断打开是否成功381. return -1;382. //遍历全部对象383. for(vector<CStudent*>::size_type ix =0; ix!=stu.size(); ++ix)384. { //判断当前对象是否已修改385. if(stu[ix]->isaltered())386. { //修改了则写入文件387. file.seekp(ix*sizeof(data));388. file.write((char*) stu[ix]->getinfo(),sizeof(data));389. //写入是否成功390. if(file.fail())391. return -2;392. }393.394. }395. file.close();396. return 0;397. }398.399. ///////////////////////////////400. // 主函数//401. //////////////////////////////402.403. int main()404. {405. vector<CStudent *> stu ;406.407. system("clear");//清屏408. //读入数据文件409. if(initial(stu)<0)410. {411. cout<<"初始化失败,请检查数据文件\""<<FILENAME<<"\"是否完好\n"; 412. return -1;413. }414.415. int choose;416. //主菜单循环417. while(true)418. {419. cout << "\n *----------学生信息管理系统----------*\n\n" 420. " 1.录入信息\n"421. " 2.修改信息\n"422. " 3.检索学生\n"423. " 4.保存数据\n"424. " 5.保存退出\n"425. " 6.不保存退出\n\n"426. " *---------modify by davelv-----------*\n";427. lchoose:428. cout<<"输入您的选择:";429. choose=0;430. cin>>choose;431. switch(choose)432. {433. case 1 :insert(stu);break;434. case 2 :searchframe("学号",choose,stu,comparebyid,true);break;435. case 3 :fetch(stu);break;436. case 4 :if(save(stu) <0 )437. {438. cout<<"保存失败,请检查数据文件\""<<FILENAME<<"\"是否完好\n";439. };break;440. case 5 :if(save(stu) <0 )441. {442. cout<<"保存失败,请检查数据文件\""<<FILENAME<<"\"是否完好\n";443. }return 0;444. case 6 :return 0;445. default:cout<<"输入有误\n";cin.clear();cin.ignore(CIN_LEN,'\n');goto lchoose;446. }447. } 448. return 0; 449. }。

学生信息管理系统c课设报告

学生信息管理系统c课设报告

前言-----------------------------------------------------------2 概要设计-------------------------------------------------------3 详细设计-------------------------------------------------------4 原程序清单和执行结果-------------------------------------------61.源程序--------------------------------------------------62.执行结果-----------------------------------------------34 用户使用说明---------------------------------------------------36 调试与测试-----------------------------------------------------36 总结与体会-----------------------------------------------------36 参考资料-------------------------------------------------------36学生信息管理系统,是针对学校人事处的大量业务处理工作而开发的管理软件,是典型的管理信息系统;它是一个教育单位不可缺少的部分,它的内容对于学校管理者来说是至关重要的,能有效的帮助学校和老师掌握学生的情况;在传统模式下利用人工进行学生信息管理,存在着较多的缺点,如:效率底,保密性差,时间一长将产生大量的文件和数据,更不便于查找,更新,维护等;诸如这些情况,令学校管理者对学生的信息管理带来了很大困难,严重影响了教育工作者的工作效率;随着科学技术的不断提高,使用日趋成熟的计算机技术来代替传统的人工模式,来实现学生信息的现代化管理,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用;作为计算机应用的一部分,使用计算机对学生信息进行管理,具有着手工管理所无法比拟的优点;例如:检索迅速、查找方便、易修改、可靠性高、存储量大、数据处理快捷、保密性好、寿命长、成本低等;这些优点能够极大地提高学生信息管理的效率,也是学校实现科学化、正规化管理的重要条件;因此,开发这样一套管理软件成为很有必要的事情;概要设计1、功能模块图2void Delete; 实现数据删除功能void Total; 实现数据统计功能void Save; 实现数据保存功能void Read; 可从文件中将记录读取到该类的数组中;然后定义了一个主菜单函数和三个分菜单函数,使功能菜单显示在运行窗口以提示用户如何进行操作;主函数是一个程序必不可少的,在主函数中,使用一个switch语句来选择调用主菜单中的各个功能函数;详细设计1、程序中函数及数据介绍class Person 学生类class zhongxuesheng 中学生类class daxuesheng 大学生类class xiaoxuesheng 小学生类class xiao_Manage 小学生管理类class zhong_Manage 中学生管理类class da_Manage 大学生管理类void xiaoMenu 小学生管理菜单函数void zhongMenu 中学生管理菜单函数void daMenu 大学生管理菜单函数int main 主函数2、函数功能介绍显示函数显示保存的数据添加函数此函数实现的功能主要是,添加一个学生的信息,也就是说调用一次这个函数只能添加一个学生的信息;在此函数中也使用文件处理的方式,但使用的是以追加的方式打开文件,使输入的学生信息写在文件里原有信息的后面;删除函数此函数实现的功能主要是,删除一个学生的信息;在此函数中,先以读的方式打开文件,读出文件里的信息在显示在屏幕上,用户再根据提示信息输入想要删除第几个人的信息,关闭文件;再以写的方式打开文件,以一个if条件语句控制,再重新将学生信息写入文件除了打算删除的那个学生的信息,由于是以写的方式打开的文件,所以文件里原有的输入就都没有了,存入的新的数据;修改函数此函数实现的功能主要是,修改一个学生的信息;此函数的设计方法和删除函数的设计思想相类似,应用的思想都是将学生信息重新写入文件的方法,将原有数据覆盖;查询函数在查询功能中,可以按多条件查询,本系统分为两个查询条件,即按学号查询和按姓名查询;使用if语句来选择查询条件;按学号查询根据提示信息输入学号后,然后使用一个for循环语句,从第一个学生开始检索,如果该学生的学号和输入的学号相等,则输出该学生的信息,由于学生的学号是唯一固定的,所以并使用break语句跳出循环;当无查询结果时,会输出一条提示信息“无此人信息”;按姓名查询根据提示信息输入姓名后,然后使用一个for循环语句,从第一个学生开始检索,如果该学生的姓名和输入的姓名一样,则输出该学生的信息,由于学生的姓名有可能重复出现,所以不能使用break语句跳出循环,应该从第一个学生开始检索直到最后一名学生;当无查询结果时,会输出一条提示信息“无此人信息”;显示函数此函数实现的功能主要是,显示所有学生的信息;先是从文件中读取学生信息,然后在输出到显示窗口中;用一个for循环语句,来把所有学生的信息都输出;退出系统当输入“0”时,就能退出系统,这是通过while语句来控制实现的;保存函数将输入程序的数据保存到文件中统计函数根据选择的统计方式,然后使用一个for循环语句,从第一个学生开始检索,如果该学生的信息和选择统计方式一样,则计数变量自增,应该从第一个学生开始检索直到最后一名学生;最后输出结果源程序清单和执行结果1、源程序include<iostream>include<string>include<fstream>include<iomanip> 2.女"<<endl;cout<<"请输入你的选择"<<endl;cin>>choice2;switchchoice2{case 1:sex="男";break;case 2:sex="女";break;default:cout<<"输入错误;"<<endl;break;}cout<<"请输入学生年龄"<<endl;cin>>age;cout<<"请输入学生班级"<<endl;cin>>banji;cout<<"选择地址"<<endl;cout<<setw10<<"1.上海路"<<setw10<<"2.北京东路"<<setw10<<"3.北京西路"<<setw10<<"4.顺外路"<<setw10<<"5.南京东路"<<setw10<<"6.南京西路"<<setw10<<"7.解放东路"<<setw10<<"8.解放西路"<<setw10<<"9.青山湖大道"<<endl;cout<<"请输入你的选择"<<endl;cin>>choice1;switchchoice1{case 1:depart="上海路";break;case 2:depart="北京东路";break;case 3:depart="北京西路";break;case 4:depart="顺外路";break;case 5:depart="南京东路";break;case 6:depart="南京西路";break;case 7:depart="解放东路";break;case 8:depart="解放西路";break;case 9:depart="青山湖大道";break;default:cout<<"输入错误;"<<endl;break;}cout<<"地理成绩 "<<endl;cin>>spec;cout<<"历史成绩"<<endl;cin>>title;cout<<"语文成绩 "<<endl;cin>>yuwen;cout<<"数学成绩"<<endl;cin>>shuxue;cout<<"英语成绩 "<<endl;cin>>yingyu;}void Output{ cout<<setw10<<"学号"<<setw10<<"姓名"<<setw10<<"性别"<<setw10<<"年龄"<<setw10<<"班级"<<endl;cout<<setw10<<num<<setw10<<name<<setw10<<sex<<setw10<<age<<setw10<<banji<<endl;cout<<setw10<<"地址"<<setw10<<"地理"<<setw10<<"历史"<<setw10<<"语文"<<setw10<<"数学"<<setw10<<"英语"<<endl;cout<<setw10<<depart<<setw10<<spec<<setw10<<title<<setw10<<yuwen<<setw10<<shuxue<<setw10<<yingyu<<endl;}};class daxuesheng:virtual public Person 2.女"<<endl;cout<<"请输入你的选择"<<endl;cin>>choice2;switchchoice2{case 1:sex="男";break;case 2:sex="女";break;default:cout<<"输入错误;"<<endl;break;}cout<<"输入年龄"<<endl;cin>>age;cout<<"请输入学生班级"<<endl;cin>>banji;cout<<"选择地址"<<endl;cout<<setw10<<"1.上海路"<<setw10<<"2.北京东路"<<setw10<<"3.北京西路"<<setw10<<"4.顺外路"<<setw10<<"5.南京东路"<<setw10<<"6.南京西路"<<setw10<<"7.解放东路"<<setw10<<"8.解放西路"<<setw10<<"9.青山湖大道"<<endl;cout<<"请输入你的选择"<<endl;cin>>choice1;switchchoice1{case 1:zzmm="上海路";break;case 2:zzmm="北京东路";break;case 3:zzmm="北京西路";break;case 4:zzmm="顺外路";break;case 5:zzmm="南京东路";break;case 6:zzmm="南京西路";break;case 7:zzmm="解放东路";break;case 8:zzmm="解放西路";break;case 9:zzmm="青山湖大道";break;default:cout<<"输入错误;"<<endl;break;}cout<<"输入专业"<<endl;cin>>zc;cout<<"地理成绩 "<<endl;cin>>dili;cout<<"历史成绩"<<endl;cin>>lishi;cout<<"语文成绩 "<<endl;cin>>yuwen;cout<<"数学成绩"<<endl;cin>>shuxue;cout<<"英语成绩 "<<endl;cin>>yingyu;cout<<"联系电话 "<<endl;cin>>lianxi;}void Output{cout<<setw10<<"学号"<<setw10<<"姓名"<<setw10<<"性别"<<setw10<<"年龄"<<endl;cout<<setw10<<num<<setw10<<name<<setw10<<sex<<setw10<<age<<endl;cout<<setw10<<"班级"<<setw10<<"地址"<<setw10<<"专业"<<setw10<<"地理"<<setw10<<"历史"<<endl;cout<<setw10<<banji<<setw10<<zzmm<<setw10<<zc<<setw10<<dili<<setw10<<lishi<<endl;cout<<setw10<<"语文"<<setw10<<"数学"<<setw10<<"英语"<<setw10<<"联系电话"<<endl;cout<<setw10<<yuwen<<setw10<<shuxue<<setw10<<yingyu<<setw12<<lianxi<<endl;}};class xiaoxuesheng:virtual public Person 2.女"<<endl;cout<<"请输入你的选择"<<endl;cin>>choice2;switchchoice2{case 1:sex="男";break;case 2:sex="女";break;default:cout<<"输入错误;"<<endl;break;}cout<<"输入年龄"<<endl;cin>>age;cout<<"输入班级"<<endl;cin>>banji;cout<<"语文成绩"<<endl;cin>>yuwen;cout<<"英语成绩"<<endl;cin>>yingyu;cout<<"数学成绩"<<endl;cin>>shuxue;}void Output{cout<<setw10<<"职工编号"<<setw10<<"姓名"<<setw10<<"性别"<<setw10<<"年龄"<<setw10<<"班级"<<setw10<<"语文"<<setw10<<"英语"<<setw10<<"数学"<<endl;cout<<setw10<<num<<setw10<<name<<setw10<<sex<<setw10<<age<<setw10<<banji<<setw10<<yuwen<<setw10<<yingyu<<setw10<<yingyu<<endl;}};class xiao_ManageetNumutput;}}void xiao_Manage::Search编号查找 2.按姓名查找."<<endl;cin>>choice;switchchoice{case 1:{cout<<"请输入要查找的编号:"<<endl;int num;cin>>num;forint i=0;i<top;i++{ifzhongi.GetNum==num{zhongi.Output;return;}}cout<<"查无此人"<<endl;}break;case 2:{cout<<"请输入要查找的姓名"<<endl;string name;cin>>name;forint i=0;i<top;i++{ifzhongi.GetName==name{zhongi.Output;}}for i=0;i<top;i++ifzhongi.GetName==namereturn;cout<<"查无此人"<<endl;}break;default :cout<<"无此选项请重试"<<endl;break;}}void xiao_Manage::EditetNum==num{cout<<"请对这位教师的信息进行修改:"<<endl;zhongi.Input;cout<<"修改成功"<<endl;return;}}cout<<"查无此人"<<endl;}void xiao_Manage::Deleteum{cout<<"是否确认删除 1、是 2、否 "<<endl;int choice;cin>>choice;switchchoice{case 1:{forint j=i;j<top-1;j++zhongj=zhongj+1;cout<<"删除成功"<<endl;top--;};break;case 2:return;default:cout<<"无此项,失败"<<endl;break;}return;}}cout<<"无此人"<<endl;} ;break;case 2:{cout<<"请输入姓名:";string name;cin>>name;forint i=0;i<top;i++{ifname=={cout<<"是否确认删除 1、是 2、否 "<<endl;int choice;cin>>choice;switchchoice{case 1:{forint j=i;j<top-1;j++zhongj=zhongj+1;cout<<"删除成功"<<endl;top--;};break;case 2:return;default:cout<<"无此项,失败"<<endl;break;}return;}}cout<<"无此人"<<endl;}; break;default:cout<<"没有此项,失败:"<<endl;break;}}void xiao_Manage::Totalex=="男" a++;ifzhongi.sex=="女" b++;}cout<<"男性人数为"<<a<<endl;cout<<"女性人数为"<<b<<endl;}break;default:cout<<"输入错误;请重新输入"<<endl;break;}}void xiao_Manage::Saveum<<" "<<<<" "<<zhongi.sex<<" "<<zhongi.age<<" "<<zhongi.yuwen<<" "<<zhongi.yingyu<<endl;um>>>>zhongi.sex>>zhongi.age>>zhongi.yuwen>>zhongi.yingyuutput;i++;top++;};};class zhong_Manage{zhongxuesheng zhongTMAX; etNum{cout<<"该编号的人员已存在"<<endl;return;}zhongtop=t;top=top+1;cout<<"添加成功"<<endl;}void zhong_Manage::Show{iftop==0{cout<<"无数据"<<endl;return;}forint i=0;i<top;i++zhongi.Output;}void zhong_Manage::Search{iftop==0{cout<<"当前系统中没有存储记录"<<endl;return;}int choice;cout<<"请选择查找方式:1.按编号查找 2.按姓名查找."<<endl;cin>>choice;switchchoice{case 1:{cout<<"请输入要查找的编号:"<<endl;int num;cin>>num;forint i=0;i<top;i++{ifzhongi.GetNum==num{zhongi.Output;return;}}cout<<"查无此人"<<endl;}break;case 2:{cout<<"请输入要查找的姓名"<<endl;string name;cin>>name;forint i=0;i<top;i++{ifzhongi.GetName==name{zhongi.Output;}}for i=0;i<top;i++ifzhongi.GetName==namereturn;cout<<"查无此人"<<endl;}break;default :cout<<"无此选项请重试"<<endl;break;}}void zhong_Manage::Edit{iftop==0{cout<<"当前系统中没有存储记录"<<endl;return;}int num;cout<<"请输入要查找的教编号:"<<endl;cin>>num;forint i=0;i<top;i++{ifzhongi.GetNum==num{cout<<"请对该生信息进行修改:"<<endl;zhongi.Input;cout<<"修改成功"<<endl;return;}}cout<<"查无此人"<<endl;}void zhong_Manage::Delete{iftop==0{cout<<"当前系统中没有存储记录"<<endl;return;}cout<<"1、按编号查找删除 2、按姓名查找删除"<<endl;int choice;cin>>choice;switchchoice{case 1:{cout<<"请输入编号:";int num;cin>>num;forint i=0;i<top;i++{ifnum==zhongi.num{cout<<"是否确认删除 1、是 2、否 "<<endl;int choice;cin>>choice;switchchoice{case 1:{forint j=i;j<top-1;j++zhongj=zhongj+1;cout<<"删除成功"<<endl;top--;};break;case 2:return;default:cout<<"无此项,失败"<<endl;break;}return;}}cout<<"无此人"<<endl;} ;break;case 2:{cout<<"请输入姓名:";string name;cin>>name;forint i=0;i<top;i++{ifname=={cout<<"是否确认删除 1、是 2、否 "<<endl;int choice;cin>>choice;switchchoice{case 1:{forint j=i;j<top-1;j++zhongj=zhongj+1;cout<<"删除成功"<<endl;top--;};break;case 2:return;default:cout<<"无此项,失败"<<endl;break;}return;}}cout<<"无此人"<<endl;}; break;default:cout<<"没有此项,失败:"<<endl;break;}}void zhong_Manage::Total{cout<<"1 按人数统计 2 按性别统计 3 按地址统计 "<<endl;int choice;cout<<"请输入你的选择"<<endl;cin>>choice;switchchoice{case 1:cout<<"中学生人数为:"<<top<<endl;break;case 2:{int a=0,b=0;forint i=0;i<top;i++{ifzhongi.sex=="男" a++;ifzhongi.sex=="女" b++;}cout<<"男生人数为"<<a<<endl;cout<<"女生人数为"<<b<<endl;}break;case 3:{int a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0;epart=="上海路" a1++;ifzhongi.depart=="北京东路" a2++;ifzhongi.depart=="北京西路" a3++;ifzhongi.depart=="顺外路" a4++;ifzhongi.depart=="南京东路" a5++;ifzhongi.depart=="南京西路" a6++;ifzhongi.depart=="解放东路" a7++;ifzhongi.depart=="解放西路" a8++;ifzhongi.depart=="青山湖大道" a9++;}cout<<"上海路人数为"<<a1<<endl;cout<<"北京东路人数为"<<a2<<endl;cout<<"北京西路人数为"<<a3<<endl;cout<<"顺外路人数为"<<a4<<endl;cout<<"南京东路人数为"<<a5<<endl;cout<<"南京西路人数为"<<a6<<endl;cout<<"解放东路人数为"<<a7<<endl;cout<<"解放西路人数为"<<a8<<endl;cout<<"青山湖大道人数为"<<a9<<endl;}break;default:cout<<"输入错误;请重新输入"<<endl;break;}}void zhong_Manage::Save{ofstream out"D:\\",ios::out;ifout{cout<<"打开失败"<<endl;return;}cout<<"打开成功"<<endl;forint i=0;i<top;i++{out<<zhongi.num<<" "<<<<" "<<zhongi.sex<<" "<<zhongi.age<<" "<<zhongi.depart<<" "<<zhongi.spec<<" "<<zhongi.title<<endl;}cout<<"写入成功"<<endl;;}void zhong_Manage::Read{ifstream in"D:\\",ios::in;ifin{cout<<"打开失败"<<endl;return;}int i=0;whilein>>zhongi.num>>>>zhongi.sex>>zhongi.age>>zhongi.depart>>zhongi.spec>>zhongi.title{zhongi.Output;i++;top++;};};class da_Manage{daxuesheng zhongTMAX; etNum{cout<<"该编号的人员已存在"<<endl;return;}zhongtop=t;top=top+1;cout<<"添加成功"<<endl;}void da_Manage::Show{iftop==0{cout<<"无数据"<<endl;return;}forint i=0;i<top;i++zhongi.Output;}void da_Manage::Search{iftop==0{cout<<"当前系统中没有存储记录"<<endl;return;}int choice;cout<<"请选择查找方式:1.按编号查找 2.按姓名查找."<<endl;cin>>choice;{case 1:{cout<<"请输入要查找的编号:"<<endl;int num;cin>>num;forint i=0;i<top;i++{ifzhongi.GetNum==num{zhongi.Output;return;}}cout<<"查无此人"<<endl;}break;case 2:{cout<<"请输入要查找的姓名"<<endl;string name;cin>>name;forint i=0;i<top;i++{ifzhongi.GetName==name{zhongi.Output;}}for i=0;i<top;i++ifzhongi.GetName==namereturn;cout<<"查无此人"<<endl;}break;default :cout<<"无此选项请重试"<<endl;break;}}void da_Manage::Delete{iftop==0{cout<<"当前系统中没有存储记录"<<endl;return;}cout<<"1、按编号查找删除 2、按姓名查找删除"<<endl;int choice;switchchoice{case 1:{cout<<"请输入编号:";int num;cin>>num;forint i=0;i<top;i++{ifnum==zhongi.num{cout<<"是否确认删除 1、是 2、否 "<<endl;int choice;cin>>choice;switchchoice{case 1:{forint j=i;j<top-1;j++zhongj=zhongj+1;cout<<"删除成功"<<endl;top--;};break;case 2:return;default:cout<<"无此项,失败"<<endl;break;}return;}}cout<<"无此人"<<endl;} ;break;case 2:{cout<<"请输入姓名:";string name;cin>>name;forint i=0;i<top;i++{ifname=={cout<<"是否确认删除 1、是 2、否 "<<endl;int choice;cin>>choice;switchchoice{case 1:{forint j=i;j<top-1;j++zhongj=zhongj+1;cout<<"删除成功"<<endl;top--;};break;case 2:return;default:cout<<"无此项,失败"<<endl;break;}return;}}cout<<"无此人"<<endl;}; break;default:cout<<"没有此项,失败:"<<endl;break;}}void da_Manage::Edit{iftop==0{cout<<"当前系统中没有存储记录"<<endl;return;}int num;cout<<"请输入要查找的学号:"<<endl;cin>>num;forint i=0;i<top;i++{ifzhongi.GetNum==num{cout<<"请修改该生信息:"<<endl;zhongi.Input;cout<<"修改成功"<<endl;return;}}cout<<"查无此人"<<endl;}void da_Manage::Total{cout<<"1 按人数统计 2 按性别统计 "<<endl;int choice;cout<<"请输入你的选择"<<endl;cin>>choice;switchchoice{case 1:cout<<"大学生人数为:"<<top<<endl;break;case 2:{int a=0,b=0;forint i=0;i<top;i++{ifzhongi.sex=="男" a++;ifzhongi.sex=="女" b++;}cout<<"男性人数为"<<a<<endl;cout<<"女性人数为"<<b<<endl;}break;default:cout<<"输入错误;请重新输入"<<endl;break;}}void da_Manage::Save{ofstream out"D:\\",ios::out;ifout{cout<<"打开失败"<<endl;return;}cout<<"打开成功"<<endl;forint i=0;i<top;i++{out<<zhongi.num<<" "<<<<" "<<zhongi.sex<<" "<<zhongi.age<<" "<<zhongi.zzmm<<" "<<zhongi.zc<<endl;}cout<<"写入成功"<<endl;;}void da_Manage::Read{ifstream in"D:\\",ios::in;ifin{cout<<"打开失败"<<endl;return;}int i=0;whilein>>zhongi.num>>>>zhongi.sex>>zhongi.age>>zhongi.zzmm>>zhongi.zc{zhongi.Output;i++;top++;};};void xiaoMenu;void zhongMenu;void daMenu;int main{cout<<" 欢迎进入高校人员信息管理系统"<<endl;int choice;do{cout<<" 主菜单\n"<<endl;cout<<"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<<endl;cout<<"|| ||"<<endl; cout<<"|| ||"<<endl; cout<<"|| ||"<<endl;cout<<"|| 1=>小学生信息管理 ||"<<endl;cout<<"|| 2=>中学生信息管理 ||"<<endl;cout<<"|| 3=>大学生信息管理 ||"<<endl;cout<<"|| 0=>退出系统 ||"<<endl;cout<<"|| ||"<<endl;cout<<"|| ||"<<endl;cout<<"|| ||"<<endl;cout<<">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"<<endl;cout<<"\n请输入您的选择:";cin>>choice;switchchoice{case 1:xiaoMenu;break;case 2:zhongMenu;break;case 3:daMenu;break;case 0:cout<<"\n您已安全退出系统."<<endl;break;default:cout<<"\n没有此选项.请重选."<<endl;break;}}whilechoice=0;cout<<"\n 欢迎您下次再使用本系统"<<endl;return 0;}void xiaoMenu{xiao_Manage t;int choice;whilechoice=0{cout<<" 小学生\n"<<endl;cout<<"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<<endl;cout<<"|| ||"<<endl; cout<<"|| 1=>添加信息 ||"<<endl; cout<<"|| 2=>查找信息 ||"<<endl;cout<<"|| 3=>修改信息 ||"<<endl;cout<<"|| 4=>删除信息 ||"<<endl;cout<<"|| 5=>显示信息 ||"<<endl;cout<<"|| 6=>保存信息 ||"<<endl;cout<<"|| 7=>读取信息 ||"<<endl;cout<<"|| 8=>统计信息 ||"<<endl;cout<<"|| 0=>退出 ||"<<endl;cout<<"|| ||"<<endl;cout<<">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"<<endl;cout<<"\n输入您操作的选项:";cin>>choice;switchchoice{case 1:;break;case 2:;break;case 3:;break;case 4:;break;case 5:;break;case 6:;break;case 7:;break;case 8:;break;case 0:cout<<"退出成功"<<endl;break;default:cout<<"无此选项请重试"<<endl;break;}}}void zhongMenu{zhong_Manage t;int choice;whilechoice=0{cout<<" 中学生\n"<<endl;cout<<"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<<endl;cout<<"|| ||"<<endl; cout<<"|| 1=>添加信息 ||"<<endl; cout<<"|| 2=>查找信息 ||"<<endl;cout<<"|| 3=>修改信息 ||"<<endl;cout<<"|| 4=>删除信息 ||"<<endl;cout<<"|| 5=>显示信息 ||"<<endl;cout<<"|| 6=>保存信息 ||"<<endl;cout<<"|| 7=>读取信息 ||"<<endl;cout<<"|| 8=>统计信息 ||"<<endl;cout<<"|| 0=>退出 ||"<<endl;cout<<"|| ||"<<endl;cout<<">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"<<endl;cout<<"\n输入您操作的选项:";cin>>choice;switchchoice{case 1:;break;case 2:;break;case 3:;break;case 4:;break;case 5:;break;case 6:;break;case 7:;break;case 8:;break;case 0:cout<<"退出成功"<<endl;break;default:cout<<"无此选项请重试"<<endl;break;}}}void daMenu{da_Manage t;int choice;whilechoice=0{cout<<" 大学生\n"<<endl;cout<<"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<<endl;cout<<"|| ||"<<endl;cout<<"|| 1=>添加信息 ||"<<endl;cout<<"|| 2=>查找信息 ||"<<endl;cout<<"|| 3=>修改信息 ||"<<endl;cout<<"|| 4=>删除信息 ||"<<endl;cout<<"|| 5=>显示信息 ||"<<endl;cout<<"|| 6=>保存信息 ||"<<endl;cout<<"|| 7=>读取信息 ||"<<endl;cout<<"|| 8=>统计信息 ||"<<endl;cout<<"|| 0=>退出 ||"<<endl;cout<<"|| ||"<<endl;cout<<">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"<<endl;cout<<"\n输入您操作的选项:";cin>>choice;switchchoice{case 1:;break;case 2:;break;case 3:;break;case 4:;break;case 5:;break;case 6:;break;case 7:;break;case 8:;break;case 0:cout<<"退出成功"<<endl;break;default:cout<<"无此选项请重试"<<endl;break;}}}2、执行结果用户使用说明由于时间有点匆忙,故本程序未过多做人性化设计,请用户严格按照程序提示操作,并记得按回车键调试与测试首先,是对文件的处理不够熟练,通过看书和搜集一些资料解决了这个问题;其次,是在编写程序的过程中出现了一些语法错误,后通过调试逐一解决;总结与体会这两周的C++课程设计,时间上说长不长,说短也不短,却让我学到了很多,第一点就是:C++很难,似乎是学不完的,你觉得自己了解一点,是总会发现还有很多自己所不懂的东西,还。

VC 实训--学生信息管理系统(DOC)

VC  实训--学生信息管理系统(DOC)

信息科学与工程学院报告书专业:计算机科学与技术课程名称:《VC++实训》题目:学生信息管理系统班级:设计者:完成时间:总成绩教师签名学生信息管理系统一系统总体方案系统基本实现了对学生信息的查询,添加,修改,删除,保存功能。

二设计思路和主要步骤思路主要是设计一个单文档用来实现主界面,然后在菜单栏添加一个菜单项,下面包含录入学生基本信息,查询学生基本信息,和修改学生基本信息等多项子菜单,每项子菜单都对应一个对话框对数据进行处理。

在主对话框中添加列表控件用来显示学生的基本信息,以方便学生信息的修改,具体修改哪一项。

对于学生信息的录入,查询,修改,删除都用按钮控件,并为每个按钮添加消息响应函数用来处理学生的信息操作。

接下来就是要把学生的基本信息能够保存下来,因此要用到文件的操作,fstream可以满足要求。

综上所述,必须先掌握按钮控件,列表控件,新对话框的构建,编辑控件和消息的响应与处理原理!三各功能模块和流程图1.功能模块实现主界面对话框一对话框2对话框3四设计代码1.主体框架代码:int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){if (CFrameWnd::OnCreate(lpCreateStruct) == -1)return -1;if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY|CBRS_SIZE_DYNAMIC)||!m_wndToolBar.LoadToolBar(ID R_MAINFRAME)){TRACE0("Failed to create toolbar\n");return -1; // fail to create}If(!m_wndStatusBar.Create(this)||!m_wndStatusBar.SetIndicat ors(indicators,sizeof(indicators)/sizeof(UINT))){TRACE0("Failed to create status bar\n");return -1; // fail to createm_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_wndToolBar);return 0;}void CMainFrame::OnMenuitemadd(){CMyDlgAdd dlg1;dlg1.DoModal();}void CMainFrame::OnMenuitemmodify(){CMyDlgModify dlg2;dlg2.DoModal();}void CMainFrame::OnMenuitemseek(){CMyDlgSeek dlg3;dlg3.DoModal();}2.录入消息对话框的消息映射:HBRUSH CMyDlgAdd::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);if(nCtlColor == CTLCOLOR_BTN || nCtlColor == CTLCOLOR_STATIC){pDC->SetTextColor(RGB(0,0,255));pDC->SetBkMode(TRANSPARENT);}pDC->SetTextColor(RGB(0,0,255));pDC->SetBkMode(TRANSPARENT);return hbr;}void CMyDlgAdd::OnPaint()CPaintDC dc(this); // device context for paintingLOGFONT lf;memset(&lf,0,sizeof(LOGFONT));lf.lfHeight=28;lf.lfCharSet=GB2312_CHARSET;strcpy((LPSTR)&(lf.lfFaceName),"华文新魏");CFont cf;cf.CreateFontIndirect(&lf);m_Title.SetFont(&cf);}void CMyDlgAdd::OnOK(){UpdateData();struct Record *re=per;fstream file;CFile file1;file.open("record.txt",ios::in|ios::out|ios::app);int nIndex=m_Speciality.GetCurSel();int i=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO2);const int size=sizeof(struct Record);if((re)->id==0||(re)->name==0||re->speciality==0||re->grade==0||i==0 )MessageBox("输入不完整,不能提交!");else{strcpy((re)->id,m_Num);strcpy((re)->name,m_Name);CString str;int y,m,d;y=m_Birth.GetYear();m=m_Birth.GetMonth();d=m_Birth.GetDay();str.Format("%d-%d-%d",y,m,d);strcpy(re->date,str);if(i==IDC_RADIO1)strcpy(re->sex,"男");if(i==IDC_RADIO2)strcpy(re->sex,"女");if(nIndex==0)strcpy(re->speciality,"计算机");if(nIndex==1)strcpy(re->speciality,"数学");strcpy(re->grade,m_Grade);file<<re->id<<" "<<re->name<<" "<<re->sex<<" "<<re->speciality<<" "<<re->grade<<" "<<re->date<<endl;}file.close();CDialog::OnOK();MessageBox("添加成功!",MB_OK,MB_ICONASTERISK);}2.学生信息修改对话框消息映射:BOOL CMyDlgModify::OnInitDialog(){CDialog::OnInitDialog();UpdateData(false);const int nColumns=6;m_list1.InsertColumn(0,"学号");m_list1.InsertColumn(1,"姓名");m_list1.InsertColumn(2,"性别");m_list1.InsertColumn(3,"专业");m_list1.InsertColumn(4,"年级");m_list1.InsertColumn(5,"出生日期");CRect rect4;m_list1.GetClientRect(rect4);for(int i=0;i<nColumns;i++)m_list1.SetColumnWidth(i,rect4.Width()/nColumns);fstream file;struct Record per;memset(&per,0,sizeof(struct Record));file.open("record.txt",ios::in|ios::out);if(!file){MessageBox("Open error!");}for(int j=0;!file.eof();j++){file>>per.id>>>>per.sex>>per.speciality>>per.grade>>per.date;m_list1.InsertItem(j,per.id);m_list1.SetItemText(j,1,);m_list1.SetItemText(j,2,per.sex);m_list1.SetItemText(j,3,per.speciality);m_list1.SetItemText(j,4,per.grade);m_list1.SetItemText(j,5,per.date);strcpy(per.id,"");strcpy(,"");strcpy(per.sex,"");strcpy(per.speciality,"");strcpy(per.grade,"");strcpy(per.date,"");}file.close();ListView_SetExtendedListViewStyle(m_list1.m_hWnd,LVS_EX_FU LLROWSELECT|LVS_EX_GRIDLINES); //设置可以选整行return TRUE;}void CMyDlgModify::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult){UpdateData();struct Record per;memset(&per,0,sizeof(struct Record));CListCtrl* pListCtrl = (CListCtrl*) GetDlgItem(IDC_LIST1);ASSERT(pListCtrl != NULL);POSITION pos = m_list1.GetFirstSelectedItemPosition();if(pos!=NULL){nItem = m_list1.GetNextSelectedItem(pos);m_Id=m_list1.GetItemText(nItem,0);m_Name=m_list1.GetItemText(nItem,1);if(m_list1.GetItemText(nItem,2)=="男")CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1);elseCheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO2);m_Speciality=m_list1.GetItemText(nItem,3);m_Grade=m_list1.GetItemText(nItem,4);m_Date=m_list1.GetItemText(nItem,5);m_Num.Format("%d",nItem+1);UpdateData(false);}*pResult = 0;}void CMyDlgModify::OnOK(){if(IDNO == MessageBox("确定要修改吗?","提问",MB_YESNO|MB_ICONQUESTION)){return ;}UpdateData();fstream file1,file2;struct Record per;file1.open("record.txt",ios::in);file2.open("record1.txt",ios::out);if(!file1||!file2){MessageBox("Open error!");return ;}int n =0 , m = 0;while(!file1.eof()){n++ ;file1>>per.id>>>>per.sex>>per.speciality>>per.grade>>per.date;}n--; m = n ;file1.close();file1.open("record.txt",ios::in);int nIndex = m_list1.GetSelectionMark();char id[20]="0";strcpy(id,m_list1.GetItemText(nIndex,0));memset(&per,0,sizeof(struct Record));while(n){file1>>per.id>>>>per.sex>>per.speciality>>per.grade>>per .date;if(strcmp(per.id,id) != 0 ){file2<<per.id<<" "<<<<" "<<per.sex<<" "<<per.speciality<<" "<<per.grade<<" "<<per.date<<endl;}else //要修改的记录{strcpy(per.id,m_Id);strcpy(,m_Name);int i=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO2);if(i==IDC_RADIO1){strcpy(per.sex,"男");}if(i==IDC_RADIO2){strcpy(per.sex,"女");}strcpy(per.speciality,m_Speciality);strcpy(per.grade,m_Grade);strcpy(per.date,m_Date);file2<<per.id<<" "<<<<" "<<per.sex<<" "<<per.speciality<<" "<<per.grade<<" "<<per.date<<endl;}n--;}file1.close();file2.close();remove("record.txt");rename("record1.txt","record.txt");m_Num = "";m_Name = "";m_Speciality = "";m_Grade = "";UpdateData(FALSE);RefreshData(m);}void CMyDlgModify::RefreshData(int m ){struct Record per;fstream file;file.open("record.txt",ios::in);memset(&per,0,sizeof(struct Record));m_list1.DeleteAllItems();m_list1.SetRedraw(FALSE);int i = 0 ;while( i < m ){file>>per.id>>>>per.sex>>per.speciality>>per.grade>>per.date;m_list1.InsertItem(i,per.id);m_list1.SetItemText(i,1,);m_list1.SetItemText(i,2,per.sex);m_list1.SetItemText(i,3,per.speciality);m_list1.SetItemText(i,4,per.grade);m_list1.SetItemText(i,5,per.date);i++;}file.close();m_list1.SetRedraw(TRUE);}4.学生信息查找代码:void CMyDlgSeek::OnButton1(){UpdateData();fstream file1,file2;struct Record per;file1.open("record.txt",ios::in);file2.open("record1.txt",ios::out);if(!file1||!file2){MessageBox("Open error!");return ;}int n =0;while(!file1.eof()){n++ ;file1>>per.id>>>>per.sex>>per.speciality>>per.grade>> per.date;}n--;file1.close();file1.open("record.txt",ios::in);char id[20]="0";strcpy(id,m_Num);memset(&per,0,sizeof(struct Record));while(n){file1>>per.id>>>>per.sex>>per.speciality>>per.grade>>per. date;if(strcmp(per.id,id) != 0 ){file2<<per.id<<" "<<<<" "<<per.sex<<" "<<per.speciality<<" "<<per.grade<<" "<<per.date<<endl;}n--;}if(IDNO == MessageBox("确定要删除吗?","提问",MB_YESNO|MB_ICONQUESTION)){return ;}file1.close();file2.close();remove("record.txt");rename("record1.txt","record.txt");m_Num = "";m_Name = "";m_Speciality = "";m_Grade = "";m_Birth = "";UpdateData(FALSE);}void CMyDlgSeek::OnButton2(){CDialog::OnCancel();}void CMyDlgSeek::OnOK(){UpdateData();fstream file;file.open("record.txt",ios::in|ios::out);struct Record per;int flag;if(!file){MessageBox("Error!");return ;}flag=0;while(!file.eof()&&!flag){file>>per.id>>>>per.sex>>per.speciality>>per.grade>>per.date;if(m_Num==per.id){m_Name=;if(strcmp(per.sex,"男")==0)CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1);elseCheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO2);m_Speciality=per.speciality;m_Grade=per.grade;m_Birth=per.date;flag=1;}}if(flag==0)MessageBox("查无此人!");file.close();UpdateData(false);}五心得体会和参考资料工程中还存在很多不足,不是很完善。

c语言学生信息管理系统实训报告

c语言学生信息管理系统实训报告

c语言学生信息管理系统实训报告
C语言学生信息管理系统是以C语言为编程语言开发的数据管理系统,该系统基于数
据库技术,实现了人事档案管理、班级管理、成绩管理、考勤管理及学生信息管理等功能。

本次实训,我使用C语言编程,在Visual Studio2017环境下,实现了一种自定义的
学生信息管理系统。

该系统实现学生信息的查询、删除、添加及修改功能。

在项目的开发
过程中,我也使用了文件读取与保存、数据结构训练、数据处理等编程技术。

其中,采用
C语言处理文本文件,用链表结构组织数据,并实现增删改查等功能;使用链表结构处理学生信息,实现数据的添加、修改和删除等操作;使用文件读取及保存,在开发过程中
记录及复用学生信息,并按要求输出学生信息报表;使用数据结构进行数据处理,通过
数据的排序、查找等操作,实现提高学生管理的效率。

实训过程运用C语言基础知识和结构化编程思想,巩固了编写程序的知识和编程技术,让我更加深入地理解面向对象思想。

在实训过程中,我熟练掌握了if语句、while语句、switch语句等基础编程语句,加深了对编程概念的理解,同时也学会了在实际编程中如何把这些概念运用到编程中,从而熟练掌握C语言的编程技巧。

实训结束时,我认为自己在编程方面有了很大的进步,对C语言的编程也有了更深的
理解,同时自己也掌握了一套独立的编程思维,并能够利用面向对象思想,实现学生信息
管理系统客户端最新需求。

学生系统 c 实验报告

学生系统 c 实验报告

学生系统c 实验报告引言学生管理系统是一种用于管理学生信息的软件,它能够帮助学校、教育机构以及各类培训机构对学生的信息进行存储、查询和管理。

在本次实验中,我们使用C 语言设计并实现了一个简单的学生系统,通过该系统可以进行学生信息的新增、修改、查询和删除等操作。

设计思路在本次实验中,我们采用了模块化的设计思路,将学生系统分为学生信息管理模块、数据库模块和用户界面模块。

学生信息管理模块该模块用于处理学生信息相关的操作,包括增加学生信息、修改学生信息、查询学生信息和删除学生信息等功能。

为了方便之后的扩展性,我们将学生信息的数据结构定义为一个结构体,包括学生姓名、学号、性别和年龄等信息。

在学生信息管理模块中,我们通过链表的方式进行数据的存储和管理。

数据库模块数据库模块用于实现学生信息的持久化,将学生信息存储到磁盘文件中,以便之后的读取和修改操作。

在本次实验中,我们采用了文本文件的方式实现数据库模块,将学生信息保存为文本格式,并通过文件操作函数对数据进行读写。

用户界面模块用户界面模块用于实现与用户的交互,包括菜单显示、用户输入和信息输出等功能。

我们通过命令行界面的方式设计用户界面,用户可以通过输入对应的命令来操作学生信息。

实验结果经过实验的设计和编码,我们成功实现了一个简单的学生系统。

用户可以通过菜单选择不同的操作,进行学生信息的增删改查。

系统在运行时可以正常读取和保存学生信息,并且能够根据用户的选择执行相应的操作。

实验总结通过本次实验,我们深入理解了学生系统的设计思路和实现过程。

学会了如何使用C 语言进行模块化设计,分解问题并解决问题。

同时,我们也对文件操作和链表数据结构有了更深入的了解和掌握。

在实验过程中,我们也遇到了一些问题和挑战,比如对学生信息的输入和验证、文件读写的处理和用户界面的设计等。

通过不断的调试和优化,我们最终完成了系统的开发和测试。

通过本次实验,我们不仅提高了编程能力和解决问题的能力,还加深了对学生系统的理解和应用。

学生信息管理系统C语言报告

学生信息管理系统C语言报告

学生信息管理系统C语言报告简介学生信息管理系统是一种可以对学生信息进行管理的软件系统。

通过该系统,可以方便地添加、修改、查询和删除学生信息,提高学生信息管理的效率和准确性。

本报告将介绍学生信息管理系统的设计和实现过程,包括系统功能、技术选型和代码结构等方面。

通过该报告的阅读,读者可以了解到该系统的开发背景和主要功能,以及查看源代码和运行效果。

系统功能学生信息管理系统的主要功能如下:1. 添加学生信息:可以输入学生的姓名、年龄、性别、学号等基本信息,并保存到系统中。

2. 修改学生信息:可以根据学生的学号或姓名,修改学生的基本信息。

3. 查询学生信息:可以根据学生的学号、姓名、年龄、性别等条件,查询学生的基本信息。

4. 删除学生信息:可以根据学生的学号或姓名,将学生的基本信息从系统中删除。

技术选型为了实现学生信息管理系统的需求,我们选择使用C语言进行开发。

C语言是一种高效、可靠的编程语言,有着丰富的开发资源和庞大的用户群体。

在开发过程中,我们采用了以下技术选型:- 编程语言:C语言C语言作为一种结构化的编程语言,具有强大的计算能力和灵活的控制语句,非常适合开发类似学生信息管理系统这样的小规模应用。

代码结构学生信息管理系统的代码结构如下:cinclude <stdio.h>struct Student {char name[50];int age;char gender[10];int student_id;};void add_student(struct Student *students, int *count) {添加学生信息的代码逻辑}void modify_student(struct Student *students, int count) {修改学生信息的代码逻辑}void query_student(struct Student *students, int count) {查询学生信息的代码逻辑}void delete_student(struct Student *students, int *count) {删除学生信息的代码逻辑}int main() {struct Student students[100];int count = 0;主程序逻辑,包括用户界面等}在代码结构中,我们定义了一个`Student`结构体,用于存储学生的基本信息。

C语言上机实验报告--学生信息管理系统设计__内附源代码

C语言上机实验报告--学生信息管理系统设计__内附源代码

C语言上机实验报告------学生信息管理系统设计姓名:学号:班级:指导老师:学院:学校:C语言上机实验报告------学生信息管理系统设计一、实验题目学生信息管理系统设计学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 等。

试设计一学生信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)学生信息录入功能(学生信息用文件保存)---输入(3)学生信息浏览功能---输出(4)查询、排序功能---算法(5)按学号查询(6)按姓名查询(7)学生信息的删除与修改(可选项)二、本课程的地位、作用与目的为综合应用C语言程序设计理论知识、进一步提高学生综合解决问题、协调工作的能力和良好的软件开发习惯,特安排本实验内容。

希望通过该实习能够进一步激发学生的学习热情,培养学生初步编程的能力,为后续的学习和发展奠定基础。

三、分析过程1、能够实现对学生基本信息数据的增加和删除2、实现对录入保存后的学生基本信息进行格式化浏览3、提供学号和姓名两种方式对学生基本信息数据的查询4、能够对随机输入的学生基本信息数据按学号进行排序5、学生信息数据保存在文件中,方便数据的多次使用为了实现以上功能,必须设计的函数如下:录入函数、查询函数(分为姓名查询和学号查询)、删除函数、排序函数和几个菜单绘制函数等四、实验源代码:#include <stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#include<time.h>#define num 12//定义学生结构体typedef struct student{int id;char name[num];int age;char sex[4];struct birth{int year;int month;int day;}date;char add[30];int phone;}stu;//功能选择菜单void menu(){printf("\n");printf("\n");printf(" 学生信息管理系统\n");printf("\n");printf("********************************************************************* **\n");printf(" ==============1.学生信息录入 2.学生信息浏览===============\n");printf("\n");printf(" ==============3.学号查询信息 4.姓名查询信息===============\n");printf("\n");printf(" ==============5.按学号排序 6.删除学生信息===============\n");printf("\n");printf(" ============== 0.退出系统===============\n");printf("\n");printf("\n");printf("********************************************************************* *\n");printf("\n");printf(" 按编号选择对应功能\n");printf("\n");printf(" +++++++++++++++++++ XXXXXXX制作+++++++++++++++++++++\n");printf("\n");}//修改菜单void printmenu(){printf("********************************************************* **\n");printf("-------1.完全修改 2.学号修改---------");printf("-------3.姓名修改 4.性别修改---------");printf("-------5.生日修改 6.地址修改---------");printf("-------7.电话修改 0.退出修改---------");printf("********************************************************* **\n");}//取当前时间int nowtime(){struct tm *local;time_t t;t=time(NULL);local=localtime(&t);return local->tm_year+1900;//求出当前时间的年份}//输出文件中学生信息void print(char *file){stu temp;FILE *fp=fopen(file,"r");if(fp==NULL){printf("打开文件%s失败!\n",file);return;}printf("文件%s中学生信息如下:\n",file);printf("%8s%8s%6s%6s%8s%4s%4s%16s%12s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");fseek(fp,0,SEEK_SET);//从文件开始为之读取while(fread(&temp,sizeof(stu),1,fp))printf("%8d%8s%6d%6s%8d%4d%4d%16s%12d\n",temp.id,,temp.age,t emp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,temp.ph one);//格式化输出学生信息fclose(fp);//关闭文件}void luru(char *file){int count,sexnum,i=0,m;stu temp,temp1;FILE *fp=fopen(file,"a+");//追加方式打开文件if(fp==NULL){printf("打开文件%s失败!",file);return;}printf("请确定本次需要录入几名学生信息:");scanf("%d",&count);for (i=0;i<count ;i++ ){printf("录入要写入文件%s的第%d名学生信息\n",file,i+1); Repeat:printf("请输入学号:");m=scanf("%d",&temp.id);if (m==0){printf("输入的数据不是整型数据!\n");fflush(stdin);//清除缓存goto Repeat;}fseek(fp,0,SEEK_SET);//从文件开始位置读取while(fread(&temp1,sizeof(stu),1,fp)){if (temp1.id==temp.id)//判断学号是否已存在{printf("学号已存在!\n");goto Repeat;}//若学号已存在,返回继续读取学号}printf("请输入姓名:");scanf("%s",);printf("请输入性别:0为女生,1为男生:");{scanf("%d",&sexnum);if (sexnum==1) strcpy(temp.sex,"男");else strcpy(temp.sex,"女");}printf("请输入出生年月日:");scanf("%d%d%d",&temp.date.year,&temp.date.month,&temp.date.day);temp.age=nowtime()-temp.date.year;printf("请输入地址:");scanf("%s",&temp.add);printf("请输入联系电话11位:");scanf("%d",&temp.phone);if(!fwrite(&temp,sizeof(stu),1,fp)){printf("向文件%s写入信息失败!\n",file);return;}}printf("向文件%s写入信息成功!\n",file);fclose(fp);}int IsEmpty(FILE *fp){int len;fseek(fp,0,SEEK_END);//指针移动到文件尾len=ftell(fp);//取指针的文职获取长度return(len==0)?1:0;//0代表文件为空}void idsearch(char *file){int findid;stu temp;FILE *fp=fopen(file,"r");if (fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入信息!");return;}printf("输入要查找学生的学号:");scanf("%d",&findid);fseek(fp,0,SEEK_SET);while(fread(&temp,sizeof(stu),1,fp)){if(temp.id==findid){printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",temp.id,,temp.a ge,temp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,tem p.phone);//格式化输出学生信息return;}}printf("没有找到学号为%d的学生的信息!",findid);return;fclose(fp);}void namesearch(char *file){char name[num];stu temp;FILE *fp=fopen(file,"r");if (fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先输入学生信息!");return;}printf("输入要查找的学生的姓名:");scanf("%s",name);fseek(fp,0,SEEK_SET);while(fread(&temp,sizeof(stu),1,fp)){if (!strcmp(,name)){printf("下面是姓名为%s的学生的信息:\n",name);printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",temp.id,,temp.a ge,temp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,tem p.phone);//格式化输出学生信息return;}}printf("没有找到姓名为%s的学生的信息!",name);fclose(fp);}//排序函数void paixu(char *file){int i,j,k,len;stu s[num],temp;FILE *fp=fopen(file,"r");if(fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入信息!");return;}fseek(fp,0,SEEK_END);//指针移动到文件末尾len=ftell(fp)/sizeof(stu);fseek(fp,0,SEEK_SET);for(i=0;i<len;i++)fread(s+i,sizeof(stu),1,fp);fclose(fp);for(i=0;i<len;i++){k=i;for(j=i+1;j<len;j++){if(s[j].id<s[k].id)k=j;}if(k!=i){temp=s[i];s[i]=s[k];s[k]=temp;}}printf("下面是按学号从小到大顺序排序后的学生的信息:\n");printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");for(i=0;i<len;i++)printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",s[i].id,s[i].name,s[i].a ge,s[i].sex,s[i].date.year,s[i].date.month,s[i].date.day,s[i].add,s[i ].phone);//格式化输出学生信息remove("学生信息表.txt");//删除以前存放数据的文件fp=fopen(file,"w");for(i=0;i<len;i++)fwrite(s+i,sizeof(stu),1,fp);fclose(fp);}//删除函数void shanchu(char *file){int i=0,len,del;stu s[num];FILE *fp=fopen(file,"r");if(fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入学生信息!");return;}printf("输入需要删除的学生的学号:");scanf("%d",&del);fseek(fp,0,SEEK_SET);while(fread(s+i,sizeof(stu),1,fp)){if(s[i].id==del){printf("下面是按学号为%d的学生的信息:\n",del);printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",s[i].id,s[i].name,s[i].a ge,s[i].sex,s[i].date.year,s[i].date.month,s[i].date.day,s[i].add,s[i ].phone);//格式化输出学生信息i=i-1;}i++;}fclose(fp);len=i;fp=fopen(file,"w");fseek(fp,0,SEEK_SET);for(i=0;i<len;i++) //删除后重写文件fwrite(s+i,sizeof(stu),1,fp);fclose(fp);}void main(){int key;char file[]={"学生信息表.txt"};do{menu();printf("选择对应功能操作:");scanf("%d",&key);switch(key){case 1:luru(file);break;case 2:print(file);break;case 3:idsearch(file);break;case 4:namesearch(file);break;case 5:paixu(file);break;case 6:shanchu(file);break;case 0:exit(0);default:printf("选择错误,请重新选择!");}printf("\n");printf("按任意键返回上级菜单!");getch();fflush(stdin);system("cls");}while (key!=0);}五.实验过程及结果:1.程序主菜单运行界面2.学生信息录入运行界面3.学生信息浏览运行界面4.学生学号查询运行界面5.学生姓名查询运行界面6.按学号排序运行界面第一次出现乱码,改正后运行如第二张图片所示7.删除学生信息运行界面六、感想在本次实验的过程中,出现了各种各样的问题。

c语言大作业-基于数组的学生信息管理系统

c语言大作业-基于数组的学生信息管理系统

c语⾔⼤作业-基于数组的学⽣信息管理系统《C语⾔程序设计实训1》报告设计题⽬:基于数组的学⽣信息管理系统学院名称:科学技术学院专业:软件⼯程班级:108班姓名:⼤神学号594188 提交⽇期:2014年6⽉⼀、实验内容编写并调试程序,实现学校各专业班级学⽣信息的管理。

定义学⽣信息的结构体类型,包括:学号、姓名、专业、班级、3门成绩。

N定义为符号常量(学⽣数)。

全局类型的定义如下:⼆、实验要求(1)main函数:以菜单形式将各项功能提供给⽤户,根据⽤户的选择,调⽤相应的函数。

STU student[N]; //保存输⼊的N名学⽣信息(2)定义函数Input:从键盘输⼊N个学⽣的信息。

(3)定义函数Save:将学⽣信息存⼊⽂件。

(4)定义函数Output:将某个学⽣信息表格化屏幕输出。

(5)定义函数Fetch:从⽂件中随机读取第n个(0<=n<=N-1)学⽣的信息。

(6)定义函数Max:求所有学⽣某门课程的最⾼分和分数最⾼的学⽣的姓名。

(7)定义函数Sort_select:对所有学⽣,按平均成绩由低到⾼进⾏简单选择排序。

(8)定义函数Sort_buble:对某个班级的学⽣,按平均成绩由⾼到低进⾏起泡排序。

并调⽤Output输出。

定义局部变量:STU stu_class_ave[N]; //按平均成绩排序后的某个班级的学⽣信息;int count; //实际元素个数(9)定义函数Sort_insert:对某个专业的学⽣,按某门课程成绩由低到⾼进⾏直接插⼊排序。

并调⽤Output输出。

定义局部变量:(10)定义函数Search:实现班级和成绩的综合查找(如1班,总分240分以上同学)。

三、算法流程图函数Sort_select的算法流程图四、程序清单(关键语句和变量加注释)#include#include#include#define N 10//学⽣的总⼈数#define pri(p)printf("\n%d\t%s\t%8s\t%d\t%d\t%d\t%d\n",p->num,p->name,p->major,p->classNo, p->score[0],p->score[1],p->score[2]) struct Student{int num;//学号char name[15];//姓名char major[10];//专业(computer,software,network)int classNo;//班级(1-2)int score[3];//3门课的成绩(0-2)};typedef struct Student STU;//函数声明部分void Input(STU *p);void Output(STU *p);void Save(STU *p);int Fetch(STU *st,int n,char *filename);void Max(STU stu[],int m);double average_person(STU *p);void sort_select(STU *p);void Sort_Buble(STU *p);void Sort_insert(STU *p);void Ask();void Search(STU *p);void Load(STU *p);//主函数开始void main()int i,j,m,n;//控制循环的数字以及控制函数的数字char filename[10];//⽂件名称STU stu[N];//定义长度为N的STU型的数组STU *p;//定义STU型的指针p=stu;//让其指向stu的数组,⽅便以后⽤指针p对数组stu直接操作while(1){printf("\t\t*****欢迎使⽤学⽣信息管理系统*****\n");printf("\t\t**********************************\n");printf("\t1-输⼊学⽣信息;\n");printf("\t2-学⽣信息存盘;\n");printf("\t3-将某个学⽣信息表格化输出;\n");printf("\t4-从⽂件中随机读取第n个学⽣的信息;\n");printf("\t5-求所有学⽣某门课程的最⾼分和分数最⾼的学⽣的姓名;\n");printf("\t6-对所有的学⽣,按总平均成绩由低到⾼进⾏简单选择排序;\n"); printf("\t7-对某个班级的学⽣,按总平均成绩由⾼到低进⾏起泡排序;\n"); printf("\t8-对某个专业的学⽣,按某门课程成绩由低到⾼进⾏直接插⼊排序;\n"); printf("\t9-班级和成绩的综合查找;\n");printf("\t10-读取⽂件中的全部信息;\n");printf("\t其他-退出。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

高级程序设计项目训练报告指导教师:黄欢时间 2012 年 7 月 27 日专业年级: 姓名:学号:报告分程序功能:1) 学生基本信息录入功能2) 学生信息查询功能3)学生信息的删除学生信息包括:姓名、性别、学号、班级、出生年月、手机号码、已经获得学分等输入输出数据的说明:输入学生信息点击确定,在“学生信息查询”中输入姓名,就可以在“查询结果”中输出相应信息。

报告内容一、分析设计的是一个基于MFC对话框的C++应用程序,创建了一个主对话框,和一些必要的子对话框。

在主对话框中添加列表控件用来显示学生的基本信息。

主要用到了在MFC中运用编辑框的只是,还有插入位图。

二、操作运行后点击“学生信息录入”显示:输入相关信息在确定。

在选中信息点击删除,可进行删除操作。

点击“学生信息查询”显示:输入名字,若有信息储存,则在查询结果中显示,若无信息储存则显示:主代码:// zxyDlg.cpp : implementation file//#include "stdafx.h"#include "zxy.h"#include "zxyDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif//////////////////////////////////////////////////////////////////// /////////// CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog{public:CAboutDlg();// Dialog Data//{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support//}}AFX_VIRTUAL// Implementationprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)// No message handlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()//////////////////////////////////////////////////////////////////// /////////// CZxyDlg dialogCZxyDlg::CZxyDlg(CWnd* pParent /*=NULL*/): CDialog(CZxyDlg::IDD, pParent){//{{AFX_DATA_INIT(CZxyDlg)// NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CZxyDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CZxyDlg)DDX_Control(pDX, IDC_BUTTON3, m_button_change);DDX_Control(pDX, IDC_BUTTON2, m_button_del);DDX_Control(pDX, IDC_BUTTON1, m_button_enter);DDX_Control(pDX, IDC_LIST4, m_list_ctrl);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CZxyDlg, CDialog)//{{AFX_MSG_MAP(CZxyDlg)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)//}}AFX_MSG_MAPEND_MESSAGE_MAP()//////////////////////////////////////////////////////////////////// /////////// CZxyDlg message handlersBOOL CZxyDlg::OnInitDialog(){CDialog::OnInitDialog();// 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){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon// TODO: Add extra initialization herem_list_ctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);CRect rect;m_list_ctrl.GetClientRect(&rect);int nColInterval=rect.Width()/16;m_list_ctrl.InsertColumn(0,_T("学号"),LVCFMT_LEFT,nColInterval*3);m_list_ctrl.InsertColumn(1,_T("姓名"),LVCFMT_LEFT,nColInterval*2);m_list_ctrl.InsertColumn(2,_T("性别"),LVCFMT_CENTER,nColInterval*1+5);m_list_ctrl.InsertColumn(3,_T("班级"),LVCFMT_LEFT,nColInterval*2);m_list_ctrl.InsertColumn(4,_T("出生日期"),LVCFMT_LEFT,nColInterval*3);m_list_ctrl.InsertColumn(5,_T("电话号码"),LVCFMT_LEFT,nColInterval*3);m_list_ctrl.InsertColumn(6,_T("已获学分"),LVCFMT_LEFT,nColInterval*2);return TRUE; // return TRUE unless you set the focus to a control }void CZxyDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}// If you add a minimize button to your dialog, you will need the code below// to draw the icon. For MFC applications using the document/view model,// this is automatically done for you by the framework.void CZxyDlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // device context 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 + 1) / 2;// Draw the icondc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}}// The system calls this to obtain the cursor to display while the user drags// the minimized window.HCURSOR CZxyDlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}#include "MyDialog_enter.h"void CZxyDlg::OnButton1(){// TODO: Add your control notification handler code hereCMyDialog_enter *pwd=new CMyDialog_enter(this);pwd->Create(IDD_DIALOG1,this);pwd->ShowWindow(1);}#include "student.h"void CZxyDlg::List_Show(void){m_list_ctrl.DeleteAllItems();int nItem = m_list_ctrl.GetItemCount();for (int i=0;i<people[0].AllNumber||i==people[0].AllNumber;i++,nItem++) {m_list_ctrl.InsertItem(nItem, people[i].sno);m_list_ctrl.SetItemText(nItem, 1,people[i].sname);m_list_ctrl.SetItemText(nItem, 2,people[i].sex);m_list_ctrl.SetItemText(nItem, 3,people[i].inst);m_list_ctrl.SetItemText(nItem, 4,people[i].brondata);m_list_ctrl.SetItemText(nItem, 5,people[i].phone);m_list_ctrl.SetItemText(nItem, 6,people[i].grade);}}void CZxyDlg::OnButton2(){// TODO: Add your control notification handler code hereint nItem=m_list_ctrl.GetSelectionMark();//AfxMessageBox(people[nItem].sname,MB_OK);if (nItem==-1){AfxMessageBox("您未选择任何内容!",MB_OK);}else{if (AfxMessageBox("确认删除学生"+people[nItem].sname+"的信息?",MB_YESNO)==IDYES){for (;nItem<people[0].AllNumber;nItem++){people[nItem].All_Copy(people[nItem+1]);}people[0].AllNumber--;List_Show();}}}#include "MyDialog_2.h"void CZxyDlg::OnButton3(){// TODO: Add your control notification handler code hereCMyDialog_2 *pwnd=new CMyDialog_2(this);pwnd->Create(IDD_DIALOG2,this);pwnd->ShowWindow(1);}BOOL CZxyDlg::PreTranslateMessage(MSG* pMsg) //屏蔽回车和ESC按键{// TODO: 在此添加专用代码和/或调用基类{// 屏蔽回车和ESC 键// 屏蔽ESC 键退出if (pMsg->message == WM_KEYDOWN && pMsg->wParam == 0x1b)return TRUE;// 回车if (pMsg->message == WM_KEYDOWN && pMsg->wParam == 0x0d )return TRUE;}return CDialog::PreTranslateMessage(pMsg);}遇到的问题及解决方法(编译错误提示及如何解决)1、主要遇到了一些成员变量添加错误的问题,在通过Ctrl+W操作显示窗口中重新添加后得以改正,是缺少成员变量的问题。

相关文档
最新文档