MFC开发学生信息管理系统(详细)
学生成绩管理系统(详细操作过程)

学生成绩管理系统我将把我的实现步骤完整的写出来,我是在VC 6.0版本下用MFC实现的。
我创建的基于单文档的应用程序,过程不介绍,大家都会。
下面的是我系统菜单:思路:刚进入系统时,只有“登录”菜单可用,其他三个菜单项都是灰色不可用的。
当用户点“进入系统”菜单项时,用户输入用户名、密码和用户类型,系统将根据相应的用户权限使相应的菜单可用,并且“进入系统”菜单项变为不可用。
如:如果用户类型是学生,那么只有学生权限菜单可用,而“教师权限”和“管理员权限”都不可用,同时“进入系统”变为不可用。
“学生权限”下只有“查询成绩”,因为学生只可以查询自己相应的成绩;“教师权限”下有“查询学生成绩”和“增改删学生成绩”两个菜单项,因为教师除了可以查询学生成绩还可以增加、修改和删除学生成绩;“管理员权限”下有“管理学生”和“管理教师”两个菜单项。
整体设计:因为我们要设置系统菜单的状态,所以必须在CMainFrame中添加相应的函数和代码,具体步骤如下:【步骤1】由于系统要使用ODBC类操作数据库,所以需要在stdafx.h中加入代码:#include <afxdb.h>【步骤2】在CMainFrame中的OnCreat()中添加代码如下,实现菜单的初始化工作,当用户没进入系统之前,只有“登陆”菜单下的“进入系统”菜单项可用,而“退出系统”和其他3个权限菜单都不可用,即都是灰色的。
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){//使“退出系统”和其他3个权限菜单都不可用,即都是灰色的GetMenu()->GetSubMenu(0)-> EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);GetMenu()-> EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);GetMenu()-> EnableMenuItem(2,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);GetMenu()-> EnableMenuItem(3,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);}【步骤3】在CMainFrame中添加自己定义的函数void SetMenuSta(int type),此函数在登陆对话框的OnOK()中被调用,即当用户进入系统后使“进入系统”菜单项不可用,并根据用户类型使相应菜单可用。
学生信息管理系统(控制台)

1.运行截图:注: 1.按c++,数学,英语依次排序;2.多出信息为文件原有信息。
2.源代码(所有代码均在.cpp文件中,所以有点乱; 另:在vs2013下编译通过,在vc6.0下需要将strcpy_s改为strcpy,某处的循环变量i 会出现错误,改为j 即可;文件需事先创建)#include<iostream>#include<string.h>#include<fstream>#include<iomanip>using namespace std;//------------------------------------------------------------////------------------------类----------------------------------////------------------------------------------------------------//////------------------------成绩类------------------------------//class CGrade{public:CGrade(){}CGrade(float fCpp, float fMath, float fEnglish);~CGrade();void setCpp(float fCpp);void setMath(float fMath);void setEnglish(float fEnglish);float getCpp();float getMath();float getEnglish();private:float fCpp, fMath, fEnglish;};//------------------SET方法------------------------------//void CGrade::setCpp(float fCpp){this->fCpp = fCpp;}void CGrade::setMath(float fMath){this->fMath = fMath;}void CGrade::setEnglish(float fEnglish){this->fEnglish = fEnglish;}//---------------------GET方法--------------------------//float CGrade::getCpp(){return this->fCpp;};float CGrade::getMath(){return this->fMath;};float CGrade::getEnglish(){return this->fEnglish;};//-------------------------------------------------------CGrade::CGrade(float fCpp, float fMath, float fEnglish){this->fCpp = fCpp;this->fMath = fMath;this->fEnglish = fEnglish;};CGrade::~CGrade(){};////-------------------------------学生类---------------------------------------// class CStudent{public:CStudent(){}CStudent(char sName[30],int nAge,char cSex,float fCpp,float fMath,float fEnglish);~CStudent();void setStudent(char sName[30], int nAge, char cSex, float fCpp, float fMath, float fEnglish);void showStudent();char* getStudentName();float getStudentCppGrade();float getStudentMathGrade();float getStudentEnglishGrade();private:char sName[30];char cSex;int nAge;CGrade Grade;};//---------------------------------------------------------------------------------------------------------void CStudent::setStudent(char sName[30], int nAge, char cSex, float fCpp, float fMath, float fEnglish){strcpy_s(this->sName, sName);this->nAge = nAge;this->cSex = cSex;Grade.setCpp(fCpp);Grade.setMath(fMath);Grade.setEnglish(fEnglish);};//----------------------------------------------------------------------------------------------------------float CStudent::getStudentCppGrade(){return Grade.getCpp();};float CStudent::getStudentMathGrade(){return Grade.getMath();};float CStudent::getStudentEnglishGrade(){return Grade.getEnglish();};//-----------------------------------------------------------------------------------------------------------CStudent::CStudent(char sName[30], int nAge, char cSex, float fCpp, float fMath, float fEnglish) :Grade(fCpp,fMath,fEnglish){strcpy_s(this->sName, sName);this->nAge = nAge;this->cSex = cSex;};void CStudent::showStudent(){cout << setw(10) << setiosflags(ios::left) << sName << setw(5) << setiosflags(ios::left) << nAge << setw(5) << setiosflags(ios::left) << cSex;cout << setw(5) << setiosflags(ios::left) << Grade.getCpp()<< setw(5) <<setiosflags(ios::left) << Grade.getMath() << setw(5) << setiosflags(ios::left) << Grade.getEnglish() << endl;}char* CStudent::getStudentName(){return sName;}CStudent::~CStudent(){};/////////////////////////////////////////////////////////////////////////////////-------------------------------函数----------------------------------------/////////////////////////////////////////////////////////////////////////////////////-----------------------------输入函数--------------------------------------//void Grade_input(int n, CStudent *student){float fCpp, fMath, fEnglish;char cSex;int nAge;student = new CStudent[n];cout << "请输入学生的基本信息,包括:姓名,年龄,性别(M/F),C++、数学、英语成绩"<< endl;for (int i = 0; i < n; i++){char sName[30] = { "\0" };cin >> sName >> nAge >> cSex >> fCpp >> fMath >> fEnglish;if (nAge >= 200 || nAge <= 0 || (cSex != 'm'&&cSex != 'M'&&cSex != 'f'&&cSex != 'F') || (fCpp>100 || fCpp <= 0 || fMath > 100 || fMath <= 0 || fEnglish > 100 || fEnglish <= 0))cout << "输入错误,请重新输入:" << endl;i--;continue;}student[i].setStudent(sName,nAge,cSex,fCpp,fMath,fEnglish);}ofstream Studentfile("F://student.dat",ios::in|ios::out|ios::ate|ios::binary);if (Studentfile.is_open()){for (int i = 0; i < n; i++){Studentfile.write((char*)&student[i], sizeof(student[i]));}}delete[] student;};//-------------------------重载函数:查找---------------------------------//bool Find(char* arr_1,char* arr_2){return !strcmp(arr_1,arr_2);};bool Find(float a, float b){if (a == b) return true;else return false;return false;};//--------------------------模板函数comp----------------------------------// template<class T>int comp(T a, T b){if (a > b) return 1;else if (a == b) return 0;else return -1;};//---------------------------Swap-----------------------------------//template <class T>void Swap(T &a,T &b){T temp;temp = a;b = temp;}//---------------------------排序函数(交换排序)-------------------------------//void Sort(CStudent* student,int n){for (int i = 0; i < n-1; i++){for (int j = i + 1; j < n; j++){if (comp(student[i].getStudentCppGrade(), student[j].getStudentCppGrade()) == -1)Swap(student[i], student[j]);else if (comp(student[i].getStudentCppGrade(),student[j].getStudentCppGrade()) == 0){if (comp(student[i].getStudentMathGrade(),student[j].getStudentMathGrade()) == -1)Swap(student[i], student[j]);else if (comp(student[i].getStudentMathGrade(),student[j].getStudentMathGrade()) == 0){if (comp(student[i].getStudentEnglishGrade(),student[j].getStudentEnglishGrade()) == -1)Swap(student[i], student[j]);}}}}};//-------------------------------获取人数---------------------------------//int getStudentNumber(){fstream Studentflie("F://student.dat", ios::in | ios::out | ios::binary);Studentflie.seekg(0, ios::end); //设置文件指针到文件流的尾部int ps = Studentflie.tellg(); //读取文件指针的位置return ps / sizeof(CStudent);}//////////////////////////////////////////////////////////////////////////////-------------------------------主函数-----------------------------------//////////////////////////////////////////////////////////////////////////////int main(){CStudent *student = NULL;int n=0,sum=getStudentNumber();char judge;fstream Studentflie("F://student.dat", ios::in | ios::out | ios::binary); fstream studentfile("F://sortst.dat", ios::out | ios::in |ios::binary); cout << "是否添加信息?Y/N" << endl;cin >> judge;if (judge == 'Y' || judge == 'y'){cout << "输入学生数目:";cin >> n;Grade_input(n, student);}n += sum;student = new CStudent[n];if (studentfile.is_open()){for (int i = 0; i < n; i++){Studentflie.read((char*)&student[i], sizeof(student[i]));}Sort(student,n);cout << "排序如下:" << endl;for (int i = 0; i < n; i++){studentfile.write((char*)&student[i], sizeof(student[i]));student[i].showStudent();}}else{cout << "文件打开失败!" << endl;abort();}if (Studentflie.is_open()){for (int i=0;;i++){int Way=0,Err=0;float grade;char Judge;char Name[30] = { "\0" };//if (i != 0){cout << "是否继续查找:Y/N" << endl;cin >> Judge;if (Judge == 'N' || Judge == 'n'){break;}}//cout << "输入查询方式:" << endl;cout << "1.按姓名查找;" << endl;cout << "2.按成绩查找." << endl;cout << "输入:1/2:";cin >> Way;if (Way > 2 || Way < 0){cout << "输入错误,请重新输入!" << endl;continue;}if (Way == 1){cout << "输入姓名:";cin >> Name;for (int i = 0; i < n; i++){Studentflie.read((char*)&student[i], sizeof(student[i]));if (Find(Name, student[i].getStudentName())){Err = 1;student[i].showStudent();}}}else if (Way==2){int way=0;cout << "输入查询科目:" << endl;cout << "1.C++;" << endl;cout << "2.数学;" << endl;cout << "3.英语;" << endl;cout << "4.不限科目." << endl;cout << "输入:1/2/3/4:";cin >> way;if (way>4||way<0){cout << "输入错误,请重新输入!" << endl;continue;}cout << "输入成绩:";cin >> grade;if (way == 1){for (int i = 0; i < n; i++){Studentflie.read((char*)&student[i], sizeof(student[i]));if (Find(grade, student[i].getStudentCppGrade())){Err = 1;student[i].showStudent();}}}else if (way == 2){for (int i = 0; i < n; i++){Studentflie.read((char*)&student[i], sizeof(student[i]));if (Find(grade, student[i].getStudentMathGrade())){Err = 1;student[i].showStudent();}}}else if (way == 3){for (int i = 0; i < n; i++){Studentflie.read((char*)&student[i], sizeof(student[i]));if (Find(grade, student[i].getStudentEnglishGrade())){Err = 1;student[i].showStudent();}}}else if (way==4){for (int i = 0; i < n; i++){Studentflie.read((char*)&student[i], sizeof(student[i]));if (Find(grade, student[i].getStudentCppGrade())){Err = 1;student[i].showStudent();}else if ( Find(grade, student[i].getStudentMathGrade()) ){Err = 1;student[i].showStudent();}else if ( Find(grade, student[i].getStudentEnglishGrade())){Err = 1;student[i].showStudent();}}}}if (Err != 1) cout << "没有找到对应项!" << endl;}}else{cout << "文件打开失败!" << endl;abort();}Studentflie.close();studentfile.close();delete[] student;return 0;}。
学生管理系统c语言简单版

学生管理系统c语言简单版学生管理系统c语言简单版介绍:学生管理系统是一种用于管理学生信息的软件,它可以方便地对学生的基本信息、课程成绩等进行录入、查询、修改和删除等操作。
本文将介绍如何使用C语言编写一个简单的学生管理系统。
功能:1. 添加学生信息2. 查询学生信息3. 修改学生信息4. 删除学生信息5. 显示所有学生信息实现方法:1. 添加学生信息添加学生信息需要输入以下内容:姓名、性别、年龄、班级和电话号码。
我们可以定义一个结构体来存储这些信息,代码如下:```struct Student {char name[20];char sex[10];int age;char class[20];char phone[20];};```然后定义一个数组来存储多个学生的信息:```struct Student students[100];int count = 0; // 学生数量```接下来,我们可以编写一个函数来添加新的学生信息:```void addStudent() {struct Student student;printf("请输入姓名:");scanf("%s", );printf("请输入性别:");scanf("%s", student.sex);printf("请输入年龄:");scanf("%d", &student.age);printf("请输入班级:");scanf("%s", student.class);printf("请输入电话号码:");scanf("%s", student.phone);students[count++] = student; // 将新的学生信息存储到数组中 printf("添加成功!\n");}```2. 查询学生信息查询学生信息可以按照姓名或电话号码进行查询。
用C语言编写的一个学生信息管理系统

用C语言实现线性表的基本操作,能创建一个基于学生信息管理的链表,至少包含数据输入、数据输出、数据处理等操作。
在主函数里能实现以下功能。
运行后出现一个选择提示。
可选择的功能有1)创建新的学生信息链表2)增加一个新的学生信息3)按学号删除某个学生信息4)按学号查找某个学生信息5)可以按照学生成绩对链表排序6)退出系统#include "stdio.h"#include "stdlib.h"#include "string.h"#include "conio.h"jiemian();struct student{char name[50];char sex[5];int age;char num[50];float score1;float score2;float score3;float sum;float ave;}stu[50],del;void gn1(){int i=0;char num1;for(i=0;i<50;i++){printf("请输入要添加的学生资料:\n");printf("学号:");scanf("%s",stu[i].num);printf("姓名:");scanf("%s",stu[i].name);printf("性别:");scanf("%s",&stu[i].sex);printf("年龄:");scanf("%d",&stu[i].age);printf("请输入学生的三门成绩:\n");printf("语文:");scanf("%f",&stu[i].score1);printf("数学:");scanf("%f",&stu[i].score2);printf("英语:");scanf("%f",&stu[i].score3);printf("是否继续添加:y/n\n");scanf("%c",&num1);scanf("%c",&num1);if(num1=='N' || num1=='n'){system("cls");jiemian();}}}void gn2(){int i;char num[50];printf("请输入要查找的学生学号:\n");scanf("%s",num);for(i=0;i<50;i++)if(strcmp(stu[i].num,num)==0){stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i] .age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);break;}if(i==50)printf("查找不到!请重新输入!\n");getch();system("cls");jiemian();}void gn3(){char num1,i=0;printf("请输入要修改的学生学号:\n");scanf("%s",stu[i].num);printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i] .age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);printf("姓名:");scanf("%s",stu[i].name);printf("性别:");scanf("%s",stu[i].sex);printf("年龄:");scanf("%d",&stu[i].age);printf("请输入学生的三门成绩:\n");printf("语文:");scanf("%f",&stu[i].score1);printf("数学:");scanf("%f",&stu[i].score2);printf("英语:");scanf("%f",&stu[i].score3);printf("是否继续修改:y/n?\n");scanf("%c",&num1);scanf("%c",&num1);if(num1=='N' || num1=='n')system("cls");jiemian();}void gn4(){int i;char num[50];printf("请输入要删除的学生学号:\n");scanf("%s",num);for(i=0;i<50;i++)if(strcmp(num,stu[i].num)==0){printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i] .age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);stu[i]=del;printf("信息已删除,按任意键返回..\n");break;}if(i==50)printf("您输入的信息不存在!\n");getch();system("cls");jiemian();}void gn5(){int i=0;stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;printf("学号\t姓名\t性别\t年龄\t语文\t数学\t英语\t总成绩\t 平均成绩\n"); for(i=0;i<50;i++){if(stu[i].age==0)break;printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i] .age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);}printf("按任意键返回...");getch();system("cls");jiemian();}void gn6(){FILE *fp;int i;char filename[50];printf("\n");printf("\n");printf("请输入要保存的文件名:");scanf("%s",filename);if((fp=fopen(filename,"wb"))==NULL)printf("文件名为空,不能保存!\n");for(i=0;i<50;i++){if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)printf("文件保存失败!\n");}fclose(fp);printf("文件已保存!\n");printf("按任意键返回...\n");getch();system("cls");jiemian();}void gn7(){FILE *fp;int i=0; //打开文件流char filename[50];printf("请输入文件名:");scanf("%s",filename); //输入要载入的文件名if((fp=fopen(filename,"rb"))==0) //如果当前目录下不存在相对应的文件,输出文件不存在,退出系统。
综合应用案例—学生信息管理系统(C语言)

14.3综合应用案例—学生信息管理系统作为学生,同学们最熟悉自己的相关信息了,如果能够设计一个学生信息管理系统,实现全班乃至全校学生信息的管理系统,是非常有实际意义的。
同时,开发一个小型的信息管理系统,综合应用我们之前学习的基本语法知识和程序设计方法,将是一个提升和锻炼实践能力的好机会。
1. 主要功能设计与开发一个学生信息管理系统,对学生的学号、姓名、性别、年龄等基本信息进行管理,实现基本的增、删、改、查等功能。
2. 功能模块设计通过需求分析,按照结构化程序设计自顶向下,逐步细化的方法,以模块化设计为中心的原则,学生信息管理系统应该具有基本的文件管理、编辑、显示三个功能模块。
文件管理模块包括:加载文件、保存文件、拷贝到目标文件、退出系统;编辑模块包括:输入记录、查找记录、修改记录、删除记录、插入记录、记录排序; 显示模块包括:显示全部记录、按序号显示记录。
系统的功能划分如图14.12所示:学生基本信息管理系统输入学生记录浏览学生记录按姓名查找按姓名删除按学号修改插入学生记录保存文件加载文件按序号浏览按姓名排序拷贝文件文件管理模块编辑模块显示模块退出系统图14.12 系统功能模块图3. 数据结构设计为了实现学生信息的管理,系统中采用的主要数据结构是结构体数组,为了方便系统功能扩展及编码方便,使用了#define 定义结构体数组上限,并使用typedef 定义结构体类型别名。
#define M 50 typedef struct{char no[20];char name[20];char sex[5];int age;}STUDENTS;STUDENTS stu[M];4. 函数及调用关系函数是模块化的主要手段,系统的各个主要功能都设计成函数,通过各个函数相互调用,并最终由主函数main调用组装成整个软件系统。
学生信息管理系统由1个.h头文件和2个.c 源文件组成。
程序中除了主函数外,共设计了以下15个函数,以下是这些函数的函数原型及功能设计。
学生信息管理系统c语言版源代码

学生信息管理系统c语言版源代码#include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> #define N 1000typedef struct student {int number;char name[20];int grade;int gaoshu;int yingyu;int jisuanji;int sum;}STUDENT;STUDENT student[N]; int shuliang=0;void menu();void fhzjm(){char biaozhi[20];printf("\n");printf("还需要操作么,如果需要操作请输入:yes,否则请输入:no\n");scanf("%s",biaozhi);if(strcmp(biaozhi,"yes")==0){menu();}else if(strcmp(biaozhi,"no")==0)exit(0);else{printf("请输入正确的字符,谢谢~\n"); fhzjm();}}void DengJi(){int rs;int i,k=1;system("CLS");printf("请输入需要输入几个学生信息:"); scanf("%d",&rs);for(i=shuliang;i<shuliang+rs;i++,k++) {printf("请输入第%d个学生的学号:",k); scanf("%d",&student[i].number);printf("请输入学生的姓名:");scanf("%s",student[i].name);printf("请输入学生3门课的成绩:"); printf("请输入第1门课的成绩:");scanf("%d",&student[i].gaoshu);printf("请输入第2门课的成绩:");scanf("%d",&student[i].yingyu);printf("请输入第3门课的成绩:");scanf("%d",&student[i].jisuanji);}shuliang=shuliang+rs;fhzjm();}void ShanChu(){char shanchuinfo[10];system("CLS");printf("删除全部学生信息请输入\"all\",删除指定学号的学生信息请输入\"one\"\n");scanf("%s",shanchuinfo);if(strcmp(shanchuinfo,"all")==0){int j;printf("你删除的学生信息如下:\n");printf("-----------学号-------------姓名-------------高数--------------英语--------------计算机\t\n");for(j=0;j<shuliang;j++)printf("----%d-------%s-------%d-------%d-------%d\t\n",student[j].number,student[j].name,student[j].gaoshu,student[j].jisuanji);shuliang=0;printf("删除成功\n\n");}else if(strcmp(shanchuinfo,"one")==0){struct student *p=NULL;int choice;int i,j,k=0;printf("请输入你要删除的人的学号:");scanf("%d",&choice);for(i=0;i<shuliang;i++){if(choice==student[i].number){k=1;j=i;break;}}if(k){if(shuliang==1){p=&student[0];free(p);shuliang=0;}else{for(i=j;i<shuliang;i++) {student[i]=student[i+1];}shuliang=shuliang-1;}printf("删除成功\n\n");}else{printf("输入数据错误~\n"); }}fhzjm();}void LiuLan(){int i;system("CLS");if(shuliang==0){printf("系统里面没有任何学生的信息~\n");}else{for(i=0;i<shuliang;i++){printf("第%d个学生的学号为:%d\n",i+1,student[i].number);printf("第%d个学生的姓名为:%s\n",i+1,student[i].name);printf("第%d个学生的第一门课的成绩为:%d\n",i+1,student[i].gaoshu);printf("第%d个学生的第二门课的成绩为:%d\n",i+1,student[i].yingyu);printf("第%d个学生的第三门课的成绩为:%d\n",i+1,student[i].jisuanji);student[i].sum=student[i].gaoshu+student[i].yingyu+student[i].jisuan ji;printf("第%d个学生的总成绩为:%d\n",i+1,student[i].sum);}}fhzjm();}void ChaZhao(){int xx;char choice,yy[20];int i,j,k=0;system("CLS");if(shuliang==0){printf("系统里面没有任何学生的信息~\n");fhzjm();}printf("三种查找方式:学号,姓名,成绩\n");printf("如果按学号查找请输1,如果按姓名查找请输2,如果按成绩查找请输3\n");printf("请输入您查找的方式:");scanf("%s",&choice);if(choice=='1'){printf("请输入需要查找学生的学号:");scanf("%d",&xx);printf("您所查找的学生的信息为:\n");printf("----学号----姓名----高数成绩----英语成绩----计算机成绩----\t\n");for(i=0;i<shuliang;i++){if(xx==student[i].number){j=i;k=1;printf("----%d-------%s-------%d-------%d-------%d----\t\n",student[j].number,student[j].name,student[j].gaoshu,student[j].yingyu,student[i].jis uanji);}}if(k==0)printf("输入信息有误:\n");}else if(choice=='2'){printf("请输入需要查找学生的姓名:\n");scanf("%s",yy);printf("您所查找的学生的信息为:\n");printf("----学号----姓名----高数成绩----英语成绩----计算机成绩----\t\n");for(i=0;i<shuliang;i++){if(strcmp(yy,student[i].name)==0){j=i;k=1;printf("----%d-------%s-------%d-------%d-------%d----\t\n",student[j].number,student[j].name,student[j].gaoshu,student[j].yingyu,student[j].jis uanji);}}if(k==0)printf("输入信息有误:\n");}else if(choice=='3'){printf("请输入需要查找学生的成绩:\n");scanf("%d",&xx);printf("您所查找的学生的信息为:\n");printf("----学号----姓名----高数----英语----计算机----\t\n");for(i=0;i<shuliang;i++){if(xx==student[i].grade){j=i;k=1;printf("----%d-------%s-------%d-------%d-------%d----\t\n",student[j].number,student[j].name,student[j].gaoshu,student[j].yingyu,student[i].jis uanji);}}if(k==0)printf("输入信息有误:\n");}fhzjm();}void PaiXu(){struct student *p1[N],**p2,*temp;int i,j;system("CLS");p2=p1;for( i=0;i<shuliang;i++){p1[i]=student+i;}for( i=0;i<shuliang;i++){for( j=i+1;j<shuliang;j++){if((*(p2+i))->sum<(*(p2+j))->sum){temp=*(p2+i);*(p2+i)=*(p2+j);*(p2+j)=temp;} }}printf("按照总成绩排序之后的信息为:\n");printf("----学号----姓名----总成绩----\t\n");for( i=0;i<shuliang;i++){student[i].sum=student[i].gaoshu+student[i].yingyu+student[i].jisuan ji;printf("----%d-----%s----%d-----\n",(*(p2+i))->number,(*(p2+i))->name,(*(p2+i))->sum);}fhzjm();}void CunChu(){int i;FILE *rs;if((rs=fopen("student.txt","w"))==NULL){printf("not open");exit(0);}for(i=0;i<shuliang;i++){fwrite(&student[i], sizeof(student[i]), 1, rs); }if(ferror(rs)){fclose(rs);perror("写文件失败~\n");return;}printf("存储文件成功~\n");fclose(rs);fhzjm();}void DaoChu(){struct student t;int i=0;FILE* fp = fopen("student.txt", "r");shuliang=0;if(NULL==fp){perror("读取文件打开失败~\n");return;}memset(student,0x0,sizeof(student));while(1){fread(&t,sizeof(t),1,fp);if(ferror(fp)){fclose(fp);perror("读文件过程失败~\n");return;}if(feof(fp)){break;}student[i]=t;i++;}fclose(fp);shuliang=i; printf("导出文件成功~\n"); fhzjm();}void menu(){int n=0;system("CLS");printf(" 学生信息管理系统\n");printf(" 作者:陈椿\n");printf("-------------------MENU-----------------\n"); printf(" 1.登记学生信息\n");printf(" 2.删除学生信息\n");printf(" 3.浏览所有已经登记的学生\n");printf(" 4.查找\n");printf(" 4.1按学号查找\n");printf(" 4.2按姓名查找\n");printf(" 4.3按成绩查找\n");printf(" 5.根据总成绩排序\n");printf(" 6.存储到文件\n");printf(" 7.从文件导出\n");printf(" 8.退出系统\n");a: printf(" 请选择:");scanf("%d",&n);switch (n){case 1:DengJi();break;case 2:ShanChu();break;case 3:LiuLan();break;case 4:ChaZhao();break;case 5:PaiXu();break;case 6:CunChu();break;case 7:DaoChu();break;case 8:exit(0);break;default:{printf("请输入1-8之间的数字,谢谢~\n"); goto a;}}}main() {menu();}。
学生管理系统c语言源代码

学生管理系统c语言源代码学生管理系统c语言源代码#include stdio.h#include dos.h#include string.h#include stdlib.h#include malloc.h#define SIZE 8struct student{char name;char num;int score;float ave;struct student *next;}stu[SIZE],temp,s;void shuru(){int i,j,sum,length,flag=1,a;FILE *fp;while(flag==1){printf(“Define a rangeclass number:");scanf("%d",printf("Input the total number of the class(a):"); scanf("%d",length);if(lengtha)flag=0;}for(i=0;ilength;i++){printf("\n请输入学生的信息:");printf("\n输入姓名:");scanf("%s",stu[i].name);printf("\n输入序号.:");scanf("%s",stu[i].num);printf("\n输入成绩:\n");sum=0;for(j=0;jj++){printf("score %d:",j+1);scanf("%d",stu[i].score[j]);sum+=stu[i].score[j];}stu[i].ave=sum/3.0;}学生管理系统c语言源代码fp=fopen("stu1.txt","w");for(i=0;ilength;i++)if(fwrite(stu[i],sizeof(struct student),1,fp)!=1)printf("File write error\n");fclose(fp);fp=fopen("stu1.txt","r");printf("\name\ NO. score1 score2 score3 sum ave\n");for(i=0;ilength;i++){fread(stu[i],sizeof(struct student),1,fp);printf("%3s%5s%7d%7d%7d%7d%10.2f\n",stu[i].name,stu[i].num,stu[i ].score,stu[i].score,stu[i].score,sum=stu[i].score+stu[i].score+stu[i].score,stu[i].ave);}}void chaxun(){ FILE *fp, *fp1;char n,name;int i,j,k,t,m,flag=1;if((fp=fopen("stu1.txt","r"))==NULL){printf("Can not open the file.");exit(0);}printf("\noriginal data:\n");k=i;printf("\nPlease select the menu(1.number ):"); scanf("%d",switch(m){case 1:printf("\nchaxun number:");scanf("%s",n);for(flag=1,i=0;ii++){if(strcmp(n,stu[i].num)==0){j=i;flag=0;break;}}break;case 2:printf("\nchaxun name:");scanf("%s",name);for(flag=1,i=0;ii++){if(strcmp(name,stu[i].name)==0){j=i;flag=0;break;学生管理系统c语言源代码}}}if(!flag){printf("\nYou can find:\n");fp1=fopen("stu2.txt","w");printf(" name NO. score1 score2 score3ave\n");fwrite(stu[j],sizeof(struct student),1,fp1);printf("%-15s%11s%7d%7d%7d%10.2f",stu[j].name,stu[j].num,stu[j].score,stu[j].score,stu[j].score,stu[j].ave);}else printf("\nNot found!");fclose(fp);fclose(fp1);}xiugai(){ int a;printf("\nplease select the menu(1.CHARU 2.__ ):");scanf("%d",switch(a){case 1:Insert(); break;case 2:Delete(); break;}}Insert(){ FILE *fp;int i,j,t,n;printf("\nNO.:");scanf("%s",s.num);printf("name:");scanf("%s",);printf("score1,score2,score3:");scanf("%d,%d,%d",s.score,s.score,s.score);s.ave=(s.score+s.score+s.score)/3.0;if((fp=fopen("stu1.txt","r"))==NULL){printf("Can not open the file.");exit(0);}printf("\noriginal data:\n");for(i=0;fread(stu[i],sizeof(struct student),1,fp)!=0;i++) {printf("\n%-15s%11s",stu[i].name,stu[i].num);for(j=0;jj++)学生管理系统c语言源代码printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fclose(fp);n=i;for(t=0;stu[t].aves.avett++);printf("\nnow:\n");fp=fopen("stu1.txt","w");for(i=0;ii++){fwrite(stu[i],sizeof(struct student),1,fp);printf("\n%-15s%11s",stu[i].name,stu[i].num);for(j=0;jj++)printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fwrite(s,sizeof(struct student),1,fp);printf("\n%-15s%11s%7d%7d%7d%10.2f",,s.num,s.score,s.score, s.score,s.ave);for(i=t;ii++){fwrite(stu[i],sizeof(struct student),1,fp);printf("\n%-15s%11s",stu[i].name,stu[i].num);for(j=0;jj++)printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fclose(fp);}Delete(){ FILE *fp;int i,j,t,n,flag;char number;if((fp=fopen("stu1.txt","rb"))==NULL){printf("Can not open the file.");exit(0);}printf("\noriginal data:");for(i=0;fread(stu[i],sizeof(struct student),1,fp)!=0;i++) {printf("\n%-15s%11s",stu[i].name,stu[i].num);for(j=0;jj++)printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fclose(fp);n=i;学生管理系统c语言源代码printf("\nInput number deleted:");scanf("%s",number);for(flag=1,i=0;flagii++){if(strcmp(number,stu[i].num)==0){for(t=i;tt++){strcpy(stu[t].num,stu[t+1].num);strcpy(stu[t].name,stu[t+1].name);for(j=0;jj++)stu[t].score[j]=stu[t+1].score[j];stu[t].ave=stu[t+1].ave;}n=n-1;elseprintf("\n Not found!");printf("\nNow,the content of file:\n");fp=fopen("stu1.txt","wb");for(i=0;ii++)fwrite(stu[i],sizeof(struct student),1,fp);fclose(fp);fp=fopen("stu1.txt","r");for(i=0;fread(stu[i],sizeof(struct student),1,fp)!=0;i++)printf("%-15s%11s%7d%7d%7d%10.2f\n",stu[i].name,stu[i].num,stu[i].score, stu[i].score,stu[i].score,stu[i].ave);fclose(fp);}paixu(){FILE *fp;int i,j,n;if((fp=fopen("stu1.txt","r"))==NULL){printf("Can not open the file.");exit(0);}printf("\nfile'stu1.txt':");for(i=0;fread(stu[i],sizeof(struct student),1,fp)!=0;i++) {printf("\n%-15s%11s",stu[i].name,stu[i].num);for(j=0;jj++)printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fclose(fp);n=i;for(i=0;ii++)for(j=i+1;jj++)学生管理系统c语言源代码if(stu[i].avestu[j].ave){temp=stu[i];stu[i]=stu[j];stu[j]=temp;}printf("\nnow:");fp=fopen("stu1.txt","w");for(i=0;ii++){fwrite(stu[i],sizeof(struct student),1,fp);printf("\n%-15s%11s",stu[i].name,stu[i].num);tongji(){ FILE *fp;int i,j,k,labe1,b;int a5=0;int a6=0;int a7=0;int a8=0;int a9=0; int a10=0; float t;if((fp=fopen("stu1.txt","r"))==NULL){printf("Can not open the file.");exit(0);}printf("\nfile'stu1.txt':");for(i=0;fread(stu[i],sizeof(struct student),1,fp)!=0;i++){printf("\n%-15s%11s",stu[i].name,stu[i].num); for(j=0;jj++)printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fclose(fp);k=i;for(i=0;ii++){labe1=0;if(stu[i].ave60){labe1++;t=labe1/(float)k*100;}}printf("\nbujigelv:");printf("%f%",t);printf("\n");for(j=0;jj++){a5=0;a6=0;a7=0;a8=0;a9=0;a10=0;k=i;printf("kemu is %d:\n",j);for(i=0;ii++)学生管理系统c语言源代码{b=stu[i].score[j]/10;if(b6)a5++;elseif(b=6b7)a6++;elseif(b=7b8)a7++;elseif(b=8b9)a8++;if(b=9b10)a9++;elseif(b==10)a10++;}printf(" 不及格is %d\n",a5);printf(" 60--69 is %d\n",a6);printf(" 70--79 is %d\n",a7);printf(" 80--89 is %d\n",a8);printf(" 90--99 is %d\n",a9);printf(" 100 is %d\n",a10);}}main(){int a;printf(" ____\n"); printf(" 欢迎进入学生成绩管理系统\n");printf(" ____\n"); while(1){printf("\n选择菜单:\n");printf("\n");printf(" 1.输入 2.查询 3.排序 4.修改 5.统计 6.退出\n"); scanf("%d",switch(a){case 1: shuru();break;case 2: chaxun(); break;case 3: paixu(); break;case 4: xiugai(); break;学生管理系统c语言源代码case 5: tongji();break; case 6: exit(0); }。
学生管理系统 C语言代码

#include"stdio.h"#include"stdlib.h"#include"string.h"struct stu_info1{char num[13];//学号char name[10];//姓名char sex[5];//性别char cls[20];//班级}stu1[6];struct stu_info2{char counum[6];//课程号char counam[20];//课程名称int credit;//学分}stu2[6];struct stu_info3{char num[13];//学号char counum[6];//课程号float results;//分数}stu3[12];struct stu_info4{char num[13];//学号char counum[6];//课程号float results;//分数}stu4[12];int n=11;void main(){void gengxin();void input1();void input2();void input3();void output();void xianshi();void chaxun();void printf1();void printf2();input1();input2();output();int i;loop: ;printf("*************欢迎使用分数查询系统*************\n");printf("** 请选择**\n");printf("** 1.录入2.删除无用信息(管理员功能) **\n");printf("** 3.显示4.查询(学生功能) **\n");printf("** 5.显示学生信息6.显示课程信息**\n");printf("** 7.退出**\n");printf("**********************************************\n");scanf("%d",&i);switch(i){case 1: input3();break;case 2:gengxin();break;case 3:xianshi();goto loop;case 4: chaxun();goto loop;case 5: printf1();goto loop;case 6: printf2();goto loop;case 7:break;default:printf("error");break;}}void input1()//录入结构体stu1[]{int i;FILE *fp;if((fp=fopen("A.txt","r"))==NULL){printf("can not open file\n");exit(0);}/* printf(" 学号姓名性别班级\n");*/for(i=0;i<=5;i++){fscanf(fp,"%s%s%s%s",&stu1[i].num,&stu1[i].name,&stu1[i].sex,&stu1[i].cls);/*printf("%-13s %-10s %-5s %-20s\n",stu1[i].num,stu1[i].name,stu1[i].sex,stu1[i] .cls);*/}fclose(fp);}void input2()//录入结构体stu2[]{int i;FILE *fp;if((fp=fopen("B.txt","r"))==NULL){printf("can not open file\n");exit(0);}for(i=0;i<=5;i++){fscanf(fp,"%s%s%d",&stu2[i].counum,&stu2[i].counam,&stu2[i].credit);}fclose(fp);}void input3()//录入成绩{FILE *fp;fp=fopen("C.txt","w");int a,i,j,k;float cetss;char number[13],cnum[6],mima[10];printf("请输入管理员密码\n");scanf("%s",mima);if(strcmp(mima,"abc111")==0){printf("请输入要录入学生成绩的个数\n");scanf("%d",&a);for(i=1;i<=a;i++){printf("请输入要录入的第%d同学的学号:",i);scanf("%s",number);printf("请输入要录入的第%d同学的课程号:",i);scanf("%s",cnum);for(j=0;j<=5;j++)//学号{if((strcmp(number,stu1[j].num)==0))break;}if(j<=5){for(k=0;k<=5;k++)//课程号{if(strcmp(cnum,stu2[k].counum)==0){printf("请输入要录入同学的成绩:");scanf("%f",&cetss);fprintf(fp,"%s %s %f\n",number,cnum,cetss);break;}}}if(j>5||k>5){printf("Error,please input again");i=i-1;}printf("录入成功\n");}}else{printf("密码错误\n");}}void output()// 录入结构体stu3[]{int i;FILE *fp=fopen("C.txt","r");for(i=0;i<n;i++){fscanf(fp,"%s%s%f",&stu3[i].num,&stu3[i].counum,&stu3[i].results);/*printf("%s%s%f\n",stu3[i].num,stu3[i].counum,stu3[i].results);*/ }fclose(fp);}void xianshi()// 显示成绩{int i,j;for(i=0;i<n;i++){for(j=0;j<6;j++){if((strcmp(stu3[i].num,stu1[j].num))==0)printf("%s\t",stu1[j].name);}for(j=0;j<6;j++){if(strcmp(stu3[i].counum,stu2[j].counum)==0)printf("%s\t",stu2[j].counam);}printf("%3.1f\n",stu3[i].results);}}void chaxun()//查询功能{char number[13],c;int i,j,k,a,b,d;while((c=getchar())!='Q'){a=0,b=0;//a记录学分b记录学科printf("请输入要查询同学的学号\n");scanf("%s",number);for(i=0;i<n;i++){if(strcmp(number,stu3[i].num)==0){printf("学号:%s\t",stu3[i].num);for(j=0;j<6;j++){if(strcmp(stu3[i].num,stu1[j].num)==0){printf("姓名:%s\n",stu1[j].name);}}break;}}d=i;for(i=0;i<n;i++)if(strcmp(number,stu3[i].num)==0){b=b+1;for(j=0;j<6;j++){if(strcmp(stu3[i].num,stu1[j].num)==0){for(k=0;k<6;k++){if(strcmp(stu3[i].counum,stu2[k].counum)==0)break;}break;}}if(stu3[i].results>=60){a=a+stu2[k].credit;printf("课程号:%s\t课程名称:%s\t成绩:%3.1f\t实得学分:%d\n",stu3[i].counum,stu2[k].counam,stu3[i].results,stu2[k].credit);}elseprintf("课程号:%s\t课程名称:%s\t成绩:%3.1f\t实得学分:%d\n",stu3[i].counum,stu2[k].counam,stu3[i].results,0);}if(d<n){printf("共修%d科\t\t实得总学分:%d\n",b,a);}else{printf("学号输入错误\n");}getchar();printf("退出请按Q+回车,继续查询请按回车键");}}void gengxin()//更新信息,删除C.txt中无用信息{FILE *fp;int i,j,k;char mima[10];printf("请输入管理员密码\n");scanf("%s",mima);if(strcmp(mima,"abc111")==0){fp=fopen("C.txt","w");for(i=0;i<n;i++){for(j=0;j<6;j++)if(strcmp(stu3[i].num,stu1[j].num)==0){for(k=0;k<=5;k++)if(strcmp(stu3[i].counum,stu2[k].counum)==0)break;if(k<=5){fprintf(fp,"%s %s %f\n",stu3[i].num,stu3[i].counum,stu3[i].results);}}}printf("更新C.txt成功\n");fclose(fp);}else{printf("密码错误\n");}}void printf1()//显示学生信息{int i;printf(" 学号姓名性别班级\n");for(i=0;i<=5;i++){printf("%-13s%-10s%-5s %-20s\n\n",stu1[i].num,stu1[i].name,stu1[i].sex,stu1[i].cls);}}void printf2()//显示课程信息{int i;printf(" 课程编号课程名称学分\n");for(i=0;i<=5;i++){printf("%-6s%-20s %-4d\n\n",stu2[i].counum,stu2[i].counam,stu2[i].credit);}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生信息管理系统(一)用microsoft office access创建一个数据库student.mdb (图1.1)在表中添加字段和数据类型,如下图所示:(图1.2)(图1.3)(图1.4)创建ODBC数据源选择控制面板→管理工具→数据源(ODBC)→系统DSN标签→单击“添加”出现下图所示的界面。
选择Drive do Microsoft Access (*.mdb),单击“完成”。
输入数据源名,单击“选择、、、”,选择c/student.mdb 单击“确定”,将会出现如图(图1.7)所示。
(图1.5)(图1.6)(图1.7)(二).MFC图形建立(图2.1)特别注意:创建的应用程序类型是单文档(single document应用程序)(图2.2)将CSTUDXINXIView 的基类改为CScrollView 然后单击“完成”。
(图2.3)为数据表创建CRecordSet用户类按“Ctrl+W ”进入“建立类向导(即MFC ClasWizard)”单击“Add Class...”选择“New...”如图(图2.4)所示.按照(图2.5)→(图2.6)→(图2.7)的安装顺序。
即可完成创建CRecordSet用户类的工作。
(图2.4)(图2.5)(图2.6)(图2.7)在stdafx.h文件中添加CRecordSet包含语句:#include<afxdb.h> 如图(图2.8)所示(图2.8)(三)构建班级信息对话框类按“Ctrl+R”键,打开“插入资源”,选择dialog(对话框),选择新建。
将名字改为IDD_CLASSINFO,标题为“班级信息输入”。
按照(图3.1)添加控件。
添加的控件ID号标题其他属性编辑框(班级号)IDC_EDIT_CLASSNO 默认编辑框(所在院系)IDC_EDIT_DEPART 默认编辑框(专业)IDC_EDIT_SPECIAL 默认组合框(学制)IDC_COMBO_YEAR 默认日期/时间控件(入学时间)IDC_DATETIMEPICKER1 默认对于学制框:使用Data页面来添加数据项,按Ctrl+Enter 换行。
(图3.1)完成控件添加后,选择“建立类向导”,创建一个新类、即CClassInfoDlg,如图(3.2)所示。
然后按照下图,为控件添加成员变量。
(图3.2)(图3.3)控件ID号变量类别变量类型变量名IDC_EDIT_CLASSNO Value CString m_strClassNO IDC_EDIT_DEPART Value CString m_strDepart IDC_EDIT_SPECIAL Value CString m_strSpecial IDC_COMBO_YEAR Value CString m_strYear IDC_DATETIMEPICKER1 Value CTime m_tEnter(图3.4)使用类向导为CClassInfoDlg类添加WM_INITDIALOG消息映射。
代码位于附录1。
见(图3.5)使用类向导为CClassInfoDlg类添加IDOK按钮的BN_CLICKED消息映射。
代码位于附录2。
见(图3.6)(图3.5)(图3.6)鉴于添加代码都是从类向导找到相应的代码区域,以后就不详细截图了。
(四)实现班级基本信息添加和显示功能为CSTUDXINXIView类添加一个LOGFONT型成员变量m_lfFont选择Add Member Variable... 出现(图4.1)所示输入下面表格的变量类型和名称即可。
连续三次。
变量类型变量名称LOGFONT m_lfFontCString m_strClassNOCString m_strSQL在CSTUDXINXIView::CSTUDXINXIView() 添加代码。
代码位于附录3.(图4.1)添加一个成员函数如(图4.2)所示。
(图4.2)添加代码,位于附录4.在STUDXINXIView.cpp文件的前面添加CClassInfo类的包含语句:#include"ClassInfoSet.h" 打开菜单资源,添加如(图4.3)所示的菜单项。
(图4.3)用类向导为CSTUDXINXIView类添加该菜单项的COMMAND消息映射,并添加代码。
代码位于附录5在CSTUDXINXIView::OnDraw 函数添加代码。
代码位于附录6在STUDXINXIView.cpp文件的前面添加ClassInfoDlg类的包含语句:#include"ClassInfoDlg.h"(五)查询班级信息添加一个新的对话资源框,名字改为ID_SEEKCLASS 标题定为“查询班级信息”。
按照下面的表格添加控件。
布局如(图5.1所示)添加的控件ID号标题其他属性单选按钮(按所在院系)IDC_RADIO1 默认单选按钮(按专业)IDC_RADIO2 默认编辑框IDC_EDIT1 默认(图5.1)建立新类,为IDC_EDIT1添加一个CString型变量m_strSeek为CSeekClassDlg类添加消息映射,代码位于附录7为CSeekClassDlg类添加CString型成员变量m_strSQL用类向导为IDOK按钮添加消息映射。
代码位于附录8打开菜单资源,添加菜单项如(图5.2)所示。
用类向导添加消息映射。
代码位于附录9在STUDXINXIView.cpp文件的前面添加包含语句:#include"SeekClassDlg.h"(图5.2)运行,编译。
附录:1m_strYear="4"; //有关于消息映射UpdateData(FALSE);2UpdateData();m_strClassNO.TrimLeft();m_strDepart.TrimLeft();m_strSpecial.TrimLeft();if(m_strDepart.IsEmpty())MessageBox("必须要有所院系!");else if(m_strSpecial.IsEmpty())MessageBox("必须要有班级!");elseif(m_strClassNO.IsEmpty())MessageBox("必须要有班级号!");else3memset(&m_lfFont,0,sizeof(LOGFONT));m_lfFont.lfHeight=12;m_lfFont.lfCharSet=GB2312_CHARSET;strcpy(m_lfFont.lfFaceName,"宋体");m_strClassNO=m_strSQL="";4CFont font;LOGFONT lf=m_lfFont;lf.lfWeight=700;strcpy(lf.lfFaceName,"幼圆");font.CreateFontIndirect(&lf);TEXTMETRIC tm;pDC->GetTextMetrics(&tm);int nLineHeight=(int)((tm.tmHeight+tm.tmExternalLeading)*1.5);//行高为1.5倍字符高度int x=0,y=0,nWidth;CFont*oldFont=pDC->SelectObject(&font); //使用新字体//输出表头CString strHeader[]={"班级号","所在院系","专业名称","学制","入学时间"};int nStrWidth[]={10,25,25,8,10};CClassInfoSet cSet;cSet.m_strFilter=strSQL;cSet.Open();for(UINT i=0;i<cSet.m_nFields;i++){//计算每一个字段所需的长度nWidth=tm.tmAveCharWidth*nStrWidth[i];pDC->TextOut(x,y,strHeader[i]);x+=nWidth;}pDC->SelectObject(oldFont);//显示具体内容CString str;while(!cSet.IsEOF()){if(strClass==cSet.m_classno){//这是要强调显示的班级lf.lfWeight=0;strcpy(lf.lfFaceName,"楷体_GB2312");font.DeleteObject();font.CreateFontIndirect(&lf);pDC->SelectObject(&font);}elsepDC->SelectObject(oldFont); //使用原来的字体x=0;y+=nLineHeight;for(UINT i=0;i<cSet.m_nFields;i++){cSet.GetFieldValue(i,str);//计算每一个字段需要的长度nWidth=tm.tmAveCharWidth*nStrWidth[i];pDC->TextOut(x,y,str);x+=nWidth;}cSet.MoveNext();}cSet.Close();//设置视图滚动大小CSize sizeTotal;sizeTotal.cx=x+nWidth; sizeTotal.cy=y+nLineHeight;SetScrollSizes(MM_TEXT,sizeTotal);5CClassInfoDlg dlg;if(dlg.DoModal()!=IDOK) return;//向classinfo表添加新的记录,为了防止添加相同的记录,这里先来判断CClassInfoSet infoSet;infoSet.m_strFilter.Format("classno='%s' AND depart='%s'",dlg.m_strClassNO,dlg.m_strDepart,dlg.m_strSpecial);infoSet.Open();if(!infoSet.IsEOF()){MessageBox(dlg.m_strClassNO+"班级记录已被添加过 "); //if(infoSet.IsOpen()) infoSet.Close();return;}if(infoSet.IsOpen())infoSet.Close();CClassInfoSet addSet;if(addSet.Open()){//添加一个新的记录addSet.AddNew();addSet.m_classno=dlg.m_strClassNO;addSet.m_depart=dlg.m_strDepart;addSet.m_special=dlg.m_strSpecial;addSet.m_studyyear=(float)atof(dlg.m_strYear);addSet.m_entertime=dlg.m_tEnter;addSet.Update();addSet.Requery();}if(addSet.IsOpen())addSet.Close();//更新视图m_strClassNO=dlg.m_strClassNO; m_strSQL="";MessageBox("稍等几分钟后,单击“确定”按钮!O(∩_∩)O谢谢","特别提示",MB_OK|MB_ICONINFORMA TION);Invalidate(); //重新调用OnDraw6CFont font;font.CreateFontIndirect(&m_lfFont);CFont*oldFont=pDC->SelectObject(&font);DispClassInfo(pDC,m_strClassNO,m_strSQL);pDC->SelectObject(oldFont);7CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1);8UpdateData();m_strSeek.TrimLeft();if(m_strSeek.IsEmpty()){MessageBox("查询内容不能为空!");return;}int nID=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO2);if(nID==IDC_RADIO1)m_strSQL.Format("depart='%s'",m_strSeek);elsem_strSQL.Format("special='%s'",m_strSeek);9CSeekClassDlg dlg;if(dlg.DoModal()==IDOK) {m_strClassNO="";m_strSQL=dlg.m_strSQL;Invalidate();}。