用SQL编写学生学籍管理信息系统

学生学籍管理信息系统
 系统功能的基本要求:
(1) 学生档案的管理,即录入、修改、查询、输出学生档案信息,这些信息包括学生基本情况、学生简历情况、学生奖励情况、学生处分情况、学生家庭信息、学生体检情况。
(2) 学生学籍管理,录入、修改、查询、输出学生学籍信息,这些信息包括学生奖贷学金情况、学生注册、学生异动情况、学生军训情况、学生毕业情况。
(3) 学生成绩管理,录入修改、查询、输出学生入校成绩,各学期、各门课程的成绩信息,并支持按年级、班级等条件的统计、查询、报表输出。

在需求分析、概念结构设计的基础上得到数据库的逻辑结构后,就可以在具体的数据库系统中实现该逻辑结构。
目前的数据库系统ORACLE,SYBASE,INFORMIX,DB2等,各有千秋,根据“学生学籍管理系统”对数据量的要求,本系统采用了SQL Server 200数据库管理系统。
学生学籍管理系统中各表的逻辑结构如下所示:
表1 student_Info学生个人基本信息
表2 Class_Info学校班级信息表
表3 Course_Info课程基本信息表
表4 gradecourse_Info学生所选课程表
表5 student_Result学生成绩信息表
表6 User_Info系统用户表表
在需求分析、概念结构设计的基础上得到数据库的逻辑结构后,就可以在SQL Server 2000数据库系统中实现该逻辑结构。下面是利用SQL Server 2000数据库系统软件中的“企业管理器”工具实现student_Info表格创建的SQL语句,其它表格的创建方法与此相同:
/*表格名:学生基本信息标student_info,主关键字student_ID*/
CREATE TABLE[dbo].[student_info](
[student_ID][int]NOT NULL,
[student_Name][char](5)COLLATE Chinese_PRC_CI_AS NULL,
[student_Sex][char](1) COLLATE Chinese_PRC_CI_AS NULL,

本文原文
[student_Birth][datetime]NULL,
[student_No][int]NULL,
[student_Tel][char](10) COLLATE Chinese_PRC_CI_AS NULL,
[student_Addr][char](50) COLLATE Chinese_PRC_CI_AS NULL,
[student_Date][datime]NULL
)ON[PRIMARY]
3.2各应用模块和功能模块的设计
系统的实现用到了PowerBuilder中的Window Plug-in技术,它具有界面直观、操作简单、开发维护简便等特点。利用Window Plug-in技术可以将在PowerBuilder中开发的窗口对象显示在网页(Web Pages)中,用户可以像以往操作数据库应用软件一样,在浏览器中对数据进行查询、更新等操作。利用Window Plug-in技术可以轻松将原来在PowerBuilder中开发的应用程序移植到浏览器中,实现 C/S模式到B/S模式的快速转变,从而避免了Web数据库编程中必须涉及到的大量的网页设计,把设计者的精力完全放在数据库编程上。PowerBuilder内嵌的窗口对象与一般的PowerBuilder应用程序窗口一样,可以执行同样的功能,编写在窗口内的脚本像应用程序中一样执行。当业务逻辑发生改变时,传统的应用系统必须对所有客户端应用程序进行逐个更新,在客户数目很多的情况下,这种方法显然给系统维护带来了不便。而利用了Window Plug-in技术后,编译后的PBD文件就保存在服务器端,用户只是在浏览操作时才进行下载,所以修改业务逻辑时,只需在服务器端修改,然后重新编译生成包含新的业务逻辑的PBD文件,给维护带来了方便。
基于Window Plug-in的技术特点,因此本系统的开发过程和开发一般的PowerBuilder应用程序一样,只是在程序开发的后期,对程序Window Plug-in技术进行包装。

4 结束语

本系统使用PowerBuilder完成了基于web的学生学籍管理信息系统,并利用其Window plug-in技术,不但使系统保持了PowerBuilder强大的数据库操作特性,而且使系统容易在web上发布,做到了信息的规范管理、科学的统计和快速的查询,较好的满足了学校管理者对学生学籍管理的需求,提高了学校管理者的工作效率。
但是,值得注意的是,因为Window plug-in技术需要浏览器支持,因此比较适用于内部网(Intranet),如何将系统的使用范围更好的进一步推广到Internet将是下一步努力的目标。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-12-25
我有ASP的VB等看你要哪个语言做的。你想要的话个我留言!
第2个回答  2008-12-24
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

typedef struct stud //学生信息结构
{
long num;
char name[20];
float score;
}Stud;

typedef struct node
{
Stud student;
struct node *next;
}Node;
Node *head=NULL;
void read(void);
void inser(long b);
void print();
void find(long b);
void searchname(char *s);
Node * del(long n);
void sort(int flag);
void menu();

void main()
{
char choose;
int flag=1;

while (flag)
{
menu(); //调用功能菜单函数,显示菜单项。
printf(" 请选择:");
choose=getchar();

switch(choose)
{ 1
case '1': read(); //调用建立链表的函数;输出链表信息;
print();
printf("\nPress any key Continue ");
//getchar();
getchar();
break;
case '2': //调用按学号查找学生信息的函数;并输出查找结果信息;
long c;
printf("input the number you want to find:");
scanf("%ld",&c);
find(c);
printf("\nPress any key Continue.");
getchar();
break;
case '3':
//调用按姓名查找学生信息的函数;并输出查找结果信息;
char s[20];
printf("input the name you want to find:");
scanf("%s",s);
searchname(s);
printf("\n Press any key Continue.");
getchar();
getchar();
break;
case '4':
//调用根据学号删除某个学生信息的函数;并输出删除后的链表信息;
Node *h;
long n;
printf("input the number you want to delete:");
scanf("%ld",&n);
h=del(n);
if(h==NULL) printf("No find the student \n");
else print();
printf("\n Press any key Continue.");
getchar();
getchar();
break;
case '5':
//调用插入新的学生信息的函数;并输出插入后的链表信息;
long a;
printf("input the number for the new:\n");
scanf("%ld",&a);
inser(a); 2
print();
printf("\n Press any key Continue.");
getchar();
getchar();
break;
case '6':
//调用按分数降序排序输出的函数;并输出排序后的链表信息;
sort(1);
print();
sort(0);
printf("\nPress any key Continue.");
getchar();
getchar();
break;
case '0':
//结束程序运行!
flag=0;
printf("\n *** The End! ***\n");
break;
default: printf("\n Wrong Selection !(选择错误,重选)\n");
getchar();
}
}
}

void menu() //综合作业功能菜单
{
printf(" \n 学 生 信 息 管 理 系 统\n");
printf(" \n 菜 单\n\n");
printf(" \n 1. 建 立 链 表 并 显 示 \n");
printf(" \n 2. 查 找 某 学 号 的 学 生 信 息 \n");
printf(" \n 3. 查 找 某 姓 名 的 学 生 信 息 \n");
printf(" \n 4. 删 除 某 个 学 号 的 学 生\n");
printf(" \n 5. 插 入 新 的 学 生 信 息 \n");
printf(" \n 6. 按 分 数 降 序 排 序 输 出 \n");
printf(" \n 0. 退 出\n\n");
}

void read(void)
{
long a;
printf("input the number:");
scanf("%ld",&a);
while(a>0){ 3
inser(a);
printf("input the number:");
scanf("%ld",&a);
}
}
void inser(long b)
{

Node *last,*current,*p;
current=head;
while(current!=NULL&&b>current->student.num){
last=current;
current=current->next;
}

if(current==NULL||b<current->student.num){
printf("input the name,score:");
p=(Node *)malloc(sizeof(Node));
p->student.num=b;
scanf("%s%f",p->student.name,&p->student.score);
p->next=NULL;
if(current==head){
p->next=head;
head=p;
}
else{
p->next=current;
last->next=p;
}
}
else if(b==current->student.num)
printf("error input a different number:");

}

void print()
{
Node *p=head;
printf("学号 姓名 成绩:\n");
while(p!=NULL){
printf("%ld %s %f\n",p->student.num,p->student.name,p->student.score);
p=p->next;
} 4
printf("\n");
}
void find(long b)
{
Node *p=head;
while(p!=NULL&&b!=p->student.num)
p=p->next;
if(!p) printf("No found\n");
else {
printf("学号 姓名 成绩\n");
printf("%ld %s %f\n",p->student.num,p->student.name,p->student.score);
}

}

void searchname(char *s)
{
Node *p=head;
int flag=0;
printf("学号 姓名 成绩:\n");
while(p!=NULL)
{
if(strcmp(p->student.name,s)==0)
{
printf("%ld %s %f\n",p->student.num,p->student.name,p->student.score);
flag=1;
p=p->next;
continue;
}
else p=p->next;
}
if(!flag) printf("No find");
}
Node * del(long n)
{
Node *p=head,*last;
while(p->student.num!=n){
last=p;
p=p->next;
}
if(p==NULL) return p;
else if(p==head) head=p->next;
else last->next=p->next; 5
return head;
}
void sort(int flag)
{
/*flag==1 按分数排序 else 按学号排序*/
Node *p1,*p2,*k;
float t1;
long t2;
char s[20];
for(p1=head;p1->next;p1=p1->next)
{
k=p1;
for(p2=p1->next;p2;p2=p2->next)
if(flag==1&&k->student.score<p2->student.score||!flag&&k->student.num>p2->student.num)
k=p2;
if(k!=p1){
t1=p1->student.score;
p1->student.score=k->student.score;
k->student.score=t1;
t2=p1->student.num;
p1->student.num=k->student.num;
k->student.num=t2;
strcpy(s,p1->student.name);
strcpy(p1->student.name,k->student.name);
strcpy(k->student.name,s);
}
}
}
这个是代码你看对你有帮助吗
第3个回答  2008-12-26
我这里由一个 你可以找我要

QQ 15373312
第4个回答  2008-12-27
把你的邮箱给我,我会发给你的本回答被提问者采纳