日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

java创建链表成绩管理系统_成绩管理系统 链表版

發布時間:2025/3/11 windows 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java创建链表成绩管理系统_成绩管理系统 链表版 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.[代碼][C/C++]代碼

/*********************************************************

*程序描述:學生成績管理系統

*運行環境:Windows 7 SP1 X64

*開發環境:CodeBlocks with Win7

*作者:耗子、

*時間:2015.03

**********************************************************/

#include

#include

#include

#include

const int TRUE = 1;

const int FALSE = 0;

const char BACK[] = "back";

typedef struct Student //鏈表元素

{

char name[100], number[100];

double chinese, math, english;

struct Student* next;

}LNode, *Student;

//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓聲明函數↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓//

Student initLinkList();//初始化

void insLinkList(Student* pHead, char name[],//插入元素

char number[], double chinese,

double math, double english);

int delLinkList(Student* pHead, char number[]);//刪除元素

int listLength(Student* pHead);//獲取鏈表長度

int findLinkList(Student* pHead, char number[]);//查找元素,返回位置

int modLinkList(Student* pHead, char number[],//修改元素

double chinese, double math,

double english);

void outPutLinkList(Student* pHead);//輸出所有信息

double scoreLegal(char score[]);//判斷分數合法

int nameLegal(char name[]);//判斷姓名合法

int numberLegal(char number[]);//判斷學號合法

int emptyLinkList(Student* pHead);//判斷鏈表是否為空

void swapNode(Student p, Student q);//負責交換

void putMain();//輸出主UI

void putSort();//輸出排序UI

int isBack(char str[]);//判斷返回

void error(char []);//錯誤警告

void welcome();//歡迎

void bay();//再見

//↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑聲明函數↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑//

//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓主函數↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓//

int main()

{

system("color 0A");

system("mode con cols=80 lines=25");

Student pHead;

Student q, p;

char name[100], number[100], chinese[100], math[100],

english[100];

int op, n; //op是選擇的選項

double cn, ma, eng;

int i, j, sum;

pHead = initLinkList();

welcome();

while (1)

{

begin:

q = pHead;

putMain();

op = (getch() - '0' );

if (op == -1)

continue;

switch (op)

{

case 0://退出

{

bay();

return 0;

}

case 1://添加信息

{

for (;;)

{

printf ("\n\t\t\t叫什么?");

gets(name);

if (isBack(name))

goto begin;

if (nameLegal(name) == 0)

continue;

else

break;

}

number:

for (;;)

{

printf ("\t\t\t學號呢?");

gets(number);

if (isBack(number))

goto begin;

if (numberLegal(number) == 0)

continue;

else

break;

}

while (q != NULL)

{

if (strcmp(q->number, number) == 0)

{

error("學號重復了噻~");

goto number;

}

else

q = q->next;

}

for (;;)

{

printf ("\t\t\t語文多少分?\n\t\t\t");

gets(chinese);

if (isBack(chinese))

goto begin;

cn = scoreLegal(chinese);

if (cn == -1)

continue;

else

break;

}

for (;;)

{

printf ("\t\t\t數學呢?\n\t\t\t");

gets(math);

if (isBack(math))

goto begin;

ma = scoreLegal(math);

if (ma == -1)

continue;

else

break;

}

for (;;)

{

printf ("\t\t\tEnglish:\n\t\t\t");

gets(english);

if (isBack(english))

goto begin;

eng = scoreLegal(english);

if (eng == -1)

continue;

else

break;

}

insLinkList(pHead, name, number,

cn, ma, eng);

printf ("\n\t\t\t學生信息添加完畢\a");

getch();

break;

}

case 2://刪除信息

{

for(;;)

{

if (emptyLinkList(pHead))

break;

printf ("\t\t\t要刪除的學生的學號:");

gets(number);

if (isBack(number))

goto begin;

if (numberLegal(number) == 0)

continue;

if (delLinkList(pHead, number) == 1)

{

printf ("\t\t\t刪除成功!");

getch();

break;

}

else

error ("沒有找到該學生!");

continue;

}

break;

}

case 3://查找信息

{

if (emptyLinkList(pHead))

break;

printf ("\n\t\t\t要查找誰的信息?");

gets(number);

if (isBack(number))

goto begin;

if (numberLegal(number) == 0)

continue;

findLinkList(pHead, number);

break;

}

case 4://修改信息

{

if (emptyLinkList(pHead))

break;

for (;;)

{

printf ("\n\t\t\t要修改哪個的信息?");

gets(number);

if (isBack(number))

goto begin;

if (numberLegal(number) == 0)

continue;

else

break;

}

for (;;)

{

if (strcmp(q->number, number) == 0)

break;

else

q = q->next;

if (q == NULL)

{

error("沒有找到該學生!");

getch();

goto begin;

}

}

for (;;)

{

printf ("\t\t\t語文多少分?\n\t\t\t");

gets(chinese);

if (isBack(chinese))

goto begin;

cn = scoreLegal(chinese);

if (cn == -1)

continue;

else

break;

}

for (;;)

{

printf ("\t\t\t數學呢?\n\t\t\t");

gets(math);

if (isBack(math))

goto begin;

ma = scoreLegal(math);

if (ma == -1)

continue;

else

break;

}

for (;;)

{

printf ("\t\t\tEnglish:\n\t\t\t");

gets(english);

if (isBack(english))

goto begin;

eng = scoreLegal(english);

if (eng == -1)

continue;

else

break;

}

modLinkList(pHead, number, cn, ma, eng);

break;

}

case 5://輸出信息

{

if (emptyLinkList(pHead))

break;

q = pHead;

p = pHead;

sum = listLength(pHead);

putSort();

op = (getch() - '0');

switch (op)

{

case 0://退出

goto begin;

case 1://學號

{

for (i = 0; i < sum - 1; i++)

{

for (j = 0; j < sum - i - 1; j++)

{

if (strcmp(p->number, q->number) > 0)

swapNode(p, q);

q = q->next;

}

p = p->next;

q = p->next;

}

break;

}

case 2://語文

{

for (i = 0; i < sum - 1; i++)

{

for (j = 0; j < sum - i - 1; j++)

{

if (q->chinese < p->chinese)

swapNode(p, q);

q = q->next;

}

p = p->next;

q = p->next;

}

break;

}

case 3://數學

{

for (i = 0; i < sum - 1; i++)

{

for (j = 0; j < sum - i - 1; j++)

{

if (q->math < p->math)

swapNode(p, q);

q = q->next;

}

p = p->next;

q = p->next;

}

break;

}

case 4://英語

{

for (i = 0; i < sum - 1; i++)

{

for (j = 0; j < sum - i - 1; j++)

{

if (q->english < p->english)

swapNode(p, q);

q = q->next;

}

p = p->next;

q = p->next;

}

break;

}

case 5://總分

{

for (i = 0; i < sum - 1; i++)

{

for (j = 0; j < sum - i - 1; j++)

{

if ((q->chinese + q->math + q->english)

< (p->chinese + p->math + p->english))

swapNode(p, q);

q = q->next;

}

p = p->next;

q = p->next;

}

break;

}

default:

break;

}

if (op >= 1 && op <= 5)

outPutLinkList(pHead);

break;

default:

break;

}

}

}

return 0;

}

//↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑主函數↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑//

//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓鏈表操作↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓//

Student initLinkList() //初始化

{

Student pHead;

pHead = (Student)malloc(sizeof(LNode));

pHead->next = NULL;

return pHead;

}

void insLinkList(Student* pHead, char name[], //插入元素

char number[], double chinese,

double math, double english)

{

Student p = pHead;

Student pNew = (Student)malloc(sizeof(LNode));

while (p->next != NULL)

p = p->next;

strcpy(pNew->name, name);

strcpy(pNew->number, number);

pNew->chinese = chinese;

pNew->math = math;

pNew->english = english;

pNew->next = NULL;

p->next = pNew;

return ;

}

int delLinkList(Student* pHead, char number[]) //刪除元素

{

Student p = pHead, q;

while (p->next != NULL)

{

if (strcmp(p->next->number, number) == 0)

{

q = p->next->next;

free(p->next);

p->next = q;

free(q);

return TRUE;

}

p = p->next;

}

return FALSE;

}

int listLength(Student* pHead) //獲得鏈表長度

{

int n = 0;

Student p = pHead;

while (p != NULL)

{

p = p->next;

n++;

}

return n;

}

int findLinkList(Student* pHead, char number[]) //查找元素

{

Student p = pHead;

p = p->next;

double sum;

while (p != NULL)

{

if (strcmp(p->number, number) == 0)

{

system ("CLS");

sum = p->chinese + p->math + p->english;

printf ("\n\n\t\t\t***********************\n\t\t\t* 該學生成 績如下表 *\n");

printf ("\t\t\t***********************\n");

printf ("\t\t\t* %s *\n", p->number);

printf ("\t\t\t***********************\n");

printf ("\t\t\t* 姓名:%-8s *\n", p->name);

printf ("\t\t\t* 語文:%-6.2f *\n", p->chinese);

printf ("\t\t\t* 數學:%-6.2f *\n", p->math);

printf ("\t\t\t* 英語:%-6.2f *\n", p->english);

printf ("\t\t\t* 平均:%-7.2f *\n", sum / 3);

printf ("\t\t\t* 總分:%-7.2f *\n", sum);

printf ("\t\t\t***********************\n");

getch();

return TRUE;

}

p = p->next;

}

error("沒有該學生的信息~");

return FALSE;

}

int modLinkList(Student* pHead, char number[], //修改元素

double chinese, double math,

double english)

{

Student p = pHead;

p = p->next;

while (p != NULL)

{

if (strcmp(p->number, number) == 0)

{

p->chinese = chinese;

p->math = math;

p->english = english;

return TRUE;

}

p = p->next;

}

return FALSE;

}

void outPutLinkList(Student* pHead) //輸出所有元素

{

if (emptyLinkList(pHead))

return ;

system ("CLS");

Student p = pHead;

p = p->next;

printf ("\n\n\t\t\t 所有學生成績如下\n");

printf ("\n *******************************************************************\n");

printf (" * 學 號 * 姓 名 * 語 文 * 數 學 * 英 語 * 總 分 *");

printf ("\n *******************************************************************\n");

while (p != NULL)

{

printf (" * %s *", p->number);

printf (" %-8s *", p->name);

printf (" % 6.2f * %6.2f * %6.2f *", p->chinese, p->math, p->english);

printf (" %6.2f *\n", p->chinese + p->math + p->english);

p = p->next;

}

printf (" *******************************************************************\n");

getch();

return ;

}

int emptyLinkList(Student* pHead) //鏈表為否為空

{

Student p = pHead;

if (p->next == NULL)

{

error("沒有任何學生信息!");

return TRUE;

}

return FALSE;

}

void swapNode(Student p, Student q) //交換節點內容

{

Student temp = initLinkList();

strcpy(temp->name, p->name);

strcpy(p->name, q->name);

strcpy(q->name, temp->name);

strcpy(temp->number, p->number);

strcpy(p->number, q->number);

strcpy(q->number, temp->number);

temp->chinese = p->chinese;

p->chinese = q->chinese;

q->chinese = temp->chinese;

temp->math = p->math;

p->math = q->math;

q->math = temp->math;

temp->english = p->english;

p->english = q->english;

q->english = temp->english;

free(temp);

}

//↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑鏈表操作↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑//

//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓函數定義↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓//

int isBack(char ch[]) //判斷返回

{

if(strcmp(ch, BACK) == 0)

return TRUE;

return FALSE;

}

int numberLegal(char number[]) //判斷學號

{

int i;

if (strlen(number) != 11)//位數判斷

{

error("學號應為十一位純數字");

return FALSE;

}

for (i = 0; i < 11; i++)

if ( ! isdigit(number[i]))//是否是數字

{

error("學號應為十一位純數字");

return FALSE;

}

if (number[0] == 0)//學號首位

{

error("學號第一位不能為0");

return FALSE;

}

return TRUE;

}

int nameLegal(char name[]) //判斷姓名

{

int i, n = strlen(name);

if (n <= 3)

{

error("科普:所謂姓名,一姓一名,最少得倆字兒");

return FALSE;

}

for (i = 0; i < n; i++)

if (name[i] >= 0)

{

error("既然是中國人,名字當然也是中國字了啊");

return FALSE;

}

if (strlen(name) > 8)

{

error ("名字太長的話,請用縮寫");

return FALSE;

}

return TRUE;

}

double scoreLegal(char score[]) //判斷分數

{

int n = strlen(score);

int i, d = 0, g = 0;

double q = 1, h = 0.1;

double sum = 0;

for (i = 0; i < n; i++)

if (score[i] != '.' && (isdigit(score[i]) == 0))

{

error("分數由數字和小數點組成。。。");

return -1;

}

for (i = 0; i < n; i++)

if (score[i] == '.')

{

d = i;

g++;

if (g == 2)

{

error("小數點好多啊");

return -1;

}

}

if (score[0] == '.' || score[n - 1] == '.')

{

error("小數點不能出現在這么詭異的位置");

return -1;

}

if (g == 1)

i = d - 1;

else

i = n - 1;

for ( ; i != -1; i--)

{

sum = sum + (score[i] - '0') * q;

q *= 10;

}

if (g == 1)

{

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

{

sum = sum + (score[i] - '0') * h;

h *= 0.1;

}

}

if (sum > 100.000000)

{

error("分數略大啊~");

return -1;

}

return sum;

}

void error(char ch[]) //提示錯誤

{

system ("color 0C");

printf ("\n\n\t\t\t");

puts(ch);

printf ("\n");

printf ("\a");

getch();

system ("color 0A");

}

void welcome() //歡迎

{

system("title 學生成績管理系統V1.0 By-耗子、");

printf ("\n\n\n\n\t\t\t\t");

printf ("\n\t\t********************************************");

printf ("\n\t\t* 學生成績管理系統V1.0 *");

printf ("\n\t\t* *");

printf ("\n\t\t* 歡迎使用 *");

printf ("\n\t\t* *");

printf ("\n\t\t* 耗子、 *");

printf ("\n\t\t********************************************");

getch();

}

void putMain() //主UI

{

system ("CLS");

system("title 學生成績管理系統V1.0 By-耗子、");

printf ("\n\n");

printf ("\t\t\t 學生成績管理系統V1.0\n");

printf ("\t\t\t************************\n");

printf ("\t\t\t* 1、添加信息 *\n");

printf ("\t\t\t* *\n");

printf ("\t\t\t* 2、刪除信息 *\n");

printf ("\t\t\t* *\n");

printf ("\t\t\t* 3、查找信息 *\n");

printf ("\t\t\t* *\n");

printf ("\t\t\t* 4、修改信息 *\n");

printf ("\t\t\t* *\n");

printf ("\t\t\t* 5、顯示信息 *\n");

printf ("\t\t\t* *\n");

printf ("\t\t\t* 0、退出系統 *\n");

printf ("\t\t\t************************\n");

printf ("\t\t\t請選擇:(0~5)");

}

void putSort() //排序UI

{

system("title 請選擇排序方式 By-耗子、");

system("CLS");

printf ("\n\n");

printf ("\t\t\t 請選擇排序方式 \n");

printf ("\t\t\t************************\n");

printf ("\t\t\t* 1、學號排序 *\n");

printf ("\t\t\t* *\n");

printf ("\t\t\t* 2、語文成績 *\n");

printf ("\t\t\t* *\n");

printf ("\t\t\t* 3、數學成績 *\n");

printf ("\t\t\t* *\n");

printf ("\t\t\t* 4、英語成績 *\n");

printf ("\t\t\t* *\n");

printf ("\t\t\t* 5、總分排序 *\n");

printf ("\t\t\t* *\n");

printf ("\t\t\t* 0、系統菜單 *\n");

printf ("\t\t\t************************\n");

printf ("\t\t\t請選擇:(0~5)");

}

void bay() //退出

{

system("title 謝謝使用 By-耗子、");

system ("CLS");

printf ("\n\n\n\n\t\t\t\t");

printf ("\n\t\t********************************************");

printf ("\n\t\t* *");

printf ("\n\t\t* *");

printf ("\n\t\t* 謝謝使用 *");

printf ("\n\t\t* *");

printf ("\n\t\t* *");

printf ("\n\t\t********************************************");

printf ("\n\n\n\t\n\t\t -By.耗子\n");

getch();

}

//↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑函數定義↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑//

總結

以上是生活随笔為你收集整理的java创建链表成绩管理系统_成绩管理系统 链表版的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。