求成绩管理系统C代码

对学生的成绩信息进行管理,学生信息包括:学号、姓名、学期、每门课程的成绩、平均成绩、名次。实现:学生信息的录入;修改;删除和查询,按学期、学号、成绩不及格等查询。不能用数... 对学生的成绩信息进行管理,学生信息包括:学号、姓名、学期、每门课程的成绩、平均成绩、名次。实现:学生信息的录入;修改;删除和查询,按学期、学号、成绩不及格等查询。
不能用数据库
展开
 我来答
帐号已注销
2010-03-04 · TA获得超过367个赞
知道小有建树答主
回答量:202
采纳率:0%
帮助的人:92.3万
展开全部
/**********************************************
*File Name:StuHead.h *
*Created:07/11/28 *
*Author:Wen He *
*Description:此文件的指责是程序的头文件描述 *
**********************************************/

/*引入头文件*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXSIZE 100 /*定义学生人数*/
#define MAXSUB 4 /*定义课程数目*/
int length; /*定义学生的实际人数*/

/*定义学生结构体*/
typedef struct tagStudent_t
{
char no[11]; /*学号*/
char name[20]; /*姓名*/
int score[MAXSUB];/*各科成绩*/
int sum; /*总分*/
float average; /*平均分*/
}Student;

/*函数声明*/
char menu_select();
void input(Student stuArray[]);
void output(Student stuArr[]);
void search(Student stuAray[]);
int searchByNo(Student stuArr[]);
void searchByName(Student stuArr[]);
void update(Student stuArray[]);
void delete(Student stuArray[]);

----------------------以上是头文件

/**********************************************
*File Name:stuMain.c *
*Created:07/11/28 *
*Author:Wen He *
*Description:此程序的指责为程序的入口,主函数 *
***********************************************/

#include "stuHead.h"

void main()
{
Student stus[MAXSIZE];
while(1)
{
switch(menu_select())
{
case '1':
input(stus);
break;
case '2':
update(stus);
printf("按任意键继续…");
fflush(stdin);
getchar();
break;
case '3':
search(stus);
printf("按任意键继续…");
fflush(stdin);
getchar();
break;
case '4':
delete(stus);
printf("按任意键继续…");
fflush(stdin);
getchar();
break;
case '5':
output(stus);
printf("按任意键继续…");
fflush(stdin);
getchar();
break;
case '0':
printf("\n 谢谢使用!\n");
exit(0);
}
}
}

以上是MAIN

下面是主程序

/**********************************************
*File Name:stuFun.c *
*Created:07/11/28 *
*Author:Wen He *
*Description:此程序的指责为各函数的定义 *
***********************************************/

#include "stuHead.h"

/**********************************************
*Function Name:menu_select
*Description:菜单选择
*Date:07/11/28
*parameter:无
*Author:Wen He
***********************************************/
char menu_select()
{
char MenuItem;

printf("\n ");
printf(" | *********学生成绩管理系统********* | \n");
printf(" | ---------------------------------- | \n");
printf(" | 主菜单项 | \n");
printf(" | ---------------------------------- | \n");
printf(" | 1 --- 录入学生信息 | \n");
printf(" | 2 --- 修改学生信息 | \n");
printf(" | 3 --- 查询学生信息 | \n");
printf(" | 4 --- 删除学生成绩 | \n");
printf(" | 5 --- 显示学生信息 | \n");
printf(" | 6 --- 统计学生成绩 | \n");
printf(" | 0 --- 退出系统 | \n");

do
{
printf("\n 请输入选项(0-5):");
fflush(stdin);
scanf("%c",&MenuItem);
getchar();
}while(MenuItem<'0'||MenuItem>'5');

return MenuItem;
}

/**********************************************
*Function Name:input
*Description:输入学生信息
*Date:07/11/28
*parameter:stuArray[MAXSIZE]
*Author:Wen He
***********************************************/
void input(Student stuArray[])
{
int i,j,k;
char cContinue;
int flag=1;
fflush(stdin);
for(i=length;i<MAXSIZE-1;i++)
{
printf("请输入第%d名学生的学号:",i+1);
scanf("%s",&stuArray[i].no);
if(i>0)
{
for(k=0;k<length;k++)
if(strcmp(stuArray[k].no,stuArray[i].no)==0)
break;
if(k<length)
{
i--;
printf("学号不能重复,请重新输入!");
continue;
}
}
printf("请输入姓名:");
scanf("%s",&stuArray[i].name);
for(j=0;j<MAXSUB;j++)
{
printf("请输入第%d门成绩:",j+1);
scanf("%d",&stuArray[i].score[j]);
if(stuArray[i].score[j]>100||stuArray[i].score[j]<0)
{
printf("错误数据,请重新输入!");
j--;
}
}
stuArray[i].sum=0;
for(j=0;j<MAXSUB;j++)
stuArray[i].sum+=stuArray[i].score[j];
stuArray[i].average=(float)stuArray[i].sum/MAXSUB;
length++;
do
{
flag=1;
fflush(stdin);
printf("需要继续录入吗?(Y/N)");
scanf("%c",&cContinue);
getchar();
switch(cContinue)
{
case 'Y':
case 'y':
flag=0;
break;
case 'N':
case 'n':
return;
}
}while(flag);
}
}

/**********************************************
*Function Name:output
*Description:输出学生信息
*Date:07/11/28
*parameter:stuArray[MAXSIZE]
*Author:Wen He
***********************************************/
void output(Student stuArray[])
{
int i,j;
printf("| 学号 | 姓名 | 成绩1 | 成绩2 | 成绩3 | 成绩4 | 总分 | 平均分 |\n");
printf("|------|--------------|-------|-------|-------|-------|------|--------|\n");
for(i=0;i<length;i++)
{
printf("|%-6s|%-14s|", stuArray[i].no,stuArray[i].name);
for(j=0;j<MAXSUB;j++)
printf("%7d|", stuArray[i].score[j]);
printf("%7d%7.2f\n",stuArray[i].sum, stuArray[i].average); /*输出数组中当前学生的信息*/
}
}

/**********************************************
*Function Name:search
*Description:查询学生信息
*Date:07/11/28
*parameter:stuArray[MAXSIZE]
*Author:Wen He
***********************************************/
void search(Student stuArray[])
{
char menuItem;
printf("\n\n\n"); /*输出三个空行*/
/*---------输出菜单界面开始-----------*/
printf(" | --------------------------------------------|\n");
printf(" | 查询子菜单项 |\n");
printf(" | --------------------------------------------|\n");
printf(" | 1---学号查询 |\n");
printf(" | 2---姓名查询 |\n");
printf(" | 0---返回主菜单 |\n");
printf(" | --------------------------------------------|\n");
/*----------菜单界面输出结束-----------*/
do
{
printf("\n 请输入菜单项数字(0~2):");
fflush(stdin);
scanf("%c",&menuItem);
getchar();
}while(menuItem<'0'||menuItem>'2');
switch(menuItem)
{
case '1':
searchByNo(stuArray);
break;
case '2':
searchByName(stuArray);
break;
}
return;
}

/**********************************************
*Function Name:searchByNo
*Description:按学号查询学生信息
*Date:07/11/28
*parameter:stuArray[MAXSIZE]
*Author:Wen He
***********************************************/
int searchByNo(Student stuArray[])
{
char no[20];
int i;
printf("\n请输入学生的学号:");
scanf("%s",no);
for(i=0;i<length;i++)
if(strcmp(stuArray[i].no,no)==0)
break;
if(i==length)
printf("您输入的学号不存在!\n");
else
{
printf("| 学号 | 姓名 | 成绩1 | 成绩2 | 成绩3 | 成绩4 | 总分 | 平均分 |\n");
printf("|------|--------------|-------|-------|-------|-------|------|--------|\n");
printf("|%-6s|%-14s|%7d|%7d|%7d|%7d|%7d|%7.2f|\n", stuArray[i].no,stuArray[i].name,
stuArray[i].score[0], stuArray[i].score[1], stuArray[i].score[2], stuArray[i].score[3],
stuArray[i].sum, stuArray[i].average); /*输出数组中当前学生的信息*/
}
return i;
}

/**********************************************
*Function Name:searchByName
*Description:按姓名查询学生信息
*Date:07/11/28
*parameter:stuArray[MAXSIZE]
*Author:Wen He
***********************************************/
void searchByName(Student stuArray[])
{
Student stu[10];
char searchName[20];
int i,j,k;
printf("\n请输入要查询学生的姓名:");
scanf("%s",searchName);
for(i=0,j=0;i<length;i++)
if(strcmp(stuArray[i].name,searchName)==0)
{
strcpy(stu[j].no,stuArray[i].no);
strcpy(stu[j].name,searchName);
for(k=0;k<4;k++)
stu[j].score[k]=stuArray[i].score[k];
stu[j].sum=stuArray[i].sum;
stu[j].average=stuArray[i].average;
j++;
}
if(j==0)
printf("您输入的姓名不存在!\n");
else
{
printf("| 学号 | 姓名 | 成绩1 | 成绩2 | 成绩3 | 成绩4 | 总分 | 平均分 |\n");
printf("|------|--------------|-------|-------|-------|-------|------|--------|\n");
for(i=0;i<j;i++)
printf("|%-6s|%-14s|%7d|%7d|%7d|%7d|%7d|%7.2f|\n", stu[i].no,stu[i].name,
stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].score[3],
stu[i].sum, stu[i].average); /*输出数组中当前学生的信息*/
}
}

/**********************************************
*Function Name:update
*Description:修改学生信息
*parameter:stuArray[MAXSIZE]
*Date:07/11/28
*Author:Wen He
***********************************************/
void update(Student stuArray[])
{
char answer;
int i,j;
i=searchByNo(stuArray);
if(i<length)
{
do
{
printf("您要修改的是以上记录吗?(Y/N)");
fflush(stdin);
scanf("%c",&answer);
getchar();
}while(answer!='Y'&&answer!='N'&&answer!='y'&&answer!='n');
if(answer=='Y'||answer=='y')
{
printf("请输入姓名:");
scanf("%s",stuArray[i].name);
stuArray[i].sum=0;
for(j=0;j<MAXSUB;j++)
{
printf("请输入第%d门课程的成绩:",j+1);
scanf("%d",&stuArray[i].score[j]);
stuArray[i].sum+=stuArray[i].score[j];
}
stuArray[i].average=(float)stuArray[i].sum/MAXSUB;
printf("您修改后的信息如下:\n");
printf("| 学号 | 姓名 | 成绩1 | 成绩2 | 成绩3 | 成绩4 | 总分 | 平均分 |\n");
printf("|------|--------------|-------|-------|-------|-------|------|--------|\n");
printf("|%-6s|%-14s|%7d|%7d|%7d|%7d|%7d|%7.2f|\n", stuArray[i].no,stuArray[i].name,
stuArray[i].score[0], stuArray[i].score[1], stuArray[i].score[2], stuArray[i].score[3],
stuArray[i].sum, stuArray[i].average); /*输出数组中当前学生的信息*/

}
}
}

/**********************************************
*Function Name:delete
*Description:删除学生信息
*Date:07/11/28
*parameter:stuArray[MAXSIZE]
*Author:Wen He
***********************************************/
void delete(Student stuArray[])
{
char answer;
int i,j;
i=searchByNo(stuArray);
if(i<length)
{
do
{
printf("您要删除的是以上记录吗?(Y/N)");
fflush(stdin);
scanf("%c",&answer);
getchar();
}while(answer!='Y'&&answer!='N'&&answer!='y'&&answer!='n');
if(answer=='Y'||answer=='y')
{
for(j=i;j<=length-1;j++)
stuArray[j]=stuArray[j+1];
printf("删除成功!");
length--;
}
}
}
亚远景信息科技
2024-12-11 广告
ASPICE认证工程师考试是由ASPICE认证协会组织的认证考试,旨在评估考生在软件开发过程中的能力。考试主要考察软件开发过程的管理能力,包括项目需求分析、软件设计、编程语言、软件测试、项目管理和质量管理等方面。作为上海亚远景信息科技有限公... 点击进入详情页
本回答由亚远景信息科技提供
heiyin_xu
2010-03-04 · TA获得超过101个赞
知道答主
回答量:12
采纳率:0%
帮助的人:19.7万
展开全部
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式