学生成绩管理系统VC
#include<> #include<> #include<> /*#include<>*/ #include<> #include<> #include<>#include<> #defineVIDEO_INT0x10#defi neSTUSIZE40/*假定处理的学生不超过40人*/structstudent{in tstu num;/* 学号*/charstu name[10];/*学生姓名*/floatstuscore[5];/*3 门成绩、平均成绩、总成绩*/ }stu[STUSIZE];/* 定义学生数组*/ intstunum=0;/*用来记录当前学生记录数*/ voidStuCover();/*项目圭寸面函数声明*/ voidMainMenu();/* 主菜单函数声明*/ voidEditMenu();/* 编辑子菜单函数声明*/ voidDispMenu();/* 显示子菜单函数声明*/ voidCompMenu();/* 计算子菜单函数声明*/ voidSortMenu();/* 排序子菜单函数声明*/ voidOpen(structstudentstu[],int*size) ;/*打开文件子菜单函数声明*/ voidSave(structstudentstu[],int*size);/*保存文件函数声明*/ intAdd(structstudentstu[],int*size);/* 增加学生记录函数声明*/intDel(structstudentstu[],int*stusize);/* 删除学生记录函数声明*/intModify(structstudentstu[],int*stusize);/* 修改学生记录函数声明*/intDispOne(structstudentstu[],int*stusize);/*查看一个记录函数声明*/intDispAll(structstudentstu[],intsize);/* 显示全部记录函数声明*/voidAsceSort(structstudentstu[],intstusize);/*按升序排序函数声明*/voidDropSort(structstudentstu[],intstusize);/*按降序排序函数声明*/voidNotElig(structstudentstu[],intstusize);/* 查找不及格记录函数声明*/ voidCompSum(structstude ntst u[] ,i ntstusize);/*计算总成绩和平均成绩函数声明*/ voidSearchMax(structstudentstu[],intstusize);/*查找最高成绩函数声明*/ voidSearchMin(structstudentstu[],intstusize);/*查找最低成绩函数声明*/ voidExplain();/* 程序说明函数声明*/ voidQuit(int);/* 退出函数声明*/ voidgotoxy(intx,inty);/* 光标定位函数声明*/ intmain(){intchoose,editnum,dispnum,compnum,sortnum;/定义5 个输入变量*/ system("cls"); StuCover();getch();while(1)/* 外循环开始*/{MainMenu();/* 调用主菜单函数*/printf("\t\t 请输入序号:");scanf("%d",&choose);switch(choose)/*主菜单的switch 开始*/{case1:Open(stu,&stunum);break;case2:Save(stu,&stunum);break;case3:do/*内循环1开始*/{EditMenu();/* 调用编辑子菜单函数*/printf("\t\t 请输入序号:");scanf("%d",&editnum);switch(editnum)/* 编辑子菜单switch 开始*/ {case1:Add(stu,&stunum);break;case2:Del(stu,&stunum);break;case3:Modify(stu,&stunum);break;case0:Quit(0);break;}/* 编辑子菜单switch 结束*/}while(editnum!=0);/* 内循环1 结束*/break;case4:do/*内循环2开始*/{DispMenu();/* 调用查看子菜单函数*/printf("\t\t 请输入序号:");scanf("%d",&dispnum);switch(dispnum)/* 显示子菜单switch 开始*/ {case1:DispOne(stu,&stunum);break; case2:DispAll(stu,stunum);break;case3:do/*内循环3开始*/{SortMenu();printf("\t\t 请输入序号:");scanf("%d",&sortnum);switch(sortnum)/* 排序子菜单switch 开始*/ {case1:AsceSort(stu,stunum);break;case2:DropSort(stu,stunum);break;case0:Quit(0);break;}/* 排序子菜单switch 结束*/ }while(sortnum!=0);/* 内循环3 结束*/ break; case4:NotElig(stu,stunum);break; case0:Quit(0);break;}/* 显示子菜单switch 结束*/}while(dispnum!=0);/* 内循环2 结束*/break;case5:do/*内循环4开始*/{CompMenu();/* 调用计算子菜单函数*/ printf("\t\t 请输入序号:");scanf("%d",&compnum);switch(compnum)/* 计算子菜单switch 开始*/{ case1:CompSum(stu,stunum);break; case2:SearchMax(stu,stunum);break; case3:SearchMin(stu,stunum);break;case0:Quit(0);break;}/* 计算子菜单switch 结束*/ }while(compnum!=0);/* 内循环4 结束*/ break; case6:Explain();break;/*程序说明*/ case0:Quit(1);break;}/* 主菜单的switch 结束*/}return。
;/*外循环结束*/}voidgotoxy(intx,inty){COORDc;=x-1;=y-1;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c); }voidQuit(intflag)/* 退出函数*/{if(flag==1){system("cls");printf("\n\n\n\n\n\n\t\t\t 操作结束,退出系统!");getch();system("cls");exit(0);/* 退出程序,返回到操作系统库函数*/}elseif(flag==0)/* 返回上级菜单*/{ system("cls");printf("\n\n\n\n\n\n\t\t\t 操作结束,返回上级菜单!");getch();system("cls");}}voidExplain()/* 程序说明*/{ system("cls");gotoxy(10,3);/* 光标定位函数*/printf(" 这是一个教学程序。
它以开发班级学生成绩管理系统为主要项目,"); gotoxy(10,5);printf("旨在通过简单学生成绩管理系统软件的开发,使读者了解并掌握用C语"); gotoxy(10,7);printf(" 言开发程序的方法与技巧。
");gotoxy(10,9);printf(" 该项目由15 个任务来完成,将C 语言基本知识与理论溶入到任务中!"); gotoxy(10,11);printf(" 完成15 个任务后就完成整个项目的设计。
通过任务驱动和项目导向教学,"); gotoxy(10,13);printf(" 最终实现教学目的,达到培养目标!");gotoxy(10,15);printf(" 该项目实施贯穿在整个教学过程中,它将重点与难点分散在各个任务"); gotoxy(10,17);printf(" 中,达到循序渐进,逐个突破的目的,教学最后将安排一定的时间归纳汇"); gotoxy(10,19);printf(" 总。
");getch();}voidStuCover()/* 项目封面函数*/{system("cls");/*执行DOS清屏命令函数*/printf("\n\n\n");printf("\t\t 班级学生成绩管理系统\n\n");printf("\t\t 版本号:\n\n");printf("\n\n\n");printf("\t\t2011 年9 月\n\n");printf("\t\t 章国华软件工作室\n");}voidMainMenu()/* 项目主菜单函数*/{intn;system("cls");printf("\n\n\n");printf("|***** 学生成绩管理系统*****|\n"); printf("| |\n"); printf("| 请选择菜单序号(0~6)|\n"); printf("| |\n"); printf("|1 -- 打开文件|\n");printf("|2 -- 保存文件|\n");printf("|3 -- 编辑数据|\n");printf("|4 -- 显示数据|\n");printf("|5 -- 数据计算|\n");printf("|6 -- 程序说明|\n");printf("|0 -- 退出系统|\n");printf("| .................................. |\n");printf("\t\t 请选择序号:"); scanf("%d",&n);printf("您选择了第%d 项!\n",n);}voidDispMenu()/* 项目主菜单函数*/{intn;system("cls");printf("\n\n\n");printf("|****** * 显示子菜单*****|\n");printf("| .................................. |\n");printf("| 请选择菜单序号(0~4)|\n"); printf("| |\n"); printf("|1 ---- 查看选定记录|\n");printf("|2 ---- 显示全部记录|\n");printf("|3 ---- 显示排序记录|\n");printf("|4 --- 显示不及格记录|\n");printf("|0 ---- 返回上级菜单|\n");printf("| .................................. |\n");printf("\t\t 请选择序号:"); scanf("%d",&n);printf("您选择了第%d 项!\n",n);}voidEditMenu()/* 项目编辑子菜单函数*/{intn;system("cls");printf("\n\n\n");printf("|******* 编辑子菜单******|\n");printf("| .................................. |\n");printf("| 请选择菜单序号(0~3)|\n");printf("| .................................. |\n");printf("|1 --- 增加记录|\n");printf("|2 --- 删除记录|\n");printf("|3 --- 修改记录|\n");printf("|0 --- 返回上级菜单|\n");printf("| .................................. |\n");printf("\t\t 请选择序号:"); scanf("%d",&n);printf("您选择了第%d 项!\n",n);}voidCompMenu()/* 项目计算子菜单函数*/ {intn;system("cls");printf("\n\n\n");计算子菜单******|\n");printf("| .................................. |\n");printf("| 请选择菜单序号(0~3)|\n");printf("| .................................. |\n");printf("|1 --- 计算总成绩和平均成绩|\n");printf("|2 --- 计算最高分(平均分) |\n");printf("|3 --- 计算最低分(平均分) |\n");printf("|0 --- 返回上级菜单|\n");printf("| .................................. |\n");printf("\t\t 请选择序号:"); scanf("%d",&n);printf("您选择了第%d 项!\n",n);}voidSortMenu()/* 项目排序子菜单函数*/{intn;system("cls");printf("\n\n\n");printf("|** ***** 排序子菜单******|\n");printf("| .................................. |\n");printf("| 请选择菜单序号(0~2)|\n"); printf("| |\n");printf("|1 --- 按升序排序|\n");printf("|2 --- 按降序排序|\n");printf("|0 --- 返回上级菜单|\n");printf("| .................................. |\n");printf("\t\t 请选择序号:"); scanf("%d",&n);printf("您选择了第%d 项!\n",n);}voidSearchMax(structstudentstu[],intstusize)/*查找最高分指针访问函数*/ { floatmax=stu[0].stuscore[4];inti;system("cls"); for(i=1;i<stusize;i++){if(max<stu[i].stuscore[4]){max=stu[i].stuscore[4];}}gotoxy(20,5);printf(" 成绩最高的是:%.1f\n",max);gotoxy(20,10);printf(" 查找最高分成功,按任意键返回上级菜单!");getch();}voidSearchMin(structstudentstu[],intstusize)/*查找最低分指针访问函数*/{ floatmin=stu[0].stuscore[4];inti;system("cls"); for(i=1;i<stusize;i++){if(min>stu[i].stuscore[4]){min=stu[i].stuscore[4];}}gotoxy(20,5);printf(" 成绩最高的是:%.1f\n",min);gotoxy(20,10);printf(" 查找最低分成功,按任意键返回上级菜单!");getch();}voidNotElig(structstude ntst u[] ,i ntstusize)/* 查找不合格学生成绩指针访问函数*/ { inti,flag=0;system("cls");gotoxy(20,5);printf(" 不合格成绩:"); for(i=0;i<stusize;i++){if(stu[i].stuscore[4]<60){printf("%",stu[i].stuscore[4]);flag=1;}}if(!flag){gotoxy(35,5);printf(" 没有不合格成绩!");}gotoxy(20,10);printf(" 查找不及格成绩成功,按任意键返回上级菜单!");getch();}voidCompSum(structstude ntst u[],in tstusize)/*计算总成绩和平均成绩函数声明*/ {inti,j;floatsumscore;system("cls");if(stusize<=0){gotoxy(22,5);printf(" 数组中没有学生记录或文件没有打开,不能计算总成绩和平均成绩!");getch();}else{for(i=0;i<stusize;i++){sumscore=0;for(j=0;j<3;j++){sumscore+=stu[i].stuscore[j];}stu[i].stuscore[3]=sumscore;stu[i].stuscore[4]=sumscore/;}}gotoxy(20,5);printf(" 计算总成绩和平均成绩成功,按任意键返回上级菜单!");getch();}voidAsceSort(structstudentstu[],intstusize)/*按升序排列指针访问函数*/{inti,j;floattemp; floattemp_score[STUSIZE],*pf;/* 定义一个新数组*/ system("cls");pf=temp_score;for(i=0;i<stusize;i++)/* 给新数组赋值*/ temp_score[i]=stu[i].stuscore[4];for(i=0;i<stusize-1;i++)/* 双重循环实现学生成绩按升序排列*/ for(j=0;j<stusize-i-1;j++) if(*(pf+j+1)<*(pf+j)){temp=*(pf+j);*(pf+j)=*(pf+j+1);*(pf+j+1)=temp;}gotoxy(5,5);printf(" 升序排列结果:"); for(i=0;i<stusize;i++) printf("%",*(pf+i));gotoxy(20,10);printf(" 升序排列成功,按任意键返回上级菜单!"); getch();}voidDropSort(structstudentstu[],intstusize)/*按降序排列指针访问函数*/ { inti,j; floattemp; floattemp_score[STUSIZE],*pf;/* 定义一个新数组*/ system("cls");pf=temp_score;for(i=0;i<stusize;i++)/* 给新数组赋值*/ temp_score[i]=stu[i].stuscore[4];for(i=0;i<stusize-1;i++)/* 双重循环实现学生成绩按降序排列*/ for(j=0;j<stusize-i-1;j++) if(*(pf+j+1)>*(pf+j)){temp=*(pf+j);*(pf+j)=*(pf+j+1);*(pf+j+1)=temp;}gotoxy(5,5);printf(" 降序排列结果:");for(i=0;i<stusize;i++) printf("%",*(pf+i));gotoxy(20,10);printf(" 降序排列成功,按任意键返回上级菜单!"); getch();}intAdd(structstudentstu[],int*size)/* 增加学生记录函数*/{inti,j;intstunum;intnumber;system("cls");if(*size>=40){/* 判断数组是否装满*/gotoxy(30,2);printf(" 数组已满,不能再增加记录!");return0;}else{do{/* 判断输入的增加记录数是否合适*/ gotoxy(30,2);printf(" 请输入增加的记录个数:"); scanf("%d",&number);if(number<0||number+*size>=40){gotoxy(30,4);printf(" 输入增加记录个数错,请重新输入!");}}while(number<0||number+*size>=40); stunum=*size+number; system("cls");gotoxy(33,2);printf(" 学生信息输入!");for(i=*size;i<stunum;i++)/* 增加学生记录*/{gotoxy(15,5);printf("请输入第%d个学生学号:",i+1);gotoxy(15,7);printf(" 请输入第%d 个学生姓名:",i+1);gotoxy(15,9);printf(" 请输入第1 门成绩:");gotoxy(15,11);printf(" 请输入第2 门成绩:");gotoxy(15,13);printf(" 请输入第3 门成绩:");gotoxy(37,5);scanf("%d",&stu[i].stunum);gotoxy(37,7);scanf("%s",&stu[i].stuname);for(j=0;j<3;j++){gotoxy(32,9+j*2);scanf("%f",&stu[i].stuscore[j]);}}if(i==*size){gotoxy(33,4);printf(" 没有记录输入!");}*size=stunum;/* 有指针变量带回学生记录数*/gotoxy(33,15);printf(" 按任意键返回上级菜单!");getch();return0;}}intDel(structstudentstu[],int*stusize)/* 删除学生记录函数*/{inti,k;intloop=0;intnumber;system("cls");gotoxy(33,2);printf(" 删除学生记录!\n");if(*stusize<=0)/* 判断数组是否空*/{gotoxy(20,4);printf(" 数组中没有学生记录或文件没有打开,不能删除记录!"); getch(); return0;}else{do{system("cls");gotoxy(25,2);printf("删除学生记录(不能删除记录请输入-1)! \n");gotoxy(28,4);printf(" 请输入被删除学生的学号:\n"); scanf("%d",&number);if(number==-1){return0;} for(i=0,k=0;i<*stusize;i++){if(number==stu[i].stunum){loop=1;k=i;/* 被删除记录的下标*/break;}}if(loop!=1){ gotoxy(25,6);printf(" 输入学生学号出错,按任意键重新输入!"); getch();} }while(loop!=1);} for(i=k;i<*stusize;i++){ stu[i]=stu[i+1];/* 删除操作*/} gotoxy(25,6);printf(" 删除成功,按任意键返回上级菜单!"); *stusize=*stusize-1; getch();return0;}intModify(structstudentstu[],int*stusize)/* 修改学生记录函数*/ {inti,k;intloop=0;/* 学号输入正确标志*/ intnumber;system("cls");gotoxy(33,2);printf(" 修改学生记录!\n");if(*stusize<=0){ gotoxy(20,4);printf(" 数组中没有学生记录或文件没有打开,不能修改记录!"); getch();return0;}else{do{/* 找出修改学生记录的下标*/ system("cls"); gotoxy(25,2);printf("修改学生记录!(不修改记录请输入-1 )\n"); gotoxy(28,4);printf(" 请输入被修改学生的学号:"); scanf("%d",&number);if(number==-1){return0;} for(i=0,k=0;i<*stusize;i++){if(number==stu[i].stunum){loop=1;k=i;/* 被修改记录的下标*/break;}}if(loop!=1){ gotoxy(25,6);printf(" 输入学生学号出错,按任意键重新输入!"); getch();}}while(loop!=1);} system("cls"); gotoxy(33,2);printf(" 修改学生记录!\n");gotoxy(28,4);printf(" 学号:%d",stu[k].stunum); gotoxy(28,6);printf(" 姓名:%d",stu[k].stuname); gotoxy(28,8);printf(" 成绩1:%.1f",stu[k].stuscore[0]); gotoxy(28,10);printf("成绩2:%.1f",stu[k].stuscore[1]);gotoxy(28,12);printf("成绩3: %.1f",stu[k].stuscore[2]);gotoxy(34,4);scanf("%d",&stu[k].stunum);gotoxy(34,6);scanf("%s",&stu[k].stuname);gotoxy(35,8);scanf("%f",&stu[k].stuscore[0]);gotoxy(35,10);scanf("%f",&stu[k].stuscore[1]);gotoxy(35,12);scanf("%f",&stu[k].stuscore[2]);gotoxy(25,14);printf(" 修改成功,按任意键返回上级菜单!");getch();return0;}intDispAll(structstudentstu[],intsize)/* 显示全部记录函数*/{inti,j;system("cls");if(size<=0){gotoxy(20,4);printf(" 数组中没有学生记录或文件没有打开,不能显示记录!"); getch();return0;}else{gotoxy(5,4);printf("学号姓名成绩1成绩2成绩3总成绩平均成绩");for(i=0;i<size;i++){gotoxy(5,6+i);printf("%-5d",stu[i].stunum);printf("%8s",stu[i].stuname);for(j=0;j<5;j++){printf("%",stu[i].stuscore[j]);}printf("\n");}}gotoxy(28,7+size);printf(" 按任意键返回上级菜单!");getch();return0;}intDispOne(structstudentstu[],int*stusize)/* 显示选定记录函数*/ { inti,j,k,loop,number;do{system("cls");gotoxy(25,2);printf("查看学生记录!(不查看记录请输入-1 )\n");gotoxy(28,4);printf(" 请输入被查看学生的学号:");scanf("%d",&number);if(number==-1){return0;} for(i=0,k=0;i<*stusize;i++){if(number==stu[i].stunum){loop=1;k=i;break;}}if(loop!=1){gotoxy(25,6);printf(" 输入学生学号出错,按任意键重新输入!");getch();}}while(loop!=1);gotoxy(5,4);printf("学号姓名成绩1成绩2成绩3总成绩平均成绩"); gotoxy(5,6);printf("%-5d",stu[k].stunum);printf("%8s",stu[k].stuname); for(j=0;j<5;j++){ printf("%",stu[k].stuscore[j]);}printf("\n");gotoxy(28,8);printf(" 按任意键返回上级菜单!");getch();return0;}voidOpen(structstudentstu[],int*size)/* 打开文件函数*/{inti=0,m=0;FILE*fp,*fp1; if((fp=fopen("studentscore","rb"))==NULL) { fp1=fopen("studentscore","wb+"); fclose(fp1);} if((fp=fopen("zhangguohua","rb"))==NULL){ fp1=fopen("zhangguohua","wb+"); fprintf(fp1,"%d",m); fclose(fp1);}system("cls");if((fp=fopen("studentscore","rb"))==NULL){printf(" 文件不能正常打开!\n");exit(0);}else{while(!feof(fp)){ fread(&stu[i],sizeof(structstudent),1,fp); i++;}fclose(fp);}gotoxy(25,5);printf(" 文件打开成功!");*size=i-1;getch();/* 文件中的学生数*/}voidSave(structstudentstu[],int*size)/* 保存文件函数*/{inti=0;FILE*fp;system("cls");if((fp=fopen("studentscore","wb"))==NULL){printf(" 文件不能正常打开!\n"); exit(0);}else{for(i=0;i<*size;i++){ fwrite(&stu[i],sizeof(structstudent),1,fp);}fclose(fp);}gotoxy(25,5);printf(" 促存文件成功,按任意键返回上级菜单!"); getch();} /*voidgotoxy(intcol,introw){ unionREGSinregs,outregs;=2;=0;=row;=col; int86(VIDEO_INT,&inregs,&outregs);}*/。
学生成绩管理系统(详细操作过程)
学生成绩管理系统我将把我的实现步骤完整的写出来,我是在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()中被调用,即当用户进入系统后使“进入系统”菜单项不可用,并根据用户类型使相应菜单可用。
学生成绩管理系统程序分析
学生成绩管理分析系统设计报告本次作业的任务是设计一个学生成绩管理分析系统,通过此次设计任务达到基本掌握面向过程程序设计的基本思路和方法,熟练使用C语言的知识和技能来解决简单的程序设计问题。
一、需求分析1.功能需求为了实现学生成绩的管理与分析,需要输入学生的基本信息和学习信息,要保证信息的准确性,需要提供包含添加、删除等修改功能,在此基础上,提供统计与分析手段。
因此,通过对需求的分析,本程序设计的功能需求如下:a)信息输入b)信息显示c)信息修改d)信息分析2. 系统需求根据任务要求,实现学生成绩的管理与分析需要使用标准C语言进行编程;由于本程序满足任务要求的功能需求计算简单,信息的显示均为文本类型,且无通讯方面的需求,因此占用计算机的资源较少。
本程序的数据量大小取决于管理学生数量的多少,根据中国各高校情况分析,在校学生少则数百人,多则数万人,而每一名学生记录仅需要数十字节,因此数据的存取量需求最大不会超过10GB。
综上所述,本程序对系统的需求,目前一台普通计算机即可满足使用。
本程序设计拟采用VC 编制,在Windows 2000操作系统下开发实现。
二、总体设计本程序设计采用模块化设计,每一个模块实现一项功能。
按照不同的功能对学生成绩管理分析系统进行模块划分,其总体设计如下:数据录入模块。
每个学生的基本信息和成绩用一个结构体来表示,称为一条记录,可以增加或者删除记录。
为简化问题,能对学生的总成绩进行排序,这里约定相同系别的学生所选科目的数量一致,不同系别的学生所选科目可以不同。
数据查询模块。
对已经录入的学生基本信息和成绩进行查询,可以查询单个学生的基本信息和成绩,比如通过学号、姓名等关键字查询,也可以查询某类数据,比如通过系别关键字查询该系所有学生的资料、通过科目名称查询参加该科考试的所有学生的成绩。
数据修改模块。
对学生基本信息或成绩进行修改,并保存记录。
数据分析模块。
包括对每系或每班的单科成绩的分析,如求平均成绩、及格率、优秀率等;对选修某科的所有学生成绩进行分析,包括求平均分、最高分、最低分等;对同一学期每个班的学生总成绩进行排序。
学生成绩管理系统数据流图
.3.3.1创建实体关系图(1)在需求收集的过程中,要求客户列出应用软件或业务过程涉及到的"事物",将其演化成数据对象;(2)一次考虑一个对象,分析员和客户定义这个对象和其他对象之间是否存在连接;(3)如果存在连接,应创建一个或多个关系;(4)对每一个关系,确定其关联类型;(5)重复步骤(2)到步骤(4),直到定义了所有关系。
(6)定义每个实体的属性;(7)形式化并复审实体关系图;(8)重复步骤(1)到(7),直到数据建模完成。
举例分析:*实体:学生、课程、成绩。
*实体属性定义:学生:学号、姓名、性别、出生日期、入学年月课程:课程编号、课程名称、课程学分、课程描述成绩:学号、课程编号、分数、考核日期*实体关系图:首先分析"学生成绩管理系统"的用户要求,找出该系统应该包括的实体。
显然,学生、课程和成绩都是系统的实体,并且可以初步定义它们的属性(见上)。
教务人员虽然是系统的用户,但其信息与系统处理无关,因此不用作为实体。
那么,学生的选课信息是否需要成为实体呢?由于成绩信息包含了选课信息,因此选课信息不用单独记录。
最终,确定系统的实体是学生、课程和成绩。
接着,我们分析这些实体之间的关联关系。
从实际情况得知,一个学生可以选多门课程,一门课程也可以有多个学生选修,但每个学生选一门课程必须有一个成绩。
根据上述分析,我们得到如图所示的实体关系图。
3.3.3.2创建数据流模型通常,数据流图是分层绘制的,整个过程反映了自顶向下进行功能分解和细化的分析过程。
顶层(也称第0层)DFD用于表示系统的开发范围,以及该系统与周围环境的数据交换关系;最底层DFD代表了那些不可进一步分解的"原子加工";中间层DFD是对上一层父图的细化,其中的每一个加工可以继续细化,中间层次的多少由系统的复杂程度决定。
(1)第0层DFD将整个系统表示成一个加工;(2)确定并标记主要的输入和输出;(3)分离出下一层中的加工、数据对象和存储,并对其进行细化,一次细化一个加工;(4)标记所有加工和箭头;(5)重复步骤(3)和(4),直到所有的加工只执行一个简单的操作,可以很容易地用程序实现。
基于VC的学生教务信息管理系统的设计
[ sr c ]w i h mpo e n fsin ea d tc n lg , o ue ce c sma r n ra igy As at f o ue p l a Ab ta t t tei r v me to e c n e h oo y c mp trsin ei h c t eice sn l, r o mp tra pi — u p c c
su e ta he e n n t e f r ai n t d , d f , e ee q e y a d oh ro ea i n , n t sc n e in o t d n st q i t d n c iv me ta d o h ri o m to o a d mo i d l t, u r , n t e p r t s a d i i o v n e t rs e t o i u r n y o f u n y
科 成 绩查 询 , 行 学 习交 流 。 进
关键词 : 算机 ; 算机 应用 ; 计 计 学生教务信 息管理 系统 : 软件 中图分类号 :P 0 . T 3 21 文献标 识码 : A D : 036  ̄i n10 —9 0 0 1 502 OI1 . 9 .s. 36 7 . 1. .2 9 s 0 2 0
对 信 息 和 数 据 的利 用 和 处理 已 经 进 入 自动 化 、 络 化 和 社 会 化 网
1 需求分析 阶段
随 着 互 联 网 的 爆 炸 性 发展 , 们 越 来 越 习 惯 于 利 用 网络 来 人
实 现 所 需 的 服 务 , 络 已 深 深 影 响到 人 们 生 活 的 各 个 方 面 。随 网
【学生成绩管理系统报告】
***********************(微电子技术系)实验报告书课程名称:学生成绩管理系统学号:---------------姓名:------------教师:---------2011年06月10日实验一学生成绩管理系统实验时间:2010年06月08日同组人员:******一、实验目的为了熟练地利用VC环境执行一些初等的函数的运算,从而向生活实际靠拢,解决实际问题,并从中总结经验,为程序开发做铺垫。
二、实验仪器设备电脑VC6.0开发平台三、实验原理和内容原理:C的编译功能调用库函数,使其执行所需功能,从而满足我们的实际需要开发一些具有强大运算功能软件或可视化程序。
内容:见本报告第02~25页。
四、实验步骤1.需求分析2.架构设计3.程序编写4.调试及总结五、实验数据见本报告第07页调试数据六、结果及分析本实验基本达到了学习要求,无论是在程序编写上还是在调试上,都达到了预期目的。
不过在整体思路上还不够成熟,很多地方都存在不足,程序也不够完善。
(备注:以上条目不得更改,务必严格执行,否则成绩为零。
实验报告全部用A4纸打印,并装订成册。
不能手写(若部分图片无法截取和电脑绘制,可以手绘)。
文字部分全部用宋体小四号字体。
目录一、设计任务书---------------------------------------------3二、需求分析------------------------------------------------31、系统和功能需求----------------------------------32、开发环境-------------------------------------------4一、架构设计-----------------------------------------------4二、详细设计-----------------------------------------------6三、所遇到的问题和分析解决--------------------------11四、系统特色及关键技术--------------------------------12五、结论及心得体会--------------------------------------12六、附录(源代码)--------------------------------------13 参考文献-----------------------------------------------------25液晶显示程序课程设计任务书一、题目:学生成绩管理系统设计二、内容与要求学生成绩信息包括:学期,学号,姓名,三门课程成绩(C语、数学、英语)等。
c语言课程设计学生成绩管理系统总结
c语言课程设计学生成绩管理系统总结
以下是一篇符合您要求的文档:
在这次C语言课程设计中,我们开发了一个学生成绩管理系统。
这个系统的主要目标是帮助教师更方便地管理学生成绩,包括输入、存储、查询和修改成绩等功能。
在设计这个系统时,我们首先分析了需求,明确了系统的基本功能和用户群体。
我们选择了合适的开发工具和技术,包括C语言和文件操作。
在系统开发过程中,我们遇到了许多问题,如内存管理、输入验证和算法优化等。
通过查阅资料和团队协作,我们逐一解决了这些问题。
在系统测试阶段,我们对各个功能进行了详细的测试,包括正常情况和异常情况。
测试结果表明,系统基本符合设计要求,但在一些细节方面仍需改进。
例如,在输入成绩时,系统没有对成绩的有效性进行验证,这可能导致错误的数据被存储。
这次课程设计让我们更深入地了解了C语言和软件开发的过程。
通过实际操作,我们学会了如何分析需求、设计系统、解决问题和测试软件等方面的技能。
虽然系统还存在一些问题,但这次课程设计对我们来说是一次非常有价值的实践经验。
C语言课程设计报告-学生成绩管理系统(vc)
一、实践的目的和要求加深对《C语言》课程所学知识的理解,进一步巩固C语言语法规则。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力。
二、实践内容在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。
进一步掌握各种函数的应用,包括时间函数、绘图函数,以及文件的读写操作等。
三、实践任务1.欢迎画面2.学生成绩管理系统(自己设计界面)3.异或加密与解密(1)文件加密(2)文件解密说明:将某一已知文件的内容以字符形式读出,与密钥(用户从键盘输入)的对应字符进行异或操作即可,解密同样如此。
如:设原文为ab1234,密钥为56,则有ab1234565656按二进制进行异或操作即可得到密文(乱码)。
4.移位加密与解密(1)文件加密(2)文件解密说明:将某一已知文件的内容(限于英文字母)以字符形式读出,根据密钥k(用户从键盘输入)将对应字符进行移位操作即可,解密时移动方向相反。
如:设原文为abcdef,密钥为5,则有abcdef 每个字母按字母表向后移动位(注:z后接a)fghijkl 可得到密文(乱码)。
5.辅助运算(1)整数N模m的乘法逆t要求:输入整数N和m,求出t,若t不存在,给出信息。
提示:这三个数满足:N*t%m=1,使用穷举法。
例如:当N为11,m为26时,由于(11×19)%26=1,所以11模26的乘法逆为19。
(2)统计字母个数要求:输入一段英文字母,统计各个字母的个数,并按个数从大到小排序输出。
提示:字母大小写等价。
输出格式为:字母:个数。
(3)OTP加密要求:输入同等长度的原文x和密钥k(英文字母),根据公式c=(x+k) %26 得到密文,并输出。
提示:将26个字母按0~25编号,将原文字母和对应位置的密钥字母的编号按上述公式进行计算后得到一个新的字母。
C语言程序设计项目实训指导书
C语言程序设计项目实训指导书指导教师:刘洁计算机技术系二〇一五年九月内容简介本实训项目为C语言程序项目开发实训,适用于计算机系各相关专业,在第一学年第一学期开设。
学生自己动手进行需求分析、项目设计、编码及测试,采用VC++6.0进行C程序的开发,以小组的形式完成。
通过综合实训培养学生综合运用所学的基础理论、基础知识、基本技能进行分析和解决实际问题的能力,加深对所学知识的理解和掌握,使学生受到C程序系统设计开发的综合训练,了解和掌握C应用程序开发基本模式,增强团队协作能力,提高职业技能和职业素质。
目录一.实训的目的与要求: (4)(一)实训目的 (4)(二)实训要求 (4)1、总体要求 (4)2、实训前的准备工作 (5)3、学生分组要求 (5)4、实训结果要求 (5)二.实训的前期准备(设备、用具与软件环境) (5)三.实训的题目 (6)四.实训的设计进度安排 (11)五.主要参考文献及资源 (11)一.实训的目的与要求:(一)实训目的课程设计环节是高职高专院校非常重要的一个教学环节,是学完一门课后应用本课知识及以前的知识积累而进行的综合性、开放性的训练。
通过课程设计,不仅能够使学生得到系统的技能训练,巩固和加强所学到的专业理论知识,而且能够培养学生工程意识、创新能力及团队精神等综合素质,培养学生的设计能力和解决实际问题的能力。
正如一句行话所说“C语言入门容易得道难”,对于多数学生来说,在学习了C语言之后,除了应付全国计算机等级考试之外,不知还有其他用途,对丰富的C函数所知甚少,因而对C语言兴趣不大。
因此,本课程设计环节从算法、数据结构、C语言丰富的函数以及程序设计等方面进行了精心考虑和组织,追求典型性、完整性、实用性和趣味性,希望不仅能够提高学生学习C语言的兴趣,更为开发程序打下坚实的基础。
(1) 加深对讲授内容的理解。
C语言程序设计课程中的一些语法规则和阶段性知识,只靠课堂讲授既枯燥无味又难以记忆,但它们都很重要,要想熟练掌握,必须经过大量实践加深对它们的理解与把握。
基于MFC类库的学生成绩管理系统程序的设计
基于MFC类库的学生成绩管理系统程序的设计作者:田华来源:《电脑知识与技术》2013年第01期摘要:简要介绍用MFC类库设计实用型程序的思路,通过调试代码程序及各功能模块来实现方便快捷准确地管理学生成绩。
关键词:MFC类库;程序设计;模块化;程序代码中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)01-0067-03微机基础类设库(Microsoft Foundation Class Library),简称MFC,是微软公司为C++程序设计者提供的一个面向对象的Windows编程接口。
它的开发简化了Windows应用程序的设计。
1 程序设计的目的意义1)掌握用VisualC++6.0开发环境开发软件的方法。
2)掌握用资源编辑器进行图标、选单、工具栏、对话框等资源的编辑。
3)掌握常用控件、对话框、信息框和ActiveX控件的使用方法和技巧。
4)熟悉文档及视图结构,掌握二者相互控制技巧。
5)掌握用MFC编写数据库应用程序的方法和技巧。
6)了解切分窗口和多视图的控制方法。
2 编程环境的选择管理系统程序开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的库。
而对于后者则要求应用程序功能完备,易使用等特点。
VC++的版本中提供了大量的系统开发工具和向导工具,使以往费时费力的开发工作变得轻松自如。
3 开发学生成绩管理系统应用程序的要求1)用数据库的方式方便快捷地管理学生成绩数据。
2)能进行适时地数据更新,包括:记录的增加、删除、修改和按要求进行排序。
3)能按不同条件统计学生单科成绩分布情况,并能根据统计结果绘相应的分布图。
4)应用程序界面友好。
4 系统规划及设计为了实现学生成绩管理系统的功能,将其设计为几个模块:1)登录模块:具有不同权限的管理人员可以通过用户名和密码登录系统,进入主界面。
2)数据录入模块:录入学生年级、专业、姓名及各科成绩等数据,输入完成后,将数据存盘。
学生综合素质评估管理在web的应用与实现
应用科技学生综合素质i平估管理在W EB的应用与实现熊阿伟尹强飞(江西现代职业技术学院,江西南昌330012)脯要]从学生的管理工作出发,以vi sm l s t I】di oN ET2005为系统的开发平台,利用基于M V C的W EB编程技术,采用面向对象方法分析和设计了三层C IS架构的学生综合素质评估管理系统,弗琏行了认真的测试,系统稳定可靠。
饫j键词]评估;管理系统;C/S架构;M V C目前,由于软件开发技术越来越成熟,因此各单位都希望能借助软件系统来减轻复杂的工作。
各高校甚至其他中小学都开始实现网上办公,利用网络化平台进行开展教学工作。
随着技术的发展,网络信息化也逐渐成熟了,并取得的了较好的发展情景。
根据调查发现目前在国内的各大高校基本都建立了或成立专门的管理的校园网络的部门。
开展信息化工作较旱的学校在这方面走的比较前,它们实现了对学生工作管理智能化、服务系统化和共享化,真正建立了数字信皂化校园,实现了职业教育的全面网络化信息化,从而使学校能够提高学生管理工作、教学质量和管理的水平及效率。
1系统分析根据调研和需求分析,将基于M V C的学生综合素质评估管理系统分为八大功能,即:1)学生基本信息管理模块,2)学生成绩管理模块,3)学生宿舍管理模块,4)学生违纪管理模块,5)学生心理管理模块,6)学生综合素质评估结果统计与分析,7)数据备份,8)用户及密码管理。
2系统设计本文实现的高校机房管理系统,是纯软件产品管理方式,系统体系结构采用三层B/S模式,基于M i cr os of t V i sual S t udi o.N E T平台的开发技术,其中开发工具选用A SP.N E T2.0,数据库选用M SSQ L2005。
高校机房管理系统的体系结构采用三层B,s(浏览器,服务器)模式,包括表示层、功能层和数据层三个部分,具有忘好的灵活性、可扩展性和安全性,同时具备良好的容错能力和负载平衡能力。
