成绩管理系统c语言程序设计,学生成绩管理系统(C语言)

本文详细介绍了使用C语言设计的学生成绩管理系统,包括信息输入、删除、修改、显示、查询、排序、统计等功能。通过菜单驱动的交互界面,实现了良好的用户交互,并具有错误检查和图形界面设计。程序包含了结构体、文件操作、链表等C语言知识的应用。
摘要由CSDN通过智能技术生成

C语言课程设计报告

一、实践的目的和要求

加深对《C语言程序设计》课程所学知识的理解,进一步巩固C语言讲法规则。学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力

二、实践内容

在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);函数的使用,结构体和文件的操作等。

三、设计说明

学生成绩管理系统

建立一个学生成绩管理系统。

程序运行时显示一个简单的菜单。

例如:

1.信息输入(INPUT)

2.信息的删除与修改

3.显示当前学生成绩的记录信息,若无记录,则给出提示信息

4.学生或者各个班级各门课程总分、平均分、最低分、最高分等的统计

5.可以按照班级、姓名、性别、分数(可以有区间)等方式进行查询

6.具有良好的交互功能

7.能使用图形函数进行简单的界面设计

8.具有良好的纠错功能

9.退出等等

程序:

#include      /*文件操作(读文件)*/

#include

#include     /*其它说明*/

#include     /*字符串函数*/

#include        /*内存操作函数*/

#include /*屏幕操作函数*/

#include      /*字符操作函数*/

#include      /*动态地址分配函数*/

#include

#define LEN sizeof(STUDENT)

#define N   3

typedef struct stu     /*定义结构体数组用于缓存数据*/

{char grade[6];

char name[5];

char sex[4] ;

int score[N];

int sum;

float average;

int order;

struct stu *next;

}STUDENT;

/*以下是函数原型*/

STUDENT  *init();      /*初始化函数*/

STUDENT *create();   /*创建链表*/

STUDENT *delete(STUDENT *head);   /*删除记录*/

STUDENT *sort(STUDENT *head);      /*按平均分排序*/

void print(STUDENT *head);   /* 显示所有记录*/

void name(STUDENT *head);    /*姓名查找*/

void grade(STUDENT *head);    /*班级查找*/

void sex(STUDENT *head);    /*性别查找*/

void average(STUDENT *head);     /*按平均分查找在那个分数里*/

STUDENT *statistciam(STUDENT *head);/*统计记录*/

void save(STUDENT *head);     /*保存文件*/

STUDENT *load();        /*读文件*/

STUDENT *insert(STUDENT *head,STUDENT *new);   /*插入记录*/

int menu_select();           /*菜单函数*/

int menu_search();          /*查询菜单*/

void code(); /*密码验证*/

/*主函数界面*/

main()

{

int i,j,n,m;

STUDENT *head,new;  /*链表定义头指针*/

randomize();/*开启扬声器,发出声音*/

while(!bioskey(1))

{

j=rand()*5000;

sound(j);

delay(10);

}

nosound();/*关闭声音文件*/

code();/*密码输入*/

clrscr();            /*清屏*/

for(;;)             /*无限循环*/

{

switch(menu_select())     /*调用主菜单函数,返回值整数作开关语句的条件*/

{                     /*值不同,执行的函数不同,break 不能省略*/

case 0:head=init();break;   /*执行初始化*/

case 1:head=create();break; /*创建链表*/

case 2:head=delete(head);break; /*删除记录*/

case 3:print(head);break;   /*显示全部记录*/

case 4:

loop:

printf("sreach:\n 1.grade\n 2.name\n 3.sex\n 4.average\n 5.quit\n Enter you choice(0~5):");

scanf("%d",&n);

switch(n)

{

case 1:grade(head);

goto loop;

case 2:name(head);

goto loop;

case 3:sex(head);

goto loop;

case 4:average(head);

goto loop;

case 5: break;

}

break;

/*查找记录*/

case 5:sort(head);break;  /*排序*/

case 6:save(head);break;  /*保存文件*/

case 7:head=load(); break;  /*读文件*/

case 8:head=insert(head,&new);  break; /*插入记录*/

case 9:head=statistciam(head);  break; /*统计记录*/

case 10:exit(0);       /*如菜单返回值为10程序结束*/

}

}

}

/*密码输入*/

void code()

{

int i;

char number[20];

const w=10;

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

printf("\n\t\t\tBecause this system is busywork,Code is: 123456");

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

printf("\n");

printf("\n");

printf("\n");

printf("\n");

printf("\n");

printf("\n");

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

printf("\n\t    Please Enter The Code  :     ");

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

scanf("%s",number);

printf("\n\t\t\tExamining!");

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

{

printf("*");

}

if(strcmp(number,"123456")==0)

{

printf("\n\t\t\tCode is right!press any key enter menu......");

clrscr();

}

else

{

printf("\n\t\t\tCode is wrong!Please enter again : ");

clrscr();

code();

}

}

/*初始化函数*/

STUDENT *init()

{

return NULL;    /*返回空指针*/

}

/*菜单选择函数*/

menu_select()

{

char *menu[]={"********************************************",

"              Welcome to          ",

"   The student score manage system!",

"*****************MENU***********************",  /*定义菜单字符串数组*/

"      0. Init list",    /*初始化*/

"      1. Input list",   /*输入记录*/

"      2. Delete a record from list",  /*从表中删除记录*/

"      3. Print list ",       /*显示当前学生成绩的记录信息*/

"      4. Search record ",   /*查询学生记录*/

"      5. Sort to make new a file ", /*排序*/

"      6. Save the file",          /*将单链表中记录保存到文件中*/

"      7. Load the file",        /*从文件中读入记录*/

"      8. insert record to list ",   /*插入记录到表中*/

"      9. statistciam record to list ",   /*统计记录到表中*/

"      10. Quit",                    /*退出*/

"********************************************",

"     Producer:ZengWenyan ZhaoJingxiu        ",

"     Faculty Adviser:XiaoFengrui          ",};              /*退出*/

char s[3];       /*以字符形式保存选择号*/

int c,i;        /*定义整形变量*/

textbackground(MAGENTA);   /*设置背景颜色为粉色*/

gotoxy(1,50);        /*移动光标*/

printf("press any key enter menu......\n");   /*压任一键进入主菜单*/

getch();                       /*输入任一键*/

clrscr();                     /*

学生成绩管理系统 #include #include #include #include struct student_type { char name[8]; int num; int clss; float score[3]; double ave; }stud[10]; char ar[100]={"学号 姓名 班级 课程1 课程2 课程3 平均成绩\n"}; int n;//学生人数。 int main() { void write (); void save (); void display (); int n=0; while (1) { printf ("\n\t\t\t\t学生成绩管理\n\n"); printf ("\t1:请输入学生的成绩记录\n"); printf ("\t2:显示成绩记录\n"); printf ("\t3:退出系统\n"); printf ("\t输入操作选项序号:"); scanf ("%d",&n); switch (n) { case 1 : write (); break; case 2 : display (); break; case 3 : printf("\n\t\t\t**************谢谢使用!**************\n");break; default : printf("\n请输入1、2或3!!!"); } if (n==3) break; } //system("pause"); return 0; } /* *********输入学生成绩**********/ void write() { int i=0, j=0; printf("请输入需要输入的人数:"); scanf("%d",&n); for(i=0; i<n ;i++) { printf("请输入学号 姓名 班级 :"); scanf("%d%s%d",&stud[i].num, &stud[i].name, &stud[i].clss); for(j=0; j<3; j++) { printf("请依次输入课程成绩 :"); scanf("%f", &stud[i].score[j]); } stud[i].ave = (stud[i].score[0] + stud[i].score[1] + stud[i].score[2]) / 3; } printf ("\n\t\t是否保存?\n\t\t\t是:1;\n\t\t\t否:2.\n"); scanf("%d",&i); if(i==1) save(); else main(); } /**********读出文件资料***********/ void display () { int i=0; FILE *fp; fp =fopen("score.txt","r"); if ((fp=fopen("score.txt","r")) == NULL) { printf("cannot open this score"); exit(0); } fread(&ar,sizeof(ar),1,fp); for(i=0;i<n;i++) { //fscanf(fp, "%11d%s%2d%5.2f%5.2f%5.2f%5.2f\n",&stud[i].num, &stud[i].name[i], // &stud[i].clss, &stud[i].score[0], &stud[i].score[1], &stud[i].score[2], // &stud[i].ave); fread(&stud[i],sizeof(struct student_type),1,fp); printf("%s",ar); printf("%11d %s %2d %5.2f %5.2f %5.2f %5.2f \n", stud[i].num, stud[i].name, stud[i].clss, stud
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值