第一篇:C语言课程设计报告-学生成绩管理系统(vc)
一、实践的目的和要求
加深对《C语言》课程所学知识的理解,进一步巩固C语言语法规则。学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力。
二、实践内容
在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用,包括时间函数、绘图函数,以及文件的读写操作等。
三、实践任务 1.欢迎画面
2.学生成绩管理系统(自己设计界面)3.异或加密与解密
(1)文件加密
(2)文件解密 说明:将某一已知文件的内容以字符形式读出,与密钥(用户从键盘输入)的对应字符进行异或操作即可,解密同样如此。如:设原文为ab1234,密钥为56,则有 ab1234 565656
按二进制进行异或操作即可得到密文(乱码)。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编号,将原文字母和对应位置的密钥字母的编号按上述公式进行计算后得到一个新的字母。
四、设计流程图
流程图另附!
五、相关程序 1 欢迎画面
#include
initgraph(&gd,&gm,“c: urboc2”);Copy();DrawSnow();getch();closegraph();}
void Copy(){
setcolor(0);
setfillstyle(SOLID_FILL,15);fillellipse(200,200,4,4);size=imagesize(196,196,204,204);save1=malloc(size);save2=malloc(size);
getimage(196,196,204,204,save1);getimage(96,96,104,104,save2);}
void Pr(){
int s[15]={0,100,150,200,150,200,250,150,250,300,250,150,100,250,350};setcolor(change/10);settextstyle(0,0,4);
outtextxy(150,200,“Welcome!!”);sound(s[change/10]);}void DrawSnow(){int i;int sx[62];randomize();for(i=0;i<62;i++)sx[i]=(i+2)*10;cleardevice();while(!kbhit()){ Pr();
if(snownum!=100){
snow[snownum].speed=2+random(5);i=random(62);
snow[snownum].x=sx[i];
snow[snownum].y=10-random(100);} for(i=0;i putimage(snow[i].x,snow[i].y,save2,COPY_PUT);Pr(); if(snownum!=100)snownum++;/*delay(300);*/ setfillstyle(SOLID_FILL,15);for(i=0;i snow[i].y+=snow[i].speed; putimage(snow[i].x,snow[i].y,save1,COPY_PUT);if(snow[i].y>500) snow[i].y=10-random(200);} change++;if(change==140)change=10;} nosound();} 2学生成绩管理系统(自己设计界面)#define N 1 struct student {char num[10];char name[10];int score[4];float ave;}stu[N];main() {int i,j,max,maxi,sum;float average;for(i=0;i {printf(“Please input scores of student %d :n”,i+1);printf(“NO.:”); scanf(“%s”,stu[i].num);printf(“name:”); scanf(“%s”,stu[i].name);for(j=0;j<3;j++) {printf(“score %d :”,j+1);scanf(“%d”,&stu[i].score[j]);} } average=0;max=0;maxi=0;for(i=0;i for(j=0;j<3;j++)sum+=stu[i].score[j];stu[i].ave=sum/3.0;average+=stu[i].ave;if(sum>max){max=sum;maxi=i;} } average/=N; printf(“ NO.name score1 score2 score3 averagen”);for(i=0;i {printf(“%5s”,stu[i].num); printf(“%10s”,stu[i].name);for(j=0;j<3;j++) printf(“%9d”,stu[i].score[j]);printf(“%8.2fn”,stu[i].ave);} printf(“average=%6.2fn”,average); printf(“The highest score is : %s,score total :%dn”,stu[maxi].name,max);getch();} 3.异或加密与解密 #include void jiami(char *in,char *pwd,char *out);void main(int argc,char *argv[]){ char in[30];char out[30];char pwd[8];if(argc!=4){ printf(“Input file name:n”);gets(in); printf(“Please enter password:n”);gets(pwd); printf(“Output file name:n”);gets(out); jiami(in,pwd,out);} else { strcpy(in,argv[1]);strcpy(pwd,argv[2]);strcpy(out,argv[3]);jiami(in,pwd,out);} } void jiami(char *in,char *pwd,char *out_file){ FILE *fp1,*fp2;register char ch;int j=0;int k=0; fp1=fopen(in,“rb”);if(fp1==NULL){ printf(“Cannot open in-file!n”);exit(1);} fp2=fopen(out_file,“wb”);if(fp2==NULL){ printf(“Cannot open or create output-file!n”);exit(1);} while(pwd[++k]);ch=fgetc(fp1);while(!feof(fp1)){ fputc(ch^pwd[j>=k?j=0:j++],fp2);ch=fgetc(fp1);} fclose(fp1);fclose(fp2);} 4.移位加密与解密 #include“stdio.h” main(){ int choice=0,k;FILE *fp1,*fp2; char c,filename1[30],filename2[30]; printf(“Please input two deferent filename:”);scanf(“%s%s”,filename1,filename2);printf(“Please input the password :n”);scanf(“%d”,&k); if((fp1=fopen(filename1,“r”))==NULL) printf(“nERROR!CAN NOT OPEN THE FILEn”);else{ fp2=fopen(filename2,“w”); printf(“nChoose:(1-jiami 2-jiemi)”);scanf(“%d”, &choice);switch(choice){ case 1: do{ c=getc(fp1); if(((c>='a')&&(c<='z'-k))||((c>='A')&&(c<='Z'-k)))putc(c+k,fp2); else if(((c>'z'-k)&&(c<='z'))||((c>'Z'-k)&&(c<='Z')))putc(c-(26-k),fp2);else putc(c,fp2);}while(c!=EOF);break;case 2: do{ c=getc(fp1); if(((c>='a'+k)&&(c<='z'))||((c>='A'+k)&&(c<='Z')))putc(c-k,fp2); else if(((c>='a')&&(c<'a'+k))||((c>='A')&&(c<'A'+k)))putc(c+(26-k),fp2);else putc(c,fp2);}while(c!=EOF);break; default: printf(“nYou have choose a wrong number!Please choose again!”);} } fclose(fp1);fclose(fp2);} 5.辅助运算 (1)整数N模m的乘法逆t main(){ unsigned n,m,t=1;int c; printf(“Please enter the number:n”);scanf(“%d,%d”,&n,&m);while(t<65535){ c=n*t%m;if(c==1||c==0)break;t++;} if(t==65535||c==0) printf(“Nicheng number is not exited!n”);if(c==1) printf(“T is : %dn”,t);getch();} (2)统计字母个数 #include “string.h” main(){ int i,j,t; char a[80],b[26];int c[26];char e; printf(“Please enter the letters:n”);gets(a); for(i=0;i<26;i++)b[i]='A'+i;for(i=0;i<26;i++)c[i]=0; for(j=0;j<80;j++){for(i=0;i<26;i++){ if(a[j]==b[i]||a[j]==b[i]+32)c[i]++;} if(a[j]==' ')break;} for(j=0;j<=25;j++){for(i=0;i<=25;i++){if(c[i]>c[i+1]){ t=c[i];c[i]=c[i+1];c[i+1]=t;e=b[i];b[i]=b[i+1];b[i+1]=e;} } } for(i=25;i>=0;i--){if(c[i]!=0) printf(“The %c letter number is %d n”,b[i],c[i]);} getch();} (3)OTP加密 #include “stdio.h” main() {char a[80],b[80],c[80];int i; printf(“Please enter the x :n”);gets(a); printf(“Please enter the k :n”);gets(b); for(i=0;i<80;i++)c[i]=(a[i]+b[i])%26;printf(“The result is :n”);for(i=0;i<80&&c[i]!=' ';i++)printf(“%c”,c[i]);getch();} 六 心得体会 通过此次C语言程序设计实践,本人实在是获益不浅!C语言是上个学期开的课程,所以这个学期并没怎么看过,当要开始设计的时候,还真不知从哪下手!结果,第一次的上机,我只坐了一个下午,什么也没干!回去以后,我想,这样不行,这样下去还得了!我就重新学了一遍我们上个学期的教材,发觉自已有许多都遗忘了!特别是有文件的操作,几乎是一遍空白!温习过后,开始做题!那个欢迎动画是在”C语言之家”找到的,自已改了一下,但并没做多大的改动!之后做出来的第一个程序是”统计字母个数”,因为上个学做过类似的!接着是”乘法逆”,这个我觉得比较简单!再接着是”OTP”加密!而那个学生成绩管理系统是参考了上机手册后做出来的!最后,花了最多时间的是”异或加密与解密”和”移位加解密”,几乎花了我百分之九十的时间,而且还是在一些在其他大学读计科专业的同学的帮助下和在上网查看了大量的资料之后才做出来!最后,想说两句,这次设计,让我重新掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验!七 参考文献 < 1、课程设计的目的、任务 《汇编语言》课程设计对于巩固汇编语言理论知识,加强学生的实际动手能力和提高学生综合素质十分必要。课程设计的目的主要是通过程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。 2、软件需求分析和设计 2.1学生成绩管理系统是对学生成绩的管理,其中包括以下几个模块:(1).插入一个数据(插入学生学号以及语数外三个成绩)。(2)修改一个数据。(3)删除学生成绩数据。(4)查找学生成绩。(5)查看学生成绩的排名(6)查看学生成绩分布(7)按esc键退出系统 2.2学生成绩管理系统应该包含以下信息:学号,语文成绩,英语成绩,数学成绩。因此,系统应该提供以下功能:(1)输出显示菜单。(2)输入学生的成绩(3)修改学生成绩(4)删除学生成绩(5)查询学生成绩(6)显示学生成绩排名(7)显示成绩分布统计(8)按esc键退出系统 2.3依据程序的功能需求,该系统的功能结构图如下 系统功能结构图 2.4 程序流程图: 主程序流程图 查找学生成绩 插入学生学号及成绩 修改学生的成绩 显示各个学科各分数段的人数 3、程序实现说明 3.1学生管理系统中各子程序如下: (1).输入全部学生学号以及语文,英语,数学三科的成绩。子程序名:insert 子程序描述:该子程序为输入字程序。系统在开始的时候是没有数据的,通过该子程序可以初始化系统,将学生的学号及成绩输入系统。 代码: insert proc near;定义进程子程序:插入学生,学号及 成绩 call input;调用input add n,1 ret insert endp (2).修改输入的成绩。子程序名:modify 子程序描述:通过子程序修改学生的成绩 代码: modify proc near;定义进程子程序:修改学生学号,成绩 md1:output mess1;输出mess1 shuru;调用宏shuru:二位数据输入 mov bl,n mov bh,0 mov al,dl mov si,0 md: cmp al,xh[si];先查找输入的学生是否存在 je qq1_1;查到的话,就跳转到qq1_1输入修改的值,也就是重新输入。;结果相等则跳转到qq1_1 add si,1 cmp si,bx jbe md;小于等于则跳转到md output mess;输出mess jmp md1;不相等继续输入学号 qq1_1:;转入修改的值重新输入。mov di,si output mess2 output mess4 mov si,0 mov cx,3 qq3_1:shuruu;cmp dx,78h; jbe qq2_1;output ts3;jmp qq1_1;qq2_1:mov buf[si],dl output bg;add si,1 loop qq3_1 mov al,buf[0];mov chi[di],al mov al,buf[1] 分别输入语文,英语,数学成绩,并将其放 在缓冲区buf中 比较输入的成绩是否大于120,如果大于120的 话,那么重 新输入成绩 小于等于则转移到qq2_1 输出ts3 跳转到qq1_1 输出空格 将存入buf中的成绩,分别赋值给存放对应科 目的成绩的数组 mov eng[di],al mov al,buf[2] mov mat[di],al ret modify endp (3).删除学生的成绩。子程序名:delete 子程序描述:通过子程序删除学生的成绩 代码: de proc near;删除某个学生的记录 sc1:output mess1 shuru;调用宏shuru,接受输入的学号 mov bl,n mov bh,0 mov al,dl mov si,0 sc: cmp al,xh[si];查询输入学号的学生信息是否存在,不存在的话,重新输入学号 je sc2;相等则转移到sc2 add si,1 cmp si,bx jbe sc;小于等于则转移到sc output mess;输出mess jmp sc1 sc2: sub bx,si cmp bx,0 je sc3;相等则转移到sc3 mov cx,bx sc4:mov dl,chi[si+1] mov chi[si],dl mov dl,eng[si+1] mov eng[si],dl mov dl,mat[si+1] mov mat[si],dl mov dl,xh[si+1] mov xh[si],dl add si,1 loop sc4;loop循环指令,执行操作(cx)<--(cx)-1.若 cx!=0,跳转到标号sc处循环执行;cx=0,则推出 循环,执行loop的下一条指令 sub n,1 sc3: ret de endp (3).查询学生的成绩。子程序名:find 子程序描述:通过子程序查询学生的成绩 代码: find proc near;定义进程子程序:查找学生成绩 call sum;求学生的总成绩 call ping;求学生的平均成绩 bj1:output mess1;输出mess1 shuru;二位数数据输入 mov bl,n mov bh,0 mov al,dl mov si,0 bj: cmp al,xh[si];将输入的学号与输入的学号相比,je i;存在的话,将此学生的成绩输出。je表示结果相 等则转移。add si,1 cmp si,bx jbe bj;output mess jmp bj1 i: output strr2 shuzi xh[si];shuzi output bg;mov al,chi[si] cbw;shuzii ax;shuzii output bg;mov al,eng[si] cbw;shuzii ax;shuzii output bg mov al,mat[si] cbw shuzii ax output bg; mov al,pj[si] cbw 小于等于则转移到bj 为二位数据输出 输出空格 将字节变为字 为三位数据输出。输出空格 将字节变为字 为三位数据输出 输出空格的字符串,用于与标题栏对齐 shuzii ax output bg mov ax,si mov bl,2 mul bl mov bx,ax shuzii zc[bx];shuzii为三位数据输出 output bg;输出空格的字符串,用于与标题栏对齐 shuzi mc[si];shuzi为二位数据输出 ret find endp (4).显示学生的成绩排名。子程序名:show 子程序描述:通过子程序显示学生的成绩排名 代码: show proc near;定义进程子程序:显示结果排名 call sum;调用宏sum call ping;调用宏ping call rank;调用宏rank call shuchu;调用宏shuchu ret show endp 3.2程序运行抓图: 主菜单 修改学生成绩 删除学生成绩 显示各个学科各分数段的人数 4、程序总结 通过两个星期的学习,努力,终于完成了报告。系统可以很好的运行。这两个多星期的时间,几乎每天不是在敲代码,就是在看代码,查书,上网。系统中用到了很多最近才学习的知识,比如宏,子程序。这些都使得代码的运行效率提高了,代码行数减少了。系统还用到了bios的清屏功能。这些功能如果不是做课程设计,我想我很难会接触到这些知识。 由于自己对知识掌握的不是很牢固,其中也会碰到一些困难。每当遇到问题的时候,我会先上网去查找,看看有没有人提过这方面的问题。互联网是强大的,大部分的问题通过网络都可以解决。部分找不到的问题,我就去请教班里学得好的同学。他们对知识的掌握远超过我。这样下来,很多问题都迎刃而解了。 课程设计是一个很好的掌握书本上知识的过程。平时上课之后,自己都不会想着去敲一些代码联系联系。通过做课程设计,将理论与实践结合了起来,对知识的理解更加深入了。 课程设计题目:简单的学生成绩管理的程序 要求: 一、由键盘输入原始数据。原始数据内容如下: 学号姓名C程序设计高等数学英语线性代数 1王..80808080 2张..90909090 注:要求至少有20个学生的原始数据 二、实现以下功能。 程序要求主函数是一个功能选择菜单,其它各功能用函数实现。功能要求如下: 1、原始数据的输入 2、计算每位同学的平均分 3、计算每门课程的平均分 4、计算各分数段(90-100、80-89、60-79、60以下)的人数 5、对这些同学的成绩按平均分排序,给出名次。 6、对原始数据可以进行增、删、改的编辑操作。 7、按学号查询学生。找到则显示该生信息,否则提示未找到。 8、原始数据可以保存为文件,也可以从文件载入。 注:程序统计输出结果如下: 学号姓名C程序设计高等数学英语线性代数平均分名次 1王..80808080802 2张..90909090901 … 各科平均分8585858585 C程序设计高等数学英语线性代数平均分 90-10011111 80-8911111 60-6900000 60以下00000 VB程序设计 课程设计报告 班 级:***** 姓 名:***** 序 号:***** 指导老师:***** 目录 1、课设的目的..............................................................................................................................2 2、界面设计和功能设计............................................................................................................2 3、系统功能实施...................................................................................................................11 4、总结........................................................................................................................................30 一、课设的目的 1.本次课程设计提高了我们的实践动手能力 5.通过本次课程设计,熟悉用户界面的设计 2.通过本次课程设计,进一步理解计算机程序设计的思路与方法 3.本次课程设计之后,达到能熟练使用各种常见的VB控件,理解面向对象的思想 4.经过本次课程设计,我们进一步熟练运用VB的语言元素和流程控制语句 6.经过本次课程设计,熟悉数据访问控件ADO及相关对象的使用,能基于ADO控件实现Access的数据访问与操纵 二、界面设计和功能设计 1、下面的界面为用户登陆界面: 用户名和密码均已设定,用户名为zgzy,密码为11201,只有输入正确,然后点击“登陆“按钮才能进入主界面。如果用户名或密码三次输入错误,则系统自动退出。当你点击“退出“按钮时,弹出一个对话窗,界面如下: 在对话框上点击“是”按钮,则退出系统,如果点击“否”,则该界面不变。 2、当用户名和密码均输入正确,点击“登陆”按钮,进入主界面——“学生成绩管理系统”界面,该界面是其他子界面的入口,界面如下: 3、进入主界面后,点击“学生管理(删除添加)”,进入学生管理界面,界面如下 该界面上有一个ADO控件,用于连接数据库,当用户在六个文本框中输入数据时,点击“添加“按钮,可以将数据录入到数据库中,如果此时点击”删除“按钮,则刚才输入的数据就会被删除,点击”保存“按钮时,输入的数据就会自动保存在数据库里,点击”返回主窗体“按钮,该窗体消失,主窗体出现。 4、在主界面点击“各科成绩查询“按钮,出现如下界面: 该界面有一个ADO控件,用来连接数据库,还有一个DataGrid控件,用来显示学生成绩的查询结果,当用户选择了要查询的科目和条件后,点击“查询“按钮,在DataGrid控件上就会显示出所查询的结果。下面为输入条件后查询的结果—— 5、在主界面点击“姓名查询“按钮后,会出现如下界面: 该界面与上一界面相似,在文本框输入要查询的姓名后,点击“查询“按钮,就会在DataGrid控件上显示所要查询的结果。下面为输入条件后查询的结果—— 5、在主界面点击“班级查询“按钮后,会出现如下界面: 在文版框中输入所要查询的班级,DataGrid控件上就会显示所要查询的结果。下面为输入条件后查询的结果—— 6、在主界面上点击“各科成绩段查询“按钮后,会出现如下界面: 点击“计算分数段统计“按钮后,就会出现所要查询的结果。下面为查询的结果—— 7、在主界面点击“计算总分“按钮后,出现如下界面: 点击“清除总分”按钮后,出现如下界面 8、在主界面点击“排名“按钮后,出现如下界面: 在该界面上点击“排名“按钮后,在DataGrid控件上会显示出按成绩高低排名的结果,点击”清除排名“按钮后,刚才结果消失,显示原来结果。下面为所现实的结果—— 9、在主界面点击“统计直方图“按钮后,出现如下界面: 在该界面点击各个按钮后,就会出现与之相关科目的成绩统计直方图,下面为查询的结果—— 10、在主界面点击“优等生“按钮后,出现如下界面: 点击按钮查询后,结果就会在界面上显示出来。下面为所查询的结果—— 三、系统功能实施 以上展示的是系统的所有界面,怎样才能让这所有的功能实现呢?数据库和ADO控件的使用便是其中的关键。 1、建立如下数据库 (学号、姓名、班级、英语、数学、VB、总分、排名) 2、建立如下图的所有界面: 3、ADO控件和DataGrid控件以及数据库的连接步骤:(这一步在设计界面的同时完成) (1)、如何加载ADO控件: 步骤1: 步骤2: 步骤3: 各个界面的ADO控件如何连接数据库(分两步): 步骤1: 如下面界面中的5个步骤 步骤2: 选中ADO控件Adodc1,点击鼠标右键选择属性,然后界面设置如下: 控件绑定数据库的字段操作说明: 属性设置说明:下面以学号为例,姓名、班级等都可参考此。将学号对应的文本框Text1连接Adodc1显示数据库中的学号,需要设置DataSource和DataField两个属性,首先选中Text1文本框,并进行下面的两步操作,即可绑定数据库的学号字段。 设置DataSource: 设置DataField: (2)、如何加载DataGrid控件 控件DataGrid,可以实现数据的批量处理,该控件在控件库Microsoft DataGrid Control 6.0中。 说明:DataGrid控件属性设置 以下为各个界面所对应的代码—— 该界面代码如下: Private Sub Command1_Click()If Text1.Text = “zgzy” And Text2.Text = “11201” Then Form1.Show Unload me Else MsgBox “用户名或密码错误,请重新输入”, vbMsgBoxSetForeground, “系统提示!” End If Static t As Integer t = t + 1 If t >= 3 Then End End Sub Private Sub Command2_Click()a = MsgBox(“确定要退出本系统吗?”, 3 + 32 + 256, “系统提示!”) If a = 6 Then Unload Me End If End Sub 该界面代码如下: Private Sub Command1_Click()xsglfrm.Show End Sub Private Sub Command10_Click()ydsfrm.Show End Sub Private Sub Command3_Click()jszffrm.Show End Sub Private Sub Command4_Click() pmfrm.Show End Sub Private Sub Command5_Click() zftjtfrm.Show End Sub Private Sub Command6_Click() cjcxfrm.Show End Sub Private Sub Command7_Click() xmcxfrm.Show End Sub Private Sub Command8_Click() bjcxfrm.Show End Sub Private Sub Command9_Click() gkcjfrm.Show End Sub 该界面代码如下: Private Sub Command1_Click()Me.Adodc1.Recordset.AddNew End Sub Private Sub Command2_Click()If Me.Adodc1.Recordset.RecordCount = 0 Or Me.Adodc1.Recordset.EOF Then Exit Sub End If Me.Adodc1.Recordset.Delete Me.Adodc1.Recordset.MoveNext If Me.Adodc1.Recordset.RecordCount = 0 Then Exit Sub End If If Me.Adodc1.Recordset.EOF Then Me.Adodc1.Recordset.MoveLast End Sub Private Sub Command4_Click()Me.Adodc1.Recordset.Save End Sub Private Sub Command5_Click() Unload Me mainfrm.Show End Sub 该界面代码如下: Dim kc_条件 As String Dim kc As String Private Sub Command1_Click()kc_条件 = Me.Text1 Me.Adodc1.RecordSource = “select * from stu where ” + kc + “ ” + kc_条件 Me.Adodc1.Refresh End Sub Private Sub Form_Load()kc_条件 = “>=92” kc = “vb” End Sub Private Sub Option1_Click() kc = “VB” End Sub Private Sub Option2_Click()kc = “math” End Sub Private Sub Option3_Click()kc = “English” End Sub 该界面代码如下: Dim kc_条件 As String Dim kc As String Private Sub Command1_Click()kc_条件 = Me.Text1 Me.Adodc1.RecordSource = “select * from stu where ” + kc + “='” + kc_条件 + “'” Me.Adodc1.Refresh End Sub Private Sub Form_Load()kc = “name” End Sub 该界面代码如下: Dim kc_条件 As String Dim kc As String Private Sub Command1_Click()kc_条件 = Me.Text1 Me.Adodc1.RecordSource = “select * from stu where ” + kc + “='” + kc_条件 + “'” Me.Adodc1.Refresh End Sub Private Sub Form_Load()kc = “class” End Sub 该界面代码如下: Private Sub Command1_Click() Dim vb_A As Integer Dim vb_B As Integer Dim vb_C As Integer Dim vb_D As Integer Dim vb_E As Integer Dim Math_A As Integer Dim Math_B As Integer Dim Math_C As Integer Dim Math_D As Integer Dim Math_E As Integer Dim English_A As Integer Dim English_B As Integer Dim English_C As Integer Dim English_D As Integer Dim English_E As Integer Me.Adodc1.RecordSource = “select * from stu where vb>=90” Me.Adodc1.Refresh vb_A = Me.Adodc1.Recordset.RecordCount Me.Text1 = vb_A Me.Adodc1.RecordSource = “select * from stu where vb>=80 and vb<90” Me.Adodc1.Refresh vb_B = Me.Adodc1.Recordset.RecordCount Me.Text2 = vb_B Me.Adodc1.RecordSource = “select * from stu where vb>=70 and vb<80” Me.Adodc1.Refresh vb_C = Me.Adodc1.Recordset.RecordCount Me.Text3 = vb_C Me.Adodc1.RecordSource = “select * from stu where vb>=60” Me.Adodc1.Refresh vb_D = Me.Adodc1.Recordset.RecordCount Me.Text4 = vb_D Me.Adodc1.RecordSource = “select * from stu where vb<60” Me.Adodc1.Refresh vb_B = Me.Adodc1.Recordset.RecordCount Me.Text5 = vb_E Me.Adodc1.RecordSource = “select * from stu where math>=90” Me.Adodc1.Refresh Math_A = Me.Adodc1.Recordset.RecordCount Me.Text6 = Math_A Me.Adodc1.RecordSource = “select * from stu where math>=80 and math<90” Me.Adodc1.Refresh Math_B = Me.Adodc1.Recordset.RecordCount Me.Text7 = Math_B Me.Adodc1.RecordSource = “select * from stu where math>=70 and math<80” Me.Adodc1.Refresh Math_C = Me.Adodc1.Recordset.RecordCount Me.Text8 = Math_C Me.Adodc1.RecordSource = “select * from stu where math>=60 ” Me.Adodc1.Refresh Math_D = Me.Adodc1.Recordset.RecordCount Me.Text9 = Math_D Me.Adodc1.RecordSource = “select * from stu where math<60” Me.Adodc1.Refresh Math_E = Me.Adodc1.Recordset.RecordCount Me.Text10 = Math_E Me.Adodc1.RecordSource = “select * from stu where english>=90” Me.Adodc1.Refresh English_A = Me.Adodc1.Recordset.RecordCount Me.Text11 = English_A Me.Adodc1.RecordSource = “select * from stu where english>=80 and english<90” Me.Adodc1.Refresh English_B = Me.Adodc1.Recordset.RecordCount Me.Text12 = English_B Me.Adodc1.RecordSource = “select * from stu where english>=70 and english<80” Me.Adodc1.Refresh English_C = Me.Adodc1.Recordset.RecordCount Me.Text13 = English_C Me.Adodc1.RecordSource = “select * from stu where english>=60” Me.Adodc1.Refresh English_D = Me.Adodc1.Recordset.RecordCount Me.Text14 = English_D Me.Adodc1.RecordSource = “select * from stu where english<60” Me.Adodc1.Refresh English_E = Me.Adodc1.Recordset.RecordCount Me.Text15 = English_E End Sub Private Sub Form_Load() Text1.Text = “" Text2.Text = ”“ Text3.Text = ”“ Text4.Text = ”“ Text5.Text = ”“ Text6.Text = ”“ Text7.Text = ”“ Text8.Text = ”“ Text10.Text = ”“ Text11.Text = ”“ Text12.Text = ”“ Text13.Text = ”“ Text14.Text = ”“ Text15.Text = ”“ End Sub 代码如下 Private Sub Command1_Click()'计算总分 Dim vb As Integer Dim math As Integer Dim english As Integer Me.Adodc1.Recordset.MoveFirst For i = 1 To Me.Adodc1.Recordset.RecordCount vb = Me.Adodc1.Recordset.Fields(”vb“).Value math = Me.Adodc1.Recordset.Fields(”math“).Value english = Me.Adodc1.Recordset.Fields(”english“).Value Me.Adodc1.Recordset.Fields(”total“).Value = vb + math + english Me.Adodc1.Recordset.Update Me.Adodc1.Recordset.MoveNext Next i End Sub Private Sub Command2_Click()'清除总分 Me.Adodc1.Recordset.MoveFirst For i = 1 To Me.Adodc1.Recordset.RecordCount Me.Adodc1.Recordset.Fields(”total“).Value = Null Me.Adodc1.Recordset.Update Me.Adodc1.Recordset.MoveNext Next i End Sub 该界面代码如下: Private Sub Command1_Click()Me.Adodc1.RecordSource = ”select * from stu order by total desc“ Me.Adodc1.Refresh Me.Adodc1.Recordset.MoveFirst For i = 1 To Me.Adodc1.Recordset.RecordCount Me.Adodc1.Recordset.Fields(”mc“).Value = i Me.Adodc1.Recordset.Update Me.Adodc1.Recordset.MoveNext Next i End Sub Private Sub Command2_Click()Me.Adodc1.Recordset.MoveFirst For i = 1 To Me.Adodc1.Recordset.RecordCount Me.Adodc1.Recordset.Fields(”mc“).Value = Null Me.Adodc1.Recordset.Update Me.Adodc1.Recordset.MoveNext Next i End Sub 该界面代码如下: Private Sub Command1_Click() Me.Adodc1.Refresh '填充表格数据 MSChart1.RowCount = 1 MSChart1.ColumnCount = Me.Adodc1.Recordset.RecordCount Me.Adodc1.Recordset.MoveFirst For lngI = 1 To Me.Adodc1.Recordset.RecordCount MSChart1.Column = lngI '用Data属性向MSChart数据网格填充数据 MSChart1.Data = Val(Adodc1.Recordset.Fields(”vb“).Value) MSChart1.ColumnLabel = Adodc1.Recordset.Fields(”name“).Value Adodc1.Recordset.MoveNext Next lngI MSChart1.RowLabel = ”VB成绩直方图“ End Sub Private Sub Command2_Click()Me.Adodc1.Refresh '填充表格数据 MSChart1.RowCount = 1 MSChart1.ColumnCount = Me.Adodc1.Recordset.RecordCount Me.Adodc1.Recordset.MoveFirst For lngI = 1 To Me.Adodc1.Recordset.RecordCount MSChart1.Column = lngI '用Data属性向MSChart数据网格填充数据 MSChart1.Data = Val(Adodc1.Recordset.Fields(”math“).Value) MSChart1.ColumnLabel = Adodc1.Recordset.Fields(”name“).Value Adodc1.Recordset.MoveNext Next lngI MSChart1.RowLabel = ”Math成绩直方图“ End Sub 该界面代码如下 Private Sub Command1_Click()Dim vb As Integer Dim math As Integer Dim english As Integer Me.Adodc1.RecordSource = ”select * from stu where((math+english+vb)/3>=90)or((math+english+vb)/3>=85 and(math=100 or english=100 or vb=100))or((vb+english+math)/3>=85 and((vb>=95 and english >=95)or(english>=95 and math>=95)or(math>=95 and vb>=95)))and(mc<=3)and(vb>=60 and english>=60 and math>=60)" Me.Adodc1.Refresh End Sub 四、总结和体会 经过好几天的努力我的课程设计终于完成了。在没有做课程设计以前觉得课程设计好难,我可能做不了,但是通过这次做课程设计发现自己错了。课程设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高,它并不可怕。通过这次课程设计使我明白了自己原来知识还比较欠缺,自己要学习的东西还太多,以前上课没怎么认真听,现在知道它重要了,幸好为时不晚,我以后要更加的努力学好vb。在这次课程设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识,所以在这里非常感谢帮助我的同学。此外,还得出一个结论:世上无难事,只怕有心人。 在设计过程中,我通过查阅有关资料,与同学交流经验和自学等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益。 “成绩管理系统”课程设计指导书 课题名称:学生成绩管理系统 设计目标:按照软件工程的规范,以SQL Server或Oracle为后台数据库,以Visual C++、Delphi等为前端开发工具,设计并实现一个能模拟高等学校学生成绩管理的系统。 需求描述: 学生成绩管理系统中: 1.系统用户 系统的用户是学校的学生、教师和管理员。学生使用本系统查询自己的成绩。教师使用本系统录入和查询自己所授课程的考试成绩。教学管理员可以查询所有课程成绩,并使用本系统进行成绩的统计和生成报表。 2.系统功能 (1)成绩录入: 教师可以查询自己本学期所授课程,并录入学生的考试成绩。录入过 程中,可以暂存已录入的成绩,当录入完成后提交。 (2)成绩维护: 教师在提交前,可以修改已录入或暂存的学生成绩;但提交后,则只 能查询不能再进行任何修改。 教学管理员可以清除教师已提交的成绩。 (3)成绩查询: 教师、教学管理员可以查询学生考试成绩。学生只允许查询自己的考 试成绩,教师只允许查询自己所授课程的成绩。 (4)成绩统计: 教学管理员可以按课程、按学生、按班级等进行成绩统计。 教学管理员根据核算出的总评成绩统计处于优、良、中、及格、不及 格的学生人数以及占总人数的百分比。其中100-90为优,89-80为良,79-70为中,69-60为及格,60分以下为不及格。 按要求输出成绩在优、良、中、及格、不及格各区间的学生学号。 结果形式: 提交课程设计报告、源程序和可演示的软件 课程设计报告要求:详见课程设计模板 课程设计参考思路: (1)熟悉数据库和开发工具,掌握开发工具与本地数据库的连接方法。 (2)理解系统的信息需求,进行合理的数据库设计,建立各数据库表。 (3)理解系统的功能需求,设计应用软件。结合Delphi 或VC++进行系统界面 (窗体、菜单以及相应控制按钮)的设计、连接与操纵数据库方案的设计,编写程序。 (4)系统运行、调试并完善。 (5)撰写设计报告。第二篇:语言课程设计-学生成绩管理系统
第三篇:C语言课程设计任务书(学生成绩管理系统)
第四篇:VB学生成绩管理系统课程设计报告
第五篇:课程设计--成绩管理系统