C语言编写一个学生管理系统

 1.效果图

C语è¨ç¼åå­¦çæ绩管çç³»ç»ï¼è¯¦ç»æå­¦ï¼åæåä¼ï¼ï¼

2.代码图 

3.主要代码 

#include "stdio.h"   /*标准输入输出函数库*/
#include "stdlib.h"  /*标准函数库*/
#include "string.h"  /*字符串函数库*/
#include "conio.h"    /*屏幕操作函数库*/
#define HEADER1 "      ----------------------------STUDENT----------------------------------  \n"
#define HEADER2 "     |    number     |      name     |Comp|Math|Eng |   sum  |  ave  |mici | \n"
#define HEADER3 "     |---------------|---------------|----|----|----|--------|-------|-----| "
#define FORMAT  "        |    %-10s |%-15s|%4d|%4d|%4d| %4d   | %.2f |%4d |\n"
#define DATA  p->data.num,p->data.name,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.total,p->data.ave,p->data.mingci
#define END     "       --------------------------------------------------------------------- \n"



int saveflag=0;  /*是否需要存盘的标志变量*/
/*定义与学生有关的数据结构*/
typedef struct student      /*标记为student*/
{
char num[10];   /*学号*/
char name[15];  /*姓名*/
int cgrade;     /*C语言成绩*/
int mgrade;     /*数学成绩*/
int egrade;     /*英语成绩*/
int total;      /*总分*/
float ave;      /*平均分*/
int mingci;     /*名次*/
};

/*定义每条记录或结点的数据结构,标记为:node*/
typedef struct node
{
struct student data;  /*数据域*/
struct node *next;    /*指针域*/
}Node,*Link;   /*Node为node类型的结构变量,*Link为node类型的指针变量*/


void menu()  /*主菜单*/
{
system("cls");   /*调用DOS命令,清屏.与clrscr()功能相同*/
textcolor(10);   /*在文本模式中选择新的字符颜色*/
gotoxy(10,5);     /*在文本窗口中设置光标*/
cprintf("                 The Students' Grade Management System \n");
gotoxy(10,8);
cprintf("     *************************Menu********************************\n");
gotoxy(10,9);
cprintf("     *  1 input   record             2 delete record             *\n");
gotoxy(10,10);
cprintf("     *  3 search  record             4 modify record             *\n");
gotoxy(10,11);
cprintf("     *  5 insert  record             6 count  record             *\n");
gotoxy(10,12);
cprintf("     *  7 sort    reord              8 save   record             *\n");
gotoxy(10,13);
cprintf("     *  9 display record             0 quit   system             *\n");
gotoxy(10,14);
cprintf("     *************************************************************\n");
/*cprintf()送格式化输出至文本窗口屏幕中*/
}
void printheader() /*格式化输出表头*/
{
  printf(HEADER1);
  printf(HEADER2);
  printf(HEADER3);
}
void printdata(Node *pp) /*格式化输出表中数据*/
{
 Node* p;
 p=pp;
 printf(FORMAT,DATA);

}

void Wrong()  /*输出按键错误信息*/
{
printf("\n\n\n\n\n***********Error:input has wrong! press any key to continue**********\n");
getchar();
}

void Nofind()  /*输出未查找此学生的信息*/
{
printf("\n=====>Not find this student!\n");
}

void Disp(Link l)  /*显示单链表l中存储的学生记录,内容为student结构中定义的内容*/
{
Node *p;
p=l->next; /*l存储的是单链表中头结点的指针,该头结点没有存储学生信息,指针域指向的后继结点才有学生信息*/

if(!p)  /*p==NULL,NUll在stdlib中定义为0*/
{
  printf("\n=====>Not student record!\n");
  getchar();
  return;
}

printf("\n\n");
printheader(); /*输出表格头部*/

while(p)    /*逐条输出链表中存储的学生信息*/
{
  printdata(p);
  p=p->next;  /*移动至下一个结点*/
  printf(HEADER3);
}
getchar();
}

/*************************************************************
作用:用于定位链表中符合要求的节点,并返回指向该节点的指针
参数:findmess[]保存要查找的具体内容; nameornum[]保存按什么查找;
      在单链表l中查找;
**************************************************************/
Node* Locate(Link l,char findmess[],char nameornum[])
{
Node *r;
if(strcmp(nameornum,"num")==0) /*按学号查询*/
{
  r=l->next;
  while(r)
  {
   if(strcmp(r->data.num,findmess)==0) /*若找到findmess值的学号*/
    return r;
   r=r->next;
  }
}
else if(strcmp(nameornum,"nam
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,学生管理系统可以包括以下几个模块: 1.添加学生信息 2.查找学生信息 3.修改学生信息 4.删除学生信息 5.显示所有学生信息 下面是一个简单的 C 语言代码示例: ```c #include <stdio.h> #include <string.h> struct student { int id; char name[20]; int age; }; void add_student(struct student *s, int *count) { printf("请输入学生信息(学号 姓名 年龄):"); scanf("%d %s %d", &s[*count].id, s[*count].name, &s[*count].age); (*count)++; printf("添加成功!\n"); } void find_student(struct student *s, int count) { int id, i; printf("请输入要查找的学生学号:"); scanf("%d", &id); for (i = 0; i < count; i++) { if (s[i].id == id) { printf("学号:%d,姓名:%s,年龄:%d\n", s[i].id, s[i].name, s[i].age); return; } } printf("未找到该学生!\n"); } void modify_student(struct student *s, int count) { int id, i; printf("请输入要修改的学生学号:"); scanf("%d", &id); for (i = 0; i < count; i++) { if (s[i].id == id) { printf("请输入修改后的学生信息(学号 姓名 年龄):"); scanf("%d %s %d", &s[i].id, s[i].name, &s[i].age); printf("修改成功!\n"); return; } } printf("未找到该学生!\n"); } void delete_student(struct student *s, int *count) { int id, i, j; printf("请输入要删除的学生学号:"); scanf("%d", &id); for (i = 0; i < *count; i++) { if (s[i].id == id) { for (j = i; j < *count - 1; j++) { s[j] = s[j + 1]; } (*count)--; printf("删除成功!\n"); return; } } printf("未找到该学生!\n"); } void display_student(struct student *s, int count) { int i; printf("学号\t姓名\t年龄\n"); for (i = 0; i < count; i++) { printf("%d\t%s\t%d\n", s[i].id, s[i].name, s[i].age); } } int main() { struct student s[100]; int choice, count = 0; while (1) { printf("请选择操作:\n"); printf("1.添加学生信息\n"); printf("2.查找学生信息\n"); printf("3.修改学生信息\n"); printf("4.删除学生信息\n"); printf("5.显示所有学生信息\n"); printf("6.退出\n"); scanf("%d", &choice); switch (choice) { case 1: add_student(s, &count); break; case 2: find_student(s, count); break; case 3: modify_student(s, count); break; case 4: delete_student(s, &count); break; case 5: display_student(s, count); break; case 6: return 0; default: printf("输入错误,请重新输入!\n"); } } } ``` 这是一个基本的学生管理系统实现,可以根据需要进行更改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值