C语言实训

/*8、学生成绩管理系统

学生属性:学号,姓名,入学年月,有成绩的学期数,四门课的成绩等9个成员,

在编程中要求当执行状态输入i为输入学生记录,输入D为删除,输入s为查询(以学号为查询条件,输入p为将整个学生记录输出,使用结构数组或结构指针编程)

*/

#include "stdio.h"

#include "conio.h"

#include "stdlib.h"

#include "string.h"

#include "windows.h"

int stu_num=0; //全局变量,已输入成绩的学生人数

struct student //结构体数组,用于储存学生的数据

{

char num[11]; //储存学号

char name[11]; //储存名字

char sex[3]; //储存性别

char date[11]; //储存入学年月

int term; //储存学期数

float score1; //储存成绩1

float score2; //储存成绩2

float score3; //储存成绩3

float score4; //储存成绩4

}student[100];

void warning() //警告函数

{

char a;

printf("您所查找的学生暂无数据,按任意键返回重新输入");

a=getch(); //储存任意键

}

void input() //输入函数

{

char a;

do

{

system("cls");

printf("(i)输入学生数据\n(e)返回主菜单\n请输入您要执行的选项:");

a=getch(); //获取输入选项

if(a=='i'||a=='I') //输入学生数据

{

system("cls"); //清屏函数

printf("下面输入第%d个学生的数据\n学号:",stu_num+1); //以下操作储存学生数据于结构体中

scanf("%s",&student[stu_num].num);

printf("姓名:");

scanf("%s",&student[stu_num].name);

printf("性别:");

scanf("%s",&student[stu_num].sex);

printf("入学年月:");

scanf("%s",&student[stu_num].date);

printf("学期:");

scanf("%d",&student[stu_num].term);

printf("成绩1:");

scanf("%f",&student[stu_num].score1);

printf("成绩2:");

scanf("%f",&student[stu_num].score2);

printf("成绩3:");

scanf("%f",&student[stu_num].score3);

printf("成绩4:");

scanf("%f",&student[stu_num].score4);

stu_num++;

}

if(a=='e'||a=='E') //退出输入函数

{

break; //强制结束循环以退出输入函数

}

}while(1);

}

void output() //输出函数

{

system("cls"); //清屏函数

int i,j;

printf("学号\t 姓名 性别 入学年月 学期 成绩1 成绩2 成绩3 成绩4\n");

for(i=0;i<stu_num;i++) //通过for语句逐个输出学生数据

{

printf("%-12s%-8s%-8s%-10s%-6d%-8.2f%-8.2f%-8.2f%-5.2f\n",student[i].num,student[i].name,student[i].sex,student[i].date,student[i].term,student[i].score1,student[i].score2,student[i].score3,student[i].score4);

}

printf("按任意键返回主菜单");

j=getch(); //储存任意键

}

void revise() //修改函数

{

int i=0;

char a,num[11],name[11];

st: system("cls"); //清屏函数

printf("(x)按学号查找修改\n(m)按名字查找修改\n(e)返回主菜单\n请输入您要执行的选项:");

a=getch(); //获取输入选项

if(a=='x'||a=='X') //按学号查找

{

printf("请输入该学生学号:");

scanf("%s",&num); //输入查找数据并用for语句进行逐个对比

for(i=0;i<stu_num;i++)

{

if(strcmp(num,student[i].num)==0)

{

break; //找到后结束循环

}

}

}

else if(a=='m'||a=='M') //按姓名查找

{

printf("请输入该学生姓名:");

scanf("%s",&name); //输入查找数据并用for语句进行逐个对比

for(i=0;i<stu_num;i++)

{

if(strcmp(name,student[i].name)==0)

{

break; //找到后结束循环

}

}

}

else if(a=='e'||a=='E') //退出修改函数

{

return;

}

else //为了防止选错选项

{

goto st;

}

if(i==stu_num) //未找到学生数据时提示警告并重新查找

{

warning();

goto st;

}

system("cls");

printf("您要更改的学生的信息为:\n"); //输出欲修改的学生信息

printf("学号\t 姓名 性别 入学年月 学期 成绩1 成绩2 成绩3 成绩4\n");

printf("%-12s%-8s%-8s%-10s%-6d%-8.2f%-8.2f%-8.2f%-5.2f\n",student[i].num,student[i].name,student[i].sex,student[i].date,student[i].term,student[i].score1,student[i].score2,student[i].score3,student[i].score4);

printf("请更新该学生的数据\n学号:"); //找到后进行数据更新

scanf("%s",&student[i].num);

printf("姓名:");

scanf("%s",&student[i].name);

printf("性别:");

scanf("%s",&student[i].sex);

printf("入学年月:");

scanf("%s",&student[i].date);

printf("学期:");

scanf("%d",&student[i].term);

printf("成绩1:");

scanf("%f",&student[i].score1);

printf("成绩2:");

scanf("%f",&student[i].score2);

printf("成绩3:");

scanf("%f",&student[i].score3);

printf("成绩4:");

scanf("%f",&student[i].score4);

printf("该学生数据已修改,按任意键返回");

a=getch(); //储存任意键

}

void search() //查询函数

{

int i=0;

char a,num[11],name[11];

st: system("cls"); //清屏函数

printf("(x)按学号查找\n(m)按名字查找\n(e)返回主菜单\n请输入您要执行的选项:");

a=getch(); //获取输入选项

if(a=='x'||a=='X') //按学号查找

{

printf("请输入该学生学号:");

scanf("%s",&num); //输入查找数据并用for语句进行逐个对比

for(i=0;i<stu_num;i++)

{

if(strcmp(num,student[i].num)==0)

{

break; //找到后结束循环

}

}

}

else if(a=='m'||a=='M') //按姓名查找

{

printf("请输入该学生姓名:");

scanf("%s",&name); //输入查找数据并用for语句进行逐个对比

for(i=0;i<stu_num;i++)

{

if(strcmp(name,student[i].name)==0)

{

break; //找到后结束循环

}

}

}

else if(a=='e'||a=='E') //退出查询函数

{

return;

}

else //为了防止选错选项

{

goto st;

}

if(i==stu_num) //未找到学生数据时提示警告并重新查找

{

warning();

goto st;

}

printf("学号\t 姓名 性别 入学年月 学期 成绩1 成绩2 成绩3 成绩4\n");

printf("%-12s%-8s%-8s%-10s%-6d%-8.2f%-8.2f%-8.2f%-5.2f\n",student[i].num,student[i].name,student[i].sex,student[i].date,student[i].term,student[i].score1,student[i].score2,student[i].score3,student[i].score4);

printf("按任意键返回主菜单");

a=getch();

}

void del() //删除函数

{

int i=0,j;

char a,num[11],name[11];

st: system("cls"); //清屏函数

printf("(x)按学号查找删除\n(m)按名字查找删除\n(e)返回主菜单\n请输入您要执行的选项:");

a=getch(); //获取输入选项

if(a=='x'||a=='X') //按学号查找

{

printf("请输入该学生学号:");

scanf("%s",&num); //输入查找数据并用for语句进行逐个对比

for(i=0;i<stu_num;i++)

{

if(strcmp(num,student[i].num)==0)

{

break; //找到后结束循环

}

}

}

else if(a=='m'||a=='M') //按姓名查找

{

printf("请输入该学生姓名:");

scanf("%s",&name); //输入查找数据并用for语句进行逐个对比

for(i=0;i<stu_num;i++)

{

if(strcmp(name,student[i].name)==0)

{

break; //找到后结束循环

}

}

}

else if(a=='e'||a=='E') //退出删除函数

{

return;

}

else

{

goto st; //为了防止选错选项

}

if(i==stu_num) //未找到学生数据时提示警告并重新查找

{

warning();

goto st;

}

for(j=i;j<stu_num;j++) //通过for语句进行数据覆盖实现删除学生数据

{

student[j]=student[j+1];

}

stu_num-=1;

printf("该学生数据已删除,按任意键返回主菜单");

a=getch();

}

void menu() //目录函数

{

do

{

char a;

st: system("cls"); //清屏函数

printf("\t\t 欢迎使用学生成绩管理系统 1.22版\n\n\n\t\t\t(i)输入学生数据\n\n\t\t\t(d)删除学生数据\n\n\t\t\t(o)查看学生数据\n\n\t\t\t(s)查询学生数据\n\n\t\t\t(r)修改学生数据\n\n\t\t\t(e)退出系统\n\n\n请输入您要执行的选项:"); //主菜单

a=getch(); //获取输入选项

switch(a)

{

case 'i': //进入输入函数

case 'I':

input();

break;

case 'o': //进入输出函数

case 'O':

output();

break;

case 'r': //进入修改函数

case 'R':

revise();

break;

case 'd': //进入删除函数

case 'D':

del();

break;

case 's': //进入查找函数

case 'S':

search();

break;

case 'e': //退出程序

case 'E':

return;

default: //为了防止选错选项

goto st;

}

}while(1);

}

void main()

{

printf("组员:\n李东海 陈志锐\n凌华富 林继其\n杜德伟 钟鹏珲\n\n\n\n\t\t请稍后……"); //鸣谢栏

Sleep(7000);

menu();

}

这个是我们几个人做的期末作业,你可以拿去参考;如果windows函数不能用,就把他删除掉还有sleep这个也一起删除掉。