欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言實現(xiàn)學(xué)籍管理系統(tǒng)課程設(shè)計

 更新時間:2022年07月22日 09:37:15   作者:指關(guān)節(jié)  
這篇文章主要為大家詳細介紹了C語言實現(xiàn)學(xué)籍管理系統(tǒng)課程設(shè)計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言實現(xiàn)學(xué)籍管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

學(xué)校的課程設(shè)計,自己完成后整理了一下。
自己用鏈表實現(xiàn)的一個較簡單的學(xué)籍管理系統(tǒng),都是通過一些鏈表以及文件的基本操作完成。

功能實現(xiàn)

1-錄入學(xué)生信息。
2-查詢學(xué)生信息。
3-修改學(xué)生信息 。
4-刪除學(xué)生信息。
5-顯示學(xué)生信息。
6-統(tǒng)計信息報表。
7-讀盤,存盤。

注:一些getchar()以及換行符是我為了讓界面美觀自己加的。

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<ctype.h>
#include<string.h>
#include<windows.h>
#define LEN sizeof(struct _stu)

typedef struct _stu
{
? ? long int id; ? ? ? ?//學(xué)號
? ? char name[20]; ? ? ?//姓名
? ? char sex[10]; ? ? ? //性別
? ? char teacher[20]; ? //老師
? ? int years; ? ? ? ? ?//年齡
? ? char date[20]; ? ? ?//入學(xué)時間
? ? float score; ? ? ? ?//入學(xué)成績
? ? struct _stu *next; ?//指向下個結(jié)點的指針
}Stu;

int count = 0;//鏈表長度,學(xué)生總數(shù)
char choice_s;//選擇

void Show();//登陸界面
void Menu();//顯示主菜單
Stu *Insert(Stu *pHead);//錄入
Stu *Find(Stu *pHead, int id);
void Find_sum(Stu *pHead);//查詢
void print(Stu *p);//顯示
void Change(Stu *pHead, int id);//修改
Stu *Delete(Stu *pHead, int id);//刪除
void printAll(Stu *pHead);//顯示全部學(xué)生信息(總)
void printAll_1(Stu *pHead);//顯示全部學(xué)生信息(姓名升序)
void printAll_2(Stu *pHead);//顯示全部學(xué)生信息(成績降序)
void data_statistics(Stu *pHead);//數(shù)據(jù)統(tǒng)計,打印報表
Stu *read_file(Stu *pHead);//讀盤
void DeleteLink(Stu *pHead);//銷毀鏈表
void save_file(Stu *pHead);//存盤

int main()
{
? ? SetConsoleTitle("西安郵電大學(xué)學(xué)籍管理系統(tǒng)");?? ??? ?//頭文件<windows.h>

? ? int i = 0;
? ? long int id;
? ? Stu *pHead = NULL;

? ? system("color 5A");?? ??? ??? ??? ??? ?//頭文件<windows.h>,改變程序背景及字體顏色
? ? Show();
? ? pHead = read_file(pHead);
? ? while(1)
? ? {
? ? ? ? Menu();
? ? ? ? switch(choice)
? ? ? ? {
? ? ? ? case '1':
? ? ? ? ? ? pHead = Insert(pHead);
? ? ? ? ? ? break;
? ? ? ? case '2':
? ? ? ? ? ? Find_sum(pHead);
? ? ? ? ? ? break;
? ? ? ? case '3':
? ? ? ? ? ? printf("\n\n");
? ? ? ? ? ? printf("\t輸入要修改學(xué)生學(xué)號: ");
? ? ? ? ? ? scanf("%ld",&id);
? ? ? ? ? ? Change(pHead,id);
? ? ? ? ? ? break;
? ? ? ? case '4':
? ? ? ? ? ? printf("\n\n");
? ? ? ? ? ? printf("\t輸入要刪除學(xué)生學(xué)號: ");
? ? ? ? ? ? scanf("%ld",&id);
? ? ? ? ? ? pHead = Delete(pHead,id);
? ? ? ? ? ? break;
? ? ? ? case '5':
? ? ? ? ? ? printAll(pHead);
? ? ? ? ? ? break;
? ? ? ? case '6':
? ? ? ? ? ? data_statistics(pHead);
? ? ? ? ? ? break;
? ? ? ? case '7':
? ? ? ? ? ? printf("\n\n");
? ? ? ? ? ? printf("\t學(xué)生總數(shù)為:%d\n",count);
? ? ? ? ? ? printf("\n");
? ? ? ??? ? ?? ?printf("\t請按任意鍵繼續(xù)...");
? ? ? ? ? ? break;
? ? ? ? case '0':
? ? ? ? ? ? save_file(pHead);
? ? ? ? ? ? DeleteLink(pHead);?? ?//銷毀鏈表
? ? ? ? ? ? printf("\n\n\n");
? ? ? ? ? ? printf("\t謝謝使用!\n");
? ? ? ? ? ? exit(0);
? ? ? ? }
? ? }
? ? return 0;
}

void Show()?? ?//自己添加的登陸功能,比較簡單,可以自己修改添加
{
? ? int i;
? ? char passwd[18];
? ? char *ch = "WELCOME";
? ? printf("\n\n\n");
? ? printf("\t\t\t----------------------------------------------------------\n");
? ? printf("\t\t\t| ? ? ? ? ? ? ? ? Welcome To The System ? ? ? ? ? ? ? ? ?|\n");
? ? printf("\t\t\t----------------------------------------------------------\n");
? ? printf("\t\t\t ? ? ? ? ? ? ? ? ?用戶名登陸:");

? ?do
? ? {
? ? ? ? scanf("%s",passwd);
? ? ? ? if((strcmp(passwd,"1234567")) != 0)
? ? ? ? {
? ? ? ? ? ? printf("\a");//錯誤警示
? ? ? ? ? ? printf("\n");
? ? ? ? ? ? printf("\t\t\t ? ? ? ? ? ? ? ? ?用戶名錯誤,請重新輸入:");
? ? ? ? ? ? fflush(stdin);
? ? ? ? }
? ? }while((strcmp(passwd,"1234567")) != 0);

? ? for(i = 1; i <= 100; i++)
? ? {
? ? ? ? printf("\n\n\n\n\n\n\n\n\n");
? ? ? ? printf("\t\t\t\t\t加載:%d%%",i);
? ? ? ? Sleep(9);?? ??? ??? ??? ?//頭文件<windows.h>,停頓9毫秒
? ? ? ? system("cls");?? ??? ??? ?//頭文件<windows.h>,清屏
? ? }

? ? printf("\n\n\n\n\n\n\n\n\n");
? ? printf("\t\t\t\t\t加載完畢");
? ? Sleep(666);
? ? system("cls");

? ? printf("\n\n\n\n\n\n\n\n\n");
? ? printf("\t\t\t\t\t");
? ? for(i = 0; i < 7; i++)
? ? {
? ? ? ? printf("%c",ch[i]);
? ? ? ? Sleep(333);
? ? }
? ? printf("\n\n\n");
? ? printf("\t\t\t\t\t\t\t請按任意鍵繼續(xù)...");
}

void Menu()?? ??? ?//主菜單
{
? ? getch();
? ? system("cls");//清屏
? ? system("color 0D");
? ? printf("\n\n");
? ? printf("\t----------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? 歡迎使用學(xué)籍管理系統(tǒng) ? ? ? ? ? ? ? ? ? |\n");
? ? printf("\t----------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? 1-錄入學(xué)生信息 ? ? ? ? ? ? ? ? ? ? ? |\n");
? ? printf("\t----------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? 2-查詢學(xué)生信息 ? ? ? ? ? ? ? ? ? ? ? |\n");
? ? printf("\t----------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? 3-修改學(xué)生信息 ? ? ? ? ? ? ? ? ? ? ? |\n");
? ? printf("\t----------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? 4-刪除學(xué)生信息 ? ? ? ? ? ? ? ? ? ? ? |\n");
? ? printf("\t----------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? 5-顯示學(xué)生信息 ? ? ? ? ? ? ? ? ? ? ? |\n");
? ? printf("\t----------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? 6-統(tǒng)計信息報表 ? ? ? ? ? ? ? ? ? ? ? |\n");
? ? printf("\t----------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? 7-學(xué)生總數(shù)(.讀盤) ? ? ? ? ? ? ? ? ? ?|\n");
? ? printf("\t----------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? 0-退出程序(.存盤) ? ? ? ? ? ? ? ? ? ?|\n");
? ? printf("\t----------------------------------------------------------\n");
? ? printf("\t請選擇功能(0-7): ");
? ? fflush(stdin);
? ? scanf("%c",&choice_s);
? ? if(choice_s < '0' || choice_s > '7')
? ? {
? ? ? ? printf("\t請重新選擇功能(0-7): ");
? ? ? ? scanf("%c",&choice_s);
? ? }
? ? system("cls");//清屏
}

Stu *Insert(Stu *pHead)?? ??? ?//創(chuàng)建鏈表
{
? ? Stu *pEnd;
? ? Stu *pNew,*q;
? ? pNew = (Stu *)malloc(LEN);
? ? q = pHead;
? ? pEnd = pHead;

? ? printf("\n\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ?***錄入學(xué)生信息*** ? ? ? ? ? ? ? ? ? |\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t該學(xué)生的學(xué)號為: ");
? ? scanf("%ld",&pNew->id);

? ? while(pNew->id < 0)
? ? {
? ? ? ? printf("\t學(xué)號不能為負,請重新輸入");
? ? ? ? scanf("%ld",&pNew->id);
? ? }
? ? while(q)
? ? {
? ? ? ? if(q->id == pNew->id)
? ? ? ? {
? ? ? ? ? ? printf("\t學(xué)號已存在,請重新輸入: ");
? ? ? ? ? ? scanf("%ld",&pNew->id);
? ? ? ? ? ? q = pHead;
? ? ? ? ? ? continue;
? ? ? ? }
? ? ? ? q = q->next;
? ? }
? ? printf("\t學(xué)生姓名: ");
? ? scanf("%s",pNew->name);
? ? printf("\t學(xué)生性別: ");
? ? scanf("%s",pNew->sex);
? ? printf("\t學(xué)生老師: ");
? ? scanf("%s",pNew->teacher);
? ? printf("\t學(xué)生年齡: ");
? ? scanf("%d",&pNew->years);
? ? while(pNew->years < 0)
? ? {
? ? ? ? printf("\t年齡不能為負,請重新輸入:");
? ? ? ? scanf("%d",&pNew->years);
? ? }
? ? printf("\t學(xué)生入學(xué)時間: ");
? ? scanf("%s",pNew->date);
? ? while(strlen(pNew->date) < 8)
? ? {
? ? ? ? printf("\t入學(xué)日期(年/月/日),請重新輸入; ");
? ? ? ? scanf("%s",pNew->date);
? ? }
? ? printf("\t學(xué)生入學(xué)成績: ");
? ? scanf("%f",&pNew->score);
? ? while(pNew->score < 0 || pNew->score > 750)
? ? {
? ? ? ? printf("\t入學(xué)成績(0-750),請重新輸入: ");
? ? ? ? scanf("%f",&pNew->score);
? ? }
? ??
? ? pNew->next = NULL;
? ? if(pHead == NULL)
? ? ? ? pHead = pNew;
? ? else
? ? {
? ? ? ? while(pEnd && pEnd->next != NULL)
? ? ? ? ? ? pEnd = pEnd->next;
? ? ? ? pEnd->next = pNew;
? ? }
? ? count++;
? ? printf("\n");
? ? printf("\t請按任意鍵繼續(xù)...");
? ? return pHead;
}

void Find_sum(Stu *pHead)?? ?//4種查詢方式?? ?
{
? ? char choice;
? ? long int id;
? ? float score;
? ? char teacher[20];
? ? Stu *p = pHead;

? ? printf("\n\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ?***查詢學(xué)生信息*** ? ? ? ? ? ? ? ? ? |\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? ? 1.按學(xué)號查詢 ? ? ? ? ? ? ? ? ? ? ?|\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? ? 2.按成績查詢 ? ? ? ? ? ? ? ? ? ? ?|\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? ? 3.按老師和學(xué)號查詢 ? ? ? ? ? ? ? ?|\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? ? 4.按老師和成績查詢 ? ? ? ? ? ? ? ?|\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? ? 0.返回主菜單 ? ? ? ? ? ? ? ? ? ? ?|\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t請選擇查詢方式: ");
? ? fflush(stdin);
? ? scanf("%c",&choice);
? ? while(choice < '0' || choice > '4')
? ? {
? ? ? ? printf("\t請重新選擇功能(0-4): ");
? ? ? ? fflush(stdin);
? ? ? ? scanf("%c",&choice);
? ? }

? ? switch(choice)
? ? {
? ? case '1':
? ? ? ? printf("\t輸入要查詢學(xué)生學(xué)號: ");
? ? ? ? scanf("%ld",&id);
? ? ? ? print(Find(pHead,id));?? ??? ?//調(diào)用print(),F(xiàn)ind()函數(shù)
? ? ? ? printf("\n");
? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? getchar();
? ? ? ? return;
? ? case '2':
? ? ? ? printf("\t輸入要查詢學(xué)生成績: ");
? ? ? ? scanf("%f",&score);
? ? ? ? while(p && p->score != score) p = p->next;
? ? ? ? if(!p)
? ? ? ? {
? ? ? ? ? ? printf("\t對不起,沒有查詢到該學(xué)生信息.\n");
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n");
? ? ? ? ? ? printf("\t---------------------------------------------------------\n");
? ? ? ? ? ? while(p)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if(p->score == score)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",p->id,p->name,p->sex,p->teacher,p->years,p->date,p->score);
? ? ? ? ? ? ? ? ? ? p = p->next;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? p = p->next;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? printf("\n");
? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? getchar();
? ? ? ? return;
? ? case '3':
? ? ? ? printf("\t輸入要查詢老師和其學(xué)生學(xué)號: ");
? ? ? ? scanf("%s %ld",teacher,&id);
? ? ? ? while(p && strcmp(p->teacher,teacher) != 0 && p->id != id) p = p->next;
? ? ? ? if(!p)
? ? ? ? {
? ? ? ? ? ? printf("\t對不起,沒有查詢到該信息.\n");
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n");
? ? ? ? ? ? printf("\t---------------------------------------------------------\n");
? ? ? ? ? ? while(p)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if(strcmp(p->teacher,teacher) == 0 && p->id == id)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",p->id,p->name,p->sex,p->teacher,p->years,p->date,p->score);
? ? ? ? ? ? ? ? ? ? p = p->next;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? p = p->next;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? printf("\n");
? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? getchar();
? ? ? ? return;
? ? case '4':
? ? ? ? printf("\t輸入要查詢老師和其學(xué)生成績: ");
? ? ? ? scanf("%s %f",teacher,&score);
? ? ? ? while(p && strcmp(p->teacher,teacher) != 0 && p->score != score) p = p->next;
? ? ? ? if(!p)
? ? ? ? {
? ? ? ? ? ? printf("\t對不起,沒有查詢到該信息.\n");
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n");
? ? ? ? ? ? printf("\t---------------------------------------------------------\n");
? ? ? ? ? ? while(p)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if(strcmp(p->teacher,teacher) == 0 && p->score == score)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",p->id,p->name,p->sex,p->teacher,p->years,p->date,p->score);
? ? ? ? ? ? ? ? ? ? p = p->next;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? p = p->next;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? printf("\n");
? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? getchar();
? ? ? ? return;
? ? case '0':
? ? ? ? return;
? ? }
}

Stu *Find(Stu *pHead, int id)
{
? ? Stu *p = pHead;
? ? while(p && p->id != id) p = p->next;
? ? return p;
}

void print(Stu *p)
{
? ? if(!p)
? ? {
? ? ? ? printf("\t對不起,沒有查詢到該學(xué)生信息.\n");
? ? }
? ? else
? ? {
? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n");
? ? ? ? printf("\t---------------------------------------------------------\n");
? ? ? ? getchar();
? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",p->id,p->name,p->sex,p->teacher,p->years,p->date,p->score);
? ? }
}

void Change(Stu *pHead, int id)
{
? ? Stu *pNew = Find(pHead,id);?? ??? ?調(diào)用Find()函數(shù)
? ? Stu *q = pHead;
? ? char choice;
? ? int num;
? ? int flag = 0;

? ? if(pNew)
? ? {
? ? ? ? printf("\n\n");
? ? ? ? printf("\t---------------------------------------------------------\n");
? ? ? ? printf("\t| ? ? ? ? ? ? ? ? ?***修改學(xué)生信息*** ? ? ? ? ? ? ? ? ? |\n");
? ? ? ? printf("\t---------------------------------------------------------\n");
? ? ? ? printf("\t該學(xué)生信息如下: \n");
? ? ? ? printf("\t---------------------------------------------------------\n");
? ? ? ? print(pNew);?? ??? ??? ?//調(diào)用print()函數(shù)
? ? ? ? printf("\t---------------------------------------------------------\n");
? ? ? ? printf("\t1.學(xué)號\t2.姓名3.性別\t4.老師\t5.年齡\n");
? ? ? ? printf("\t6.入學(xué)時間\t7.入學(xué)成績\t8.全部修改\t0.返回主菜單\n");
? ? ? ? printf("\t請選擇修改類型: ");
? ? ? ? fflush(stdin);
? ? ? ? scanf("%c",&choice);
? ? ? ? while(choice < '0' || choice > '8')
? ? ? ? {
? ? ? ? ? ? printf("\t請重新選擇功能(0-8): ");
? ? ? ? ? ? fflush(stdin);
? ? ? ? ? ? scanf("%c",&choice);
? ? ? ? }

? ? ? ? switch(choice)
? ? ? ? {
? ? ? ? case '1':
? ? ? ? ? ? printf("\t請輸入新的學(xué)號: ");
? ? ? ? ? ? scanf("%ld",&pNew->id);
? ? ? ? ? ? while(pNew->id < 0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t學(xué)號不能為負,請重新輸入: ");
? ? ? ? ? ? ? ? scanf("%ld",&pNew->id);
? ? ? ? ? ? }
? ? ? ? ? ? num = pNew->id;
? ? ? ? ? ? while(q)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if(q->id == num)
? ? ? ? ? ? ? ? ? ? flag++;
? ? ? ? ? ? ? ? q = q->next;
? ? ? ? ? ? }
? ? ? ? ? ? if(flag > 1)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t學(xué)號已存在,請重新選擇!\n");?? ?//學(xué)號已存在,直接返回主菜單
? ? ? ? ? ? ? ? printf("\n");
? ? ? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? ? ? ? ? return;
? ? ? ? ? ? }
? ? ? ? ? ? printf("\n");
? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? ? ? getchar();
? ? ? ? ? ? return;
? ? ? ? case '2':
? ? ? ? ? ? printf("\t請輸入新的學(xué)生姓名: ");
? ? ? ? ? ? scanf("%s",pNew->name);
? ? ? ? ? ? printf("\n");
? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? ? ? getchar();
? ? ? ? ? ? return;
? ? ? ? case '3':
? ? ? ? ? ? printf("\t請輸入新的學(xué)生性別: ");
? ? ? ? ? ? scanf("%s",pNew->sex);
? ? ? ? ? ? printf("\n");
? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? ? ? getchar();
? ? ? ? ? ? return;
? ? ? ? case '4':
? ? ? ? ? ? printf("\t請輸入新的學(xué)生老師: ");
? ? ? ? ? ? scanf("%s",pNew->teacher);
? ? ? ? ? ? printf("\n");
? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? ? ? getchar();
? ? ? ? ? ? return;
? ? ? ? case '5':
? ? ? ? ? ? printf("\t請輸入新的學(xué)生年齡: ");
? ? ? ? ? ? scanf("%d",&pNew->years);
? ? ? ? ? ? while(pNew->years < 0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t年齡不能為負,請重新輸入:");
? ? ? ? ? ? ? ? scanf("%d",&pNew->years);
? ? ? ? ? ? }
? ? ? ? ? ? printf("\n");
? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? ? ? getchar();
? ? ? ? ? ? return;
? ? ? ? case '6':
? ? ? ? ? ? printf("\t請輸入新的入學(xué)時間: ");
? ? ? ? ? ? scanf("%s",pNew->date);
? ? ? ? ? ? while(strlen(pNew->date) < 8)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t入學(xué)日期(年/月/日),請重新輸入; ");
? ? ? ? ? ? ? ? scanf("%s",pNew->date);
? ? ? ? ? ? }
? ? ? ? ? ? printf("\n");
? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? ? ? getchar();
? ? ? ? ? ? return;
? ? ? ? case '7':
? ? ? ? ? ? printf("\t請輸入新的入學(xué)成績: ");
? ? ? ? ? ? scanf("%f",&pNew->score);
? ? ? ? ? ? while(pNew->score < 0 || pNew->score > 750)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t入學(xué)成績(0-750),請重新輸入: ");
? ? ? ? ? ? ? ? scanf("%f",&pNew->score);
? ? ? ? ? ? }
? ? ? ? ? ? printf("\n");
? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? ? ? getchar();
? ? ? ? ? ? return;
? ? ? ? case '8':
? ? ? ? ? ? printf("\t學(xué)號: ");
? ? ? ? ? ? scanf("%ld",&pNew->id);
? ? ? ? ? ? while(pNew->id < 0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t學(xué)號不能為負,請重新輸入: ");
? ? ? ? ? ? ? ? scanf("%ld",&pNew->id);
? ? ? ? ? ? }
? ? ? ? ? ? num = pNew->id;
? ? ? ? ? ? while(q)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if(q->id == num)
? ? ? ? ? ? ? ? ? ? flag++;
? ? ? ? ? ? ? ? q = q->next;
? ? ? ? ? ? }
? ? ? ? ? ? if(flag > 1)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t學(xué)號已存在,請重新選擇!");
? ? ? ? ? ? ? ? printf("\n");
? ? ? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? ? ? ? ? return;
? ? ? ? ? ? }
? ? ? ? ? ? printf("\t學(xué)生名稱: ");
? ? ? ? ? ? scanf("%s",pNew->name);
? ? ? ? ? ? printf("\t學(xué)生性別: ");
? ? ? ? ? ? scanf("%s",pNew->sex);
? ? ? ? ? ? printf("\t老師: ");
? ? ? ? ? ? scanf("%s",pNew->teacher);
? ? ? ? ? ? printf("\t年齡: ");
? ? ? ? ? ? scanf("%d",&pNew->years);
? ? ? ? ? ? while(pNew->years < 0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t年齡不能為負,請重新輸入:");
? ? ? ? ? ? ? ? scanf("%d",&pNew->years);
? ? ? ? ? ? }
? ? ? ? ? ? printf("\t入學(xué)時間: ");
? ? ? ? ? ? scanf("%s",pNew->date);
? ? ? ? ? ? while(strlen(pNew->date) < 8)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t入學(xué)日期(年/月/日),請重新輸入; ");
? ? ? ? ? ? ? ? scanf("%s",pNew->date);
? ? ? ? ? ? }
? ? ? ? ? ? printf("\t入學(xué)成績: ");
? ? ? ? ? ? scanf("%f",&pNew->score);
? ? ? ? ? ? while(pNew->score < 0 || pNew->score > 750)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t入學(xué)成績(0-750),請重新輸入: ");
? ? ? ? ? ? ? ? scanf("%f",&pNew->score);
? ? ? ? ? ? }
? ? ? ? ? ? printf("\n");
? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? ? ? getchar();
? ? ? ? ? ? return;
? ? ? ? case '0':
? ? ? ? ? ? printf("\n");
? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? ? ? return;
? ? ? ? }
? ? }
? ? else
? ? {
? ? ? ? printf("\t對不起,沒有查詢到該學(xué)生信息.\n");
? ? ? ? printf("\n");
? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? getchar();
? ? }
}

Stu *Delete(Stu *pHead, int id)
{
? ? Stu *pNew = Find(pHead,id);?? ??? ?//調(diào)用Find()函數(shù)
? ? Stu *pTemp,*q;
? ? char ch;
? ? pTemp = pHead;
? ? q = pTemp;

? ? if(pTemp == NULL)
? ? {
? ? ? ? printf("\t暫無學(xué)生信息,請先添加!");
? ? ? ? printf("\n");
? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? getchar();
? ? ? ? return pHead;
? ? }
? ? if(pNew)
? ? {
? ? ? ? print(pNew);
? ? ? ? printf("\t是否刪除(y/n): ");
? ? ? ? scanf("%c",&ch);
? ? ? ? count--;
? ? ? ? switch(ch)
? ? ? ? {
? ? ? ? case 'y':
? ? ? ? ? ? while(pTemp)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if(pTemp->id == id)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? if(pHead == pTemp)?? ?//特殊情況,刪除頭節(jié)點
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? pHead = pTemp->next;
? ? ? ? ? ? ? ? ? ? ? ? printf("\n");
? ? ? ? ? ? ? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? ? ? ? ? ? ? ? ? return pHead;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? q->next = pTemp->next;
? ? ? ? ? ? ? ? ? ? free(pTemp);
? ? ? ? ? ? ? ? ? ? printf("\n");
? ? ? ? ? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? ? ? ? ? ? ? return pHead;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? q = pTemp;
? ? ? ? ? ? ? ? pTemp = pTemp->next;
? ? ? ? ? ? }
? ? ? ? case 'n':
? ? ? ? ? ? return pHead;
? ? ? ? }
? ? }
? ? else
? ? {
? ? ? ? printf("\t對不起,沒有查詢到該學(xué)生信息.\n");
? ? ? ? printf("\n");
? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? getchar();
? ? ? ? return pHead;
? ? }
}

void printAll(Stu *pHead)?? ??? ?//3種顯示方式,通過冒泡排序
{
? ? char choice;
? ? Stu *pNew = pHead;
? ? printf("\n\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ?***顯示學(xué)生信息*** ? ? ? ? ? ? ? ? ? |\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? 1.按學(xué)號升序顯示 ? ? ? ? ? ? ? ? ? ?|\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? 2.按姓名升序顯示 ? ? ? ? ? ? ? ? ? ?|\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? 3.按成績降序顯示 ? ? ? ? ? ? ? ? ? ?|\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? 0.返回主菜單 ? ? ? ? ? ? ? ? ? ? ? ?|\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t請選擇顯示方式: ");
? ? fflush(stdin);
? ? scanf("%c",&choice);
? ? while(choice < '0' || choice > '3')
? ? {
? ? ? ? printf("\t請重新選擇功能(0-3): ");
? ? ? ? fflush(stdin);
? ? ? ? scanf("%c",&choice);
? ? }

? ? switch(choice)
? ? {
? ? case '1':
? ? ? ? if(pNew == NULL)
? ? ? ? {
? ? ? ? ? ? printf("\t對不起,無學(xué)生信息!\n");
? ? ? ? }
? ? ? ? else
? ? ? ? {?? ?
? ? ? ? ?? ?//冒泡排序
? ? ? ? ? ? Stu *p = NULL;
? ? ? ? ? ? Stu *q = NULL;
? ? ? ? ? ? Stu *r = NULL;
? ? ? ? ? ? Stu n;
? ? ? ? ? ? for(p = pHead; p; p = p->next)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? for(q = p->next; q; q = q->next)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? if(p->id > q->id)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? n = *p;
? ? ? ? ? ? ? ? ? ? ? ? *p = *q;
? ? ? ? ? ? ? ? ? ? ? ? *q = n;
? ? ? ? ? ? ? ? ? ? ? ? r = p->next;
? ? ? ? ? ? ? ? ? ? ? ? p->next = q->next;
? ? ? ? ? ? ? ? ? ? ? ? q->next = r;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n");
? ? ? ? ? ? printf("\t-------------------------------------------------------------\n");
? ? ? ? ? ? while(pNew)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",pNew->id,pNew->name,pNew->sex,pNew->teacher,pNew->years,pNew->date,pNew->score);
? ? ? ? ? ? ? ? pNew = pNew->next;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? printf("\n");
? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? getchar();
? ? ? ? return;
? ? case '2':
? ? ? ? printAll_1(pHead);
? ? ? ? printf("\n");
? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? getchar();
? ? ? ? return;
? ? case '3':
? ? ? ? printAll_2(pHead);
? ? ? ? printf("\n");
? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? getchar();
? ? ? ? return;
? ? case '0':
? ? ? ? return;
? ? }
}

void printAll_1(Stu *pHead)
{
? ? Stu *pNew = pHead;
? ? if(pNew == NULL)
? ? {
? ? ? ? printf("\t對不起,無學(xué)生信息!\n");
? ? }
? ? else
? ? {
? ? ? ? Stu *p = NULL;
? ? ? ? Stu *q = NULL;
? ? ? ? Stu *r = NULL;
? ? ? ? Stu n;
? ? ? ? for(p = pHead; p; p = p->next)
? ? ? ? {
? ? ? ? ? ? for(q = p->next; q; q = q->next)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if(strcmp(p->name,q->name) > 0)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? n = *p;
? ? ? ? ? ? ? ? ? ? *p = *q;
? ? ? ? ? ? ? ? ? ? *q = n;
? ? ? ? ? ? ? ? ? ? r = p->next;
? ? ? ? ? ? ? ? ? ? p->next = q->next;
? ? ? ? ? ? ? ? ? ? q->next = r;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n");
? ? ? ? printf("\t-------------------------------------------------------------\n");
? ? ? ? while(pNew)
? ? ? ? {
? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",pNew->id,pNew->name,pNew->sex,pNew->teacher,pNew->years,pNew->date,pNew->score);
? ? ? ? ? ? pNew = pNew->next;
? ? ? ? }
? ? }
}

void printAll_2(Stu *pHead)
{
? ? Stu *pNew = pHead;
? ? if(pNew == NULL)
? ? {
? ? ? ? printf("\t對不起,無學(xué)生信息!\n");
? ? }
? ? else
? ? {
? ? ? ? Stu *p = NULL;
? ? ? ? Stu *q = NULL;
? ? ? ? Stu *r = NULL;
? ? ? ? Stu n;
? ? ? ? for(p = pHead; p; p = p->next)
? ? ? ? {
? ? ? ? ? ? for(q = p->next; q; q = q->next)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if(p->score < q->score)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? n = *p;
? ? ? ? ? ? ? ? ? ? *p = *q;
? ? ? ? ? ? ? ? ? ? *q = n;
? ? ? ? ? ? ? ? ? ? r = p->next;
? ? ? ? ? ? ? ? ? ? p->next = q->next;
? ? ? ? ? ? ? ? ? ? q->next = r;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n");
? ? ? ? printf("\t-------------------------------------------------------------\n");
? ? ? ? while(pNew)
? ? ? ? {
? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",pNew->id,pNew->name,pNew->sex,pNew->teacher,pNew->years,pNew->date,pNew->score);
? ? ? ? ? ? pNew = pNew->next;
? ? ? ? }
? ? }
}

void data_statistics(Stu *pHead)?? ??? ?//3種打印方式,通過多遍遍歷鏈表
{
? ? char choice;
? ? float score;
? ? Stu *p,*q,*a,*b;
? ? p = q = a = b = pHead;

? ? printf("\n\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ?***統(tǒng)計信息報表*** ? ? ? ? ? ? ? ? ? |\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? 1.分性別打印報表 ? ? ? ? ? ? ? ? ? ?|\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? 2.分成績打印報表 ? ? ? ? ? ? ? ? ? ?|\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? 3.分性別和成績打印報表 ? ? ? ? ? ? ?|\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t| ? ? ? ? ? ? ? ? ? 0.返回主菜單 ? ? ? ? ? ? ? ? ? ? ? ?|\n");
? ? printf("\t---------------------------------------------------------\n");
? ? printf("\t請選擇顯示方式: ");
? ? fflush(stdin);
? ? scanf("%c",&choice);
? ? while(choice < '0' || choice > '3')
? ? {
? ? ? ? printf("\t請重新選擇功能(0-3): ");
? ? ? ? fflush(stdin);
? ? ? ? scanf("%c",&choice);
? ? }

? ? switch(choice)
? ? {
? ? case '1':
? ? ? ? printf("\t男: \n");
? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n");
? ? ? ? printf("\t-------------------------------------------------------------\n");
? ? ? ? while(p)
? ? ? ? {
? ? ? ? ? ? if(strcmp(p->sex,"男") == 0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",p->id,p->name,p->sex,p->teacher,p->years,p->date,p->score);
? ? ? ? ? ? ? ? p = p->next;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? ? ? p = p->next;
? ? ? ? }
? ? ? ? printf("\n");
? ? ? ? printf("\t女: \n");
? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n");
? ? ? ? printf("\t-------------------------------------------------------------\n");
? ? ? ? while(q)
? ? ? ? {
? ? ? ? ? ? if(strcmp(q->sex,"女") == 0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",q->id,q->name,q->sex,q->teacher,q->years,q->date,q->score);
? ? ? ? ? ? ? ? q = q->next;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? ? ? q = q->next;
? ? ? ? }
? ? ? ? printf("\n");
? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? getchar();
? ? ? ? return;
? ? case '2':
? ? ? ? printf("\t你想要以多少分為分界線: ");
? ? ? ? scanf("%f",&score);
? ? ? ? printf("\t%.1f分以下: \n",score);
? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n");
? ? ? ? printf("\t-------------------------------------------------------------\n");
? ? ? ? while(p)
? ? ? ? {
? ? ? ? ? ? if(p->score < score)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",p->id,p->name,p->sex,p->teacher,p->years,p->date,p->score);
? ? ? ? ? ? ? ? p = p->next;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? ? ? p = p->next;
? ? ? ? }
? ? ? ? printf("\n");
? ? ? ? printf("\t%.1f分及以上: \n",score);
? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n");
? ? ? ? printf("\t-------------------------------------------------------------\n");
? ? ? ? while(q)
? ? ? ? {
? ? ? ? ? ? if(q->score >= score)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",q->id,q->name,q->sex,q->teacher,q->years,q->date,q->score);
? ? ? ? ? ? ? ? q = q->next;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? ? ? q = q->next;
? ? ? ? }
? ? ? ? printf("\n");
? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? getchar();
? ? ? ? return;
? ? case '3':
? ? ? ? printf("\t你想要以多少分為分界線: ");
? ? ? ? scanf("%f",&score);
? ? ? ? printf("\t%.1f分及以上男生: \n",score);
? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n");
? ? ? ? printf("\t-------------------------------------------------------------\n");
? ? ? ? while(a)
? ? ? ? {
? ? ? ? ? ? if(strcmp(a->sex,"男") == 0 && a->score >= score)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",a->id,a->name,a->sex,a->teacher,a->years,a->date,a->score);
? ? ? ? ? ? ? ? a = a->next;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? ? ? a = a->next;
? ? ? ? }
? ? ? ? printf("\n");
? ? ? ? printf("\t%.1f分及以上女生: \n",score);
? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n");
? ? ? ? printf("\t-------------------------------------------------------------\n");
? ? ? ? while(b)
? ? ? ? {
? ? ? ? ? ? if(strcmp(b->sex,"女") == 0 && b->score >= score)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",b->id,b->name,b->sex,b->teacher,b->years,b->date,b->score);
? ? ? ? ? ? ? ? b = b->next;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? ? ? b = b->next;
? ? ? ? }
? ? ? ? printf("\n");
? ? ? ? printf("\t%.1f分以下男生: \n",score);
? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n");
? ? ? ? printf("\t-------------------------------------------------------------\n");
? ? ? ? while(p)
? ? ? ? {
? ? ? ? ? ? if(strcmp(p->sex,"男") == 0 && p->score < score)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",p->id,p->name,p->sex,p->teacher,p->years,p->date,p->score);
? ? ? ? ? ? ? ? p = p->next;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? ? ? p = p->next;
? ? ? ? }

? ? ? ? printf("\n");
? ? ? ? printf("\t%.1f分以下女生: \n",score);
? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n");
? ? ? ? printf("\t-------------------------------------------------------------\n");
? ? ? ? while(q)
? ? ? ? {
? ? ? ? ? ? if(strcmp(q->sex,"女") == 0 && q->score < score)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",q->id,q->name,q->sex,q->teacher,q->years,q->date,q->score);
? ? ? ? ? ? ? ? q = q->next;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? ? ? q = q->next;
? ? ? ? }
? ? ? ? printf("\n");
? ? ? ? printf("\t請按任意鍵繼續(xù)...");
? ? ? ? getchar();
? ? ? ? return;
? ? case '0':
? ? ? ? return;
? ? }
}

void DeleteLink(Stu *pHead)?? ??? ?//銷毀鏈表
{
? ? Stu *q = pHead;
? ? if(pHead == NULL)
? ? ? ? return;
? ? while(pHead)
? ? {
? ? ? ? q = pHead->next;
? ? ? ? free(pHead);
? ? ? ? pHead = q;
? ? }
?? ?pHead = NULL;
}

Stu *read_file(Stu *pHead)?? ??? ?//讀盤,直接連接到鏈表
{
? ? FILE *fp;
? ? Stu *pEnd,*pNew;

? ? fp = fopen("d:\\code\\student.txt","r");?? ??? ?//文件名自己設(shè)置
? ? if(fp == NULL)
? ? {
? ? ? ? printf("\t打開失敗,按任意鍵退出!");
? ? ? ? getchar();
? ? }

? ? pNew = (Stu *)malloc(LEN);?? ?//分配內(nèi)存
? ? while(fscanf(fp,"%ld %s %s %s %d %s %f",&pNew->id,pNew->name,pNew->sex,pNew->teacher,&pNew->years,pNew->date,&pNew->score) != EOF)
? ? {
? ? ? ? count++;?? ?//記錄
? ? ? ? pNew->next = NULL;
? ? ? ? if(pHead == NULL)
? ? ? ? ? ? pHead = pNew;
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? pEnd = pHead;
? ? ? ? ? ? while(pEnd && pEnd->next != NULL)
? ? ? ? ? ? ? ? pEnd = pEnd->next;
? ? ? ? ? ? pEnd->next = pNew;
? ? ? ? }
? ? ? ? pNew = (Stu *)malloc(LEN);?? ?//再次分配內(nèi)存
? ? }
? ? free(pNew);?? ?//最后一次分配內(nèi)存是沒有用到的,要釋放掉
? ? fclose(fp);
? ? getchar();
? ? return pHead;
}

void save_file(Stu *pHead)?? ??? ?//存盤
{
? ? FILE *fp;
? ? Stu *p = pHead;

? ? fp = fopen("d:\\code\\student.txt","w");?? ??? ?//文件名自己設(shè)置
? ? if(fp == NULL)
? ? {
? ? ? ? printf("\t打開失敗,按任意鍵退出!");
? ? ? ? getchar();
? ? }

? ? if(p == NULL)
? ? ? ? getch();
? ? else
? ? {
? ? ? ? while(p)
? ? ? ? {
? ? ? ? ? ? fprintf(fp,"%ld %s %s %s %d %s %.1f",p->id,p->name,p->sex,p->teacher,p->years,p->date,p->score);
? ? ? ? ? ? fprintf(fp,"\n");
? ? ? ? ? ? p = p->next;
? ? ? ? }
? ? ? ? printf("\n\n");
? ? ? ? printf("\t存盤成功!");
? ? }
? ? fclose(fp);
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Cocos2d-x UI開發(fā)之場景切換代碼實例

    Cocos2d-x UI開發(fā)之場景切換代碼實例

    這篇文章主要介紹了Cocos2d-x UI開發(fā)之場景切換代碼實例,cocos2d-x中的場景切換是通過導(dǎo)演類調(diào)用相應(yīng)的方法完成的,本文通過代碼和詳細注釋來說明,需要的朋友可以參考下
    2014-09-09
  • C語言全方位講解指針的使用

    C語言全方位講解指針的使用

    指針是C語言中一個非常重要的概念,也是C語言的特色之一。使用指針可以對復(fù)雜數(shù)據(jù)進行處理,能對計算機的內(nèi)存分配進行控制,在函數(shù)調(diào)用中使用指針還可以返回多個值
    2022-04-04
  • C++深入講解引用的特點及與指針的區(qū)別

    C++深入講解引用的特點及與指針的區(qū)別

    引用是C++一個很重要的特性,顧名思義是某一個變量或?qū)ο蟮膭e名,對引用的操作與對其所綁定的變量或?qū)ο蟮牟僮魍耆葍r,這篇文章主要給大家總結(jié)介紹了C++中引用的相關(guān)知識點,需要的朋友可以參考下
    2022-05-05
  • C++中map 字典的基本使用教程

    C++中map 字典的基本使用教程

    Map是字典一樣的數(shù)據(jù)結(jié)構(gòu),它是(鍵,值)對的關(guān)聯(lián)數(shù)組,其中每個唯一鍵僅與單個值相關(guān)聯(lián),下面這篇文章主要給大家介紹了關(guān)于C++中map 字典的基本使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-09-09
  • 查找算法之二分查找的C++實現(xiàn)

    查找算法之二分查找的C++實現(xiàn)

    今天小編就為大家分享一篇關(guān)于查找算法之二分查找的C++實現(xiàn),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C++入門教程之引用與指針

    C++入門教程之引用與指針

    初學(xué)C++時,很容易把指針和引用的用法混在一起,下面這篇文章主要給大家介紹了關(guān)于C++入門教程之引用與指針的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • 簡單掌握Linux系統(tǒng)中fork()函數(shù)創(chuàng)建子進程的用法

    簡單掌握Linux系統(tǒng)中fork()函數(shù)創(chuàng)建子進程的用法

    fork()函數(shù)只能在類Unix系統(tǒng)下使用,因為需要引入unistd頭文件,這里我們就來簡單掌握Linux系統(tǒng)中fork()函數(shù)創(chuàng)建子進程的用法,需要的朋友可以參考下
    2016-06-06
  • c++實現(xiàn)二路歸并排序的示例代碼

    c++實現(xiàn)二路歸并排序的示例代碼

    這篇文章主要介紹了c++實現(xiàn)二路歸并排序的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • C++語言設(shè)計實現(xiàn)五子棋

    C++語言設(shè)計實現(xiàn)五子棋

    這篇文章主要為大家詳細介紹了C++語言設(shè)計實現(xiàn)五子棋,包括數(shù)據(jù)結(jié)構(gòu)和對象設(shè)計及主函數(shù)調(diào)用實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • dword ptr指令詳細解析

    dword ptr指令詳細解析

    8086CPU的指令,可以處理兩種尺寸的數(shù)據(jù),byte和word。所以在機器指令中要指明,指令進行的是字操作還是字節(jié)操作
    2013-09-09

最新評論