/***********************************************************
我的信息: *
姓名: 汪建林 生日:1985年2月26日 *
毕业学校: 2007年于成都理工大学 *
家乡地址: 四川渠县望溪乡包山村5组 *
联系QQ: 287307421 联系电话: 13558690869 *
联系Email: wangjianlin1985@126.com 287307421 *
双鱼林程序淘宝店: http://shop34864101.taobao.com *
双鱼林程序拍拍店: http://287307421.paipai.com *
网站: http://www.shuangyulin.com *
*
需要更多程序可以联系我,保证运行! *
***********************************************************/
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "string.h"
#define N 10
#define FILENAME "student.txt"
typedef struct
{
int num1;
char name1[10];
int fen;
}LESSON;
typedef struct
{
int num2; /*学号*/
char name2[10];/*姓名*/
char xing[10];
int num3;
int tele;
float score[3];
float zong;
float fen2;
}STUDENT;
/*******************************************************
功能:显示菜单
参数:无
返回值:无
*******************************************************/
void displayMenu()
{
printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("+ 学生成绩管理系统2.0 +\n");
printf("+ +\n");
printf("+ 1. 输入课程信息 +\n");
printf("+ 2. 输入学生信息成绩 +\n");
printf("+ 3. 学生基本情况查询 +\n");
printf("+ 4. 成绩查询 +\n");
printf("+ 5. 删除信息 +\n");
printf("+ 6. 按综合成绩或实得学分升序或降序排序并显示数据 +\n");
printf("+ 7. 程序结束 +\n");
printf("+ +\n");
printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
}
/*******************************************************
功能:登陆函数,验证口令
参数:
参数1:n
类型:char []
说明:用户输入口令
返回值:1或0
类型:int
说明:1表示通过验证;0表示没有通过
*******************************************************/
int login(char password[])
{
static char LESSONy[10]="123";
if(strcmp(password,LESSONy)==0)
return 1;
else
return 0;
}
int readFromFile2(LESSON lesson[])
{
FILE *fp=NULL;
int i=0;
fp=fopen("student2","rb");
if(fp!=NULL)
{
while(!feof(fp))
{
if(i>=N)
break;
if(fread(lesson+i,sizeof(LESSON),1,fp))
i++;
}
fclose(fp);
}
return i;
}
/*******************************************************
功能:从文件读信息到结构体数组中
参数:
参数1:student[]
类型:STUDENT []
说明:用来存储从文件读到的学生信息
返回值:i
类型:int
说明:表示实际读取到的个数
*******************************************************/
int readFromFile(STUDENT student[])
{
FILE *fp=NULL;
int i=0;
fp=fopen(FILENAME,"rb");
if(fp!=NULL)
{
while(!feof(fp))
{
if(i>=N)
break;
if(fread(student+i,sizeof(STUDENT),1,fp))
i++;
}
fclose(fp);
}
return i;
}
/*******************************************************
功能:判断学号是否唯一
参数:
参数1:student[]
类型:STUDENT []
说明:存储学生信息的数组
参数2:length
类型:int
说明:表示实际数组的长度
参数2:stuNumber
类型:int
说明:要判断的学号
返回值:1或0(flag)
类型:int
说明:1表示学号唯一;0表示学号不唯一
*******************************************************/
int unique(STUDENT student[],int length,int stuNumber)
{
int flag=1,i;
for(i=0;i<length;i++)
{
if(student[i].num2==stuNumber)
{
flag=0;
break;
}
}
return flag;
}
void inputInfo1(LESSON *lesson)
{
printf("请输入课程信息:\n");
printf("课程编号:");
scanf("%d",&lesson->num1);
printf("课程名称:");
scanf("%s",lesson->name1);
printf("学分:");
scanf("%d",&lesson->fen);
}
int inputInfo2(STUDENT student[],int length)
{
int i=length;
int endFlag=0;
printf("请输入学生信息(以学号为0结束):\n");
while(i<N)
{
while(1)
{
int flag;
printf("学号:");
scanf("%d",&student[i].num2);
if(student[i].num2==0)
{
endFlag=1;
break;
}
flag=unique(student,i,student[i].num2);
if(flag) break;
printf("该学号已经存在,请重新输入!\n");
}
if(endFlag==1)
break;
printf("姓名:");
scanf("%s",student[i].name2);
printf(" 性别:");
scanf("%s",student[i].xing);
while(1)
{
printf("宿舍号码:");
if(scanf("%d",&student[i].num3)==1)
break;
printf("输入格式不对,请重新输入!\n");
while(getchar()!='\n')
continue;
}
while(1)
{
printf("电话号码:");
if(scanf("%d",&student[i].tele)==1)
break;
printf("输入格式不对,请重新输入!\n");
while(getchar()!='\n')
continue;
}
while(1)
{
printf("平时成绩:");
if(scanf("%f",&student[i].score[1])==1)
break;
printf("输入格式不对,请重新输入!\n");
while(getchar()!='\n')
continue;
}
while(1)
{
printf("实验成绩:");
if(scanf("%f",&student[i].score[2])==1)
break;
printf("输入格式不对,请重新输入!\n");
while(getchar()!='\n')
continue;
}
while(1)
{
printf("卷面成绩:");
if(scanf("%f",&student[i].score[3])==1)
break;
printf("输入格式不对,请重新输入!\n");
while(getchar()!='\n')
continue;
}
while(getchar()!='\n')
continue;
i++;
}
return i;
}
/*输入一个学号,查出此生的基本信息并显示输出*/
void xuehao(STUDENT student[],int length,int stuNum2)
{
int i=0;
for(i=0;i<length;i++)
{
if(stuNum2==student[i].num2)
{
printf("找到啦!他的基本信息是 :%d\n", i);
printf("%-4s %-4s %-4s %-8s %-8s %-10s %-8s %-8s","学号","姓名","性别","宿舍号码","电话号码","平时成绩","实验成绩","卷面成绩","综合成绩","实得学分");
printf("\n%-4d %-4s %-4s %-8d %-8d %-4f %-3f %-3f %-8f %-8f\n",student[i].num2,student[i].name2,student[i].xing,student[i].num3,student[i].tele,student[i].score[1],student[i].score[2],student[i].score[3],student[i].zong,student[i].fen2);
break;
}
}
if(i>=length)
printf("\n不存在!\n");
}
/*输入一个姓名,查出此生的基本信息并显示输出。*/
void name(STUDENT student[],int length,char stuname2[])
{
int i=0;
for(i=0;i<length;i++)
{
if(strcmp(stuname2,student[i].name2)==0)
{
printf("找到啦!他的基本信息是 :%d\n", i);
printf("%-4s %-4s %-4s %-8s %-8s %-10s %-8s %-8s","学号","姓名","性别","宿舍号码","电话号码","平时成绩","实验成绩","卷面成绩","综合成绩","实得学分");
printf("\n%-4d %-4s %-4s %-8d %-8d %-4f %-3f %-3f %-8f %-8f\n",student[i].num2,student[i].name2,student[i].xing,student[i].num3,student[i].tele,student[i].score[1],student[i].score[2],student[i].score[3],student[i].zong,student[i].fen2);
break;
}
}
if(i>=length)
printf("\n不存在!\n");
}
/*输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。*/
void suse(STUDENT student[],int length,int stuNum3)
{
int i=0;
for(i=0;i<length;i++)
{
if(stuNum3==student[i].num3)
{
printf("找到啦!他们的基本信息是 :%d\n", i);
printf("%-4s %-4s %-4s %-8s %-8s %-10s %-8s %-8s","学号","姓名","性别","宿舍号码","电话号码","平时成绩","实验成绩","卷面成绩","综合成绩","实得学分");
printf("\n%-4d %-4s %-4s %-8d %-8d %-4f %-3f %-3f %-8f %-8f\n",student[i].num2,student[i].name2,st
赵无极写JAVA
- 粉丝: 2574
- 资源: 172
最新资源
- RTP Payload Format for Scalable Video Coding
- 移树机模型sw16可编辑全套技术开发资料100%好用.zip
- 小型桌面插四方针设备(含工程图sw12可编辑)全套技术开发资料100%好用.zip
- java项目,毕业设计-沁园健身房预约管理系统
- HTML CSS JavaScript 实现3D动态圣诞树网页效果
- ★单片机串口实现字符串命令解析-使用函数指针(类似哈希表)
- 自动驾驶横纵向控制,纵向采用pid控制,横向采用mpc控制,根据的是车辆二自由度车辆动力学模型,得到各矩阵之后在S函数里面进行编写,纵向参考百度Apollo纵向双环PID控制算法,横向参考百度Apol
- C# FPC上料机配套软件源码WPF
- 裂缝检测21-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- C++控制台应用中圣诞树图案绘制程序
- 电子秤实物量产资料 原理图和PCB文件及BOM,源码HEX 量产HX711电子秤采集模块全套资料 1.串口波特率19200; 2.上电后直接串口打印称重数据; 3.可以发指令校零传感器,读取称重数值
- java项目,毕业设计-时间管理系统
- 一个基于C#开发的上位机数据转换库.zipwinform
- C语言实现控制台打印圣诞树程序详解
- CC工具箱Arcgispro版
- A星算法 A*算法 自己研究编写的Matlab路径规划算法 Astar算法走迷宫 可自行设置起始点,目标点,自由更地图 - 可以和人工势场法融合 动态障碍物(默认
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈