最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于C語言實現(xiàn)學生管理系統(tǒng)

 更新時間:2022年03月31日 17:02:30   作者:summery456  
這篇文章主要為大家詳細介紹了基于C語言實現(xiàn)學生管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

1.目標要求:

1.學生成績管理系統(tǒng)
2.可增、刪、改、查、瀏覽
3.數(shù)據(jù)保存在文件中

2.C語言代碼:

文件1:源文件

#include"mylist.h"


//菜單設計?
void menu(){
?? ?//所有文件都同步到文件?
?? ?printf("-------------【學生管理信息】-------------------\n");
?? ?printf("\t\t0.退出系統(tǒng)\n");
?? ?printf("\t\t1.錄入信息\n");
?? ?printf("\t\t2.瀏覽信息\n");
?? ?printf("\t\t3.修改信息\n");
?? ?printf("\t\t4.刪除信息\n");
?? ?printf("\t\t5.查找信息\n");
?? ?printf("------------------------------------------------\n");
?? ?
}
struct Node* list;
//用戶的交互
//根據(jù)所選的菜單項,作相應的事情?
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);?? ?//清空緩沖區(qū)?。。。。。。。?!?
?? ??? ??? ?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("%s\t%d\t%s\t%s\n",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>?

//數(shù)據(jù)的設計-----》學生信息抽象出
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;
};?
//創(chuàng)建表頭?
struct Node* createList(){
?? ?struct Node* headNode = (struct Node*)malloc(sizeof(struct Node));
?? ?headNode->next = NULL;
?? ?return headNode;
}
//創(chuàng)建節(jié)點?
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("您要刪除的數(shù)據(jù)不存在!\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("您要查找的數(shù)據(jù)不存在!\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("您要修改的數(shù)據(jù)不存在!\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+");//打開文件具有創(chuàng)建功能?
?? ?}
?? ?//2.讀文件?
?? ?while(fscanf(fp,"%s\t%d\t%s\t%s\n",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,"%s\t%d\t%s\t%s\n",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;
?? ?//設計列數(shù)據(jù)的處理
?? ?printf("姓名\t年齡\t性別\t電話\n");?
?? ?while(pMove){
?? ??? ?printf("%s\t%d\t%s\t%s\n",pMove->data.name,pMove->data.age,pMove->data.sex,pMove->data.tel);
?? ??? ?pMove = pMove->next;
?? ?}
?? ?printf("\n");
}

3.運行結果:

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

相關文章

  • 詳解Qt中QStackedWidget控件的使用

    詳解Qt中QStackedWidget控件的使用

    這篇文章主要為大家詳細介紹了Qt中QStackedWidget控件的具體使用,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下
    2023-02-02
  • 手把手帶你學習C++的運算符

    手把手帶你學習C++的運算符

    這篇文章主要為大家介紹了C++運算符,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助,希望能夠給你帶來幫助
    2021-11-11
  • ReSharper 的安裝使用詳細教程

    ReSharper 的安裝使用詳細教程

    resharper安裝教程是關于vs2012一個非常好用的插件的安裝教程,建議大家嘗試安裝,今天通過本教程幫助大家學習ReSharper 的安裝使用詳細教程,感興趣的朋友一起看看吧
    2021-06-06
  • C語言選擇、循環(huán)、函數(shù)、數(shù)組與操作符

    C語言選擇、循環(huán)、函數(shù)、數(shù)組與操作符

    這篇文章主要介紹了C語言選擇、循環(huán)、函數(shù)、數(shù)組與操作符,文章基于C語言展開對主題的詳細介紹,下文內(nèi)容需要的小伙伴可以參考一下
    2022-04-04
  • C語言實現(xiàn)隨機發(fā)撲克牌

    C語言實現(xiàn)隨機發(fā)撲克牌

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)隨機發(fā)撲克牌,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C++ Opencv自寫函數(shù)實現(xiàn)膨脹腐蝕處理技巧

    C++ Opencv自寫函數(shù)實現(xiàn)膨脹腐蝕處理技巧

    這篇文章主要介紹了C++ Opencv 自寫函數(shù)實現(xiàn)膨脹腐蝕處理,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • 詳解VS2019 dumpbin查看DLL的導出函數(shù)

    詳解VS2019 dumpbin查看DLL的導出函數(shù)

    這篇文章主要介紹了詳解VS2019 dumpbin查看DLL的導出函數(shù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 使用C語言計算長方體的表面積和體積

    使用C語言計算長方體的表面積和體積

    這篇文章主要給大家介紹了關于如何使用C語言計算長方體的表面積和體積的相關資料,在C語言中,我們可以使用乘法運算符(*)來進行乘法運算,并將結果保存在一個變量中,需要的朋友可以參考下
    2023-10-10
  • C++常用語句簡介

    C++常用語句簡介

    這篇文章主要介紹了C++常用語句簡介,文章將要介紹的常用語句有聲明變量、賦值語句、cin、cout語句、庫函數(shù)、自定義函數(shù),需要的朋友可以參考一下,希望對你有所幫助
    2021-11-11
  • C++文件的操作及小實驗示例代碼詳解

    C++文件的操作及小實驗示例代碼詳解

    這篇文章主要介紹了C++文件的操作及小實驗,對于文件,它是一個流對象,對文件的操作無非是讀和寫,通過本文的學習大家將會理解文件的具體操作
    2022-05-05

最新評論

万源市| 将乐县| 克山县| 三都| 集贤县| 杨浦区| 伊春市| 崇义县| 民权县| 寿光市| 兴山县| 巢湖市| 鄂温| 花莲市| 汽车| 夏河县| 合川市| 平邑县| 新绛县| 疏附县| 洞口县| 手游| 太白县| 龙州县| 迁安市| 彭州市| 澳门| 民权县| 深水埗区| 南丹县| 崇文区| 依兰县| 赤水市| 车险| 拜泉县| 沂源县| 罗平县| 石林| 侯马市| 巴彦淖尔市| 都江堰市|