学生管理系统数据库
学生管理系统数据库制作,需要搞清楚需求,才能针对需求去做相应的数据库设计。建议先罗列你要实现的功能,如果仅仅是学生基本信息管理,要考虑各类信息的复杂度,比方说管理学生的基本信息如:姓名、性别、学号、联系方式等等
学生的学科,学生的每年成绩,
1.确定学生管理系统的实体、属性和联系。
2.将实体、属性和联系转化为E_R图。
3.将E_R图转化为表,写出关系模式。
4.数据完整性设计(即实体完整性:设置每张表的主码;参照完整性:设置必要的外码;区域完整性:设置各字段的类型、宽度、取值范围、默认值与约束条件等)。
5.使用SQL SERVER 2000建立数据库,利用JDBC、ODBC或ADO技术实现后台数据库和前台应用程序的连接,选择自己熟悉的可视化开发工具,编程实现应用系统,并输人数据、调试运行系统。
还真不想再写代码了啊。。。。。
直接跟你说下思路吧。。。。
首先创建一个结构体,如——
struct student
{
char num[10]; //学号
char name[20]; //姓名
char sex[4]; //性别
int age; //年龄
int flag; //一个标示符(下面会说用法)
};
然后就定义一个student类型的数组stu[max],在前面#define max 1000000,你也可以把max定义得小一点,这是用来表示最大能容纳多少个学生信息。。。。
说到flag的用处,我不清楚你了不了解,还是先跟你说下吧。。。。
先考一下你,知道怎样把一个数组里面的某一个元素清空吗?清空就表示能在那个位置再次赋值,没清空的位置就不能重复赋值。把那个元素设为a[x],可能你会想着把a[x]=0不就得啦,那好,如果用这种方法,那么如果你想寻找数组a中可以再次赋值的元素,然后进行赋值,你是不是要通过一个判别式来对数组a的每一个元素进行判断,看看它是否能被再赋值,对吧,那这个判别式肯定就是判断a中的数值是否为零了。但是你想一下,如果一开始a中某个元素的值就是等于0,并不表示清空状态,那你这样的判别式能成立吗,所以我们要用到一个标示符flag。。。。
当flag=1时,表示该数组的元素已存在,当flag=0时,表示该数组的元素是无效的,这样的话就不需要对数组中的每个元素进行什么清空操作了,就像上面的数组stu,这么多元素,你怎么清空。。。。
然后有一个最重要的是怎样存储数据,因为没用到数据库,所以就用txt文件来存储吧,给你一个相关的代码——
int load_student() //把已存在的储存数据的txt文件打开
{
FILE *fp;
if((fp=fopen("student.txt","rb"))==NULL) //判断文件是否存在
{
printf("不能打开此文件.\n");
exit(0);
}
for(int i=0;i<SIZE;i++) //存在的话就打开它
{
fread(&stu[i],sizeof(struct student),1,fp);
}
fclose(fp);
return 0;
}
int save_student() //把数据存放进txt文件中
{
FILE *fp;
if((fp=fopen("student.txt","wb"))==NULL)
{
printf("不能打开此文件.\n");
exit(0);
}
for(int i=0;i<SIZE;i++)
{
fwrite(&stu[i],sizeof(struct student),1,fp);
}
fclose(fp);
return 0;
}
这是一个比较基本的代码,你可以灵活的修改一下,实现读写过程的代码也就是这样了。。。。
然后是功能的实现,这方面就得看你的要求了,不过我建议你把每个界面做成一个函数,实现模块化,如——
int shouye() //首页
{
system("cls"); //清屏
int num1;
printf("**********************************\n");
printf(" 学生信息管理系统 \n");
printf("**********************************\n");
printf("\n\n");
printf("1、更改学生信息\n\n");
printf("2、查看学生信息\n\n");
printf("3、退出系统\n\n");
scanf("%d",&num1); //输入操作
if(num1==1)
update(); //进入学生信息更改模块
else if(num1==2)
check(); //进入学生信息查看模块
else
exit(0); //退出系统
return 0;
}
在给多你一个界面函数的代码吧——
int update()
{
system("cls");
int num2;
printf("**********************************\n");
printf(" 更改成绩 \n");
printf("**********************************\n");
printf("\n\n");
printf("1、增加学生信息\n\n");
printf("2、修改学生信息\n\n");
printf("3、返回上一层\n\n");
scanf("%d",&num2);
if(num2==1)
add();
else if(num2==2)
correct();
else
shouye();
return 0;
}
大概就是这种模式,我就不多弄了,你自己开拓一下吧,可能你会问我主函数怎么实现,大概就是这样吧——
int main()
{
load_student(); //读取txt里面的内容
shouye();
return 0;
}
这里要说明一下,我给你这代码还不怎么完善的,只是简单跟你说下思路罢了,如果你招着复制的话,要记住,在你第一次运行之前,要先在你这工程目录低下创建一个名字为student的txt文件,不然会显示错误,因为load_student()那里就会判断是否存在student.txt文件,没的话就会显示错误的。。。。
我建议你简单地画下流程图,这样可以让你的编程思路更清晰,如果还有什么不清楚的地方可以Q我,410430209。。。。
希望这些对你有所帮助。。。。
首先,进行系统需求分析!
学生管理系统,顾名思义,就是用来管理的,具体管理什么呢?选课管理、成绩管理、信息管理等等!
然后,进行概念设计,主要是画E-R图模型。
E-R图模型是为了展现系统中出现的各个实体相互之间的联系的。此外,实体的各个属性也要写得很明确!总的来说,概念设计就是把需求分析阶段得出的成果用一个很简洁明了的图来表示!让用户一看就能明白该系统都有什么,是做什么用的!
其次呢,进行逻辑设计。
简单的说就是把实体和联系都转化为关系模式,即与关系表要一一对应~
最后呢。。。。当然就实地制作啦·`~Over~