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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言学生成绩管理系统课程设计相关的知识,希望对你有一定的参考价值。

《程序设计基础(C语言)》课程综合实训指导书
一、目的、任务及要求
【目的】
《程序设计基础(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纸型,竖版打印,加黄色封皮左侧装订)各一份,具体格式及字号见综合实训模板。
五、成绩评定方法
根据学生实训期间的学习态度、学生完成任务的质量、对所学内容的掌握程度、所编写实训报告的质量进行综合评分,特别提倡开发创新意识,如果能在完成基本要求的基础上,补充并完善了相应的功能,则给予加分。按优秀、良好、中等、及格、不及格五级评定成绩。

/* Note:Your choice is C IDE */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define N 100

struct student

char num[10];
char name[10];
char tel[11];
;

/* 以下是函数原型说明,被调函数的定义在主调函数后面时,要加此部分 */
void myprint();
void mycreate();
void mydisplay();
void mysearch();
/* sch_num与sch_name函数被mysearch调用 */
void sch_num(FILE *fp);
void sch_name(FILE *fp);
void mymodify();
void myadd();
void mydelete();
/* del_num与del_name函数被mydelete调用 */
void del_num(FILE *fp);
void del_name(FILE *fp);
void mysort();
/* sort_num与sort_name函数被mysort调用 */
void sort_num();
void sort_name();

void main()

char choose,yes_no;

do

myprint(); /* 显示主菜单 */
printf(" ");
choose=getch();
switch(choose)

case '1': mycreate(); break; /* 创建 */
case '2': mydisplay(); break; /* 显示 */
case '3': mysearch(); break; /* 查询 */
case '4': mymodify(); break; /* 修改 */
case '5': myadd(); break; /* 添加 */
case '6': mydelete(); break; /* 删除 */
case '7': mysort(); break; /* 排序 */
case '0': break;
default:printf("\n %c为非法选项!\n",choose);

if(choose=='0')
break;
printf("\n 要继续选择吗(Y/N)?\n");
do

yes_no=getch();
while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');
while(yes_no!='Y'||yes_no!='y');


void myprint() /* 显示菜单界面 */

printf("\n\n\n\n\n\n\n\n");
printf(" |----------------------------|\n");
printf(" | 请输入选项编号(0-7): |\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(" | 0--退出 |\n");
printf(" |----------------------------|\n");


/* 定义创建信息管理系统的函数 */
void mycreate()

int i=1;
struct student temp;
FILE *fp;

fp=fopen("d:\\lbh\\guanli.dat","w");
if(fp==NULL)

printf("\n 打开文件失败!\n");
return;


printf("\n 请输入第1个记录:\n");
printf(" 学号(用#结束输入):");
do

gets(temp.num);
while(strcmp(temp.num,"")==0);
printf(" 姓名(用#结束输入):");
gets(temp.name);
printf(" 电话号码(用#结束输入):");
gets(temp.tel);
while(temp.num[0]!='#'&&temp.name[0]!='#'&&temp.tel[0]!='#')

fprintf(fp,"%23s%15s%15s\n",temp.num,temp.name,temp.tel);
i++;

printf("\n 请输入第%d个记录:\n",i);
printf(" 学号(用#结束输入):");
do

gets(temp.num);
while(strcmp(temp.num,"")==0);
printf(" 姓名(用#结束输入):");
gets(temp.name);
printf(" 电话号码(用#结束输入):");
gets(temp.tel);

fclose(fp);


/* 定义显示信息管理系统的函数 */
void mydisplay()

int n=0;
struct student temp;
FILE *fp;

fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)

printf("\n 打开文件失败!\n");
return;


// clrscr();
printf(" 学号 姓名 电话号码\n");
while(feof(fp)==0)

fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.tel);
printf("%23s%15s%15s\n",temp.num,temp.name,temp.tel);
n++;

if(n==0)
printf("\n 文件中无记录!\n");
else
printf("\n 文件中共有%d个记录!\n",n);
fclose(fp);


/* 定义查询信息管理系统的函数 */
void mysearch()

char c;
FILE *fp;

fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)

printf("\n 打开文件失败!\n");
return;


printf("\n 按学号查询(h),还是按姓名查询(m)?");
c=getch();
if(c=='h'||c=='H')
sch_num(fp); /* 按学号查询 */
if(c=='m'||c=='M')
sch_name(fp); /* 按姓名查询 */
else
printf("\n 非法字符!\n");
fclose(fp);


/* 定义按学号查询信息管理系统的函数 */
void sch_num(FILE *fp)

int flag=0,n=0;
char tempnum[10];
struct student temp;

printf("\n 请输入要查询记录的学号:");
gets(tempnum);
while(feof(fp)==0)

fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.tel);
if(strcmp(tempnum,temp.num)==0)

if(flag==0)
printf(" 学号 姓名 电话号码\n");
printf("%23s%15s%15s\n",temp.num,temp.name,temp.tel);
flag=1;

n++;

if(n==0)
printf("\n 文件中无记录!\n");
else
if(flag==0)
printf("\n 文件中无此人!\n");


/* 定义按姓名查询信息管理系统的函数 */
void sch_name(FILE *fp)

int flag=0,n=0;
char tempname[10];
struct student temp;

printf("\n 请输入要查询记录的姓名:");
gets(tempname);
while(feof(fp)==0)

fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.tel);
if(strcmp(tempname,temp.name)==0)

if(flag==0)
printf(" 学号 姓名 电话号码\n");
printf("%23s%15s%15s\n",temp.num,temp.name,temp.tel);
flag=1;

n++;

if(n==0)
printf("\n 文件中无记录!\n");
else
if(flag==0)
printf("\n 文件中无此人!\n");


/* 定义修改信息管理系统的函数 */
void mymodify()

char c;
int n=0;
struct student *find,temp,record[100],*p; /* 最多100个记录 */
FILE *fp;

fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)

printf("\n 打开文件失败!\n");
return;


p=record;
while(feof(fp)==0)

fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;

fclose(fp);

if(n==0)

printf("\n 文件中无记录!\n");
return;

printf("\n 请输入要修改记录的学号:");
gets(temp.num);
for(p=record;p<record+n;p++)
if(strcmp(temp.num,p->num)==0)

find=p; /* find记住修改记录的位置 */
break;

if(p==record+n)

printf("\n 无此人!\n");
return;

do

printf("\n 请输入正确的学号:");
do

gets(temp.num);
while(strcmp(temp.num,"")==0);
printf(" 请输入正确的姓名:");
gets(temp.name);
printf(" 请输入正确的电话号码:");
gets(temp.tel);
for(p=record;p<record+n;p++)
if((strcmp(temp.num,p->num)==0)&&(p!=find))

printf("\n 学号重复,要重新输入吗(Y/N)?");
do

c=getch();
while(c!='Y'&&c!='y'&&c!='N'&&c!='n');
putchar('\n');
break;

if(p==record+n)

*find=temp; /* find指向需要修改记录的位置 */
break;

while(c=='Y'||c=='y');

fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)

printf("\n 打开文件失败!\n");
return;

for(p=record;p<record+n;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
fclose(fp);


/* 定义添加信息管理系统的函数 */
void myadd()

char c;
int n=0;
struct student temp,record[N],*p;
FILE *fp;

fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)

printf("\n 打开文件失败!\n");
return;


p=record;
while(feof(fp)==0)

fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;

fclose(fp);

do

printf("\n 请输入新记录的学号:");
do

gets(temp.num);
while(strcmp(temp.num,"")==0);
printf(" 请输入新记录的姓名:");
gets(temp.name);
printf(" 请输入新记录的电话号码:");
gets(temp.tel);
for(p=record;p<record+n;p++)
if(strcmp(temp.num,p->num)==0)

printf("\n 学号重复,要重新输入吗(Y/N)?");
do

c=getch();
while(c!='Y'&&c!='y'&&c!='N'&&c!='n');
putchar('\n');
break;

if(p==record+n)

*p=temp;
break;

while(c=='Y'||c=='y');

fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)

printf("\n 打开文件失败!\n");
return;

for(p=record;p<record+n+1;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
fclose(fp);


/* 定义删除信息管理系统的函数 */
void mydelete()

char c;
FILE *fp;

fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)

printf("\n 打开文件失败!\n");
return;


printf("\n 按学号删除(h),还是按姓名删除(m)?");
c=getch();
if(c=='h'||c=='H')
del_num(fp); /* 按学号删除 */
if(c=='m'||c=='M')
del_name(fp); /* 按姓名删 */
else
printf("\n 非法字符!\n");
fclose(fp);


/* 定义按学号删除信息管理系统的函数 */
void del_num(FILE *fp)

int n=0;
char tempnum[10];
struct student record[N],*p,*k;

p=record;
while(feof(fp)==0)

fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;

fclose(fp);

printf("\n 请输入要删除记录的学号:");
gets(tempnum);

for(k=record;k<record+n;k++)
if(strcmp(tempnum,k->num)==0)
break; /* 找到要删记录结束循环 */
if(k<record+n) /* 提前结束循环,说明找到人 */
for(p=k;p<k+n-1;p++) /* 向左移一位,相当于删除记录 */
*p=*(p+1);
else
printf("\n 无此人!\n");

fp=fopen("d:\\lbh\\guanli.dat","w");
if(fp==NULL)

printf("\n 打开文件失败!\n");
return;


for(p=record;p<record+n-1;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);


/* 定义按姓名删除信息管理系统的函数 */
void del_name(FILE *fp)

int n=0;
char tempname[10];
struct student record[N],*p,*k;

p=record;
while(feof(fp)==0)

fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;

fclose(fp);

printf("\n 请输入要删除记录的姓名:");
gets(tempname);

for(k=record;k<record+n;k++)
if(strcmp(tempname,k->name)==0)
break; /* 找到要删记录结束循环 */
if(k<record+n) /* 提前结束循环,说明找到人 */
for(p=k;p<k+n-1;p++) /* 向左移一位,相当于删除记录 */
*p=*(p+1);
else
printf("\n 无此人!\n");

fp=fopen("d:\\lbh\\guanli.dat","w");
if(fp==NULL)

printf("\n 打开文件失败!\n");
return;


for(p=record;p<record+n-1;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);


/* 定义排序信息管理系统的函数 */
void mysort()

char c;
FILE *fp;

fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)

printf("\n 打开文件失败!\n");
return;

fclose(fp);

printf("\n 按学号排序(h),还是按姓名排序(m)?");
c=getch();
if(c=='h'||c=='H')
sort_num(); /* 按学号排序 */
if(c=='m'||c=='M')
sort_name(); /* 按姓名排序 */
else
printf("\n 非法字符!\n");


/* 定义按学号排序信息管理系统的函数 */
void sort_num()

int i,j,k,n=0;
char c;
struct student record[N],*p,temp;
FILE *fp;

fp=fopen("d:\\lbh\\guanli.dat","r");
if(fp==NULL)

printf("\n 打开文件失败!\n");
return;


p=record;
while(feof(fp)==0)

fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;

fclose(fp);

printf("\n 按升序(s),还是按降序(j)?");
c=getch();
if(c=='s'||c=='S') /* 按学号的升序排列 */
for(i=0;i<n-1;i++) /* 选择法排序 */

k=i;
for(j=i+1;j<n;j++)
if(strcmp((p+k)->num,(p+j)->num)>0)
k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;

else
if(c=='j'||c=='J') /* 按学号的降序排列 */
for(i=0;i<n-1;i++) /* 选择法排序 */

k=i;
for(j=i+1;j<n;j++)
if(strcmp((p+k)->num,(p+j)->num)<0)
k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;

else

printf("\n 非法字符!\n");
return;


fp=fopen("d:\\lbh\\guanli.dat","w");
if(fp==NULL)

printf("\n 打开文件失败!\n");
return;


for(p=record;p<record+n;p++)

fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
printf("%23s%15s%15s\n",p->num,p->name,p->tel);

fclose(fp);


/* 定义按姓名排序信息管理系统的函数 */
void sort_name()

int i,j,k,n=0;
char c;
struct student record[N],*p,temp;
FILE *fp;

fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)

printf("\n 打开文件失败!\n");
return;


p=record;
while(feof(fp)==0)

fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;

fclose(fp);

printf("\n 按升序(s),还是按降序(j)?");
c=getch();
if(c=='s'||c=='S') /* 按姓名的升序排列 */
for(i=0;i<n-1;i++) /* 选择法排序 */

k=i;
for(j=i+1;j<n;j++)
if(strcmp((p+k)->name,(p+j)->name)>0)
k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;

else
if(c=='j'||c=='J') /* 按姓名的降序排列 */
for(i=0;i<n-1;i++) /* 选择法排序 */

k=i;
for(j=i+1;j<n;j++)
if(strcmp((p+k)->name,(p+j)->name)<0)
k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;

else

printf("\n 非法字符!\n");
return;


fp=fopen("d:\\lbh\\guanli.dat","w");
if(fp==NULL)

printf("\n 打开文件失败!\n");
return;


for(p=record;p<record+n;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
fclose(fp);
参考技术A 我有一个类似的,有你说的一
#include<stdio.h>
main()

int i,j;
float s;
struct stu5

long num;
char name[20];
float score[3];
float ave;
a[3];
for(i=0;i<3;i++)

printf("请输入学号,姓名\n");
scanf("%ld,%s",&a[i].num,a[i].name);
printf("请输入3科分数\n");
for(j=0;j<3;j++)
scanf("%f",&a[i].score[j]);

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

s=0.0;
for(j=0;j<3;j++)
s=s+a[i].score[j];
a[i].ave=s/3.0;


for(i=0;i<3;i++)
printf("no:%2d num:%ld name:%s ave:%4.1f\n",i,a[i].num,a[i].name,a[i].ave);
getch();


#include<stdio.h>
main()

int i,j;
float s;
struct stu5

long num;
char name[20];
float score[3];
float ave;
a[3];
for(i=0;i<3;i++)

printf("??ê?è??§o? ");

scanf("%ld,%s",&a[i].num);
printf("D???\n");
scanf("%s",a[i].name);
printf("??ê?è?3??·?êy\n");
for(j=0;j<3;j++)
scanf("%f",&a[i].score[j]);

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

s=0.0;
for(j=0;j<3;j++)
s=s+a[i].score[j];
a[i].ave=s/3;


for(i=0;i<3;i++)
printf("no:%2d num:%ld name:%s ave:%4.1f\n",i,a[i].num,a[i].name,a[i].ave);

在你发给我的基础上加上头文件#include<stdio.h>,第二个for循环的判断条件改为j<3,在运行程序时,所输入的学号和姓名之间加一个逗号
半功能,后面在家爱一点就是了。
参考技术B 败笔网络安全小组,中国最大的C语言编程论坛
建议你上那学习C语言吧

参考资料:败笔网络安全小组

参考技术C 加我的 QQ 我公告诉你吧 参考技术D 比较麻烦哟、、这个没有几天搞不出来呀、、上次搞一个ATM模拟系统搞了三天、、特别是有界面的,函数调用比较麻烦,而且考虑的情况也很多、、后天迟不迟?、、不过我建议你自己尝试吧、、真的,如果你不尝试着自己做出来,以后你遇到这些都不懂的,但是如果这个系统你能做出来,你遇到其他要求有界面的都会一理通百理明、、我的ATM模拟系统、、

课程设计:学生成绩管理系统!400行C语言源码分享

近期很多小伙伴私信我说,临近期末考试,需要一份课程设计:学生成绩管理系统来交作业!

今天,它来了!400行源码的学生管理系统,只需要你正确移植到你的电脑上,即可使用,这还不点个关注+收藏嘛!

源码分享:

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

char filename[20] = { 0 };

typedef struct Student{

int num;

char name[10];

float  chinese;

float math;

float  english;

float  total;

struct Student* next;

}STU;

int MainInterface() {

int key;

system("cls");

printf("\\n\\n");

printf("\\t\\t\\t=============================================\\n");

printf("\\t\\t\\t|          欢迎来到学生成绩管理系统        |\\n");

printf("\\t\\t\\t|===========================================|\\n");

printf("\\t\\t\\t|                                          |\\n");

printf("\\t\\t\\t|                1.录入学员                |\\n");

printf("\\t\\t\\t|                2.查找学员                |\\n");

printf("\\t\\t\\t|                3.删除学员                |\\n");

printf("\\t\\t\\t|                4.修改成绩                |\\n");

printf("\\t\\t\\t|                5.打开文件                |\\n");

printf("\\t\\t\\t|                0.退出系统                |\\n");

printf("\\t\\t\\t|                                          |\\n");

printf("\\t\\t\\t=============================================\\n");

printf("\\t\\t\\t请选择:");

scanf("%d", &key);

return key;

}

STU* CreateList(){

STU* p = (STU*)malloc(sizeof(STU));

if (p != NULL)

p->next = NULL;

return p;

}

int NumIsExist(STU* plist, int num) {

plist = plist->next;

while (plist != NULL)

{

if (plist->num == num)

return 1;

plist = plist->next;

}

return 0;

}

void InsertStu(STU* plist){

system("cls");

printf("\\n\\n");

printf("\\t\\t\\t=============================================\\n");

printf("\\t\\t\\t|              正在录入学员信息            |\\n");

printf("\\t\\t\\t=============================================\\n");

STU* p = plist;

int count = 0;

printf("\\t\\t\\t请问需要添加多少学员:");

scanf("%d",&count);

if (count <= 0)

return;

for (int i = 0; i < count; i++) {

STU* pnew = (STU*)malloc(sizeof(STU));

if (pnew == NULL) return;

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

scanf("%d", &pnew->num);

while (1)

{

if (NumIsExist(plist, pnew->num))

{

printf("\\t\\t\\t学号重复,请重新输入学号:");

scanf("%d", &pnew->num);

}

else

break;

}

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

scanf("%s", pnew->name);

printf("\\t\\t\\t请输入语文成绩:");

scanf("%f", &pnew->chinese);

printf("\\t\\t\\t请输入数学成绩:");

scanf("%f", &pnew->math);

printf("\\t\\t\\t请输入英语成绩:");

scanf("%f", &pnew->english);

pnew->total = pnew->chinese + pnew->math + pnew->english;

pnew->next = NULL;

//头插法? 尾插法? 任意位置插入?

p = plist;

while (p->next != NULL)

{

if (pnew->num < p->next->num)

{

pnew->next = p->next;

p->next = pnew;

break;

}

p=p->next;

}

p->next = pnew;

}

}

void SerchByNum(STU* plist){

int num = 0;

system("cls");

printf("\\n\\n");

printf("\\t\\t\\t=============================================\\n");

printf("\\t\\t\\t|              正在查找学员信息            |\\n");

printf("\\t\\t\\t=============================================\\n");

printf("\\t\\t\\t请输入学员学号:");

scanf("%d", &num);

while (plist != NULL)

{

if (plist->num == num)

{

printf("\\t\\t\\t学号\\t姓名\\t语文\\t数学\\t英语\\t总分\\n");

printf("\\t\\t\\t%d\\t%s\\t%.1f\\t%.1f\\t%.1f\\t%.1f\\n",

plist->num, plist->name, plist->chinese,

plist->math, plist->english,plist->total);

printf("\\t\\t\\t");

system("pause");

return;

}

plist = plist->next;

}

printf("\\t\\t\\t没有找到该学生!!\\n");

printf("\\t\\t\\t");

system("pause");

}

void SerchByName(STU* plist){

char name[10] = { 0 };

system("cls");

printf("\\n\\n");

printf("\\t\\t\\t=============================================\\n");

printf("\\t\\t\\t|              正在查找学员信息            |\\n");

printf("\\t\\t\\t=============================================\\n");

printf("\\t\\t\\t请输入学员姓名:");

scanf("%s", &name);

int n = 1;

while (plist != NULL)

{

if (strcmp(name, plist->name) == 0)

{

if (n) {

printf("\\t\\t\\t学号\\t姓名\\t语文\\t数学\\t英语\\t总分\\n");

n = 0;

}

printf("\\t\\t\\t%d\\t%s\\t%.1f\\t%.1f\\t%.1f\\t%.1f\\n",

plist->num, plist->name, plist->chinese,

plist->math, plist->english, plist->total);

}

plist = plist->next;

}

if (n)

printf("\\t\\t\\t没有找到该学生!!\\n");

printf("\\t\\t\\t");

system("pause");

}

void SerchAllStu(STU* plist) {

plist = plist->next;

system("cls");

printf("\\n\\n");

printf("\\t\\t\\t=============================================\\n");

printf("\\t\\t\\t|              正在查找学员信息            |\\n");

printf("\\t\\t\\t=============================================\\n");

if (plist == NULL)

{

printf("\\t\\t\\t没有学员信息!\\n");

printf("\\t\\t\\t");

system("pause");

return;

}

printf("\\t\\t\\t学号\\t姓名\\t语文\\t数学\\t英语\\t总分\\n");

while (plist != NULL)

{

printf("\\t\\t\\t%d\\t%s\\t%.1f\\t%.1f\\t%.1f\\t%.1f\\n",

plist->num, plist->name, plist->chinese,

plist->math, plist->english, plist->total);

plist = plist->next;

}

printf("\\t\\t\\t");

system("pause");

}

void SerchMain(STU* plist) {

int key;

do {

system("cls");

printf("\\n\\n");

printf("\\t\\t\\t=============================================\\n");

printf("\\t\\t\\t|              正在查找学员信息            |\\n");

printf("\\t\\t\\t|===========================================|\\n");

printf("\\t\\t\\t|                                          |\\n");

printf("\\t\\t\\t|                1.按学号查找              |\\n");

printf("\\t\\t\\t|                2.按姓名查找              |\\n");

printf("\\t\\t\\t|                3.查看所有项              |\\n");

printf("\\t\\t\\t|                0.返回主菜单              |\\n");

printf("\\t\\t\\t|                                          |\\n");

printf("\\t\\t\\t=============================================\\n");

printf("\\t\\t\\t请选择:");

scanf("%d", &key);

switch (key) {

case 1:SerchByNum(plist); break;

case 2:SerchByName(plist); break;

case 3:SerchAllStu(plist); break;

}

} while (key != 0);

}

void DeleteStu(STU* plist){

int num = 0;

char key = '\\0';

STU* pre = plist;

STU* p = plist->next;

system("cls");

printf("\\n\\n");

printf("\\t\\t\\t=============================================\\n");

printf("\\t\\t\\t|              正在准备删除信息            |\\n");

printf("\\t\\t\\t=============================================\\n");

printf("\\t\\t\\t请输入需要删除的学号:");

scanf("%d", &num);

while (p != NULL)

{

if (p -> num == num)

{

printf("\\t\\t\\t学号\\t姓名\\t语文\\t数学\\t英语\\t总分\\n");

printf("\\t\\t\\t%d\\t%s\\t%.1f\\t%.1f\\t%.1f\\t%.1f\\n",

p->num, p->name, p->chinese,

p->math, p->english, p->total);

printf("\\t\\t\\t是否删除? [Y/N] : ");

getchar();

scanf("%c",&key);

if (key == 'N' || key == 'n')

return;

else if(key == 'Y' || key == 'y')

{

pre->next = p->next;

free(p);

p = NULL;

printf("\\t\\t\\t删除成功!!\\n");

printf("\\t\\t\\t");

system("pause");

return;

}

}

pre = pre->next;

p = p->next;

}

printf("\\t\\t\\t没有找到该学生!!\\n");

printf("\\t\\t\\t");

system("pause");

}

void ModifyStu(STU* plist) {

int num = 0;

STU* p = plist->next;

char key = '\\0';

system("cls");

printf("\\n\\n");

printf("\\t\\t\\t=============================================\\n");

printf("\\t\\t\\t|              正在准备修改信息            |\\n");

printf("\\t\\t\\t=============================================\\n");

printf("\\t\\t\\t请输入需要修改的学号:");

scanf("%d", &num);

while (p != NULL)

{

if (num == p->num)

{

printf("\\t\\t\\t学号\\t姓名\\t语文\\t数学\\t英语\\t总分\\n");

printf("\\t\\t\\t%d\\t%s\\t%.1f\\t%.1f\\t%.1f\\t%.1f\\n",

p->num, p->name, p->chinese,

p->math, p->english, p->total);

printf("\\t\\t\\t是否修改? [Y/N] : ");

getchar();

scanf("%c", &key);

if (key == 'N' || key == 'n')

return;

else if (key == 'Y' || key == 'y')

{

printf("\\n\\t\\t\\t==============\\n");

printf("\\t\\t\\t1.修改姓名\\n\\t\\t\\t2.修改语文\\n\\t\\t\\t3.修改数学\\n\\t\\t\\t4.修改英语\\n\\t\\t\\t0.返回\\n");

printf("\\t\\t\\t==============\\n");

printf("\\t\\t\\t请选择:");

getchar();

scanf("%c", &key);

if (key == '1') {

printf("\\t\\t\\t新的姓名:");

scanf("%s", p->name);

}

else if (key == '2') {

printf("\\t\\t\\t新的语文成绩:");

scanf("%f", &p->chinese);

}

else if (key == '3') {

printf("\\t\\t\\t新的数学成绩:");

scanf("%f", &p->math);

}

else if (key == '4') {

printf("\\t\\t\\t新的英语成绩:");

scanf("%f", &p->english);

}

else if (key == '0') return;

printf("\\t\\t\\t修改后的信息如下:\\n");

printf("\\t\\t\\t学号\\t姓名\\t语文\\t数学\\t英语\\t总分\\n");

printf("\\t\\t\\t%d\\t%s\\t%.1f\\t%.1f\\t%.1f\\t%.1f\\n",

p->num, p->name, p->chinese,

p->math, p->english, p->total);

printf("\\t\\t\\t");

system("pause");

return;

}

}

p = p->next;

}

printf("\\t\\t\\t没有找到该学员!!\\n");

printf("\\t\\t\\t");

system("pause");

}

STU* OpenStuFile() {

char c;

STU* pstu = NULL;

STU* ptem = NULL;

FILE* fp = NULL;

while (1){

system("cls");

printf("\\n\\n");

printf("\\n\\n");

printf("\\t\\t\\t=============================================\\n");

printf("\\t\\t\\t|          欢迎来到学生成绩管理系统        |\\n");

printf("\\t\\t\\t|                                          |\\n");

printf("\\t\\t\\t|            【源码联系群中老师】          |\\n");

printf("\\t\\t\\t|                                          |\\n");

printf("\\t\\t\\t|            【源码联系群中老师】          |\\n");

printf("\\t\\t\\t|                                          |\\n");

printf("\\t\\t\\t|            【源码联系群中老师】          |\\n");

printf("\\t\\t\\t|                                          |\\n");

printf("\\t\\t\\t|              【学编程,来顿开】          |\\n");

printf("\\t\\t\\t|                                          |\\n");

printf("\\t\\t\\t=============================================\\n");

printf("\\t\\t\\t请输入班级(如:3年2班):");

scanf("%s", filename);

fp = fopen(filename, "rb+");

if (fp != NULL) break; //打开成功

printf("\\t\\t\\t文件不存在!是否创建该文件? [Y/N] : ");

getchar();

scanf("%c", &c);

if (c == 'Y' || c == 'y')

{

fp = fopen(filename, "wb+");

if (fp != NULL)

break;

else

continue;

}

else

continue;

}

pstu = CreateList();

while (1)

{

STU* pnew = (STU*)malloc(sizeof(STU));

pnew->next = NULL;

if (fscanf(fp, "%d\\t%s\\t%f\\t%f\\t%f\\t%f\\n",

&pnew->num, pnew->name, &pnew->chinese,

&pnew->math, &pnew->english, &pnew->total) == EOF)

{

free(pnew);

pnew = NULL;

break;

}

//头插法? 尾插法? 任意位置插入?

ptem = pstu;

while (ptem->next != NULL)

{

if (pnew->num < ptem->next->num)

{

pnew->next = ptem->next;

ptem->next = pnew;

break;

}

ptem = ptem->next;

}

ptem->next = pnew;

}

fclose(fp);

return pstu;

}

void CloseStuFile(STU* plist){

FILE* fp = NULL;

plist = plist->next;

//只写方式打开文件

if ((fp = fopen(filename, "wb+")) == NULL)

{

printf("打开文件失败!");

}

else

{

//遍历链表输出到文件

while (plist != NULL)

{

fprintf(fp,"%d\\t%s\\t%.1f\\t%.1f\\t%.1f\\t%.1f\\n",

plist->num, plist->name, plist->chinese,

plist->math, plist->english, plist->total);

plist = plist->next;

}

}

fclose(fp);

}

int  main(){

int key = -1;

STU* pList = NULL;

pList = OpenStuFile(); //初始化链表

while (key != 0) {

key = MainInterface();

switch (key) {

case 1: InsertStu(pList); break;

case 2: SerchMain(pList); break;

case 3: DeleteStu(pList); break;

case 4:ModifyStu(pList); break;

case 0:CloseStuFile(pList); break;

}

}

return 0;

}

好了,赶紧去完成你的课程设计吧!不要忘了留下你的关注和点赞哟~

另外,对现在我们的大多数朋友来说还是学编程技术最重要!栽一棵树最好的时间是十年前,其次是现在。对于准备学习编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!

C语言C++编程学习交流圈子,QQ群:981108780点击进入】微信公众号:C语言编程学习基地

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

编程学习书籍分享:

编程学习视频分享:

以上是关于c语言学生成绩管理系统课程设计的主要内容,如果未能解决你的问题,请参考以下文章

学生成绩管理系统c

C语言程序设计学生成绩管理系统

c语言课程设计 学生信息管理系统模拟

C语言程序设计 班级学生成绩管理系统

C语言 学生成绩管理系统

C语言 学生成绩管理系统