用于记录学生成绩的逻辑结构
❶ 现有有N个学生的数据记录,每个记录包括学号,姓名,三科成绩. 利用结构体记录学生成绩. C语言题目问题
我改成了
typedef struct STU
{
char num[80];
char name[80];
int grade1;
int grade2;
int grade3;
}STU;
就对了。
❷ 建立一个学生的结构记录,包括学号,姓名和成绩.
你没有建立学生的结构体类型的变量。不符合题意要求。
❸ 建立一个有3个学生成绩的结构记录,包括学号,姓名和3门课程成绩。(网上都是有计算平均分的,我这道题
#include<stdio.h>
constintMAXSIZE=3;
structstudent{
intnum;
charname[20];
doublescores[5];
};
intmain(){
inti,j;
structstudentarr[MAXSIZE];
for(i=0;i<MAXSIZE;++i){
scanf("%d%s",&arr[i].num,arr[i].name);
arr[i].scores[3]=0;//总成绩
for(j=0;j<3;++j){
scanf("%lf",&arr[i].scores[j]);
arr[i].scores[3]+=arr[i].scores[j];
}
arr[i].scores[4]=arr[i].scores[3]/3;//平均成绩
}
for(i=0;i<MAXSIZE;++i){
printf("%d %s ",arr[i].num,arr[i].name);
for(j=0;j<5;++j)
printf("%.2lf ",arr[i].scores[j]);
printf(" ");
}
return0;
}
❹ 一道程序设计题:学生记录由学号、姓名、成绩组成(学号、成绩都为整数),使用结构体数组
做个简单的示意,如下:
#include<stdio.h>
#define N 10
struct stu
{
int no;
char name[20];
int score;
};
int main()
{
int i;
struct stu students[N]={\ //这里可以继续添加学生信息,注意不要超过总数N
{1, "zhangsan", 100},\
{2, "lisi", 90}\
};
printf("学号\t姓名\t成绩\n");
for(i=0; i<2; i++) //这里改成实际学生个数
{
printf("%d\t%s\t%d\n", students[i].no, students[i].name, students[i].score);
}
return 0;
}
❺ 学生记录由姓名、三门成绩和平均分构成。定义一个结构来体现这种记录。并完成下列功能(子函数)
已调通,大致功能相当
#include <stdio.h>
#include <stdlib.h> /*其它说明*/
#include <string.h> /*字符串函数*/
#include <time.h>
#define LEN sizeof(STUDENT)
typedef struct stu /*定义结构体数组用于缓存数据*/
{
char num[6];
char name[5];
int score[3];
int sum;
float average;
int order;
struct stu *next;
}STUDENT;
/*初始化函数*/
STUDENT *Init()
{
return NULL; /*返回空指针*/
}
/*菜单选择函数*/
int Menu_Select()
{
int n;
struct tm *pt; /*定义时间结构体*/
time_t t;
t=time(NULL);
pt=localtime(&t); /*读取系统日期并把它放到结构体中*/
printf("\n按任一键进入主菜单...... \n"); /*按任一键进入主菜单*/
//getch(); /*从键盘读取一个字符,但不显示于屏幕*/
system("pause");
system("cls"); /*清屏*/
printf("********************************************************************************\n");
printf("\t\t 欢迎 Welcome to\n");
printf("\n\t\t\t 使用学生管理系统1.0\n");
printf("*************************************MENU***************************************\n");
printf("\t\t\t1. 输入学生成绩记录 Enter the record\n"); /*输入学生成绩记录*/
printf("\t\t\t2. 显示 Print the record\n"); /*显示*/
printf("\t\t\t3. 寻找 Search record on name\n"); /*寻找*/
printf("\t\t\t4. 删除 Delete a record\n"); /*删除*/
printf("\t\t\t5. 排序 Sort to make New a file\n"); /*排序*/
printf("\t\t\t6. 插入 Insert record to list\n"); /*插入*/
printf("\t\t\t7. 保存 Save the file\n"); /*保存*/
printf("\t\t\t8. 读取 Load the file\n"); /*读取*/
printf("\t\t\t9. 退出 Quit\n"); /*退出*/
printf("\n********************************************************************************\n");
printf("\t\t\t\t当前系统日期:%d-%d-%d\n",pt->tm_year+1900,pt->tm_mon+1,pt->tm_mday); /*显示当前系统日期*/
do
{
printf("\n\t\t\t输入你的选择Enter your choice(1~9):");
fflush(stdin);
scanf("%d",&n);
}while(n<1||n>9); /*如果选择项不在1~9之间则重输*/
return(n); /*返回选择项,主函数根据该数调用相应的函数*/
}
/*输入函数*/
STUDENT *Create()
{
int i,s;
STUDENT *head=NULL,*p; /* 定义函数.此函数带回一个指向链表头的指针*/
system("cls");
for(;;)
{
p=(STUDENT *)malloc(LEN); /*开辟一个新的单元*/
if(!p) /*如果指针p为空*/
{
printf("\n输出内存溢出. Out of memory."); /*输出内存溢出*/
return (head); /*返回头指针,下同*/
}
printf("输入学号Enter the num(0:list end):");
scanf("%s",p->num);
if(p->num[0]=='0') break; /*如果学号首字符为0则结束输入*/
printf("输入名字Enter the name:");
scanf("%s",p->name);
printf("请输入3门成绩Please enter the %d scores\n",3); /*提示开始输入成绩*/
s=0; /*计算每个学生的总分,初值为0*/
for(i=0;i<3;i++) /*3门课程循环3次*/
{
do
{
printf("成绩score%d:",i+1);
scanf("%d",&p->score[i]);
if(p->score[i]<0 || p->score[i]>100) /*确保成绩在0~100之间*/
printf("数据错误,请重新输入 Data error,please enter again.\n");
}while(p->score[i]<0 || p->score[i]>100);
s=s+p->score[i]; /*累加各门成绩*/
}
p->sum=s; /*将总分保存*/
p->average=(float)s/3; /*先用强制类型转换将s转换成float型,再求平均值*/
p->order=0; /*未排序前此值为0*/
p->next=head; /*将头结点做为新输入结点的后继结点*/
head=p; /*新输入结点为新的头结点*/
}
return(head);
}
/* 显示全部记录函数*/
void Print(STUDENT *head)
{
int i=0; /* 统计记录条数*/
STUDENT *p; /*移动指针*/
system("cls");
p=head; /*初值为头指针*/
printf("\n************************************STUDENT************************************\n");
printf("-------------------------------------------------------------------------------\n");
printf("| Rec | Num | Name | Sc1 | Sc2 | Sc3 | Sum | Ave | Order |\n");
printf("-------------------------------------------------------------------------------\n");
while(p!=NULL)
{
i++;
printf("| %3d | %4s | %-4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|\n",
i, p->num,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
p=p->next;
}
printf("-------------------------------------------------------------------------------\n");
printf("**************************************END**************************************\n");
}
/*查找记录函数*/
void Search(STUDENT *head)
{
STUDENT *p; /* 移动指针*/
char s[5]; /*存放姓名用的字符数组*/
system("cls");
printf("请输入个姓名来查找. Please enter name for searching.\n");
scanf("%s",s);
p=head; /*将头指针赋给p*/
while(strcmp(p->name,s) && p != NULL) /*当记录的姓名不是要找的,或指针不为空时*/
p=p->next; /*移动指针,指向下一结点*/
if(p!=NULL) /*如果指针不为空*/
{
printf("\n*************************************FOUND************************************\n");
printf("-------------------------------------------------------------------------------\n");
printf("| Num | Name | sc1 | sc2 | sc3 | Sum | Ave | Order |\n");
printf("-------------------------------------------------------------------------------\n");
printf("| %4s | %4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|\n",
p->num,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
printf("-------------------------------------------------------------------------------\n");
printf("***************************************END**************************************\n");
}
else
printf("\n没有该学生 There is no num %s student on the list.\n",s); /*显示没有该学生*/
}
/*删除记录函数*/
STUDENT *Delete(STUDENT *head)
{
//int n;
STUDENT *p1,*p2; /*p1为查找到要删除的结点指针,p2为其前驱指针*/
char c,s[6]; /*s[6]用来存放学号,c用来输入字母*/
system("cls");
printf("请输入要删除的学号 Please enter the Deleted num: ");
scanf("%s",s);
p1=p2=head; /*给p1和p2赋初值头指针*/
while(strcmp(p1->num,s) && p1 != NULL) /*当记录的学号不是要找的,或指针不为空时*/
{
p2=p1; /*将p1指针值赋给p2作为p1的前驱指针*/
p1=p1->next; /*将p1指针指向下一条记录*/
}
if(strcmp(p1->num,s)==0) /*学号找到了*/
{
printf("**************************************FOUND************************************\n");
printf("-------------------------------------------------------------------------------\n");
printf("| Num | Name | sc1 | sc2 | sc3 | Sum | Ave | Order |\n");
printf("-------------------------------------------------------------------------------\n");
printf("| %4s | %4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|\n",
p1->num,p1->name,p1->score[0],p1->score[1],p1->score[2],p1->sum,p1->average,p1->order);
printf("-------------------------------------------------------------------------------\n");
printf("***************************************END**************************************\n");
printf("\n是否要删除,输入Y删除,N则退出\nAre you sure to Delete the student Y/N ?"); /*提示是否要删除,输入Y删除,N则退出*/
for(;;)
{
scanf("%c",&c);
if(c=='n'||c=='N') break; /*如果不删除,则跳出本循环*/
if(c=='y'||c=='Y')
{
if(p1==head) /*若p1==head,说明被删结点是首结点*/
head=p1->next; /*把第二个结点地址赋予head*/
else
p2->next=p1->next; /*否则将一下结点地址赋给前一结点地址*/
//n=n-1;
printf("\n学号为(Num): %s 学生以被删除(student have been Deleted.)\n",s);
printf("别忘了保存. Don't forget to Save.\n");break; /*删除后就跳出循环*/
}
}
}
else
printf("\n没有这个学生在表上\nThere is no num %s student on the list.\n",s); /*找不到该结点*/
return(head);
}
/*排序函数*/
STUDENT *Sort(STUDENT *head)
{
int i=0; /*保存名次*/
STUDENT *p1,*p2,*t,*temp; /*定义临时指针*/
temp=head->next; /*将原表的头指针所指的下一个结点作头指针*/
head->next=NULL; /*第一个结点为新表的头结点*/
while(temp!=NULL) /*当原表不为空时,进行排序*/
{
t=temp; /*取原表的头结点*/
temp=temp->next; /*原表头结点指针后移*/
p1=head; /*设定移动指针p1,从头指针开始*/
p2=head; /*设定移动指针p2做为p1的前驱,初值为头指针*/
while(t->average<p1->average&&p1!=NULL) /*作成绩平均分比较*/
{
p2=p1; /*待排序点值小,则新表指针后移*/
p1=p1->next;
}
if(p1==p2) /*p1==p2,说明待排序点值大,应排在首位*/
{
t->next=p1; /*待排序点的后继为p*/
head=t; /*新头结点为待排序点*/
}
else /*待排序点应插入在中间某个位置p2和p1之间,如p为空则是尾部*/
{
t->next=p1; /*t的后继是p1*/
p2->next=t; /*p2的后继是t*/
}
}
p1=head; /*已排好序的头指针赋给p1,准备填写名次*/
while(p1!=NULL) /*当p1不为空时,进行下列操作*/
{
i++; /*结点序号*/
p1->order=i; /*将结点序号赋值给名次*/
p1=p1->next; /*指针后移*/
}
printf("排序成功 Sorting is sucessful.\n"); /*排序成功*/
return (head);
}
/*插入记录函数*/
STUDENT *Insert(STUDENT *head,STUDENT *New)
{
STUDENT *p0,*p1,*p2;
//int n;
int sum1,i;
p1=head; /*使p1指向第一个结点*/
p0=New; /*p0指向要插入的结点*/
printf("\nPlease enter a New record.\n"); /*提示输入记录信息*/
printf("输入学号Enter the num:");
scanf("%s",New->num);
printf("输入名字Enter the name:");
scanf("%s",New->name);
printf("Please enter the %d scores.\n",3);
sum1=0; /*保存新记录的总分,初值为0*/
for(i=0;i<3;i++)
{
do
{
printf("成绩score%d:",i+1);
scanf("%d",&New->score[i]);
if(New->score[i]>100||New->score[i]<0)
printf("数据错误Data error,please enter again.\n");
}while(New->score[i]>100||New->score[i]<0);
sum1=sum1+New->score[i]; /*累加各门成绩*/
}
New->sum=sum1; /*将总分存入新记录中*/
New->average=(float)sum1/3;
New->order=0;
if(head==NULL) /*原来的链表是空表*/
{
head=p0;
p0->next=NULL;
} /*使p0指向的结点作为头结点*/
else
{
while((p0->average<p1->average)&&(p1->next!=NULL))
{
p2=p1; /*使p2指向刚才p1指向的结点*/
p1=p1->next; /*p1后移一个结点*/
}
if(p0->average>=p1->average)
{
if(head==p1)head=p0; /*插到原来第一个结点之前*/
else p2->next=p0; /*插到p2指向的结点之后*/
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=NULL;
} /*插到最后的结点之后*/
}
//n=n+1; /*结点数加1*/
head=Sort(head); /*调用排序的函数,将学生成绩重新排序*/
printf("\n学生Student %s 已被更新have been inserted.\n",New->name);
printf("不要忘了保存Don't forget to Save the New file.\n");
return(head);
}
/*保存数据到文件函数*/
void Save(STUDENT *head)
{
FILE *fp; /*定义指向文件的指针*/
STUDENT *p; /* 定义移动指针*/
char outfile[10];
printf("输出文件例如:c:\\score Enter outfile name,for example c:\\score\n");
scanf("%s",outfile);
if((fp=fopen(outfile,"w"))==NULL) /*为输出打开一个二进制文件,为只写方式*/
{
printf("打不开文件Cannot open the file\n");
return; /*若打不开则返回菜单*/
}
printf("\n保存中...Saving the file......\n");
p=head; /*移动指针从头指针开始*/
while(p!=NULL) /*如p不为空*/
{
fwrite(p,LEN,1,fp); /*写入一条记录*/
p=p->next; /*指针后移*/
}
fclose(fp); /*关闭文件*/
printf("保存成功....Save the file successfully!\n");
}
/* 从文件读数据函数*/
STUDENT *Load()
{
STUDENT *p1,*p2,*head=NULL; /*定义记录指针变量*/
FILE *fp; /* 定义指向文件的指针*/
char infile[10];
printf("倒入文件例如:c:\\score Enter infile name,for example c:\\score\n");
scanf("%s",infile);
if((fp=fopen(infile,"r"))==NULL) /*打开一个二进制文件,为只读方式*/
{
printf("打不开文件Can not open the file.\n");
return(head);
}
printf("\n寻找文件...Loading the file!\n");
p1=(STUDENT *)malloc(LEN); /*开辟一个新单元*/
if(!p1)
{
printf("内存溢出!Out of memory!\n");
return(head);
}
head=p1; /*申请到空间,将其作为头指针*/
while(!feof(fp)) /*循环读数据直到文件尾结束*/
{
if(fread(p1,LEN,1,fp)!=1) break; /*如果没读到数据,跳出循环*/
p1->next=(STUDENT *)malloc(LEN); /*为下一个结点开辟空间*/
if(!p1->next)
{
printf("Out of memory!\n");
return (head);
}
p2=p1; /*使p2指向刚才p1指向的结点*/
p1=p1->next; /*指针后移,新读入数据链到当前表尾*/
}
p2->next=NULL; /*最后一个结点的后继指针为空*/
fclose(fp);
printf("\n你成功的从文件中读取了数据!\nYou have success to read data from the file!\n");
return (head);
}
/*主函数界面*/
int main()
{
STUDENT *head,New;
head=Init(); //链表初始化,使head的值为NULL
for(;;) //循环无限次
{
switch(Menu_Select())
{
case 1:head=Create();break;
case 2:Print(head);break;
case 3:Search(head);break;
case 4:head=Delete(head);break;
case 5:head=Sort(head);break;
case 6:head=Insert(head,&New);break; //&New表示返回地址
case 7:Save(head);break;
case 8:head=Load(); break;
case 9:exit(0); //如菜单返回值为9则程序结束
}
}
return 0;
}
❻ C语言用结构体方法输入50个学生记录,组成记录数组,然后按成绩由高到低输出(每行10个记录)
#define N 5
#include "stdio.h"
struct student
{ int num;
int score;
};
struct student s[N],temp;
void input()
{ int i;
for(i=0;i<N;i++)
{
printf("Enter number:");
scanf("%d",&s[i].num);
printf("Enter score:");
scanf("%d",&s[i].score);
}
}
void output()
{ int i;
for(i=0;i<N;i++)
{// if(i%10==0)//是不是想利用变量i来控制换行?
printf("num=%d\n,score=%d\n",s[i].num,s[i].score);
}
}
void main()
{ void input();
void output();
int i,j,b;
input();
for(i=0;i<N;i++)
{
for(j=i+1;j<N;j++)
if(s[i].score>s[j].score)
{temp=s[i];
s[i]=s[j];
s[j]=temp;
}
}
output();
}
调试正确
❼ 学生记录由学号、姓名、成绩组成(学号、成绩都为整数),使用结构体数组
程序如下:
#include<stdio.h>
#include<stdlib.h>
#define SIZE 100
typedef struct STUDENT{
int id;
char name[20];
int score;
}student[SIZE];
int cmp(const void *aa,const void *bb)
{
return((*(struct STUDENT*)aa).id-(*(struct STUDENT*)bb).id);
}
int main(){
student s;
int i,n;
printf("输入学生人数:");
scanf("%d",&n);
printf("分别按学号、姓名、分数进行输入\n");
for(i=0;i<n;i++){
scanf("%d%s%d",&s[i].id,s[i].name,&s[i].score);
}
qsort(s,n,sizeof(s[0]),cmp);
printf("按学号从小到大排序如下:\n");
for(i=0;i<n;i++){
printf("%d %s %d\n",s[i].id,s[i].name,s[i].score);
}
return 0;
}
❽ 某Excel2000数据清单,用来记录学生的5门课程成绩,现要找出5门课都不及格的同学数量使用什么
用高级筛选一步搞掂。
请参见下图(查有任意一门不及格的):
http://hi..com/jamiechen/album/item/82db54243be5e0314d088dfd.html#IMG=6bcfd6609117db75eaf8f826
对于你的这个问题,只需要把所有“<60”的条件改为放在一行上,即可!
有问题请Hi我。
❾ 题目:学生成绩管理系统 功能:学生成绩管理系统,每个学生是一个记录,包括学号,姓名,性别,3门课程成
本论文叙述了我校学成绩管理的现状以及Visual basic6.0语言的概况。重点介绍了学生成绩管理系统的实现过程:包括系统分析、 系统调查、 数据流程分析、功能设计、 数据库设计、 系统物理配置方案、 系统实现、 系统测试和调试。本系统主要功能有用户管理、学生注册、班级信息录入、学生信息录入、班级课程录入、学校专业信息录入、课程信息录入、学生成绩录入、教师信息录入、数据。。。。。。。。。。。包括功能需求描述、数据库设计等内容。第四章介绍了本系统的具体实现。第五章关于本系统开发过程中的结论及体会。
学生成绩管理系统,功能,特点,论文内容。
This thesis describes my school the present condition of the score management and the general situation of the Visual basic6.0 languages .The point introced the student the result management system carries out the process 。。。。。。。。。 such as function request description and the database design...etc. .A concrete realization that introced this system .Chapter 5 concerning conclusion within this system development process and realize.
the Student result management system, function, characteristics, thesis contents
目 录
摘要
.前言
第一章 引言
1.1 开发背景
1.2开发目标
1.3 项目提出的意义
1. 4 系统开发所用的技术准备
第二章 系统分析
2.1系统需求分析
2.1.1系统调查
2.1.2组织机构设置
2.1.3用户需求
2.1.4系统业务流程图
2.1.5系统设计思想
2.1.6系统设计分析
2.1.7系统功能分析
2.2新系统逻辑方案
2.2.1数据流图(简称为DFD)
2.2.2数据字典
2.2.3新系统逻辑模型的提出
2.2.4系统边界
第三章 系统设计
3.1学生成绩查询系统功能需求简介
3.2功能需求描述
3.3系统目标要求
3.4系统平台选择
3.5数据库设计
3.5.1数据库需求分析
3.5.2数据库概念结构设计
3.5.3、逻辑结构设计(E-R图向关系模型的转换)
第四章 系统实施
4.1各子系统模块程序设计举例
4.2 软件测试的目的和原则
4.3 子系统测试
4.4 软件运行与转换
第五章 结 论
致 谢
参考文献
第一章 引 言
1.1 项目开发背景
几年前,各个学校的学生成绩管理基本上都是靠手工进行,随着各个学校的规模增大,有关学生成绩管理工作所涉及的数据量越来越大,有的学校不得不靠增加人力、物力来进行学生成绩管理。但手工管理具有效率底、 。。。。。。。所以我想借本次毕业设计之际,开发一个不仅适用本校各系而且适用于其它各校的通用高校学生成绩管理系统。
我选择母校来设计这个系统主要有两个原因:
一是:。。。。。。。报。
1.2 项目开发的目标
建立学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高办学效益和现代化水平。帮助广大教师提高工作效率,实现学生成绩信息管理工作流程的系统化、规范化和自动化
1.3 项目提出的意义
现在我国的大中专院校的学生成绩管理水平普遍不高,有的还停留在纸介质基础上,这种管理手段已不能适应时代的发展,因为它浪费了了许多的人力和物力。在当今信息时代这种传统的管理方法必然被计算机为基础的信息管理系统所代替。如果本系统能被学校所采用,将会改变以前靠手工管理学生成绩的状况,可以树立良好的办学形象,提高工作效率。
1.4 系统开发所用的技术准备
1.4. 1数据库技术的现状与发展
数据库是60年代末出现的一门计算机软件技术,到现在虽然只有三十多年的历史,但在理论和时间。。。。。。。。。。。。。。。。。。。。。。。。。。。。
2、信息查询流图
使用人员
成绩数据表
班级数据表
课程数据表
学生数据表
查询条件
查询结果
学生信息录入
成绩信息录入
班级信息录入
课程信息录入
图2-4 学生信息查询流图
3.1学生成绩查询系统功能需求简介
学生成绩查询系统对学校加强学生成绩管理有着极其重要的作用。由于各个大学都在持续扩招,学生的数量日益庞大,传统的手工成绩管理不仅工作量大,而且容易出现问题。
3.2功能需求描述
1、用户管理功能
用户分为管理员、教师用户、学生用户三类。不论是管理员或教师用户,还是学生用户都需要通过用户名和口令进行登录。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
按学生角度管理教师可以看到学生信息和成绩信息。学生信息包括学号、姓名、班级、生日、性别、地址、电话和简历。当教师用鼠标双击某一学生信息时,可以自动显示出该课程的这个学生所有课程的学习成绩,并同时自动计算出这个学生的总分和平均分。在成绩信息中,教师可以对学习成绩进行增加、修改和删除。并能够打印报表。
3、学生对成绩的查看功能
学生用户登录后,学生可以看到自己的学生信息和成绩信息。学生信息包括学号、姓名、班级、生日、性别、地址、电话和简历。成绩信息包括这个学生的所有课程的成绩信息。。。。。。。。。。。。。。。。。。。。。。。。。。
Private Sub CmdOk_Click()
Dim Conn As New ADODB.Connection
Dim mlink As String
mlink = "provider=microsoft.jet.oledb.3.51;data source=score.mdb;"
Conn.Open mlink
‘当用户名密码为空时给出提示
If Text1.Text = "" Then
MsgBox "请。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
在frmlogin窗体中如果用户登录成功,将会出现如图4-3所示的MDI主窗体。
4-3系统主窗体
若是学生用户,则有些菜单项不可用,只能运行本系统的部分功能(即重新登录和信息查询功能可用)。如图4-4
Option Explicit
‘‘‘当改变记录集时,需要刷新整个网格控件
Sub RefreshGrid()
grdScan.DataMember = ""
grdScan.Refresh
If DataEnv.rssqlStudent.State <> adStateClosed Then DataEnv.rssqlStudent.Close
DataEnv.rssqlStudent.Open
grdScan.DataMember = "sqlStudent"
grdScan.Ref...
本论文叙述了我校学成绩管理的现状以及Visual basic6.0语言的概况。重点介绍了学生成绩管理系统的实现过程:包括系统分析、 系统调查、 数据流程分析、功能设计、 数据库设计、 系统物理配置方案、 系统实现、 系统测试和调试。本系统主要功能有用户管理、学生注册、班级信息录入、学生信息录入、班级课程录入、学校专业信息录入、课程信息录入、学生成绩录入、教师信息录入、数据。。。。。。。。。。。包括功能需求描述、数据库设计等内容。第四章介绍了本系统的具体实现。第五章关于本系统开发过程中的结论及体会。
学生成绩管理系统,功能,特点,论文内容。
This thesis describes my school the present condition of the score management and the general situation of the Visual basic6.0 languages .The point introced the student the result management system carries out the process 。。。。。。。。。 such as function request description and the database design...etc. .A concrete realization that introced this system .Chapter 5 concerning conclusion within this system development process and realize.
the Student result management system, function, characteristics, thesis contents
目 录
摘要
.前言
第一章 引言
1.1 开发背景
1.2开发目标
1.3 项目提出的意义
1. 4 系统开发所用的技术准备
第二章 系统分析
2.1系统需求分析
2.1.1系统调查
2.1.2组织机构设置
2.1.3用户需求
2.1.4系统业务流程图
2.1.5系统设计思想
2.1.6系统设计分析
2.1.7系统功能分析
2.2新系统逻辑方案
2.2.1数据流图(简称为DFD)
2.2.2数据字典
2.2.3新系统逻辑模型的提出
2.2.4系统边界
第三章 系统设计
3.1学生成绩查询系统功能需求简介
3.2功能需求描述
3.3系统目标要求
3.4系统平台选择
3.5数据库设计
3.5.1数据库需求分析
3.5.2数据库概念结构设计
3.5.3、逻辑结构设计(E-R图向关系模型的转换)
第四章 系统实施
4.1各子系统模块程序设计举例
4.2 软件测试的目的和原则
4.3 子系统测试
4.4 软件运行与转换
第五章 结 论
致 谢
参考文献
第一章 引 言
1.1 项目开发背景
几年前,各个学校的学生成绩管理基本上都是靠手工进行,随着各个学校的规模增大,有关学生成绩管理工作所涉及的数据量越来越大,有的学校不得不靠增加人力、物力来进行学生成绩管理。但手工管理具有效率底、 。。。。。。。所以我想借本次毕业设计之际,开发一个不仅适用本校各系而且适用于其它各校的通用高校学生成绩管理系统。
我选择母校来设计这个系统主要有两个原因:
一是:。。。。。。。报。
1.2 项目开发的目标
建立学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高办学效益和现代化水平。帮助广大教师提高工作效率,实现学生成绩信息管理工作流程的系统化、规范化和自动化。
1.3 项目提出的意义
现在我国的大中专院校的学生成绩管理水平普遍不高,有的还停留在纸介质基础上,这种管理手段已不能适应时代的发展,因为它浪费了了许多的人力和物力。在当今信息时代这种传统的管理方法必然被计算机为基础的信息管理系统所代替。如果本系统能被学校所采用,将会改变以前靠手工管理学生成绩的状况,可以树立良好的办学形象,提高工作效率。
1.4 系统开发所用的技术准备
1.4. 1数据库技术的现状与发展
数据库是60年代末出现的一门计算机软件技术,到现在虽然只有三十多年的历史,但在理论和时间。。。。。。。。。。。。。。。。。。。。。。。。。。。。
2、信息查询流图
使用人员
成绩数据表
班级数据表
课程数据表
学生数据表
查询条件
查询结果
学生信息录入
成绩信息录入
班级信息录入
课程信息录入
图2-4 学生信息查询流图
3.1学生成绩查询系统功能需求简介
学生成绩查询系统对学校加强学生成绩管理有着极其重要的作用。由于各个大学都在持续扩招,学生的数量日益庞大,传统的手工成绩管理不仅工作量大,而且容易出现问题。
3.2功能需求描述
1、用户管理功能
用户分为管理员、教师用户、学生用户三类。不论是管理员或教师用户,还是学生用户都需要通过用户名和口令进行登录。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
按学生角度管理教师可以看到学生信息和成绩信息。学生信息包括学号、姓名、班级、生日、性别、地址、电话和简历。当教师用鼠标双击某一学生信息时,可以自动显示出该课程的这个学生所有课程的学习成绩,并同时自动计算出这个学生的总分和平均分。在成绩信息中,教师可以对学习成绩进行增加、修改和删除。并能够打印报表。
3、学生对成绩的查看功能
学生用户登录后,学生可以看到自己的学生信息和成绩信息。学生信息包括学号、姓名、班级、生日、性别、地址、电话和简历。成绩信息包括这个学生的所有课程的成绩信息。。。。。。。。。。。。。。。。。。。。。。。。。。
Private Sub CmdOk_Click()
Dim Conn As New ADODB.Connection
Dim mlink As String
mlink = "provider=microsoft.jet.oledb.3.51;data source=score.mdb;"
Conn.Open mlink
‘当用户名密码为空时给出提示
If Text1.Text = "" Then
MsgBox "请。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
在frmlogin窗体中如果用户登录成功,将会出现如图4-3所示的MDI主窗体。
4-3系统主窗体
若是学生用户,则有些菜单项不可用,只能运行本系统的部分功能(即重新登录和信息查询功能可用)。如图4-4
Option Explicit
‘‘‘当改变记录集时,需要刷新整个网格控件
Sub RefreshGrid()
grdScan.DataMember = ""
grdScan.Refresh
If DataEnv.rssqlStudent.State <> adStateClosed Then DataEnv.rssqlStudent.Close
DataEnv.rssqlStudent.Open
grdScan.DataMember = "sqlStudent"
grdScan.Ref...