<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了C語言實現學生管理系統的具體程式碼,供大家參考,具體內容如下
1.學生成績管理系統
2.可增、刪、改、查、瀏覽
3.資料儲存在檔案中
檔案1:原始檔
#include"mylist.h" //選單設計 void menu(){ //所有檔案都同步到檔案 printf("-------------【學生管理資訊】-------------------n"); printf("tt0.退出系統n"); printf("tt1.錄入資訊n"); printf("tt2.瀏覽資訊n"); printf("tt3.修改資訊n"); printf("tt4.刪除資訊n"); printf("tt5.查詢資訊n"); printf("------------------------------------------------n"); } struct Node* list; //使用者的互動 //根據所選的選單項,作相應的事情 void keyDown(){ int choice = 0; struct student data; struct Node* pMove = NULL; scanf("%d",&choice); switch(choice){ case 0: printf("正常退出!n"); system("pause"); exit(0); break; case 1: printf("-------------錄入資訊-------------------n"); //插入連結串列 fflush(stdin); //清空緩衝區!!!!!!!!! printf("請輸入學生的n姓名、年齡、性別、電話:n"); scanf("%s%d%s%s",data.name,&data.age,data.sex,data.tel); insertNodeByHead(list,data); break; case 2: printf("-------------瀏覽資訊-------------------n"); printList(list); //列印連結串列 break; case 3: printf("-------------修改資訊-------------------n"); printf("請輸入要修改資訊的學生姓名:"); scanf("%s",data.name); reviseInfoByData(list,data.name); break; case 4: printf("-------------刪除資訊-------------------n"); printf("請輸入刪除學生的姓名:"); scanf("%s",data.name); deleteNode(list,data.name); break; case 5: printf("-------------查詢資訊-------------------n"); printf("請輸入要查詢學生的姓名:"); scanf("%s",data.name); if( pMove = searchInfoByData(list,data.name)){ printf("姓名t年齡t性別t電話n"); printf("%st%dt%st%sn",pMove->data.name,pMove->data.age,pMove->data.sex,pMove->data.tel); } break; default: printf("選擇錯誤,重新輸入n"); system("pause"); break; } writeInfoToFile(list,"1.txt"); } int main(){ list = createList(); readInfoFromFile(list,"1.txt"); while(1){ menu(); keyDown(); system("pause"); system("cls"); } system("pause"); return 0; }
檔案2:mylist.h
#include<stdio.h> #include<stdlib.h> #include<string.h> //資料的設計-----》學生資訊抽象出 struct student{ char name[20]; int age; char sex[5]; char tel[20]; // int math; // int english; };//結構 //測試的結構 struct Node{ struct student data; struct Node* next; }; //建立表頭 struct Node* createList(){ struct Node* headNode = (struct Node*)malloc(sizeof(struct Node)); headNode->next = NULL; return headNode; } //建立節點 struct Node* createNode(struct student data){ struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); newNode->data = data; newNode->next = NULL; return newNode; } //插入結點(表頭法) void insertNodeByHead(struct Node* headNode, struct student data){ struct Node* newNode = createNode(data); newNode->next = headNode->next; headNode->next = newNode; } //指定位置刪除 void deleteNode(struct Node* headNode,char* name){ struct Node* posFrontNode; struct Node* posNode; if(headNode->next == NULL){ printf("連結串列為空!n"); return; } posFrontNode = headNode; posNode = headNode->next; while(posNode && strcmp(posNode->data.name,name)){ posFrontNode = posNode; posNode = posFrontNode->next; } if(!posNode){ printf("您要刪除的資料不存在!n"); return; } if(!strcmp(posNode->data.name,name)){ posFrontNode->next = posNode->next; free(posNode); } } //查詢功能 struct Node* searchInfoByData(struct Node* headNode,char* name) { struct Node* posNode; if(headNode->next == NULL){ printf("連結串列為空!n"); return NULL; } posNode = headNode->next; while(posNode && strcmp(posNode->data.name,name)){; posNode = posNode->next; } if(!posNode){ printf("您要查詢的資料不存在!n"); return NULL; } return posNode; } //修改功能 void reviseInfoByData(struct Node* headNode,char* name) { struct Node* posNode; if(headNode->next == NULL){ printf("連結串列為空!n"); return; } posNode = headNode->next; while(posNode && strcmp(posNode->data.name,name)){; posNode = posNode->next; } if(!posNode){ printf("您要修改的資料不存在!n"); return; } printf("請輸入學生[%s]的年齡、性別、電話:n",posNode->data.name); scanf("%d%s%s",&posNode->data.age,posNode->data.sex,posNode->data.tel); } //檔案讀操作 void readInfoFromFile(struct Node* headNode,char* fileName){ //1.開啟檔案 FILE *fp; struct student data; fp = fopen(fileName,"r"); if(fp == NULL){ fopen(fileName,"w+");//開啟檔案具有建立功能 } //2.讀檔案 while(fscanf(fp,"%st%dt%st%sn",data.name,&data.age,data.sex,data.tel)!=EOF){ insertNodeByHead(headNode,data); } //3.關閉檔案 fclose(fp); } //檔案寫操作 void writeInfoToFile(struct Node* headNode,char* fileName){ //1.開啟檔案 FILE *fp; fp = fopen(fileName,"w"); struct Node* pMove = headNode->next; //2.寫檔案 while(pMove){ fprintf(fp,"%st%dt%st%sn",pMove->data.name,pMove->data.age,pMove->data.sex,pMove->data.tel); pMove = pMove->next; } //3.關閉檔案 fclose(fp); } //列印連結串列 void printList(struct Node* headNode){ struct Node* pMove = headNode->next; //設計列資料的處理 printf("姓名t年齡t性別t電話n"); while(pMove){ printf("%st%dt%st%sn",pMove->data.name,pMove->data.age,pMove->data.sex,pMove->data.tel); pMove = pMove->next; } printf("n"); }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45