学生管理系统——c语言课程设计

这是一个学生信息管理系统,具备新增、删除、修改、查询学生信息的功能,并能按成绩对学生信息进行排序。系统采用菜单形式交互,便于操作。
//录入学生成绩和基本信息;
//新增、删除、修改一名学生信息;
//查询学生信息;
//可以实现新增、删除、修改学生信息;
//按成绩排序 ;
//系统以菜单形式工作。
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
int sum;//作为全局变量,学生的总数,sum<=50。
#define Max 50
#define printf1 printf("\t------------------------------------\n");
#define printf2 printf("\t学号,\t姓名,\t性别,\t班级,\t成绩\n\n");
#define printf3 printf("\t%d,\t%s,\t%s,\t%s,\t%d\n",students[i].no,students[i].name,students[i].sex,students[i].Class,students[i].score);
void clearscreen();//清空屏幕
int sort_message();//学生信息按成绩排序
int output_message();//输出学生所有信息
int save_message(int sum);//保存信息
int new_message();//新添
int read_message();//浏览信息
int search_by_no();//按学号查找
int delete_message();//删除
int del_by_no();//按学号删除
int del_by_name();//按学号删除
int renew_by_no();//学号查找修改
int renew_message();//修改
int search_message();//查找
int renew_by_name();//姓名查找修改
int score; //成绩
int search_by_name();//按姓名查找
void clearscreen()
{
//构建学生结构体
getchar();
system("cls");
}
int no; //学号
struct Student
{
char name[20]; //姓名
}students[Max];
char sex[10]; //性别
char Class[20]; //班级
printf("\t 2.删除学生信息 \n");
//主程序
int main()
{
read_message();
int num;
do
clearscreen();
{
printf("\t-------学生信息管理系统主菜单-------\n\n");
printf("\t 1.新增学生信息 \n");
printf("\t------------------------------------\n");
printf("\t 3.修改学生信息 \n");
printf("\t 4.查找学生信息 \n");
printf("\t 5.按成绩排序 \n");
printf("\t 0.退出 \n\n");
printf("\n\n选择(0-4):");
case 3: renew_message();save_message(sum);break;
scanf("%d",&num);
switch(num)
case 1: new_message();save_message(sum);break;
{
case 2: delete_message();save_message(sum);break;
case 4: search_message();break;
break;
case 5: sort_message();output_message();break;
case 0:
{
printf("\n以上学生信息文件已保存-(文件名:student.txt)!\n");
getchar();
return 0;
printf("\n\n暂时还没有存储信息,按回车键返回主菜单!\n");
}
}
}while(num!=0);
return 0;
}
//-------------------------------------------------------------------------------------------------------
int read_message()
{FILE *fp;
if((fp=fopen("student.txt","r"))==NULL)
int i=0; {
}
return 0;
}
while(feof(fp)!=1)//值为1时,fp所指向的文件就结束
{
fread(&students[i],sizeof(struct Student),1,fp);
if(students[i].no==0)
{
{
break;
}
printf("\n\n文件中原有学生的信息:\n\n");
else i++;
sum++;
}
do
printf1;
printf2;
for(i=0;i<sum;i++)
{
{
if(students[i].no!=0)
printf("\n\n按回车键返回主菜单!");
printf3;
}}
//-------------------------------------------------------------------------------------------------------
return i;}
int new_message()
{
int i=sum,s=Max,k=0;
scanf("%s",students[i].sex);
{
clearscreen();
printf("\n\n录入学生信息(最多%d个),学号输入0则退出。",s);
printf("\n\n这是第%d个学生:\n\n",i+1);
scanf("%d",&students[i].no);
printf("学号:");
if(students[i].no==0) break;
printf("性别:");
printf("姓名:");
scanf("%s",students[i].name);
printf("班级:");
if((fp=fopen("student.txt","w"))==NULL)
scanf("%s",students[i].Class);
printf("成绩:");
scanf("%d",&students[i].score);
i++;
k++;
}while(i<Max);
sum=k+sum;
printf("\n\n按回车键返回主菜单!");
clearscreen();
printf("\n\n新增的%d个学生信息录入完毕!",k);
return i;}
printf("读文件错误!\n");
int save_message(int sum)
{FILE *fp;int i;
}
{ return 0;
printf("\t----------学生信息删除界面----------\n\n");
for(i=0;i<sum;i++)
{
if(fwrite(&students[i],sizeof(struct Student),1,fp)!=1)
printf("写文件错误!\n");
}fclose(fp);
//-------------------------------------------------------------------------------------------------------
return i;}
int delete_message()
{int num;do
clearscreen();
{
}
printf("\t 1.按学号删除 \n");
printf("\t 2.按姓名删除 \n");
printf("\n\n请选择(0-2):");
printf("\t 0.返回系统主菜单 \n");
scanf("%d",&num); switch(num){
case 0: break;
case 1: del_by_no();save_message(sum);break;
case 2: del_by_name();save_message(sum);break;
printf("删除成功!\n");
}while(num!=0);
return 1;
}
int i,j;
int del_by_no()
{
int k=0;
int del_no;
do{
printf("\n\n请输入要删除学生的学号:(输入0结束删除)\n\n");
clearscreen();
if(del_no==0) break;
scanf("%d",&del_no);
if(students[i].no==del_no)
for(i=0;i<sum;i++)
{{
students[j]=students[j+1];
for(j=i;j<sum;j++)
{}
if(strcmp(students[i].name,del_name)==0)
sum--;clearscreen();
{
}else
k++;
}
}
if(k==sum)
{
clearscreen();
printf("\n输入错误或者学号为%d的学生不存在!\n\n",del_no);
}
}while(i<Max);
return 0;}
{
int del_by_name()int i,j;
printf("请输入要删除学生的姓名:(输入#结束删除)\n");
char del_name[20];
do{int k=0;
scanf("%s",del_name);
clearscreen();
for(j=i;j<sum;j++)
if(strcmp(del_name,"#")==0) break;
for(i=0;i<sum;i++){{
int num;
{
students[j]=students[j+1];
}
sum--;
printf("删除成功!\n");
clearscreen();
}else
{
{
k++;
}}
if(k==sum)
printf("\n输入错误或者姓名为%s的学生不存在!\n\n",del_name);
clearscreen();
}
return 0;
}while(i<Max);}
//-------------------------------------------------------------------------------------------------------
int renew_message()
{do
case 2: renew_by_name();save_message(sum);break;
{
clearscreen();
printf("\t----------学生信息修改界面----------\n\n");
printf("\t 1.按学号修改 \n");
printf("\t 2.按姓名修改 \n");
printf("\n\n请选择(0-2):");
printf("\t 0.返回系统主菜单 \n");
scanf("%d",&num); switch(num){
printf("\n\n\t--------选择要修改的学生信息--------\n\n");
case 1: renew_by_no();save_message(sum);break;
case 0: break;
}while(num!=0);
}
return 1;
}
int i,num;
int renew_by_no()
{int renew_no;
clearscreen();
do
{
int j=0;
printf("\n请输入要修改的学生学号:(输入0结束修改)\n");
scanf("%d",&renew_no);
if(renew_no==0) break;
do
for (i=0;i<sum;i++)
{
if (students[i].no==renew_no)
{{
printf("\t 1.学号\t4.班级 \n");
clearscreen();
case 3: printf("\n请输入你想要修改后的学生性别:");scanf("%s",students[i].sex);save_message(sum);break;
printf("\t 2.姓名\t5.成绩 \n");
printf("\t 3.性别\t0.完成修改 \n\n");
switch(num)
printf("\n请选择(0-5):");
scanf("%d",&num);
case 1: printf("\n请输入你想要修改后的学生学号:");scanf("%d",&students[i].no);save_message(sum);break;
{case 2: printf("\n请输入你想要修改后的学生姓名:");scanf("%s",students[i].name);save_message(sum);break;
int renew_by_name()
case 4: printf("\n请输入你想要修改后的学生班级:");scanf("%s",students[i].Class);save_message(sum);break;
case 5: printf("\n请输入你想要修改后的学生成绩:");scanf("%d",&students[i].score);save_message(sum);break;
case 0: break;
}
clearscreen();
}while(num!=0);
}
printf("\n修改成功!");
printf("输入错误或者学号为%d的学生不存在!",renew_no);
else
{
j++;
}}
{
if(j==sum)
}while(i<Max);
clearscreen();}
printf("\t 3.性别\t0.完成修改 \n\n");
return 0;}
{
int i,num;
char renew_name[20];
do
{
clearscreen();
int j=0;
printf("\n请输入要修改的学生姓名:(输入#结束修改)\n");
scanf("%s",renew_name);
for (i=0;i<sum;i++)
if(strcmp(renew_name,"#")==0) break;
{
{
if(strcmp(students[i].name,renew_name)==0)
{doclearscreen();
printf("\t 1.学号\t4.班级 \n");
printf("\n\n\t--------选择要修改的学生信息--------\n\n");
printf("\t 2.姓名\t5.成绩 \n");
case 5: printf("\n请输入你想要修改后的学生成绩:");scanf("%d",&students[i].score);save_message(sum);break;
printf("\n请选择(0-5):");
scanf("%d",&num);
case 1: printf("\n请输入你想要修改后的学生学号:");scanf("%d",&students[i].no);save_message(sum);break;
switch(num)
{
case 2: printf("\n请输入你想要修改后的学生姓名:");scanf("%s",students[i].name);save_message(sum);break;
case 3: printf("\n请输入你想要修改后的学生性别:");scanf("%s",students[i].sex);save_message(sum);break;
printf("\t 1.按学号查询 \n");
case 4: printf("\n请输入你想要修改后的学生班级:");scanf("%s",students[i].Class);save_message(sum);break;
case 0: break;
}
}while(num!=0);
clearscreen();
printf("\n修改成功!");
}
else
{
j++;
}}
printf("输入错误或者姓名为%d的学生不存在!",renew_name);
if(j==sum)
{}
}while(i<Max);
return 0;
//-------------------------------------------------------------------------------------------------------
}
int search_message()
{int num=0;do
printf("\t----------学生信息查询界面----------\n\n");
{ clearscreen();
if(strcmp(students[i].name,search_name)==0&&students[i].no!=0)
printf("\t 2.按姓名查询 \n");
printf("\t 0.返回系统主菜单 \n");
scanf("%d",&num);
printf("\n\n请选择(0-2):");
switch(num)
case 1: search_by_no();break;
{ case 2: search_by_name();break;
}while(num!=0);
case 0: break; }
scanf("%s",search_name);
return 1;
}
int search_by_name()
{int i, j=0;
clearscreen();
char search_name[20];
printf("\n\n\t --%d的信息-- \n",students[i].no);
printf("\n请输入要查学生的姓名:");for(i=0;i<sum;i++)
printf("\n\n\t --%s的信息-- \n",students[i].name);
{ {
printf1;
printf2;
if(j==sum)
printf3; }
else
{
}
j++; }
{
printf("\n\n姓名为%s的学生不存在!",search_name);
getchar(); return 0;}
if(search_no==students[i].no&&students[i].no!=0)
int search_by_no()int i,j=0,search_no;
clearscreen();
printf("\n请输入要查学生的学号:");
scanf("%d",&search_no);
{
for(i=0;i<sum;i++) {
k=j;
printf1;
printf2;
}
printf3;
else
}
{
j++;
}
printf("\n\n学号为%d的学生不存在!",search_no);
if(j==sum)
{ }
return 0;
getchar();}
//-------------------------------------------------------------------------------------------------------
int sort_message()
{int i,j,k;
for(i=0;i<sum-1;i++)
struct Student t; {
for(j=i+1;j<sum;j++)
k=i; {
}
if(students[k].score>students[j].score)
{ }
t=students[i];
students[i]=students[k];
students[k]=t;
int output_message()
}
}
{
return 0;}
printf("\t-------按成绩排序的学生信息表-------\n");
int i;
do{
clearscreen();
printf("\t------------共 %d 个学生------------\n\n",sum);
printf1;
printf2;
for(i=0;i<sum;i++)
{if(students[i].no!=0)
return 0;
{printf3;
}while(i<sum);
}
}

一、目的、任务及要求 【目的】 《程序设计基础(C语言)》这门课程主要涉及基于C语言的相关程序开发。 学习本门课程主要应掌握C语言程序设计基础、C语言模块化程序设计方法、VC++ 6.0集成开发环境使用方法,学生在了解C语言程序设计基础、掌握VC++ 6.0集成开发环境的使用方法之后,便可采用模块化程序设计方法来进行某些具体应用。本课程综合实训的目的是使学生在平时理论学习、实验实训的基础上,更加全面地了解、掌握基于C语言模块化程序设计开发的方法、技法。 【任务】 以C语言模块化程序设计方法为基础,以VC++ 6.0集成开发环境为工具,实现学生成绩管理系统设计和开发。 学生成绩管理系统要求实现如下功能: 1、学生信息的录入。如:学生编号、学生姓名、学生成绩。 2、学生信息的查询。如:按学号查询、按成绩查询、显示指定学号的学生成绩、显示所有信息。 3、出错处理。 【要求】 最终提交的内容包括:程序文件、实训报告电子版、实训报告打印版,三者缺一不可。 二、选题的基本原则 通过课程综合实训,把本学期、本学科领域所覆盖及延伸的知识点应用到具体的实例当中,增强学生的动手能力、应用理论的能力以及团队协作能力,复合高职高专的培养目标,能够培养出具有实际动手能力的技能型人才。 三、实施步骤与方法 1.查阅资料、搜集信息: (1)复习书中相应的知识点; (2)查阅相应参考书; (3)上网搜集相关知识。 2.编写相应代码,生成程序文件。 3.撰写课程综合实训报告。 四、成果规范要求 1.本人课程综合实训相应的程序文件。 2.实训报告电子版、打印版(B5纸型,竖版打印,加黄色封皮左侧装订)各一份,具体格式及字号见综合实训模板。 五、成绩评定方法 根据学生实训期间的学习态度、学生完成任务的质量、对所学内容的掌握程度、所编写实训报告的质量进行综合评分,特别提倡开发创新意识,如果能在完成基本要求的基础上,补充并完善了相应的功能,则给予加分。按优秀、良好、中等、及格、不及格五级评定成绩。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值