




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第C語言實現新生入學登記系統printf("\n\n\n\n\n");
printf("\t|---------------歡迎進入----------------|\n");
printf("\t|
新生入學登記系統
|\n");
printf("\t|
主菜單
|\n");
printf("\t|
1.錄入學生信息
|\n");
printf("\t|
2.瀏覽學生信息
|\n");
printf("\t|
3.查找學生信息
|\n");
printf("\t|
4.刪除學生信息
|\n");
printf("\t|
5.修改學生信息
|\n");
printf("\t|
6.新生入學排名
|\n");
printf("\t|
0.退出系統
|\n");
printf("\t|-----------------------------------------|\n");
printf("\n");
printf("\t\t請選擇(0-6):");
}
(4)BeginingAndEnding.h
#ifndefBEGININGANDENDING_H_INCLUDED
#defineBEGININGANDENDING_H_INCLUDED
//關于啟動函數和結束函數
voidBegining();
voidEnding();
#endif//BEGININGANDENDING_H_INCLUDED
(5)BeginingAndEnding.c
#includestdio.h
#includeconio.h
//getc函數使用的頭文件
#include"system.h"
#include"AboutFiles.h"
#include"BeginingAndEnding.h"
#include"MyList.h"
voidBegining()
readInfoFromFile("studentList.txt");
voidEnding()
writeInfoToFile("studentList.txt");
}
(6)MyList.h
#ifndefMYLIST_H_INCLUDED
#defineMYLIST_H_INCLUDED
//關于鏈表的函數聲明
//創建節點
structNode*createNode(structstudentdata);
//插入節點
voidinsertNodeByHead(structstudentdata);
//指定位置刪除節點
voiddeleteAppointNode(char*studentId);
//查找功能
structNode*searchInfoByData(char*studentId);
//打印鏈表
voidprintList();
#endif//MYLIST_H_INCLUDED
(7)MyList.c
#includestdio.h
#includeconio.h
//getc函數使用的頭文件
#includewindows.h//Sleep函數使用的頭文件
#includestring.h//strcmp函數使用的頭文
#include"system.h"
#include"MyList.h"
structNode*studentList=NULL;
//鏈表的頭指針
//創建節點
structNode*createNode(structstudentstudentData)
structNode*newNode=(structNode*)malloc(sizeof(structNode));
if(newNode!=NULL)
{
newNode-studentData=studentData;
newNode-next=NULL;
}
returnnewNode;
//插入節點
voidinsertNodeByHead(structstudentdata)
structNode*newNode=createNode(data);
//表頭法插入,每次插入都將數據插入到頭節點的下一個,先判斷頭節點是否為空,為空則新節點就是頭節點,不為空,則插入在頭節點的下一個位置
if(studentList==NULL)
{
studentList=newNode;
}
else//不改變頭節點
{
newNode-next=studentList-next;
studentList-next=newNode;
}
//指定位置刪除節點(知道這個節點的前驅和后續,然后進行刪除)
voiddeleteAppointNode(char*studentId)
//將鏈表頭部設為指定位置,先判斷頭節點是否為空,為空則鏈表沒有數據,無法刪除
//如果頭節點不為空,則設頭結點為指定位置,如果頭結點是所找的節點,則刪除,如果不是,設頭結點的下一個為指定節點,頭結點為指定節點的前驅節點,一直向下查詢
//指定位置
structNode*posNode=studentList;
//指定位置的前面
structNode*posFrontNode=NULL;
//查找指定節點
if(posNode==NULL)
{
printf("數據為空無法刪除!\n");
return;
}
else
{
//姓名是字符串,不能直接比較,strcmp(),相等返回值為0,相同返回值為負數或者正數
if(strcmp(posNode-studentData.studentId,studentId)==0)
{
studentList=studentList-next;
free(posNode);
return;
}
else
{
posFrontNode=posNode;
posNode=posNode-next;
//posFrontNode=posNode;//!!
while(strcmp(posNode-studentData.studentId,studentId))
{
//繼續向下一個節點移動
posFrontNode=posNode;
posNode=posFrontNode-next;
if(posNode==NULL)//找到了鏈表尾部,沒有找到數據
{
printf("未找到指定位置,無法刪除!");
return;
}
}
//查到到對應數據后,進行刪除,將該節點架空,然后釋放該節點的存儲單元
posFrontNode-next=posNode-next;
free(posNode);
return;
}
}
//查找功能
structNode*searchInfoByData(char*studentId)
structNode*pMove;
pMove=studentList;
if(pMove==NULL)//頭節點為空,鏈表為空
{
//printf("學生鏈表為空!\n");
returnpMove;
}
else
{
//查找到或者查找到鏈表最后,則結束循環,返回查詢結果,結果為空,有兩種可能,一種是鏈表中沒有數據,另一種是沒有查詢到
while(pMove!=NULL)
{
if(strcmp(pMove-studentData.studentId,studentId)==0)//找見
{
//printf("已查找到!\n");
returnpMove;
}
else
{
pMove=pMove-next;
}
}
//printf("未找到!\n");
returnpMove;
}
//打印鏈表
voidprintList()
structNode*pMove=studentList;
//涉及到展示數據
//表頭
if(pMove==NULL)
{
printf("Nostudentrecord!Pleaseadd.\n");
return;
}
else
{
printf("\t-------------------------------------------------------------------------------------\n");
printf("\t|%-10s|%-7s|%-4s|%-4s|%-12s|%-12s|%-12s|%-5s|\n","學號","姓名","性別","年齡","班級","專業","電話","入學成績");
printf("\t-------------------------------------------------------------------------------------\n");
while(pMove)
printf("\t|%-10s|%-7s|%-4s|%-4d|%-12s|%-12s|%-12s|%-8d|\n",STUDENT_DATA);
printf("\t-------------------------------------------------------------------------------------\n");
pMove=pMove-next;
}
}
printf("\n");
}
(8)AddStudent.h
#ifndefADDSTUDENT_H_INCLUDED
#defineADDSTUDENT_H_INCLUDED
voidAddStudent();
//錄入學生信息
#endif//ADDSTUDENT_H_INCLUDED
(9)AddStudent.c
#includestdio.h
#includeconio.h
//getc函數使用的頭文件
#includewindows.h//Sleep函數使用的頭文件
#includestring.h//strcmp函數使用的頭文
#include"AddStudent.h"
#include"system.h"
#include
"MyList.h"
//錄入學生信息
voidAddStudent()
structstudentstudentData;
structNode*isNull=NULL;
//接收查詢的返回值
intiFlagExist;
//保證不重復輸入
charcFlag;
intret;
//用來接收scanf的返回值,判斷輸入數據是否正確
system("cls");
printf("=================================================================\n");
printf("\t請輸入需要刪除的學生的學號:");
gets(studentData.studentId);
pMove=searchInfoByData(studentData.studentId);
if(pMove)
//該學生存在,進行刪除
{
//先對學生信息進行展示
printf("\t-------------------------------------------------------------------------------------\n");
printf("\t|%-10s|%-7s|%-4s|%-4s|%-12s|%-12s|%-12s|%-5s|\n","學號","姓名","性別","年齡","班級","專業","電話","入學成績");
printf("\t-------------------------------------------------------------------------------------\n");
printf("\t|%-10s|%-7s|%-4s|%-4d|%-12s|%-12s|%-12s|%-8d|\n",STUDENT_DATA);
printf("\t-------------------------------------------------------------------------------------\n");
printf("\t已查找到該學生信息,是否刪除?(y/n)");
cFlag=getchar();
getchar();//吃掉緩沖區的空格
while(cFlag!='n'cFlag!='y')
{
printf("輸入有誤,請輸入‘y'或者‘n'!");
printf("\n請選擇是否輸入學生信息(y/n):");
cFlag=getchar();
getchar();
}
if(cFlag=='n')
return;
elseif(cFlag=='y')
{
deleteAppointNode(studentData.studentId);
printf("\t已刪除該學生信息!\n");
printf("\t刪除操作執行結束!\n");
}
}
else//找到了鏈表的末尾,或者鏈表為空
{
printf("\t該學生不存在!無法執行刪除操作\n");
}
}
(16)ModifyStudent.h
#ifndefMODIFYSTUDENT_H_INCLUDED
#defineMODIFYSTUDENT_H_INCLUDED
#include"system.h"
voidModifyStudent();//修改學生信息
voidShowModifyMenu();//展示修改選項菜單
voiddealSelection(structstudentstudentData,intselection,structNode*pMove);//處理用戶選擇的修改項
#endif//MODIFYSTUDENT_H_INCLUDED
(17)ModifyStudent.c
#includestdio.h
#includeconio.h
//getc函數使用的頭文件
#includewindows.h//Sleep函數使用的頭文件
#includestring.h//strcmp函數使用的頭文
#include"ModifyStudent.h"
#include"system.h"
#include"MyList.h"
//修改學生信息
voidModifyStudent()
structstudentstudentData;
structNode*pMove=NULL;//對學生信息查詢結果進行保存
intselection;
//保存選擇信息
charisContinue='n';
//是否繼續進行修改
system("cls");
printf("\n");
printf("\t================================================================\n");
if(studentList==NULL)
{
printf("學生登記為空,無法進行成績排名\n");
return;
}
else//學生鏈表頭指針不為空,代表學生鏈表中存有學生信息
{
pMove=studentList;
//pMove指向鏈表的頭
//通過遍歷得到鏈表有多少個存儲單元
for(i=0;pMove!=NULL;i++)
{
pMove=pMove-next;
}
length=i;
printf("現有學生總人數為%d\n",length);
//動態數組
stuRanking=(structstudentRanking*)malloc(length*sizeof(structstudentRanking));
if(stuRanking==NULL)
return;
//將需要輸出的學生信息復制到結構體數組當中
pMove=studentList;
for(j=0;jlength;j++)
{
strcpy(stuRanking[j].studentId,pMove-studentData.studentId);
strcpy(stuRanking[j].name,pMove-studentD);
strcpy(stuRanking[j].className,pMove-studentData.className);
stuRanking[j].score=pMove-studentData.score;
pMove=pMove-next;
}
//復制完成后,根據成績對學生進行排序
sortByScore(stuRanking,length);
//根據排序結果,為每名同學添加排名信息
Ranking(stuRanking,length);
//展示排名
printf("排名結果如下:\n");
printf("\t-------------------------------------------------------\n");
printf("\t|%-10s|%-7s|%-12s|%-5s|%-5s|\n","學號","姓名","班級","入學成績","全級排名");
printf("\t-------------------------------------------------------\n");
for(j=0;jlength;j++)
{
printf("\t|%-10s|%-7s|%-12s|%-8d|%-8d|\n",STUDENT_RANKING);
printf("\t-------------------------------------------------------\n");
}
}
printf("輸出排名信息完畢!\n");
system("pause");
//通過成績對鏈表中的數據進行排序
voidsortByScore(structstudentRanking*stuRanking,intlength)
//進行冒泡排序,從大到小排序
inti,j;
structstudentRankingtemp;
for(i=0;ilength-1;i++)
{
for(j=0;j(length-i-1);j++)
{
if(stuRanking[j].scorestuRanking[j+1].score)//后一項比前一項大,則交換兩個存儲單元中的數據,一輪排序下來,最小項就位,在列表的最末尾
{
temp=*(stuRanking+j);
*(stuRanking+j)=*(stuRanking+j+1);
*(stuRanking+j+1)=temp;
}
}
}
voidRanking(structstudentRanking*stuRanking,intlength)
inti;
for(i=1;i=l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 決策性學習的衛生資格考試試題及答案
- 中國呼吸道感染門診治療課件
- 醫學信息檢索方法與技術應用
- 護理考試復習策略分享試題及答案
- 行政法學中的實務案例分析與試題及答案
- 2025年中國文化概論考試復習資料與試題及答案
- 高級審計師考試真題回顧試題及答案
- 網紅奶茶店加盟店拓展與區域市場擴張合同
- 文旅景區資源整合與開發投資合伙協議
- 國際學校幼兒園入學協議及教育服務
- 雙速絞車檢修記錄
- 新教材人教版高中化學選擇性必修3第一章有機化合物的結構特點與研究方法學案(知識點考點匯總及配套習題)
- 高中語文《致大海》課件
- 后廚主管月度績效考核表(KPI)
- 商品價格表模板
- 汽車充電樁項目可行性研究報告【范文】
- 機械零部件過盈配合壓入力與壓出力計算
- 房屋建筑物構筑物檢查表
- 實驗室生物安全程序文件
- 房地產公司員工教育培訓管理制度
- 《春酒》ppt課件(24頁)
評論
0/150
提交評論