/*
名称:成绩管理系统(单链表实现)
功能:学生信息的添加、修改、删除、查找及显示
特点:加入两种查找方式,登录成绩管理系统需要密码
且密码,且有管理员和学生两种权限
(管理员账号:admin,管理员密码:admin
学生账号:student,学生密码:student);
update:
2013.5.20---成绩管理系统beta1(实现基本功能)
2013.5.29---成绩管理系统beta2(加入文件,内置
网工三班前12号成绩(仅作者乱打的数据)
修复删除了人之后不能马上添加的bug)
*/
#include <cstdio>
#include <cstring>
#include <cstdlib>
struct student
{
long long no;//比如学号为:121052030*
char name[20];//比如姓名为:蒲*
float score[3];//数据结构,高数,英语三门学科成绩
float sum;//总分
float ave;//平均分
struct student *next;//指向下一节点的指针
};
//初始化,有头结点
student *Init()
{
student *stu;
stu = (student *)malloc(sizeof(student));//动态分配内存
stu->next = NULL;
return stu;
}
//登陆函数
int Login()
{
char Name[20];//用户名
char Password[20];//密码
printf("|*************************************|\n");
printf("|*****欢迎进入Neusoft成绩管理系统*****|\n");
printf("|***** 登陆 *****|\n");
printf(" 用户名:_____\b\b\b\b\b");
scanf("%s", Name);
printf(" 密码:_____\b\b\b\b\b");
scanf("%s", Password);
printf("|*************************************|\n\n");
//判断用户名和密码是否正确,以及权限
if (!strcmp("admin", Name) && !strcmp("admin", Password))
{
return 2;
}
else if(!strcmp("student", Name) && !strcmp("student", Password))
{
return 1;
}
else
{
return 0;
}
}
//菜单函数
int Menu()
{
int select;
printf("|*************************************|\n");
printf("|*****欢迎进入Neusoft成绩管理系统*****|\n");
printf("|***** 1.录入新学生信息 *****|\n");
printf("|***** 2.查找学生信息 *****|\n");
printf("|***** 3.修改学生信息 *****|\n");
printf("|***** 4.删除学生信息 *****|\n");
printf("|***** 5.显示学生信息 *****|\n");
printf("|***** 6.退出 *****|\n");
printf("|*************************************|\n");
do//如果输入不合法的选项,就一直进行输入,知道输入正确的选项
{
printf("请输入你的选择:");
scanf("%d", &select);
}while (select>6 || select<1);
return select;
}
//载入文件
void load(student *stu)
{
FILE *fp;
student *stuTemp;//哨兵指针
student *stuNew;//新节点指针
stuTemp = stu;
//判断文件是否能正常打开
if ((fp = fopen("student_list", "rb")) == NULL)
{
printf("Can't open file!\n");
exit (0);
}
//到文件结束前,一次读取文件放到链表中
while (!feof(fp))
{
stuNew = (student *)malloc(sizeof(student));
if (fread(stuNew, sizeof(student), 1, fp)!=1)
{
if (feof(fp))
{
fclose(fp);
return ;
}
printf("File read error!\n");
}
else
{
stuTemp->next = stuNew;
stuTemp = stuNew;
}
}
stuTemp = NULL;
fclose(fp);//关闭文件
}
//信息写入文件函数
void save(student *stu)
{
FILE *fp;
student *stuTemp;//哨兵指针
stuTemp = stu->next;//指向第一个信息节点
//判断文件是否能正常打开
if ((fp = fopen("student_list", "wb"
<数据结构>链式成绩管理系统
最新推荐文章于 2020-08-15 14:18:06 发布