问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何制作一个数据库学生管理系统?

发布网友 发布时间:2022-04-29 02:26

我来回答

1个回答

热心网友 时间:2022-04-09 09:51

还真不想再写代码了啊。。。。。

直接跟你说下思路吧。。。。

首先创建一个结构体,如——

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-MAIL:11247931@qq.com
刚买了个 iphone3G 一更新麻烦了出现了错误1014 而且手机什么都没有了... Dell vostro 1014新机怎样分区? macosv1014以上版本怎么更新 江苏智能锁种类 陕西有那些换锁哪家省钱 有必要买大牌的智能门锁吗? 陕西口碑好指纹锁哪家省钱 如何设置excel每页打印表头 excel打印多页表格时怎么设置每页都有表头 我的笔记本是DV4现在进不去系统, winpe识别不了硬盘 bios找不到... 怎么设置手机滑动屏幕的速度 固体酒精成分 智能手机连续左右快速滑动屏幕会对手机造成伤害吗?比如找寻某个软件。我看到有些人是把多个软件放在一个 手机屏幕快速滑动的时候很流畅,但是慢慢滑动的时候就会一卡一卡的不流畅? 手机换了个屏幕,开始测试都是好好的,一装上就上下快速滚动闪屏,是什么原因? 华为荣耀9x手机滚动截屏速度太快了,截长屏体验较差,有没有什么解决办法... 啊固体酒精 新换的小米2s手机屏幕上下滑动太快不准 简单连接以下设备(视频会议系统)怎么连接哦,谢谢! 手机向上划动屏幕时页面滑动太快怎么调整 天翼会议系统怎么连接不上摄像头 会议系统设备各插接口是怎样连接的? 有没视频可观看 平常滑动手机屏幕!有时候会滑动的很快!有时候很慢! 手机屏幕上下滑动怎么出现较快较慢? 为什么有时候滑动屏幕时,会突然快速的滑好几行 远程视频会议分会场会议室设备如何连接 快手直播送什么礼物最好??详细一点 网易云音乐直播时该送主播什么礼物? 有谁知道会议系统设备如何配置? 会议系统各设备连接方法 三星G7505Q手机屏幕滑动太快是什么问题 如何用SQL建立一个学生成绩管理系统数据库 如何制作一个数据库学生管理系统 如何用数据库建立学生成绩管理系统? 手机屏幕滑动感觉慢,有什么办法能调快点 评定10级伤残标准是什么? 伤残鉴定标准十级标准是什么 怎么用java+sql数据库做一个学生信息管理系统 任何华为实体店可以修华为手机吗 sql2005数据库学生管理系统怎么创建》? 钉钉怎么私聊群里的老师- 问一问 学生管理系统用什么数据库制作合适? 华为手机店可以维修吗 用Access数据库做学生管理系统。 钉钉里设置不能私了怎办 学生信息管理系统的数据库设计 华为手机没卡,能去手机店修吗? java与数据库连接做学生管理系统 用java和数据库做一个学生信息管理系统(java 数据库)? 用ACCESS做学生管理系统的数据库