- #include <stdio.h>
- #include <stdlib.h>
- #define LEN 100
- #define OVERFLOW -2
- #define ERROR 0
- typedef int Status;
- typedef struct {
- struct student * elem;
- int len;
- int listsize;
- }list;
- typedef struct student {
- char name[10];
- int grade;
- }STUDENT;
- //增加
- Status ListInsert(list &L, int i) {
- if (i<1 || i>L.len + 1)
- return ERROR;
- if (L.len >= L.listsize)
- L.elem = (STUDENT*)malloc((LEN + 1) * sizeof(STUDENT));
- if (!L.elem) exit(OVERFLOW);
- STUDENT* q, * p;
- q = &L.elem[i - 1];
- for (p = &L.elem[L.len - 1]; p >= q; p--)
- *(p + 1) = *p;
- printf("请输入要添加的名字及成绩\n");
- scanf_s("%s", q->name,10);
- scanf_s("%d",& q->grade);
- ++L.len;
- }
- //删除
- Status ListDelete(list &L, int i)
- {
- if (i<1 || i>L.len)
- return ERROR;
- STUDENT* p, * q, e;
- p = &L.elem[i - 1];
- e = L.elem[i - 1];
- q = L.elem + L.len - 1;
- for (; p <= q; p++)
- *p = *(p + 1);
- L.len--;
- }
- //修改
- Status exchange1(list& L)
- {
- int i;
- printf("请输入修改的位置为第几个\n");
- scanf_s("%d", &i);
- if (i<1 || i>L.len)
- return ERROR;
- printf("要修改为的名字是\n");
- scanf_s("%s", (L.elem+i-1)->name,10);
- }
- Status exchange2(list& L, int i, int& e)
- {
- if (i<1 || i>L.len)
- return ERROR;
- ( L.elem + i - 1)->grade = e;
- }
- int main()
- {
- list m;
- m.elem = (STUDENT*)malloc(LEN * sizeof(STUDENT));
- m.listsize = LEN;
- *m.elem = { "xiaoming",88 };
- *(m.elem+1) = {"xiaohong",90};
- *(m.elem+2) = { "xiaolin",85};
- *(m.elem +3) = {"xiaofang",70 };
- *(m.elem + 4) = { "xiaoli",93 };
- *(m.elem + 5) = { "xiaohuo",90 };
- m.len = 6;
- int a = 0,x;
- for (a = 0; a < m.len; a++)
- {
- printf("%s ", m.elem[a].name);
- printf("%d\n", m.elem[a].grade);
- }
- printf("1、增加数据\n2、删除数据\n3、修改成绩\n4、修改名字\n 选择你要进行的操作数字:\n");
- scanf_s("%d", &x);
- int i, e;
- switch (x)
- {
- case 1: {printf("请输入要添加的位置\n");
- scanf_s("%d", &i);
- ListInsert(m, i); }
- break;
- case 2: {printf("请输入要删除的位置\n");
- scanf_s("%d", &i);
- ListDelete(m, i); }
- break;
- case 3: {printf("请输入修改的位置为第几个,要修改为的成绩\n");
- scanf_s("%d %d", &i, &e);
- exchange2(m, i, e); }
- break;
- case 4: exchange1(m);
- break;
- default:printf("error\n");
- break;
- }
- printf("最终数据情况为\n");
- for (a = 0; a < m.len; a++)
- {
- printf("%s ", m.elem[a].name);
- printf("%d\n", m.elem[a].grade);
- }
- return 0;
- }
简陋版学生成绩管理系统
于 2022-03-19 12:57:28 首次发布