導航:首頁 > 編程語言 > 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