1. 程式人生 > >資料結構課程設計—學生資訊管理系統

資料結構課程設計—學生資訊管理系統

問題描述:

/*   
* Copyright (c)2015,煙臺大學計算機與控制工程學院   
* All rights reserved.   
* 檔名稱:aaaa.cbp   
* 作    者:張芸嘉  
* 完成日期:2015年12月24日   
* 版 本 號:v1.0   
   
* 問題描述:   本專案為學生資訊管理系統,設計一個可以管理學生資訊的軟體系統。
   
* 輸入描述:學生資訊
* 程式輸出:   
*/    
架構:


程式碼:

標頭檔案 list.h

/***********************************************************
* 版權所有 (C)2015, 張芸嘉
*
* 檔名稱:xxxxgl.cbp
* 檔案標識:無
* 內容摘要:學生資訊管理系統
* 其它說明:無
* 當前版本: V2.0
* 作 者:張芸嘉
* 完成日期: 20151224
*
* 修改記錄1:
* 修改日期: 20151222
* 版本號: V1.0
* 修改人: 張芸嘉
* 修改內容:建立
*
* 修改記錄2:
* 修改日期: 20151223
* 版本號: V1.1
* 修改人: 張芸嘉
* 修改內容:各模組建立1
*
* 修改記錄3:
* 修改日期: 20151224
* 版本號: V1.2
* 修改人:張芸嘉
* 修改內容:各模組建立2
*
* 修改記錄4:
* 修改日期: 20151224
* 版本號: V2.0
* 修改人: 張芸嘉
* 修改內容:完善
**********************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STUDENT 2

typedef struct student
{
    int num;                      //學號
    char name[20];               //姓名
    int  chinese    ;           //語文成績
    int English;               //英語成績
    int math;                 //高數成績
    struct student *next;    //指向下一個學生的指標
} student;

extern student *head;
extern int length;                    //連結串列的長度

//函式原型

student *init();               //初始化函式
void create();                 //建立資訊
void display();                //顯示函式
void searchXH();               //按學號查詢資訊
void searchXM();               //按姓名查詢資訊
void insert();                 //插入資訊
void Delete();                 //刪除資訊
void menu();                   //主選單函式

主函式 main.cpp
/***********************************************************
* 功能描述: 主函式
* 輸入引數:
* 輸出引數:
* 返回值  : (1)
* 其它說明: 學生資訊包括學號、姓名、性別、高數成績、英語成績
************************************************************/
#include"list.h"
int main(void)
{
    system("color 1");
    int a;
    menu();
    int choice;
    while(1)
    {

        printf("請選擇您需要的功能:");
        scanf("%d",&a);
        switch(a)
        {
        case 0:
            return 0;
        case 1:
            create();
            menu();
            break;
        case 2:
            if(head)
            {
                display();
                menu();
            }
            else
            {
                printf("學生資訊為空,請先建立學生資訊!\n");
                menu();
            }
            break;
        case 3:
            if(head)
            {
                printf("請選擇按學號查詢或按姓名查詢,若是按學號查詢請輸入0,按姓名查詢請按1\n");
                scanf("%d",&choice);
                if(choice==0)
                {
                    searchXH();
                }
                else
                {
                    searchXM();
                }
                menu();
            }
            else
            {
                printf("學生資訊為空,請先建立學生資訊!\n");
                menu();
            }
            break;
        case 4:
            if(head)
            {
                Delete();
                menu();
            }
            else
            {
                printf("學生資訊為空,請先建立學生資訊!\n");
                menu();
            }
            break;
        case 5:
            if(head)
            {
                insert();
                menu();
            }
            else
            {
                printf("學生資訊為空,請先建立學生資訊!\n");
                menu();
            }
            break;

        default:
            break;
        }
    }
    system("pause");
    return 0;
}
原始檔函式 list.cpp
#include"list.h"
int length;
student *head;
student *init()
{
    return NULL;               //返回空指標
}


/***********************************************************
* 功能描述: 新增學生資訊
* 輸入引數: 學生資訊
* 輸出引數: 顯示學生的資訊
* 返回值  : (1)
* 其它說明: 學生資訊包括學號、姓名、語文成績、高數成績、英語成績
************************************************************/
void create()
{
    student *p1,*p2;
    length=0;
    int number=0;
    p1=(student *)malloc(sizeof(student));
    p1->num=-1;

    if(head==NULL)
        head=p1;
    printf("請輸入學生的學號、姓名、語文成績、高數成績、英語成績:\n");
    while(number<=7)
    {
        p2=(student *)malloc(sizeof(student));
        scanf("%d %s %d %d %d",&p2->num,p2->name,&p2->chinese,&p2->English,&p2->math); //輸入學生資訊
        if(p2->num==0)
        {
            printf("學生資訊建立完成!\n");
            break;
        }
        length++;                            //連結串列的長度
        p1->next=p2;
        p2->next=NULL;
        p1=p1->next;                       //移動指標,指向下一結點
        number++;
    }
    return ;


}

/***********************************************************
* 功能描述: 顯示學生資訊
* 輸入引數:
* 輸出引數: 顯示學生的資訊
* 返回值  : (1)
* 其它說明: 學生資訊包括學號、姓名、語文成績、高數成績、英語成績
************************************************************/
void display()
{
    student *p=head->next;
    printf("連結串列中所有的學生資訊如下:\n");

    while(p!=NULL)
    {
        printf("%d %s %d %d %d\n",p->num,p->name,p->chinese,p->English,p->math);
        p=p->next;
    }
    return ;
}

/***********************************************************
* 功能描述: 按學號查詢學生資訊
* 輸入引數: 學生學號
* 輸出引數: 顯示學生的資訊
* 返回值  : (1)
* 其它說明: 學生資訊包括學號、姓名、語文成績、高數成績、英語成績
************************************************************/

void searchXH()
{

    int num_;
    student *p=head->next;
    printf("需要查詢的學生學號為:");
    scanf("%d",&num_);

    while(p!=NULL)
    {

        if(p->num==num_)
        {
            printf("學號為%d的學生的資訊如下:\n",num_);
            printf("%d %s %d %d %d\n",p->num,p->name,p->chinese,p->English,p->math);
            return;
        }
        p=p->next;
    }
    if(p==NULL)
        printf("無此記錄!\n");
    return ;
}

/***********************************************************
* 功能描述: 按姓名查詢學生資訊
* 輸入引數: 學生姓名
* 輸出引數: 顯示學生的資訊
* 返回值  : (1)
* 其它說明: 學生資訊包括學號、姓名、語文成績、高數成績、英語成績
************************************************************/
void searchXM()
{
    char na_me[20];
    student *p=head->next;
    printf("需要查詢的學生姓名為:");
    scanf("%s",na_me);

    while(p!=NULL)
    {

        if(!(strcmp(p->name,na_me)))
        {
            printf("姓名為%s的學生的資訊如下:\n",na_me);
            printf("%d %s %d %d %d\n",p->num,p->name,p->chinese,p->English,p->math);
            return;
        }
        p=p->next;
    }
    if(p==NULL)
        printf("無此記錄!\n");
    return ;
}

/***********************************************************
* 功能描述: 指定位置插入學生資訊
* 輸入引數: 插入位置及學生資訊
* 輸出引數: 顯示插入完成後的學生資訊
* 返回值  : (1)
* 其它說明: 學生資訊包括學號、姓名、語文成績、高數成績、英語成績
************************************************************/

void insert()
{
    int num_,i;
    student *p,*q;
    p=head;

    printf("請輸入你要插入位置: ");
    scanf("%d",&num_);
    if(num_>length)
    {
        printf("找不到要插入的位置\n");
        return ;
    }
    else
    {
        printf("請輸入你要插入的學生的學號、姓名、語文成績、英語成績、高數成績:\n");
        q=(student *)malloc(sizeof(student));
        scanf("%d %s %d %d %d",&q->num,q->name,&q->chinese,&q->English,&q->math);

        while(p!=NULL)
        {
            if(p->num==q->num)
            {
                printf("該學號已經存在,無法插入資訊!\n");
                return ;
            }
            p=p->next;
        }
        p=head;
        for(i=0; i<num_; i++)
            p=p->next;
        q->next=p->next;
        p->next=q;
        length++;
        printf("插入學生資訊成功!\n");
        return ;
    }
}

/***********************************************************
* 功能描述: 刪除學生資訊
* 輸入引數: 刪除學生學號
* 輸出引數:
* 返回值  : (1)
* 其它說明: 學生資訊包括學號、姓名、語文成績、高數成績、英語成績
************************************************************/

void Delete()
{
    int num_;
    student *p,*q;
    q=head,p=head->next;
    printf("請輸入要刪除的學生的學號:\n");
    scanf("%d",&num_);

    while(p!=NULL)
    {
        if(p->num==num_)
        {
            q->next=p->next;
            free(p);
            length--;
            printf("刪除成功!\n");
            return ;
        }
        p=p->next;
        q=q->next;
    }
    if(p==NULL)
    {
        printf("找不到要刪除的學號!\n");
        return ;
    }
}

/***********************************************************
* 功能描述: 主選單
* 輸入引數: 所需功能代號
* 輸出引數:
* 返回值  : (1)
* 其它說明: 學生資訊包括學號、姓名、語文成績、高數成績、英語成績
************************************************************/

void menu()
{

    system("color 08");
    printf("***************************************************************\n");
    printf("** ︵__╭╭╭╭╭___︵                                 **\n");
    printf("**│                      │                                **\n");
    printf("**│                      │        ╭─────────╮  **\n");
    printf("**│    ●           ●   │       │     歡迎使用       │ **\n");
    printf("**│       ╭──╮       │       │學生資訊管理系統^o^ │ **\n");
    printf("**│       │●●│       │   ╭╮╰─────────╯   **\n");
    printf("**│       ╰──╯       │○ ╰╯                         **\n");
    printf("**╰──┬◎───┬◎──╯                                **\n");
    printf("***************************************************************\n");
    printf("|              1、 新增學生資訊                                 |\n");
    printf("|              2、 顯示學生資訊                                 |\n");
    printf("|              3、 查詢某個學生資訊                             |\n");
    printf("|              4、 刪除指定學號的學生                           |\n");
    printf("|              5、 指定的位置上插入學生資訊                     |\n");
    printf("****************************************************************\n");

    return ;
}


執行結果:
新增學生資訊


顯示學生資訊


按學號查詢學生資訊


按姓名查詢學生資訊


刪除指定學號學生資訊


指定位置上插入學生資訊


知識點總結:

此程式邏輯結構屬於線性結構,儲存結構為鏈式儲存結構,程式中包含單鏈表以及結構體陣列等知識點。

學習心得:

       通過這次課程設計讓我對連結串列的結構有了更深的瞭解,在以後的應用中也會更加熟悉。也讓我認識到,想要真正做出一個專案會有很多困難和挫折,需要下很大的功夫。這幾天,我深刻體驗到了團隊的力量,如果沒有老師、同學的幫助,我的專案也不會這麼順利的完成。總之,這次課程設計真的讓我收穫了很多,學到了很多,我相信以後會更好!!!!!

相關推薦

資料結構課程設計——學生資訊管理系統

/*Copyright (c)2017,煙臺大學計算機與控制工程學院 *All rights reservrd. *作者:趙楷文 *完成時間:2017年12月20日 *版本號:v1.0 *問題描述:設計一個管理學生資訊的

資料結構課程設計學生資訊管理系統

問題描述: /* * Copyright (c)2015,煙臺大學計算機與控制工程學院 * All rights reserved. * 檔名稱:aaaa.cbp * 作 者:張芸嘉 * 完成日期:2015年12月24日 * 版 本

資料結構課程設計-學生資訊管理系統

/* * 煙臺大學計算機與控制工程學院 *檔名稱:mian.cpp *作 者:王旭 *完成日期:2015年12月25日 *版 本 號:v1.0 *

資料結構課程設計——學生成績管理系統

} /************************************ * 功能描述:判斷學號是否重複 * 輸入引數:無 * 輸出引數:無 ************************************/ int num(LNode *a)//判斷學號是否重複 {   LNode *p=he

課程設計---學生資訊管理系統

/* *煙臺大學計算機與控制工程學院 /* *Copyright (c) 2015,煙臺大學計算機與控制工程學院 *All rights reserved. *檔名稱:lulu.cpp *作者:蘆亞茹 *完成日期:2015年12月31日 *版本號:v1.o *

課程設計————學生資訊管理系統(包含歷代思路和程式碼)

課程設計————學生管理系統(包含歷代思路和程式碼) 一.前言 學生資訊管理系統是我第一個獨立完成的比較長的程式碼,也算是花費了一些心血,這個系統是我一點點把它從幾百行的程式碼逐漸優化到上千行,功能從簡單到複雜。在這裡我把我的思路分享給大家,希望能給大家

課程設計-學生資訊管理系統

#include <iostream> #include <stdio.h> #include <stdlib.h> #include<windows.h> #include<string.h> #include<string> #inc

課程設計——學生資訊管理系統(順序表 連結串列)

實驗目的 : 1 、掌握線性表的定義; 2 、掌握線性表的基本操作,如建立、查詢、插入和刪除等。 實驗內容: 定義一個包含學生資訊(學號,姓名,成績)的的 順序表和連結串列,使其具有如下功能: (1) 根據指定學生個數,逐個輸入學生資訊; (2) 逐個顯示學生表

c語言課程設計學生成績管理系統

學生成績管理系統是比較適合初學者的。它涵蓋了c語言幾乎知識。對於學了c語言的人,把這個課程設計搞好(當然自己能設計出來是要有很好的基礎)。不管自己能不能夠完成,最重要的是能弄懂。參考其他資料,試著自己編寫是不錯的選擇。這個課程設計也是我參照資料,自己編寫的。自己適當地增加了

課程設計------學生考勤管理系統

#include <algorithm> #include <iomanip> #include <iostream> #include <vector> #include <stdexcept> #include <string> #i

MFC課程設計 --學生成績管理系統

MFC課程設計 ,C++課程設計 --學生成績管理系統 ps:因為課設完成的過程大家都不太一樣,以下的程式碼僅供學習一下在MFC下各個控制元件的用法,有問題歡迎留言討論。 實驗目的 使用MFC類庫編制應用程式:按鈕控制元件、靜態控制元件及編輯框的應用。 瞭解MF

資料結構課程設計學生資訊管理系統(煙大版)】

/* * Copyright (c) 2016, 煙臺大學計算機與控制工程學院 * All rights reserved. * 檔名稱:student.project * 作者:李瀟 * 完成日期:2016年12月28日 * 版本號:DEVC+

學生成績管理系統資料結構課程設計

學生成績管理問題  問題描述:建立兩個學生成績資訊表1、2,以檔案的形式分別進行儲存命名為1.txt和2.txt,然後實現將兩個檔案合併成一個新的檔案3.txt。 新檔案中有補考的學生查詢到,儲存到另一個檔案4.txt中。     基本要求:    

學生資訊管理系統資料庫課程設計

一.概述 學生資訊管理系統是學校管理的重要工具,是學校不可或缺的一部分。隨著在校人數的不斷增加,教務系統的數量也不斷的上漲。學校工作繁雜,資料眾多,人工管理資訊的難度也越來越大,顯然是不能滿足實際的需要,效率也是很低的。並且這種傳統的方式存在著眾多的弊端,如:保密性差.查詢不便.效率低,很難維

資料結構第一次作業(學生資訊管理系統-順序表&&連結串列)

實驗目的 : 1 、掌握線性表的定義; 2 、掌握線性表的基本操作,如建立、查詢、插入和刪除等。 實驗內容: 定義一個包含學生資訊(學號,姓名,成績)的的 順序表和連結串列,使其具有如下功能: (1) 根據指定學生個數,逐個輸入學生資訊; (2) 逐個顯示學生表中所有學生

學生資訊管理系統課程設計

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

學生資訊管理系統(課程設計)

#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> using namespace std; struct studen

資料結構課程設計--圖書館管理系統原始碼

#include <iostream> #include <iomanip> #include <string.h> #include <string> #include <fstream>//輸入/輸出檔案流類

C語言課程設計學生資訊管理系統

#include"stdio.h" //標準的輸入輸出函式檔案頭部說明 #include"math.h" // 數學函式頭部說明 #include"string.h" #include"stdlib.h" //通過該函式頭部裡的

C++課程設計學生資訊管理系統

課程設計內容 1.)學生資訊的錄入:錄入新的學生的資訊; 2.)學生資訊的新增:新增新的學生的資訊; 3.) 學生資訊的刪除:刪除不需要的學生的資訊。 4.)學生資訊的查詢:查詢你需要的學生的資訊。 5.)學生資訊的修改:修改錯誤的學生的資訊。 6.)學生資訊的顯示:顯示所