古詩詞大全網 - 四字成語 - C語言課程設計:學生學籍管理系統。有誰有代碼給我做個參考嗎?謝謝了,C語言和C++的都可以。

C語言課程設計:學生學籍管理系統。有誰有代碼給我做個參考嗎?謝謝了,C語言和C++的都可以。

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

typedef struct stud //學生信息結構

{

long num;

char name[20];

float score;

}Stud;

typedef struct node

{

Stud student;

struct node *next;

}Node;

Node *head=NULL;

void read(void);

void inser(long b);

void print();

void find(long b);

void searchname(char *s);

Node * del(long n);

void sort(int flag);

void menu();

void main()

{

char choose;

int flag=1;

while (flag)

{

menu(); //調用功能菜單函數,顯示菜單項。

printf(" 請選擇:");

choose=getchar();

switch(choose)

{ 1

case '1': read(); //調用建立鏈表的函數;輸出鏈表信息;

print();

printf("\nPress any key Continue ");

//getchar();

getchar();

break;

case '2': //調用按學號查找學生信息的函數;並輸出查找結果信息;

long c;

printf("input the number you want to find:");

scanf("%ld",&c);

find(c);

printf("\nPress any key Continue.");

getchar();

break;

case '3':

//調用按姓名查找學生信息的函數;並輸出查找結果信息;

char s[20];

printf("input the name you want to find:");

scanf("%s",s);

searchname(s);

printf("\n Press any key Continue.");

getchar();

getchar();

break;

case '4':

//調用根據學號刪除某個學生信息的函數;並輸出刪除後的鏈表信息;

Node *h;

long n;

printf("input the number you want to delete:");

scanf("%ld",&n);

h=del(n);

if(h==NULL) printf("No find the student \n");

else print();

printf("\n Press any key Continue.");

getchar();

getchar();

break;

case '5':

//調用插入新的學生信息的函數;並輸出插入後的鏈表信息;

long a;

printf("input the number for the new:\n");

scanf("%ld",&a);

inser(a); 2

print();

printf("\n Press any key Continue.");

getchar();

getchar();

break;

case '6':

//調用按分數降序排序輸出的函數;並輸出排序後的鏈表信息;

sort(1);

print();

sort(0);

printf("\nPress any key Continue.");

getchar();

getchar();

break;

case '0':

//結束程序運行!

flag=0;

printf("\n *** The End! ***\n");

break;

default: printf("\n Wrong Selection !(選擇錯誤,重選)\n");

getchar();

}

}

}

void menu() //綜合作業功能菜單

{

printf(" \n 學 生 信 息 管 理 系 統\n");

printf(" \n 菜 單\n\n");

printf(" \n 1. 建 立 鏈 表 並 顯 示 \n");

printf(" \n 2. 查 找 某 學 號 的 學 生 信 息 \n");

printf(" \n 3. 查 找 某 姓 名 的 學 生 信 息 \n");

printf(" \n 4. 刪 除 某 個 學 號 的 學 生\n");

printf(" \n 5. 插 入 新 的 學 生 信 息 \n");

printf(" \n 6. 按 分 數 降 序 排 序 輸 出 \n");

printf(" \n 0. 退 出\n\n");

}

void read(void)

{

long a;

printf("input the number:");

scanf("%ld",&a);

while(a>0){ 3

inser(a);

printf("input the number:");

scanf("%ld",&a);

}

}

void inser(long b)

{

Node *last,*current,*p;

current=head;

while(current!=NULL&&b>current->student.num){

last=current;

current=current->next;

}

if(current==NULL||b<current->student.num){

printf("input the name,score:");

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

p->student.num=b;

scanf("%s%f",p->student.name,&p->student.score);

p->next=NULL;

if(current==head){

p->next=head;

head=p;

}

else{

p->next=current;

last->next=p;

}

}

else if(b==current->student.num)

printf("error input a different number:");

}

void print()

{

Node *p=head;

printf("學號 姓名 成績:\n");

while(p!=NULL){

printf("%ld %s %f\n",p->student.num,p->student.name,p->student.score);

p=p->next;

} 4

printf("\n");

}

void find(long b)

{

Node *p=head;

while(p!=NULL&&b!=p->student.num)

p=p->next;

if(!p) printf("No found\n");

else {

printf("學號 姓名 成績\n");

printf("%ld %s %f\n",p->student.num,p->student.name,p->student.score);

}

}

void searchname(char *s)

{

Node *p=head;

int flag=0;

printf("學號 姓名 成績:\n");

while(p!=NULL)

{

if(strcmp(p->student.name,s)==0)

{

printf("%ld %s %f\n",p->student.num,p->student.name,p->student.score);

flag=1;

p=p->next;

continue;

}

else p=p->next;

}

if(!flag) printf("No find");

}

Node * del(long n)

{

Node *p=head,*last;

while(p->student.num!=n){

last=p;

p=p->next;

}

if(p==NULL) return p;

else if(p==head) head=p->next;

else last->next=p->next; 5

return head;

}

void sort(int flag)

{

/*flag==1 按分數排序 else 按學號排序*/

Node *p1,*p2,*k;

float t1;

long t2;

char s[20];

for(p1=head;p1->next;p1=p1->next)

{

k=p1;

for(p2=p1->next;p2;p2=p2->next)

if(flag==1&&k->student.score<p2->student.score||!flag&&k->student.num>p2->student.num)

k=p2;

if(k!=p1){

t1=p1->student.score;

p1->student.score=k->student.score;

k->student.score=t1;

t2=p1->student.num;

p1->student.num=k->student.num;

k->student.num=t2;

strcpy(s,p1->student.name);

strcpy(p1->student.name,k->student.name);

strcpy(k->student.name,s);

}

}

}

給妳看看