编程:建立一个班级成绩管理数据库

编程:建立一个班级成绩管理数据库,第1张

#include<stdioh>

#include<stdlibh>

#include<conioh>

#include<stringh>

#define INITIAL_SIZE 100 /数组初始的大小/

#define INCR_SIZE 50 /数组每次增加的大小/

#define NUM_SUBJECT 4 /科目数/

#define NULL 0

struct student_info

{

char number[15]; /学号/

char name[20]; /姓名/

char gender[4]; /性别/

float score[NUM_SUBJECT]; /分别为该学生4门课的成绩/

float sum; /总分/

float average; /平均分/

int index; /名次/

};

typedef struct student_info StuInfo;

extern int numStus; /记录的学生数/

extern StuInfo records; /记录学生信息的数组/

extern char savedTag; /信息是否已保存的标志,0为已保存,1为未保存/

extern int arraySize; /数组大小/

extern char subject[];

void handle_menu(void);

int menu_select(void);

void addRecord(void);

void modifyRecord(void);

void queryInfo(void);

void removeRecord(void);

void sortInfo(void);

int saveRecords(void);

int loadRecords(void);

void newRecord(void);

void quit(void);

void showTable(void);

int findRecord(char target,int targetType,int form);

int getIndex(float sum);

void copyRecord(StuInfo src,StuInfo dest);

void average(void);

void search(void);

void shuchu(void);

void shaixuan(void);

int numStus = 0;

StuInfo records = NULL;

char savedTag = 0;

int arraySize;

char subject[]={"高数","物理","英语","PC"};

void main()

{

printf("\n");

printf("\t\n");

printf("\t 这是一个 \n");

printf("\t 学生成绩管理程序 \n");

printf("\t 可以对学生的成绩进行管理 \n");

printf("\t 欢迎使用本程序 \n");

printf("\t\n");

printf("\n");

handle_menu();

}

/菜单处理函数/

void handle_menu(void)

{

for(;;)

{

switch(menu_select())

{

case 1:

saveRecords();

break;

case 2:

addRecord();

break;

case 3:

newRecord();

break;

case 4:

removeRecord();

break;

case 5:

modifyRecord();

break;

case 6:

average();

break;

case 7:

search();

break;

case 8:

sortInfo();

break;

case 9:

shuchu();

break;

case 10:

loadRecords();

break;

case 11:

shaixuan();

break;

case 12:

quit();

}

}

}

/菜单选择函数/

int menu_select()

{

char s[2];

int cn = 0;

printf("\n");

printf("\t1 建立文件\n");

printf("\t2 增加学生记录\n");

printf("\t3 新建学生信息文件\n");

printf("\t4 删除学生记录\n");

printf("\t5 修改学生记录\n");

printf("\t6 求平均成绩\n");

printf("\t7 查找最高分\n");

printf("\t8 按总分排序\n");

printf("\t9 输出所有记录\n");

printf("\t10 读取文件\n");

printf("\t11 按平均成绩筛选\n");

printf("\t12 退出程序");

printf("\n\t 数字对应相应功能,请选择1--12:");

for(;;)

{

gets(s);

cn = atoi(s);

/处理键入的非数字键/

if(cn<1||cn>12)

{

printf("\n\t输入错误,请重新输入!\n");

printf("\t0--12:");

}

else break;

}

return cn;

}

/建立文件函数/

int saveRecords()

{

FILE fp;

char fname[30];

printf("\t您选择的是:建立文件\n");

if(numStus == 0)

{

printf("没有记录可存!\n");

return -1;

}

printf("请输入你要存入的文件名(直接回车选择文件stu_info):");

gets(fname);

if(strlen(fname) == 0)

strcpy(fname,"stu_info");

if((fp = fopen(fname,"wb")) == NULL)

{

printf("不能存入文件!\n");

return -1;

}

printf("\n存文件\n");

fwrite(records,sizeof(StuInfo)numStus,1,fp);

fclose(fp);

printf("%d条记录已经存入文件,请继续 *** 作。\n",numStus);

savedTag = 0; /更新是否已保存的标记/

return 0;

}

/增加学生记录/

void addRecord()

{

char str[10];

int j;

float mark,sum;

printf("\t增加学生记录\n");

if(numStus == 0)

printf("原来没有记录,现在建立新表\n");

else

printf("下面在当前的末尾增加新的信息\n");

while(1)

{

printf("您将要添加一组信息,确定吗?(Y/N):");

gets(str);

if(str[0] == 'n'||str[0] == 'N') /不再添加信息/

break;

if(numStus>=arraySize) /数组空间不足,需要重新申请空间/

{

records = realloc(records,(arraySize+INCR_SIZE) sizeof(StuInfo));

if(records == NULL)

{

printf("memory failed");

exit(-1);

}

arraySize = arraySize+INCR_SIZE;

}

printf("请输入学号:");

gets(records[numStus]number);

printf("请输入姓名:");

gets(records[numStus]name);

printf("请输入性别(0为女,输入其它为男):");

gets(str);

if(str[0] == '0')

strcpy(records[numStus]gender,"女");

else

strcpy(records[numStus]gender,"男");

sum = 0;

for(j=0;j<NUM_SUBJECT;j++)

{

printf("请输入%s成绩:",subject[j]);

gets(str);

mark = (float)atof(str);

records[numStus]score[j] = mark;

sum += mark;

}

records[numStus]sum = sum;

records[numStus]average = sum/NUM_SUBJECT;

records[numStus]index = getIndex(sum);

numStus++;

}

printf("现在一共有%d条信息",numStus);

savedTag = 1;

}

/新建学生信息文件/

void newRecord(void)

{

char str[5];

printf("新建学生信息文件\n");

if(numStus != 0)

{

if(savedTag == 1)

{

printf("现在已经有记录,选择处理已有记录的方法。\n");

printf("是否保存原来的记录?(Y/N):");

gets(str);

if(str[0]!='n'&&str[0]!='N')

saveRecords();

}

}

numStus = 0;

addRecord();

}

/删除学生记录/

void removeRecord()

{

char str[5];

char target[20];

int type;

int i,j;

int tmpi;

printf("删除学生记录\n");

if(numStus == 0)

{

printf("没有可供删除的记录!");

return;

}

while(1)

{

printf("\t1 按学号\n");

printf("\t2 按姓名\n");

printf("\t3 按名次\n");

printf("\t数字对应删除方式!\n");

printf("请输入如何找到欲删除的记录的方式(直接输入回车结束移除 *** 作):");

gets(str);

if(strlen(str) == 0)

break;

if(str[0] == '1')

{

printf("请输入该学生的学号:");

gets(target);

type = 0;

}

else if (str[0] == '2')

{

printf("请输入该学生的姓名");

gets(target);

type = 1;

}

else

{

printf("请输入该学生的名次:");

gets(target);

type = 2;

}

i = findRecord(target,type,0);

if(i == -1)

printf("没有符合条件的学生!\n");

while(i != -1)

{

showTable();

printf("%s\t%s\t%s",records[i]number,records[i]name,records[i]gender);

for(j=0;j<NUM_SUBJECT;j++)

{

printf("\t%1f",records[i]score[j]);

}

printf("\t%1f\t%1f\t%d\n",records[i]sum,records[i]average,records[i]index);

printf("确定要删除这个学生的信息吗?(Y/N):");

gets(str);

if(str[0] == 'Y'||str[0] == 'y')

{

numStus--;

tmpi = records[i]index;

/将后面的记录前移/

for(j=1;j<numStus;j++)

copyRecord(&records[j+1],&records[j]);

/将名次排在被删除记录后面的记录的名次减1/

for(j=0;j<numStus;j++)

{

if(records[j]index > tmpi)

records[j]index--;

}

}

/取下一个符合条件的记录/

i = findRecord(target,type,i+1);

}

}

savedTag = 1;

}

/修改学生记录/

void modifyRecord()

{

char str[5];

char target[20];

int type;

int i,j;

int tmpi;

float sum,mark;

int count = 0; /总分大于sum的人数/

printf("修改学生记录\n");

if(numStus == 0)

{

printf("没有可供修改的记录!");

return;

}

while(1)

{

printf("\t1 按学号\n");

printf("\t2 按姓名\n");

printf("\t3 按名次\n");

printf("\t数字对应修改方式!\n");

printf("请输入如何找到欲修改的记录的方式(直接输入回车结束修改 *** 作):");

gets(str);

if(strlen(str) == 0)

break;

if(str[0] == '1')

{

printf("请输入该学生的学号:");

gets(target);

type = 0;

}

else if (str[0] == '2')

{

printf("请输入该学生的姓名");

gets(target);

type = 1;

}

else

{

printf("请输入该学生的名次:");

gets(target);

type = 2;

}

i = findRecord(target,type,0);

if(i == -1)

printf("没有符合条件的学生!\n");

while(i != -1)

{

showTable();

printf("%s\t%s\t%s",records[i]number,records[i]name,records[i]gender);

for(j=0;j<NUM_SUBJECT;j++)

{

printf("\t%1f",records[i]score[j]);

}

printf("\t%1f\t%1f\t%d\n",records[i]sum,records[i]average,records[i]index);

printf("确定要修改这个学生的信息吗?(Y/N):");

gets(str);

if(str[0] == 'Y'||str[0] == 'y')

{

tmpi = records[i]index;

printf("下面请重新输入该学生的信息:\n");

printf("请输入学号:");

gets(records[numStus]number);

printf("请输入姓名:");

gets(records[numStus]name);

printf("请输入性别(0为女,输入其它为男):");

gets(str);

if(str[0] == '0')

strcpy(records[numStus]gender,"女");

else

strcpy(records[numStus]gender,"男");

sum = 0;

for (j=0;j<NUM_SUBJECT;j++)

{

printf("请输入%s成绩:",subject[j]);

gets(str);

mark = (float)atof(str);

records[numStus]score[j] = mark;

sum += mark;

}

records[numStus]sum = sum;

records[numStus]average = sum/NUM_SUBJECT;

/将原来名次排在被修改记录之后,而其小于等于/

/修改后记录的sum的记录的名次减1/

/将原来名次排在被修改记录之前或相同,而其/

/大于修改后记录的sum的记录的名次增1/

count = 0;

for (j=0;j<numStus;j++ )

{

if(j == i)

continue;

if(records[j]index>tmpi&&records[j]sum>sum)

records[j]index--;

else if (records[j]index<=tmpi&&records[j]sum<sum)

records[j]index++;

if (records[j]sum>sum)

count++;

}

records[i]index = count+1;

}

i = findRecord(target,type,i+1);

}

}

savedTag = 1;

}

/退出程序/

void quit(void)

{

char str[5];

if (savedTag == 1)

{

printf("是否保存原来的记录(Y/N)");

gets(str);

if (str[0] != 'n' && str[0] != 'N')

saveRecords();

}

free(records);

exit(0);

}

/找出总分为sum在第0至numStus-1个记录中按升序排序的位置/

int getIndex(float sum)

{

int i;

int count = 0; /总分大于sum的人数/

for (i=0; i<numStus ;i++ )

{

if(records[i]sum<sum)

{

records[i]index++; /总分小于sum的记录名次加1/

}

else if (records[i]sum > sum)

{

count++;

}

}

return count+1;

}

/查找指明定的记录/

int findRecord(char target,int targetType,int from)

{

int i;

for (i=from;i<numStus ;i++ )

{

if ((targetType==0 && strcmp(target,records[i]number)==0)||

(targetType==1 && strcmp(target,records[i]name)==0)||

(targetType==2 && atoi(target)==records[i]index))

return i;

}

return -1;

}

/打印表头/

void showTable(void)

{

int j;

printf("学号\t姓名\t性别");

for (j=0; j<NUM_SUBJECT ;j++ )

printf("\t%s",subject[j]);

printf("\t总分\t平均分\t序号\n");

}

/将scr指向的一条记录复制给dest指明向的记录/

void copyRecord(StuInfo src,StuInfo dest)

{

int j;

strcpy(dest->number,src->number);

strcpy(dest->name,src->name);

strcpy(dest->gender,src->gender);

for (j=0; j<NUM_SUBJECT ;j++ )

{

dest->score[j]=src->score[j];

}

dest->sum = src->sum;

dest->average = src->average;

dest->index = src->index;

}

/求平均成绩函数/

void average()

{

int i,kemu;

float sum;

char str[5];

float average;

printf("\t1 高数\n");

printf("\t2 物理\n");

printf("\t3 英语\n");

printf("\t4 PC\n");

printf("请输入您要计算平均成绩的科目(数字代表相应科目):");

gets(str);

if(strlen(str) == 0)

exit (0);

for ( ; ; )

{

kemu = atoi(str);

if(kemu<1||kemu>4)

{

printf("您的输入有误,请重新输入,1--4:");

gets(str);

if(strlen(str) == 0)

exit(0);

}

else

{

for(i=0;i<numStus;i++)

{

sum = sum + records[i]score[kemu-1];

}

average = sum/numStus;

break;

}

}

printf("平均分为%1f",average);

}

/查找最高分函数/

void search()

{

int i,j=0,kemu,tag=0,ind[20];

int k;

char str[5];

float max;

printf("\t1 高数\n");

printf("\t2 物理\n");

printf("\t3 英语\n");

printf("\t4 PC\n");

printf("\t5 总分\n");

printf("请输入你要查找的最高分的选项(数字代表相应选项,直接回车退出),1--5:");

for ( ; ; )

{

gets(str);

if(strlen(str) == 0)

exit (0);

kemu = atoi(str);

if(kemu<1||kemu>5)

printf("您的输入有误,请重新输入,1--5:");

else

break;

}

if(kemu>=1&&kemu<=4)

{ max = 0;

for ( i=0 ; i< numStus ;i++ )

{

if(max < records[i]score[kemu-1])

{

max = records[i]score[kemu-1];

}

}

for ( i=0; i<numStus ;i++ )

{

if( (kemu==1 && max == records[i]score[0])||

(kemu==2 && max == records[i]score[1])||

(kemu==3 && max == records[i]score[2])||

(kemu==4 && max == records[i]score[3]) )

{

for( ;j<20;j++)

{

ind[j] = i;

tag++;

break;

}

}

}

showTable();

for(j=0;j<tag;j++)

{

printf("%s\t%s\t%s",records[ind[j]]number,records[ind[j]]name,records[ind[j]]gender);

for(k=0;k<NUM_SUBJECT;k++)

{

printf("\t%1f",records[ind[j]]score[k]);

}

printf("\t%1f\t%1f\t%d\n",records[ind[j]]sum,records[ind[j]]average,records[ind[j]]index);

}

printf("\t这就是您要查找的信息\n");

}

else

{

max = 0;

for (i=0;i<numStus;i++)

{

if(max<records[i]sum)

max = records[i]sum;

}

for(i=0;i<numStus;i++)

{

if(records[i]sum == max)

for( ;j<20;j++)

{

ind[j] = i;

tag++;

break;

}

}

showTable();

for(j=0;j<tag;j++)

{

printf("%s\t%s\t%s",records[ind[j]]number,records[ind[j]]name,records[ind[j]]gender);

for(k=0;k<NUM_SUBJECT;k++)

{

printf("\t%1f",records[ind[j]]score[k]);

}

printf("\t%1f\t%1f\t%d\n",records[ind[j]]sum,records[ind[j]]average,records[ind[j]]index);

}

printf("\t这就是您要查找的信息\n");

}

return;

}

/按总分降序函数/

void sortInfo(void)

{

int i,j;

StuInfo tmps;

if(numStus == 0)

{

printf("没有可供查询的记录!");

return;

}

for(i=0;i<numStus;i++)

{

for(j=0;j<numStus-i;j++)

{

if( records[j]sum<records[j+1]sum)

{

copyRecord(&records[j],&tmps);

copyRecord(&records[j+1],&records[j]);

copyRecord(&tmps,&records[j+1]);

}

}

}

printf("排序已完成!\n");

shuchu();

savedTag = 1;

}

/输出所有记录/

void shuchu(void)

{

int i,j;

showTable();

for(i=0;i<numStus;i++)

{

printf("%s\t%s\t%s",records[i]number,records[i]name,records[i]gender);

for(j=0;j<NUM_SUBJECT;j++)

{

printf("\t%1f",records[i]score[j]);

}

printf("\t%1f\t%1f\t%d\n",records[i]sum,records[i]average,records[i]index);

}

}

/文件读取 *** 作函数/

int loadRecords()

{

FILE fp;

char fname[30];

char str[5];

if(numStus!=0 && savedTag == 0)

{

printf("\t请选择您是要覆盖现有记录(Y),还是要将\n");

printf("\t读取的记录添加到现有的记录之后(N)\n");

printf("\t直接回车则覆盖现有的记录:");

gets(str);

if(str[0]=='n'||str[0]=='N')

{

savedTag = 1;

}

else

{

if(savedTag == 1)

{

/覆盖现有记录/

printf("\t读取文件会更改原来的记录\n");

printf("是否保存原来的记录(Y/N):");

gets(str);

if(str[0]!='n'||str[0]!='N')

saveRecords();

}

numStus = 0;

}

}

printf("请输入要读取的文件名(直接回车选择文件stu_info)");

gets(fname);

if(strlen(fname)==0)

strcpy(fname,"stu_info");

if((fp=fopen(fname,"rb"))==NULL)

{

printf("打不开文件!请重新选择\n");

return -1;

}

printf("\t读文件\n");

while(!feof(fp))

{

/现在的空间不足,需要重新申请空间/

if(numStus >= arraySize)

{

records = realloc(records,(arraySize+INCR_SIZE) sizeof(StuInfo));

if(records == NULL)

{

printf("memory failed!");

exit(-1);

}

arraySize = arraySize+INCR_SIZE;

}

if(fread(&records[numStus],sizeof(StuInfo),1,fp) !=1)

break;

/按照addRecord函数的方法,更新名次/

records[numStus]index = getIndex(records[numStus]sum);

numStus++;

}

fclose(fp);

printf("现在共有%d条记录。",numStus);

return 0;

}

/平均分筛选/

void shaixuan(void)

{

float average;

int i=0,numstus=0,j;

printf("本程序给出大于等于已知平均成绩的学生的信息\n");

printf("请输入你要筛选的下限平均分:");

scanf("%f",&average);

showTable();

for (i=0 ;i< numStus;i++ )

{

if(records[i]average>=average)

{

printf("%s\t%s\t%s",records[i]number,records[i]name,records[i]gender);

for(j=0;j<NUM_SUBJECT;j++)

{

printf("\t%1f",records[i]score[j]);

}

printf("\t%1f\t%1f\t%d\n",records[i]sum,records[i]average,records[i]index);

numstus++;

}

}

printf("共有%d条记录",numstus);

}

1、创建数据库

create

database

学生成绩数据库

on

primary

(name='学生成绩数据库_mdf',

filename='e:\学生成绩数据库mdb',

size=1,

maxsize=10,

filegrowth

=10%)

log

on

(name='学生成绩数据库_ldf',

filename='e:\学生成绩数据库ldf',

size=1,

maxsize=10,

filegrowth

=10%)

2、创建课程表

create

table

课程表

(课程号

char(6)

primary

key,

课程名称

char(20)

not

null,

任课教师

char(8))

3、

创建学生表

create

table

学生表

(学号

char(6)

primary

key,

姓名

char(8)

not

null,

性别

char(2)

constraint

ck_性别

check(

性别

in

('男','女')),

民族

char(20)

not

null

default

'汉')

4、创建成绩表

create

table

成绩表

(学号

char(6)

not

null

foreign

key(学号)

references

学生表(学号),

课程号

char(6)

not

null

foreign

key(课程号)

references

课程表(课程号),

分数

int

constraint

ck_分数

check(分数

between

0

and

150))

5、添加信息

insert

课程表(课程号,课程名)

values

('100001',

'大学语文')

insert

课程表(课程号,课程名)

values

('100002',

'大学英语')

6

写出创建成绩表视图(学号,姓名,课程号,课程名称,成绩)的代码

create

view

成绩表视图

as

select

学生表学号,姓名,课程表课程号,课程名称,成绩

from

学生表,课程表,成绩表

where

学生表学号=成绩表学号

and

成绩表课程号=课程表课程号

7

写出计算大学语文课程成绩最高分、最低分、平均分的代码

select

max(分数)

'最高分数',min(分数)

'最低分数',avg(分数)

'平均分数'

from

成绩表

where

学号

in

(select

学号

from

课程表

where

课程名称='大学语文')

8、

检索姓李的女同学的信息:姓名、性别、民族

select

姓名,性别,民族

from

学生表

where

姓名

like

'李%'

and

性别='女'

常规的查分系统都会涉及到技术代码和服务器的使用,对于一般的学校来说,开发成本较高,而且后续还需要专门的技术人员对系统进行定期维护,其实老师们可以在易查分做查询系统,只要把查询信息做成excel表格,上传到易查分,就可以生成,下面是具体的 *** 作步骤:

工具/原料

易查分

Microsoft office

方法/步骤

1

搜索关键词「易查分」并获取一个用于制作成绩查询系统的账 户;

2

进入首页,找到制作成绩查询系统的第1步骤——「新建查询」,并进入新建成绩查询系统的创建向导;

3

根据需求,给这次要制作的成绩查询系统取一个名字;比如:初二(3)班期中考试成绩查询系统;

4

这次我们示范的是 制作期中考试的成绩查询系统制作,所以我们要提前把学生的期中考试成绩表格制作好,然后点击「下一步」上传查询数据表格;

5

上传完表格后,我们需要设置「查询条件」也就是学生们打开查询界面,需要输入信息后才能获取结果的查询条件,这里一般易查分系统会默认抓取可以用于查询条件的信息,比如:姓名、学号等,我们可以选择使用系统推荐的查询条件;

6

如果我们需要家长就成绩查询结果做出反馈,我们通过「设置可修改列」来增加留言功能,开启「可修改列」后,家长就可以在获得成绩查询结果后,在结果页面进行留言反馈;

7

在「查询登录页提示文字」页面,我们可以在输入框里设置本次成绩查询中可能遇到的问题,进行说明,也可以做一个提示出错或者查不到成绩时如何解决?等提示语;

8

设置完毕后,点击「提交并生成查询」,一个简单的成绩查询系统就制作好了!用易查分做成绩查询系统,一般都可以避开需要搭建服务器和开发成本的问题,而且老师们可以自行把制作完成的查询系统以H5链接嫁接到学校的公众号上,通知学生们自主进行查询!

END

注意事项

「设置可修改列」项一般只建议设置勾选留言项,如果制作成绩查询系统,不建议勾选姓名、学号及分数等项目作为可修改列;

在制作表格时,表格里不要有合并单元格、插入、函数公式等信息,否则会影响查询系统制作;

第三个表学生成绩表Score,三个字段课程id(les_id),学生id(stu_id)和课程得分(les_score)Create Table [dbo]Score(les_

有个问题 刚好符合你的要求:

问题:

当前目录下的Examplemdb数据库(这个是Access数据库)中,内含一个数据表student,有三个字段:学号、姓名、密码,并有如干记录。连接串为string connStr="provider=microsoftjetoledb40;datasource="+ServerMapPath("Examplemdb"),数据库对象不是SQL,而是Access,采用OleDb,即将对象前SQL换成OleDb。

1、编写一段程序,将student中的数据在DataGridl中显示出来。

2、编写一段程序,将学号、姓名、密码分别为0001,张山,abcd的学生记录插入到student中。

3、编写一段程序,判断数据库中是否存在学号为“01”、口令为“1234”的学生。

首先连接数据库(这里的链接字符串是在配置文件中)

static string connectionString = ConfigurationManagerConnectionStrings["dbConnectionString"]ConnectionString;

private OleDbConnection connection;

public OleDbConnection Connection {

get{

if (connection == null){

connection = new OleDbConnection(connectionString);}

else if (connectionState == SystemDataConnectionStateClosed) //关闭

{

connectionOpen();}

else if (connectionState == SystemDataConnectionStateBroken) //中断

{connectionClose();

connectionOpen();}

return connection;

}

}

然后是执行查询语句和插入语句的方法;

/// <summary>

/// 执行SQL语句,返回影响的记录数

/// </summary>

/// <param name="SQLString">SQL语句</param>

/// <returns>影响的记录数</returns>

public static int ExecuteSql(string SQLString, params OleDbParameter[] cmdParms)

{

using (OleDbConnection connection = new OleDbConnection(connectionString))

{

using (OleDbCommand cmd = new OleDbCommand())

{

try

{

PrepareCommand(cmd, connection, null, SQLString, cmdParms);

int rows = cmdExecuteNonQuery();

cmdParametersClear();

return rows;

}

catch (SystemDataOleDbOleDbException E)

{

throw new Exception(EMessage);

}

}

}

}

/// <summary>

/// 执行查询语句,返回OleDbDataReader

/// </summary>

/// <param name="strSQL">查询语句</param>

/// <returns>OleDbDataReader</returns>

public static OleDbDataReader ExecuteReader(string strSQL)

{

OleDbConnection connection = new OleDbConnection(connectionString);

OleDbCommand cmd = new OleDbCommand(strSQL, connection);

try

{

connectionOpen();

OleDbDataReader myReader = cmdExecuteReader(CommandBehaviorCloseConnection);

return myReader;

}

catch (SystemDataOleDbOleDbException e)

{

throw new Exception(eMessage);

}

}

下面是查询方法和插入方法

(由于时间问题,你把数据库字段都换成你自己的,我这里就不换了)

/// <summary>

/// 增加一条数据

/// </summary>

public int Add()

{

StringBuilder strSql=new StringBuilder();

strSqlAppend("insert into [student](");

strSqlAppend("[stNum],[Name],[Psd])");

strSqlAppend(" values (");

strSqlAppend("@stNum,@Name,@Psd)");

OleDbParameter[] parameters = {

new OleDbParameter("@stNum", OleDbTypeVarChar,50),

new OleDbParameter("@Name", OleDbTypeVarChar),

new OleDbParameter("@Psd", OleDbTypeVarChar,50)};

parameters[0]Value = "0001";

parameters[1]Value = "张山";

parameters[2]Value = “abcd”;

int num=ExecuteCommand(strSqlToString(),parameters);

return num;

}

/// <summary>

/// 得到所有对象

/// </summary>

/// <returns></returns>

public IList<Student> GetAll()

{

IList<Student> modelList = new List<Student>();

string sqlStr = "select from [student] ORDER BY [Id] DESC";

using (OleDbDataReader reader = DbHelperOleDbExecuteReader(sqlStr))

{

while (readerRead())

{

Student model = new Student();

if (reader["Id"]ToString() != "")

{

modelId = intParse(reader["Id"]ToString());

}

modelstNum = reader["stNum"]ToString();

modelName = reader["Name"]ToString();

modelPsd = reader["Psd"]ToString();

modelListAdd(model);

}

}

return modelList;

}

页面调用添加方法就可以添加一条记录了

下面市页面绑定数据

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

DataBindGV();

}

}

public void DataBindGV()

{

//GetAll()方法我是放在Student类里面的

gvStudentListDataSource = new sutdent()GetAll();

gvStudentListDataBind();

}

页面DataGrid的代码如下

<asp:GridView ID="gvStudentList" runat="server" BorderWidth="0px" BackColor="#999999"

CellPadding="1" CellSpacing="1" Width="100%"

AutoGenerateColumns="False">

<EmptyDataTemplate>

没有资料!

</EmptyDataTemplate>

<HeaderStyle Height="20px" BackColor="#CCCCCC" />

<FooterStyle />

<RowStyle BackColor="#fafafa" Height="20px" />

<EmptyDataRowStyle BackColor="#ffffff" />

<SelectedRowStyle />

<Columns>

<asp:BoundField DataField="Title" HeaderText="学号" SortExpression="stNum">

<ItemStyle Width="170px" />

</asp:BoundField>

<asp:TemplateField HeaderText="名称" SortExpression="Name">

<ItemTemplate>

<%#Eval("Name")) %>

</ItemTemplate>

</asp:TemplateField>

<asp:TemplateField HeaderText="密码" SortExpression="Psd">

<ItemTemplate>

<%#Eval("Psd") %>

</ItemTemplate>

<ItemStyle Width="90px" />

</asp:TemplateField>

</Columns>

<PagerStyle BackColor="#eeeeee" BorderWidth="0" />

</asp:GridView>

关于第3个,只需把GetAll()方法的查询语句换一下就行了,换成如下语句:

select from [student] where [stNum]='01' and [Psd]='1234'

然后再查询,根据查询的结果List判断是否存在,当然你也可以执行

select count(1) from [student] where [stNum]='01' and [Psd]='1234'

判断返回的数是否大于零就行了,当然这个查询要另外的查询语句才行用上面的查询方法不行了,需要执行ExecuteScalar()了,自己弄吧,很简单的

如此你的问题全都解决了

以上就是关于编程:建立一个班级成绩管理数据库全部的内容,包括:编程:建立一个班级成绩管理数据库、数据库题目sql语言、如何给学校制作一个成绩查询系统等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9860630.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存