学生成绩管理项目源代码

本文提供了一个用C语言编写的学生成绩管理系统源代码,实现了学生成绩的录入、插入、删除、查找、浏览、排序、合计、保存和读取等功能。系统包括对C企业要求、TD-SCDMA、Linux、J2ME和专业英语等科目成绩的管理,并通过冒泡排序进行成绩排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**********************************************************************
*制作时间:2008年9月17日
*程序名称:学生成绩管理系统
*程序功能:能实现对学生成绩的录入,插入,删除,查找,浏览,排序,
*          合计,保存,读取等功能
***********************************************************************/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define     STRSNO      "/n学生学号: "
#define     STRSNAME    "/n学生姓名: "
#define     STRC        "/nC企业要求与实践: "
#define     STRTD       "/nTD-SCDMA: "
#define     STRLINUX    "/nLinux 基础与开发: "
#define     STRJ        "/nJ2ME: "
#define     STREN       "/n专业英语: "

#define     CPRJ        0
#define     TD          1
#define     LINUX       2
#define     J2ME        3
#define     CSENG       4

#define     SUMSUBJ     5

#define     STRINPUTERROR   "输入有误,请重新输入!/n"

#define  PRINTTITLE  "/n     学号    | 姓  名 |C企业要求|TD-SCDMA|LINUX|J2ME|专业英语| 总分 | 平均  /n/n"

#define  PRINTSTYLE  " %s    %s/t   %d/t     %d/t    %d/t %d/t %d/t%d   %.2f/n"

#define     GETINPUTSTRDATA(str,data)    printf(str);     /
                                   scanf("%s",&data)

#define     GETINPUTINTDATA(str,data)    printf(str);     /
                                   scanf("%d",&data)

#define     CHECKINPUTFUNC(score)   if( score > 100 || score < 0 )    /
                              {                                 /
                               printf(STRINPUTERROR);        /
                               printf(STRC);                 /
                               scanf("%d",&score);           /
                              }
#define        INTTYPE        1
#define        FLOATTYPE      2
#define        STRTYPE        3

#define        OFFSETSNO        0
#define        OFFSETSNAME      (OFFSETSNO+16*sizeof(char))
#define        OFFSETSCORE      (OFFSETSNAME+12*sizeof(char))
#define        OFFSETSUM        (OFFSETSCORE+SUMSUBJ*sizeof(int))
#define        OFFSETAVR        (OFFSETSUM+sizeof(int))

/****************************************************************************
*******************用 system("color 0A"); ***********************************
*****其中color后面的0是背景色代号,A是前景色代号。各颜色代码如下: **********
****************************************************************************/
#define   USECOLORBLACK  system("color 00")   //0=黑色
#define   USECOLORBLUE  system("color 01")   //1=蓝色
#define   USECOLORGREEN  system("color 02")   //2=绿色
#define   USECOLORLBLUE  system("color 03")   //3=湖蓝色
#define   USECOLORRED      system("color 04")   //4=红色
#define   USECOLORPURPLE  system("color 05")   //5=紫色
#define   USECOLORYELLOW  system("color 06")   //6=黄色
#define   USECOLORWHITE  system("color 07")   //7=白色
#define   USECOLORDARK  system("color 08")   //8=灰色
#define   USECOLORSKYBLUE  system("color 09")   //9=淡蓝色
#define   USECOLORLGREEN  system("color 0A")   //A=淡绿色
#define   USECOLORLLGREEN  system("color 0B")   //B=淡浅绿色
#define   USECOLORLRED  system("color 0C")   //C=淡红色
#define   USECOLORLPURPLE  system("color 0D")   //D=淡紫色
#define   USECOLORLYELLOW  system("color 0E")   //E=淡黄色
#define   USECOLORHWHITE  system("color 0F")   //F=亮白色

// 结构体定义学生的所有属性,包括学生证号,姓名,5门学科成绩,总成绩,平均成绩
struct studentLink
{
 char       sno[16];
 char       sname[12];
 int        arscore[SUMSUBJ];
 int        sum;
 float      avr;
 struct studentLink* link;
};
typedef struct studentLink  STULINK;
    


// 函数声明
STULINK* creat();
STULINK* searchbysno(STULINK *head, char * sno, STULINK **prev);
void insert(STULINK *head,STULINK *p, STULINK stu);
void delstunode(STULINK *head,STULINK *prelink,STULINK *dellink);
void insertbysno(STULINK *head, STULINK stu);
void menu();        //主菜单函数
void input(STULINK *head);       //录入函数
void insertbysno(STULINK *head, STULINK stu);
void del(STULINK *head);         //删除函数
void delbysno(STULINK* head);       //按学生证号删除
void delbysname(STULINK* head);     //按姓名删除 
void select(STULINK* head);      //查找函数
void selectsno(STULINK* head);    //按学生证号查找
void selectsname(STULINK* head);  //按姓名查找
void sort(STULINK *head,int offset, int type);        //冒泡排序函数
void display(STULINK* head);     //制表格式函数
void total(STULINK* head);       //分类合计函数
void save(STULINK* head);        //保存函数
void load(STULINK* head);        //读取函数
void freelink(STULINK* head);
void sortready(STULINK* head);
void sortbyscore(STULINK* head);

 

// 主函数

int main(void)
{
 int in;        //选择功能的变量
 char ch='y';   //选择是否继续时的变量,(y / n)
 STULINK* stuhead=NULL;
 stuhead = creat();
 //USECOLORLLGREEN;
 if(stuhead==NULL)
        return 1;
    load(stuhead);
 do
 {
  menu(); 
  scanf("%d",&in);
  if(in<0 || in>7)
  {
   printf("/a输入有误,请在0~7之间选择!");
   continue;
  }
  else if(in==0)
        {
   printf("确定要退出程序吗?(y / n) ");
   scanf(" %c",&ch);
   printf("/n");
   if(ch=='Y' || ch=='y')
   {
    printf("谢谢您的使用,再见!");
    break;
   }
  }
  switch(in)
  {
   case 1:                                    //录入
    printf("/n-----------------------------    请输入学员信息    -----------------------------");
    input(stuhead);
    break;
   case 2:                                    //插入
    if(stuhead->sum!=0)
    {
     del(stuhead); 
    }
    else
    {
     printf("/a没有数据!/n");       //(如果学生人数为0,弹出此消息)
    }
    break;
   case 3:                                    //删除
    if(stuhead->sum!=0)
    {
     select(stuhead);
    }
    else
    {
     printf("/a没有数据!/n");
    }
    break;
   case 4:                                    //查找
    if(stuhead->sum!=0)
    {
     display(stuhead);
    }
    else
    {
     printf("/a没有数据!/n");
    }
    break;
   case 5:      &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值