通过c语言来设计一款学生管理系统以实现增删查改排等功能。
效果展示 增: 删: 查: 排: 退: 系统源码stu_sys.c
#include "stu.h" #include#include int main(int argc, const char* argv[]) { int chose; // 1.定义出来班级 class_t cls; // 2.初始化班级内学生的个数 cls.n = -1; class_t* p1; //分配空间 p1 = malloc(sizeof(class_t)); while (1) { puts("***************欢迎进入学生管理系统********************"); puts("**1.添加 2.删除 3.修改 4.查询 5.排序 6.退出************"); puts("*******************************************************"); printf("input chose > "); scanf("%d", &chose); while ((getchar()) != 'n') ; switch (chose) { case ADDSTU: cls.n = add_stu(p1, cls.n); break; case DELSTU: cls.n=del_stu(p1, cls.n); break; case MODSTU: mod_stu(p1, cls.n); break; case CHKSTU: chk_stu(p1, cls.n); break; case SOTSTU: sot_stu(p1, cls.n); break; case QITSTU: printf("退出学生管理系统....n"); return -1; } } return 0; }
stu.c
#include "stu.h" #include#include #include int add_stu(class_t* p1, int n) { //1.检查班级人数是否满员 if (n >= 29) { printf("班级已满员,无法进行添员操作!n"); return -1; } //2.输入人员姓名,性别,分数 int ret = 0; printf("请分别输入添加学生的姓名,性别,成绩(eg.zhangsan m 90):"); ret = scanf("%s %c %d", p1->stu[n + 1].name, &p1->stu[n + 1].sex, &p1->stu[n + 1].score); //3.检查参数 if (ret != 3) { printf("input error,try againn"); return -1; } while ((getchar() != 'n')) ; //4.班级当前人数加1 int new = n + 1; //5.添加成功返回主页面 printf("添加成功,返回主页面!n"); return new; } int chk_stu(class_t* p1, int n) { //1.检查班级是否有人 if (n <= -1) { printf("班级无人,无法进行查找操作!n"); return -1; } //2.将班级成员列出来 int j = 0; for (j = 0; j <= n; j++) { printf("%sn", p1->stu[j].name); } //3.输入查找人员信息的姓名 int ret = 0; printf("请分别输入查找学生的姓名(eg.zhangsan):"); char s[20] = { 0 }; ret = scanf("%s", s); //3.检查参数 if (ret != 1) { printf("input error,try againn"); return -1; } while ((getchar() != 'n')) ; //5.查找 int i = 0; int flag = 0; for (i = 0; i <= n; i++) { if (!(strcmp(p1->stu[i].name, s))) { flag = 1; break; } } //6.查找结果 if (flag == 1) { printf("查找成功,该生信息如下!n"); printf("%s,%c,%dn", p1->stu[i].name, p1->stu[i].sex, p1->stu[i].score); } else if (flag == 0) { printf("查找失败,返回主页面!n"); } return 0; } int del_stu(class_t* p1, int n) { //1.检查班级是否有人 if (n <= -1) { printf("班级无人,无法进行删除操作!n"); return -1; } //2.将班级成员列出来 int j = 0; for (j = 0; j <= n; j++) { printf("%sn", p1->stu[j].name); } //3.输入删除人员信息的姓名 int ret = 0; printf("请输入删除学生的姓名(eg.zhangsan):"); char s[20] = { 0 }; ret = scanf("%s", s); //3.检查参数 if (ret != 1) { printf("input error,try againn"); return -1; } while ((getchar() != 'n')) ; //5.查找 int i = 0; int flag = 0; for (i = 0; i <= n; i++) { if (!(strcmp(p1->stu[i].name, s))) { flag = 1; break; } } //6.删除操作 int m = n; if (flag == 1) { printf("开始删除......!n"); for (m = n; i <= m; m--) { strcpy(p1->stu[i].name, p1->stu[i + 1].name); p1->stu[i].sex = p1->stu[i + 1].sex; p1->stu[i].score = p1->stu[i + 1].score; } printf("删除成功!n"); } else if (flag == 0) { printf("请输入正确的姓名!n"); } //7.班级人数-1 int new = n - 1; return new; } int mod_stu(class_t* p1, int n) { //1.检查班级是否有人 if (n <= -1) { printf("班级无人,无法进行删除操作!n"); return -1; } //2.将班级成员列出来 int j = 0; for (j = 0; j <= n; j++) { printf("%sn", p1->stu[j].name); } //3.输入修改人员信息的姓名 int ret = 0; printf("请输入需要修改学生的姓名(eg.zhangsan):"); char s[20] = { 0 }; ret = scanf("%s", s); //3.检查参数 if (ret != 1) { printf("input error,try againn"); return -1; } while ((getchar() != 'n')) ; //5.查找 int i = 0; int flag = 0; for (i = 0; i <= n; i++) { if (!(strcmp(p1->stu[i].name, s))) { flag = 1; break; } } //6.修改操作 int m = n; int name = 0; int sex = 0; int score = 0; if (flag == 1) { printf("是否修改姓名:1(修改)/0(不修改)"); scanf("%d", &name); if (1 == name) { char newname[20] = { 0 }; printf("请输入该生新姓名:"); scanf("%s", newname); strcpy(p1->stu[i].name, newname); printf("姓名修改成功!n"); } while ((getchar()) != 'n') ; printf("是否修改性别:1(修改)/0(不修改)"); scanf("%d", &sex); while ((getchar()) != 'n') ; if (1 == sex) { printf("请输入该生新性别:"); scanf("%c", &p1->stu[i].sex); printf("性别修改成功!n"); } while ((getchar()) != 'n') ; printf("是否修改成绩:1(修改)/0(不修改)"); scanf("%d", &score); while ((getchar()) != 'n') ; if (1 == score) { printf("请输入该生新成绩:"); scanf("%d", &p1->stu[i].score); printf("成绩修改成功!n"); } } else if (flag == 0) { printf("请输入正确的姓名!n"); } return 0; } int sot_stu(class_t* p1, int n) { //1.检查班级是否有人 if (n <= -1) { printf("班级无人,无法进行删除操作!n"); return -1; } //2.排序 int j = 0; int i = 0; int c = 0; int tmp=0; char s1[20]={0}; for (c = 0; c <= n-1 ; c++) { for (i = 0; i <= n-c-1; i++) { if((p1->stu[i].score)>(p1->stu[i+1].score)){ tmp=p1->stu[i].score; p1->stu[i].score=p1->stu[i+1].score; p1->stu[i+1].score=tmp; strcpy(s1,p1->stu[i].name); strcpy(p1->stu[i].name,p1->stu[i+1].name); strcpy(p1->stu[i+1].name,s1); } } } //3.输出 printf("从分数低到分数高排序为:n"); int k = 0; for (k = 0; k <= n; k++) { printf("%s,%dn", p1->stu[k].name,p1->stu[k].score); } return 0; }
stu.h
#ifndef __STU_H__
#define __STU_H__
#define ADDSTU 1
#define DELSTU 2
#define MODSTU 3
#define CHKSTU 4
#define SOTSTU 5
#define QITSTU 6
typedef struct {
char name[20]; //姓名
char sex; //性别
int score; //分数
}stu_t;
typedef struct{
stu_t stu[30]; //班级内能容纳的学生的个数
int n; //班级内当前学生的个数
}class_t;
int add_stu( class_t* p1,int n);
int chk_stu(class_t* p1,int n);
int del_stu(class_t* p1,int n);
int mod_stu(class_t* p1, int n);
int sot_stu(class_t* p1, int n);
#endif
暑期编程PK赛
得CSDN机械键盘等精美礼品!


