各位大佬C语言程序设计题,帮帮忙?
用c语言实现一个小型的学生信息管理系统,该系统具有增加,删除,查找,修改学生信息功能。(学生信息为:学号,姓名,性别,年龄,年级,专业)...
用c语言实现一个小型的学生信息管理系统,该系统具有增加,删除,查找,修改学生信息功能。(学生信息为:学号,姓名,性别,年龄,年级,专业)
展开
2个回答
展开全部
/****************************************************************/
/* 程 序: 学生成绩管理系统 */
/* 功 能: 主菜单的选择 */
/* 作 者: 戴鹏 */
/* 时 间: 2019-12-11 */
/* 修 改: (请修改为自己的姓名) */
/* 时 间: 2019-12- */
/****************************************************************/
#include "stdafx.h"
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
//#include <memory.h>
#include<string>
using namespace std;
#define MAX_SIZE 30 //学生成绩单最大长度
#define MATH_COL 0 //数学成绩的列号
#define CHI_COL 1 //语文成绩的列号
#define ENG_COL 2 //英语成绩的列号
#define AVE_COL 3 //平均成绩的列号
//输入一条学生记录
void InputLst(char *number, char *name, float *score)
{
printf("请输入学号:"); //输入学号
gets(number);
printf("请输入姓名:"); //输入姓名
gets(name);
score[AVE_COL]=0;
printf("请输入数学成绩:"); //输入数学成绩
cin>>score[MATH_COL];
score[AVE_COL]+=score[MATH_COL];
printf("请输入语文成绩:"); //输入语文成绩
cin>>score[CHI_COL];
score[AVE_COL]+=score[CHI_COL];
printf("请输入英语成绩:"); //输入英语成绩
cin>>score[ENG_COL];
score[AVE_COL]+=score[ENG_COL];
score[AVE_COL]/=3; //计算平均成绩
}
int main(void)
{
int stuListSize; //学生成绩单实际长度,初始情况下长度为0
char number[MAX_SIZE][10]; //学号
char name[MAX_SIZE][11]; //姓名
float score[MAX_SIZE][4]; //各科成绩,按照数组第二维下标,分别对应数学、语文、英语、平均成绩
int statistics[4][5]; //分段统计结果,分数段分别是[100,90],(90,80],(80,70],(70,60],(60,0]
char subject[4][5]={"数学","语文","英语","平均"}; //科目名称
//统计成绩模块使用
char choice; //表示编号
int n,i,j;
stuListSize=0; //创建空表
do
{
system("cls");
printf(" *------------------------------------------------------------*\n");
printf(" | 中国****大学学生成绩管理系统 |\n");
printf(" | 请输入选项编号(0~8): |\n");
printf(" |------------------------------------------------------------|\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(" | 8 —— 统计成绩 |\n");
printf(" | 0 —— 退 出 |\n");
printf(" |------------------------------------------------------------|\n");
printf(" | 开发者:软件工程系- 戴鹏 @2019 |\n");
printf(" *------------------------------------------------------------*\n");
printf("请同学们自己完成:3,5,7三个功能。\n");
choice=getch(); //接收选项
switch(choice) //实现点菜
{
case '1': //创建成绩单
if(stuListSize>0) //非空表
{
printf("\n不能重新创建学生成绩单!\n");
}
else //空表
{
printf("请输入学生人数:"); //输入学生人数
scanf("%d",&n);
if(n>0&&n<=MAX_SIZE) //学生人数合法,[1,MAX_SIZE]
{
for(i=0;i<n;i++) //输入n个学生
{
fflush(stdin); //清空键盘缓冲区
printf("请输入第%2d条记录\n",i+1);
InputLst(number[i],name[i],score[i]);
}
stuListSize=n; //设置当前表长为n;
printf("创建%d条学生记录成功!\n",stuListSize);
}
else //学生人数不合法
{
printf("学生人数范围应在[1,%d]之间,创建学生成绩单失败!\n",MAX_SIZE);
}
}
break;
case '2':
printf("您选择了\"2 —— 添加学生\"\n");
if(stuListSize==MAX_SIZE)
{
printf("学生人数范围应在[1,%d]之间,添加学生失败!\n",MAX_SIZE);
}
else if(stuListSize==0)
{
printf("成绩单为空,请先创建成绩单!\n");
}
else
{
fflush(stdin); //清空键盘缓冲区
printf("请输入第%2d条记录\n",stuListSize+1);
InputLst(number[stuListSize],name[stuListSize],score[stuListSize]);
printf("请输入学号:"); //输入学号
gets(number[stuListSize]);
for(i=0;i<stuListSize;i++) //学号不能重复
{
if(strcmp(number[i],number[stuListSize])==0)
{
printf("输入学号重复!请重新输入!");
break;
}
}
if(i==stuListSize)
InputLst(number[i],name[i],score[i]);
}
break;
case '3'://请完成(可以编辑每一个学生的信息)
printf("您选择了\"3 —— 编辑学生\"\n");
// 请补充以下代码;
break;
case '4': //请完成(可以根据学号删除学生)
printf("您选择了\"4 —— 删除学生\"\n");
fflush(stdin);
printf("请输入学号:");
gets(number[stuListSize]);
for(i=0;i<stuListSize;i++)
{
if(strcmp(number[i],number[stuListSize])==0)
{
if(i==stuListSize-1)
stuListSize--;
else {
for(j=0;j<10;j++)
{
char temp;
temp=number[i][j];
number[i][j]=number[stuListSize-1][j];
number[stuListSize-1][j]=temp;
}
stuListSize--;
}
}
if(i==stuListSize)
printf("查找不到该学生!");
}
break;
case '5':
printf("您选择了\"5 —— 查找学生\"\n");
// 请补充以下代码;
break;
case '6': //浏览成绩单
if( 0 == stuListSize ) //表空
{
printf("无学生记录,请创建成绩单或添加学生!\n");
}
else //表不空
{
//输出表头
printf("%4s%12s%12s%10s%10s%10s%10s\n",
"序号","学号","姓名","数学","语文","英语","平均");
for(i=1;i<=68;i++)
putchar('=');
printf("\n");
//输出表体
for(i=0;i<stuListSize;i++) //输出stuListSize个学生成绩信息
{
printf("%4d%12s%12s",i+1,number[i],name[i]); //输出学号、姓名
for(j=0;j<4;j++) //输出数学、语文、英语、平均成绩
printf("%10.1f",score[i][j]);
printf("\n");
}
}
break;
case '7': //排序成绩单
printf("您选择了\"7 —— 排序成绩单\"\n");
// 请补充以下代码;
break;
case '8':
if( 0== stuListSize ) //表空
{
printf("无学生记录,请创建成绩单!\n");
break; //结束switch
}
memset(statistics,0,sizeof(statistics)); //初始化statistics数组元素都为0
for(i=0;i<stuListSize;i++) //统计
{
for(j=0;j<4;j++)
{
if( score[i][j]<=100 && score[i][j]>=90 ) //[100,90]
statistics[j][0]++;
else
if( score[i][j]<90 && score[i][j]>=80 ) //(90,80]
statistics[j][1]++;
else
if( score[i][j]<80 && score[i][j]>=70 ) //(80,70]
statistics[j][2]++;
else
if( score[i][j]<70 && score[i][j]>=60 ) //(70,60]
statistics[j][3]++;
else
statistics[j][4]++;
}
}
//显示统计结果
printf("%10s%10s%10s%10s%10s%10s\n", //打印表头
"科目","90分以上","80~89","70~79","60~69","60分以下");
for(i=0;i<4;i++) //打印四行数据(4科),每行包括:科目名称,5个分数段人次数
{
printf("%10s",subject[i]);
for(j=0;j<5;j++)
printf("%10d",statistics[i][j]);
printf("\n");
}
break;
case '0':
printf("您选择了\"0 —— 退出\"\n");
break;
default:
printf("非法输入\n");
break;
}
system("pause"); //提示用户“按任意键继续......”
}while(choice!='0'); //当选择0编号时退出系统
return 0;
}
/* 程 序: 学生成绩管理系统 */
/* 功 能: 主菜单的选择 */
/* 作 者: 戴鹏 */
/* 时 间: 2019-12-11 */
/* 修 改: (请修改为自己的姓名) */
/* 时 间: 2019-12- */
/****************************************************************/
#include "stdafx.h"
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
//#include <memory.h>
#include<string>
using namespace std;
#define MAX_SIZE 30 //学生成绩单最大长度
#define MATH_COL 0 //数学成绩的列号
#define CHI_COL 1 //语文成绩的列号
#define ENG_COL 2 //英语成绩的列号
#define AVE_COL 3 //平均成绩的列号
//输入一条学生记录
void InputLst(char *number, char *name, float *score)
{
printf("请输入学号:"); //输入学号
gets(number);
printf("请输入姓名:"); //输入姓名
gets(name);
score[AVE_COL]=0;
printf("请输入数学成绩:"); //输入数学成绩
cin>>score[MATH_COL];
score[AVE_COL]+=score[MATH_COL];
printf("请输入语文成绩:"); //输入语文成绩
cin>>score[CHI_COL];
score[AVE_COL]+=score[CHI_COL];
printf("请输入英语成绩:"); //输入英语成绩
cin>>score[ENG_COL];
score[AVE_COL]+=score[ENG_COL];
score[AVE_COL]/=3; //计算平均成绩
}
int main(void)
{
int stuListSize; //学生成绩单实际长度,初始情况下长度为0
char number[MAX_SIZE][10]; //学号
char name[MAX_SIZE][11]; //姓名
float score[MAX_SIZE][4]; //各科成绩,按照数组第二维下标,分别对应数学、语文、英语、平均成绩
int statistics[4][5]; //分段统计结果,分数段分别是[100,90],(90,80],(80,70],(70,60],(60,0]
char subject[4][5]={"数学","语文","英语","平均"}; //科目名称
//统计成绩模块使用
char choice; //表示编号
int n,i,j;
stuListSize=0; //创建空表
do
{
system("cls");
printf(" *------------------------------------------------------------*\n");
printf(" | 中国****大学学生成绩管理系统 |\n");
printf(" | 请输入选项编号(0~8): |\n");
printf(" |------------------------------------------------------------|\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(" | 8 —— 统计成绩 |\n");
printf(" | 0 —— 退 出 |\n");
printf(" |------------------------------------------------------------|\n");
printf(" | 开发者:软件工程系- 戴鹏 @2019 |\n");
printf(" *------------------------------------------------------------*\n");
printf("请同学们自己完成:3,5,7三个功能。\n");
choice=getch(); //接收选项
switch(choice) //实现点菜
{
case '1': //创建成绩单
if(stuListSize>0) //非空表
{
printf("\n不能重新创建学生成绩单!\n");
}
else //空表
{
printf("请输入学生人数:"); //输入学生人数
scanf("%d",&n);
if(n>0&&n<=MAX_SIZE) //学生人数合法,[1,MAX_SIZE]
{
for(i=0;i<n;i++) //输入n个学生
{
fflush(stdin); //清空键盘缓冲区
printf("请输入第%2d条记录\n",i+1);
InputLst(number[i],name[i],score[i]);
}
stuListSize=n; //设置当前表长为n;
printf("创建%d条学生记录成功!\n",stuListSize);
}
else //学生人数不合法
{
printf("学生人数范围应在[1,%d]之间,创建学生成绩单失败!\n",MAX_SIZE);
}
}
break;
case '2':
printf("您选择了\"2 —— 添加学生\"\n");
if(stuListSize==MAX_SIZE)
{
printf("学生人数范围应在[1,%d]之间,添加学生失败!\n",MAX_SIZE);
}
else if(stuListSize==0)
{
printf("成绩单为空,请先创建成绩单!\n");
}
else
{
fflush(stdin); //清空键盘缓冲区
printf("请输入第%2d条记录\n",stuListSize+1);
InputLst(number[stuListSize],name[stuListSize],score[stuListSize]);
printf("请输入学号:"); //输入学号
gets(number[stuListSize]);
for(i=0;i<stuListSize;i++) //学号不能重复
{
if(strcmp(number[i],number[stuListSize])==0)
{
printf("输入学号重复!请重新输入!");
break;
}
}
if(i==stuListSize)
InputLst(number[i],name[i],score[i]);
}
break;
case '3'://请完成(可以编辑每一个学生的信息)
printf("您选择了\"3 —— 编辑学生\"\n");
// 请补充以下代码;
break;
case '4': //请完成(可以根据学号删除学生)
printf("您选择了\"4 —— 删除学生\"\n");
fflush(stdin);
printf("请输入学号:");
gets(number[stuListSize]);
for(i=0;i<stuListSize;i++)
{
if(strcmp(number[i],number[stuListSize])==0)
{
if(i==stuListSize-1)
stuListSize--;
else {
for(j=0;j<10;j++)
{
char temp;
temp=number[i][j];
number[i][j]=number[stuListSize-1][j];
number[stuListSize-1][j]=temp;
}
stuListSize--;
}
}
if(i==stuListSize)
printf("查找不到该学生!");
}
break;
case '5':
printf("您选择了\"5 —— 查找学生\"\n");
// 请补充以下代码;
break;
case '6': //浏览成绩单
if( 0 == stuListSize ) //表空
{
printf("无学生记录,请创建成绩单或添加学生!\n");
}
else //表不空
{
//输出表头
printf("%4s%12s%12s%10s%10s%10s%10s\n",
"序号","学号","姓名","数学","语文","英语","平均");
for(i=1;i<=68;i++)
putchar('=');
printf("\n");
//输出表体
for(i=0;i<stuListSize;i++) //输出stuListSize个学生成绩信息
{
printf("%4d%12s%12s",i+1,number[i],name[i]); //输出学号、姓名
for(j=0;j<4;j++) //输出数学、语文、英语、平均成绩
printf("%10.1f",score[i][j]);
printf("\n");
}
}
break;
case '7': //排序成绩单
printf("您选择了\"7 —— 排序成绩单\"\n");
// 请补充以下代码;
break;
case '8':
if( 0== stuListSize ) //表空
{
printf("无学生记录,请创建成绩单!\n");
break; //结束switch
}
memset(statistics,0,sizeof(statistics)); //初始化statistics数组元素都为0
for(i=0;i<stuListSize;i++) //统计
{
for(j=0;j<4;j++)
{
if( score[i][j]<=100 && score[i][j]>=90 ) //[100,90]
statistics[j][0]++;
else
if( score[i][j]<90 && score[i][j]>=80 ) //(90,80]
statistics[j][1]++;
else
if( score[i][j]<80 && score[i][j]>=70 ) //(80,70]
statistics[j][2]++;
else
if( score[i][j]<70 && score[i][j]>=60 ) //(70,60]
statistics[j][3]++;
else
statistics[j][4]++;
}
}
//显示统计结果
printf("%10s%10s%10s%10s%10s%10s\n", //打印表头
"科目","90分以上","80~89","70~79","60~69","60分以下");
for(i=0;i<4;i++) //打印四行数据(4科),每行包括:科目名称,5个分数段人次数
{
printf("%10s",subject[i]);
for(j=0;j<5;j++)
printf("%10d",statistics[i][j]);
printf("\n");
}
break;
case '0':
printf("您选择了\"0 —— 退出\"\n");
break;
default:
printf("非法输入\n");
break;
}
system("pause"); //提示用户“按任意键继续......”
}while(choice!='0'); //当选择0编号时退出系统
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询