导航:首页 > 编程语言 > c语言编程学生信息管理系统

c语言编程学生信息管理系统

发布时间:2024-12-19 10:08:50

Ⅰ 急!求大神!!!利用C语言设计一个简易的学生信息管理系统,包括 学号 姓名 性别 年龄四项。

#include <stdio.h>

#include <stdlib.h>

#include <malloc.h>

#define MAXLEN 100

#define Null 0

typedef struct node {

int num; // 学号

char name[MAXLEN]; // 姓名

struct node *next; // 指针域
}list;

list *creat()
{
list *head,*p,*r;

int i,n; // n 为学生人数

head=(list *)malloc(sizeof(list));

head->next=Null;

r=head;

printf("请输入学生人数.\n");

scanf("%d",&n);

for(i=1;i<=n;i++) {

p=(list *)malloc(sizeof(list));

printf("请输入学生学号:\n");

scanf("%d",&p->num);

printf("请输入学生姓名:\n");

scanf("%s",&p->name);

p->next=Null;

r->next=p; // 这个地方我总是不明白,是怎样让结点下移一个的呢?

r=r->next;
}

return (head);

}

void find (list *h)
{
int k; // 要找的学生学号

list *p;

p=h->next;

printf("请输入要查找的学生学号:\n");

scanf("%d",&k);

while (p && p->num!=k)

p=p->next;

if(p) {

printf("学号\t姓名\t\n");

printf("%d\t%s\t%d\n",p->num,p->name,p->score);
}

else

printf("目标没找到\n");
}

list *del (list *h)
{
int k; // 要删除的学生学号

list *p,*q; // 为什么要两个指针呢?

q=h;

p=h->next;

printf("请输入待删除的学生学号:\n");

scanf("%d",&k);

while (p && p->num!=k) {

q=p;

p=p->next;
}

if(p) {

q->next=p->next;

free(p);
}

else

printf("没有此学生的记录,无法删除!\n");

return (h);

}

list *insert(list *h)
{
list *p,*q,*r,*head;

head=h;

r=h;

p=h->next;

// 下面构造一个学生的信息

q=(list *)malloc(sizeof(list));

printf("请输入待插入学生的学号:\n");

scanf("%d",&q->num);

printf("请输入待插入学生的姓名:\n");

scanf("%s",&q->name);

q->next=Null;

// 找到链表的结尾结点

while(p!=Null) {

r=p;

p=p->next;
}
// 将新结点插入表尾

r->next=q;

r=r->next;

return (head);
}

void output(list *h)
{
list *p;

printf("学号\t姓名\t\n");

p=h->next;

while (p!=NULL) {

printf("%d\t%s\t%d\n",p->num,p->name,p->score);

p=p->next;
}
}

void main()
{
list *p;

int k; // 控制循环的标志

while (1) {

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

printf(" | 学生成绩管理系统 |\n");

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

printf(" | 1. 登记成绩 |\n");

printf(" | 2. 查询成绩 |\n");

printf(" | 3. 插入成绩 |\n");

printf(" | 4. 删除成绩 |\n");

printf(" | 0. 退出系统 |\n");

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

printf("请输入你的选择:\n");

scanf("%d",&k);

switch(k) {

case 1: p=creat(); break;

case 2: find(p); break;

case 3: p=insert(p); break;

case 4: p=del(p); break;

case 0: exit(0);

default : printf("选择错误,重新开始!\n");
}

}// while
}

Ⅱ 学生信息管理系统编程(c语言)

挺好的一个题目啊

但我可不愿意帮人写作业

网上很多类似的,你可以参考下:
#include <stdio.h>
#include <string.h> struct student {
char name[30];
float math;
float chinese;
float english;
float average;
};

int MenuChoice(void);
int EnterAccount(void);
void Enter(struct student *fst);
void Amend(struct student *src);
void Delete(struct student *next);
void Print(struct student *out);

main()
{
struct student one[100] = {0}, *look = one;
int menu, t;

while ((menu = MenuChoice()) != 0)

if (menu >= 1 && menu <= 4 && (t = EnterAccount())) {
look = one + t;

switch (menu) {
case 1:
Enter(look);
break;
case 2:
if (strcmp(look->name, ""))
printf("学号:%d\n姓名: %s\n语文成绩: %.1f\n数学成绩:%.1f\n英语成绩: %f\n平均"成绩:%.1f\n",
t, look->name, look->chinese, look->math, look->english, look->average);
else
printf("对不起,该学号不存在!\n");
break;
case 3:
Amend(look);
break;
case 4:
Delete(look);
break;
}
}
else if (menu == 5)
Print(one);
else
printf("错误的请求!\n");

return 0;
}

int MenuChoice(void)
{
int choice;

printf("请选择:\n"
"1 - 新建学生信息\n"
"2 - 查找学生信息\n"
"3 - 修改学生信息\n"
"4 - 删除学生信息\n"
"5 - 打印学生信息\n"
"0 - 退出\n");
scanf("%d", &choice);

return choice;
}

int EnterAccount(void)
{
int ret;

printf("请输入学号:\n");
scanf("%d", &ret);

if (ret >= 1 && ret <= 100)
return ret -1;

return 0;
}

void Enter(struct student *fst)
{
printf("请输入学生姓名、语文成绩、数学成绩、英语成绩和平均成绩\n");
scanf("%s%f%f%f%f", fst->name, &fst->chinese, &fst->math, &fst->english, &fst->average);
}

void Amend(struct student *src)
{
int t;

printf("请选择:\n"
"1 - 修改学生姓名\n"
"2 - 修改学生语文成绩\n"
"3 - 修改学生数学成绩\n"
"4 - 修改学生英语成绩\n"
"5 - 修改学生平均成绩\n");
scanf("%d", &t);

switch (t) {
case 1:
printf("请输入学生的新名字\n");
scanf("%s", src->name);
break;
case 2:
printf("请输入学生新的语文成绩\n");
scanf("%f", &src->chinese);
break;
case 3:
printf("请输入学生新的数学成绩\n");
scanf("%f", &src->math);
break;
case 4:
printf("请输入学生新的英语成绩\n");
scanf("%f", &src->english);
break;
case 5:
printf("请输入学生新的平均成绩\n");
scanf("%f", &src->average);
break;
}

}

void Delete(struct student *next)
{
strcpy(next->name, "");
next->math = next->english = next->chinese = next->average = 0.0;
}

void Print(struct student *out)
{
struct student *up;

for (up = out; out < &up[100]; out++)

if (strcmp(out->name, ""))
printf("学号:%d\n姓名: %s\n语文成绩: %.1f\n数学成绩:%.1f\n英语成绩: %.1f\n平均成绩:%.1f\n",
out-up + 1, out->name, out->chinese, out->math, out->english, out->average);
}

阅读全文

与c语言编程学生信息管理系统相关的资料

热点内容
手机里删除的文件夹能不能找回来 浏览:130
摩斯码编译器 浏览:377
python语言中item是什么意思 浏览:621
创维健康云电视怎么安装app 浏览:541
安卓加密日记本下载 浏览:644
阿里巴巴pdf 浏览:813
数据安全加密设备 浏览:469
win7vc编译器哪个好 浏览:248
传奇官网源码 浏览:735
日交易金额最大的加密货币 浏览:817
汽车变速器转速算法 浏览:432
php使用redis队列 浏览:685
安卓编程游戏 浏览:901
单片机p0p1p2p3 浏览:980
ora12545linux 浏览:844
有用户名和密码的加密软件 浏览:388
蘑菇网页服务器怎么用 浏览:802
赏金赛服务器怎么下载 浏览:728
mac解压7z命令 浏览:563
压缩2019年6月6日 浏览:751