1. 程式人生 > >編寫一個學生管理系統程式,用來記錄學生的資訊(包括姓名、年齡、性別、學號、分數),提供增加、刪除、查詢學生資訊的入口

編寫一個學生管理系統程式,用來記錄學生的資訊(包括姓名、年齡、性別、學號、分數),提供增加、刪除、查詢學生資訊的入口

剛抽到這題的時候沒在意,但是真正做起來的時候,才覺得這題對於零基礎的人來說是十分的困難。首先從題目的字數來看題目字數已經不少,其次看了幾遍題目之後還是無從下手。不管你們覺得難不難,反正對於零基礎的我來說,不是一個難字可以了得。最後只能找資料來尋求一些思路,看了一些這樣的帖子以後,思路明晰了不少,不過感覺他們搞的有些太複雜了,於是站在前人的肩膀上,再結合我自己的想法,創作出了我自己的作品,現在貼出來,給同樣題目的童鞋一些參考。當然得申明一下,在寫程式碼的時候,由於時間和學識的關係,只是奔著能執行的目的去的,沒有做深一步的優化,基礎好的朋友,可以自己優化一下,或者用帖子回覆出來,共同學習進步,不過程式我是執行測試過的,沒什麼問題。

如果你覺得我寫的還湊合,請麻煩給點個贊,不勝感激!3Q

#import <Foundation/Foundation.h>
//函式的申明
void in();        // 增加學生資訊
void search();    // 查詢學生資訊
void del();       // 刪除學生資訊
void menu(); // 自定義函式實現選單功能
void menu2(); // 刪除功能的選單
void step(); // 所有功能定義
// 定義一個學生的結構體
struct Student
{
    int number;     // 學號
    int age;        // 年齡
    char sex[10];   // 性別
    char name[10];  // 姓名
    double score;   // 分數
    
};




// 定義一個可放100人的學生組
struct Student str[100];


//自定義函式實現選單功能
void menu()
{
    // 提示使用者輸入
    printf("\t\t\t\t\t\t*******************\n");
    printf("\t\t\t\t\t\t   1.增加學生資訊\n");
    printf("\t\t\t\t\t\t   2.刪除學生資訊\n");
    printf("\t\t\t\t\t\t   3.查詢學生資訊\n");
    printf("\t\t\t\t\t\t   0.退出學生系統\n");
    printf("\t\t\t\t\t\t*******************\n");
    printf("請選擇操作(0-3): ");
}






// 所有功能定義
void step ()
{
    menu();
    // 保證功能函式一直不退出迴圈,想退出的時候再退出(可退出的死迴圈)
    for (; ; )
    {
        
        // 定義功能的標識
        int n = -1;
        
        // 接收使用者的選擇
        scanf("%d", &n);
        
        // 定義使用者所需進入的選擇
        if (n == 1)
        {
            in();    // 增加
            break;
        }
        else if (n == 2)
        {
            del();   // 刪除
        }
        else if (n == 3)
        {
            search(); // 查詢
        }
        
        else
        {
            printf("\t\t\t\t\t\t****已退出學生系統****\n");
            
            break;    // 退出
            
        }
        
    }
}


//增加學生資訊
void in()
{
    // 使用for迴圈接收100個學生的資訊
    for ( int i = 0 ; i < 100; i++)
    {
        // 提示使用者輸入該生的姓名
        printf("請輸入該學生的姓名\n");
        // 接收輸入的姓名
        scanf("%s",str[i].name);
        
        // 提示使用者輸入該生的年齡
        printf("請輸入該學生的年齡(5歲-30歲之間)\n");
        scanf("%d",&str[i].age);
        // 檢查年齡是否適當(5歲-20歲之間)
        while  (str[i].age<5 || str[i].age>30)
        {
            printf("*對不起您的學生年齡輸入可能有誤*\n");
            printf("請重新輸入該學生年齡\n");
            scanf("%d",&str[i].age);
        }
        
        // 提示使用者輸入該生的性別,定義性別為:man或者woman
        printf("請輸入該學生的性別(man或woman)\n");
        while(getchar()!='\n');
        /*清空輸入快取,當碰到下一個輸入資料是char類
         型,在第一次輸入結束後加上這條語句*/
        scanf("%s",str[i].sex);
        
        // 提示使用者輸入該生的學號
        printf("請輸入該學生的學號\n");
        scanf("%d",&str[i].number);
        // 檢查學號是否相同,學號具有惟一性,不能同時給多人賦值
        for (int a = i-1; str[i].number == str[a].number; a--)
        {
            while (str[i].number == str[a].number)
            {
                printf("對不起該學號已經存在,請重新輸入\n");
                scanf("%d",&str[a].number);
            }
        }
        
        // 提示使用者輸入該生分數
        printf("請輸入該學生的分數\n");
        scanf("%f",&str[i].score);
        // 檢查分數是否適當
        while  (str[i].score<0 || str[i].score>100)
        {
            printf("對不起您的考生考分不符合判卷標準\n");
            printf("請重新輸入該學生的分數\n");
            scanf("%f",&str[i].score);
            
        }
        
        // 列印該生的所有個人資訊
        printf("第%d次錄入的學生資訊為:\n姓名-%s\n年齡-%d\n性別-%s\n學號-%d\n分數-%f\n ",i+1, str[i].name, str[i].age, str[i].sex, str[i].number,str[i].score);
        
        // 判斷是否繼續錄入
        printf("\t\t*繼續新增 請按1;返回選單請按任意鍵*\n");
        int m = 0;
        scanf("%d", &m);
        if (m == 1)
        {
            continue;
        }
        else
        {
            step();
        }
        break;
    }
    
}


// 刪除功能的選單,規定學號為唯一識別符,在最後刪除資訊的時才可以刪除
void menu2()
{
    printf("\t\t\t\t\t\t\t請按照提示選擇\n");
    printf("\t\t\t\t\t\t------------\n");
    printf("\t\t\t\t\t\t\t返回上一級選單按0\n");
    printf("\t\t\t\t\t\t\t  刪除姓名按1\n");
    printf("\t\t\t\t\t\t\t  刪除年齡按2\n");
    printf("\t\t\t\t\t\t\t  刪除性別按3\n");
    printf("\t\t\t\t\t\t\t  刪除分數按4\n");
    printf("\t\t\t\t\t\t\t刪除全部資訊按5\n");
    printf("\t\t\t\t\t\t------------\n");
    printf("請選擇操作(0-5): ");
    
}


// 刪除學生資訊,規定學生的學號為唯一識別碼,用其進行學生身份的判斷
void del()
{
    // 提示使用者輸入學號,進行身份核對
    printf("請輸入該生的學號,進行身份驗證:\n");
    int n = 0;
    scanf("%d",&n);
    // 用遍歷的方法在系統裡查詢這個學號對應的陣列
    for (int i = 0; i<100; i++)
    {
        
        // 判斷輸入的學號是否與已錄入的學號相等
        if (str[i].number == n)
        {
            printf("該學生全部資訊為:\n姓名是%s\n年齡是%d\n性別是%s\n學號是%d\n分數是%f\n",str[i].name, str[i].age, str[i].sex, str[i].number,str[i].score);
            
            // 如果學號匹配,呼叫刪除功能的選單,提示使用者下一步操作
            menu2();
            
            // 判斷要刪除哪一項,
            int b = -1;
            scanf("%d",&b);
            // 返回上一級選單
            if (b==0)
            {
                step();
                break;
            }
            // 刪除姓名
            else if (b ==1)
            {
                strcpy(str[i].name, "0");
                printf("學號是%d\n姓名是%s\n年齡是%d\n性別是%s\n分數是%f\n",str[i].number,str[i].name, str[i].age, str[i].sex, str[i].score);
                menu2();
            }
            // 刪除年齡
            else if (b ==2)
            {
                str[i].age = 0;
                printf("學號是%d\n姓名是%s\n年齡是%d\n性別是%s\n分數是%f\n",str[i].number,str[i].name, str[i].age, str[i].sex, str[i].score);
                menu2();
            }
            
            // 刪除性別
            else if (b ==3)
            {
                strcpy(str[i].sex, "0");
                printf("學號是%d\n年齡是%d\n性別是%s\n分數是%f\n",str[i].number, str[i].age, str[i].sex, str[i].score);
                menu2();
            }
            
            // 刪除分數
            else if (b ==4)
            {
                str[i].score = 0;
                printf("學號是%d\n姓名是%s\n年齡是%d\n性別是%s\n分數是%f\n",str[i].number,str[i].name, str[i].age, str[i].sex, str[i].score);
                menu2();
            }
            
            // 刪除全部資訊
            else if (b ==5)
            {
                str[i].number = 0;
                strcpy(str[i].name, "0");
                str[i].age = 0;
                strcpy(str[i].sex, "0");
                str[i].score = 0;
                
                printf("學號是%d\n姓名是%s\n年齡是%d\n性別是%s\n分數是%f\n",str[i].number,str[i].name, str[i].age, str[i].sex, str[i].score);
            }
            break;
        }
        // 輸入的學號與已經錄入的不匹配
        else
        {
            printf("該學號不存在,請重新確認\n");
            printf("繼續--請按1;返回主選單--請按任意鍵\n");
            int b = 0;
            scanf("%d",&b);
            if (b == 1)
            {
                del();
            }
            else
            {
                menu();
            }
            
            break;
        }
    }
}
// 查詢學生資訊,規定學生的學號為唯一識別碼,用其進行學生身份的判斷
void search()
{
    // 提示使用者輸入該生的學號
    printf("*請輸入該生學號:*\n");
    int n = 0;
    scanf("%d", &n);
    // 找到這個學號對應的陣列
    for (int i = 0; i<100; i++)
    {
        // 判斷輸入學號是否與已錄入的學號相匹配
        // 匹配
        if (str[i].number == n)
        {
            printf("該學生資訊為:\n姓名是%s\n年齡是%d\n性別是%s\n學號是%d\n分數是%f\n",str[i].name, str[i].age, str[i].sex, str[i].number,str[i].score);
            break;
        }
        // 不匹配
        else
        {
            printf("\t\t\t\t\t**該學號不存在,請重新確認**\n");
            break;
        }
    }
    // 判斷是否繼續查詢
    printf("\n");
    printf("繼續查詢--請按1;返回主選單--請按任意鍵\n");
    int b = 0;
    scanf("%d",&b);
    if (b == 1)
    {
        search();
    }
    else
    {
        menu();
    }
}


int main(int argc, const char * argv[])
{
    
    @autoreleasepool
    {
        // 提示使用者登陸學生管理系統
        printf("\n\n\n\n\t\t\t\t\t\t 歡迎使用學生管理系統!\n");
        
        // 呼叫主選單,進行相應操作
        step();
        return 0;
    }
}

相關推薦

編寫一個學生管理系統程式記錄學生資訊包括姓名年齡性別學號分數提供增加刪除查詢學生資訊入口

剛抽到這題的時候沒在意,但是真正做起來的時候,才覺得這題對於零基礎的人來說是十分的困難。首先從題目的字數來看題目字數已經不少,其次看了幾遍題目之後還是無從下手。不管你們覺得難不難,反正對於零基礎的我來說,不是一個難字可以了得。最後只能找資料來尋求一些思路,看了一些這樣的帖子

利用Python編寫一個會員管理系統沈迷於編程的世界裏!

put OS 搜索 功能 層級 lin 基礎 img adding 主要實現功能: 一級、二級層級多個選項,全部支持判空、返回到上一個層級、退出 刪除或者修改當前搜索到的用戶信息,以及特殊提醒 支持用戶批量搜索、添加、修改或者刪除 賬號密碼驗證,密碼錯誤

有五個學生,每個學生有3門課的成績 從鍵盤輸入以上資料(包括姓名,三門課成績), 輸入的格式:如:zhagnsan304060計算出總成績 並把學生資訊和計算出的總分數高低順序存放在磁碟文

有五個學生,每個學生有3門課的成績, 從鍵盤輸入以上資料(包括姓名,三門課成績), 輸入的格式:如:zhagnsan,30,40,60計算出總成績, 並把學生的資訊和計算出的總分數高低順序存放在磁碟檔案"stud.txt"中。 1:定義一個描述學生的類2定義一個操作學生的工

Redis可以做什麼?摘自http://www.lianpenglin.cc廉鵬林部落格

Redis 是網際網路技術領域使用最為廣泛的儲存中介軟體,它是「Remote Dictionary Service」的首字母縮寫,也就是「遠端字典服務」。Redis 以其超高的效能、完美的文件、簡潔易懂的原始碼和豐富的客戶端庫支援在開源中介軟體領域廣受好評。國內外很多大型網際網路公司都在使用 Redis,比如

java基礎語言編寫一個班級學生管理系統

import java.util.Scanner; class StuManager {     public static void main(String[] args)     {         System.out.println("*********************");      

python寫:完成一個員工管理系統 要求儲存員工的工號姓名年齡性別工資 1員工錄入 2查詢員工資訊 3修改員工資訊 4刪除 5根據工號檢視 6退出

   完成一個員工管理系統    要求儲存員工的工號、姓名、年齡、性別、工資    1、員工錄入    2、查詢員工資訊    3、修改員工資訊    4、刪除  &nb

類封裝版學生管理系統連線資料庫增刪改查拿去不謝。

# coding = utf-8 import sqlite3 class Student(object): def __init__(self, id, name, age, sex, phone): self.id = id self.name

python學生管理系統連線資料庫版很詳細這個是函式版的增刪改查拿去不謝。

# coding: utf-8 import sqlite3 # 匯入資料庫 def connect_sql(): connect = sqlite3.connect("test_sqlite.db") cursor = connect.cursor() cursor

JDBC+GUI做的一個簡單的學生管理系統

剛學完JDBC不久,做了一個簡單的學生管理系統,可能還有不完善的地方,望各路大神見諒。廢話不多說,我先貼個圖讓大家讓大家瞅瞅,覺得是你想要的再看下去吧。我是以管理者的身份去做的,適合初學者去學習。在做之前,先捋一遍思路,簡單來說分為三大步。一、在資料庫裡建Student表存放

java實現一個簡單的學生管理系統

用Java如何實現一個用陣列作為儲存結構的簡易的學生管理系統? 首先,我們定義一個student類,在其中新增私有化的成員變數,通過getter和setter方法進行呼叫 public class Students { // 學號,姓名,性別,年

java製作一個具有增刪改查的簡單的學生管理系統

1、學生成員類   package mystudentManage; public class Student { private String name; private String stdId; private String age;

c語言連結串列寫的一個簡單的學生管理系統

在大學由於在學完c語言之後老師佈置了一個寫學生管理系統的課設我寫了一個簡單的學生管理 系統,話不多說,直接上原始碼。 #include<stdio.h> #include<stdlib.h> #include<string.h> char

JAVA使用GUI編寫一個簡單的學生管理系統0.1版本--學生登陸介面

JAVA入門,寫的不好請多包涵,如有不懂,下方可提問,有問會必答! import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Login{ public stati

反射完畢學生管理系統包含數據庫連接

幫我 循環輸出 .net into att reat 類別 學生管理系統 csdn 今天我最終將坑爹的萬能數據庫鏈接做好了第一步了,插入數據。 雖說非常easy。但還是應該總結一些問題。 一路的坎坷僅僅能如今表達了。 以下就是一些問題以及過程: 最重要的問題可能就是sq

ORM版學生管理系統02

-i cname 圖片 nts lin hid ... 提交 white 學生管理系統 urls.py url(r‘^student_list/$‘,views.student_list,name="student_list"), url(r‘^dele

非常簡約學生管理系統——HashSet進行編寫

n) next 編寫 select bool *** 練習 ati stat 很小的一個練習,可以參考一下啊~~~~~~ 1:註意;學生類中進行多個重要方法的重寫 package com.xt.homework; public class Student {

ArrayList<E>實現簡單學生管理系統

package ArrayTest; /* * 用arrayList<E>去實現學生管理系統 */ import java.util.ArrayList; import java.util.Scanner; public class StudentSystemList { //

關於Java如何獲取系統時間並用它一個圖書管理系統

首先,這個圖書管理系統自定義一個final常量不能更改,用作圖書館借閱歸還的最晚時間,也可以自定義歸還時間。 然後,先獲取使用者借閱時間,再用SimpleDataFormata元件來格式化日期(yyyy-MM-dd),再將獲取的時間加在系統的時間上得到使用者自定義的歸還時間。 最後,再通過方

springMVC-spring-Hibernate 開發學生管理系統簡單案例-java各檔案編寫

四、java各檔案編寫 原始檔:https://download.csdn.net/download/flyingshadower/10628472 (1)工程目錄: (2)StudentEntity 利用Hibernate自動生成實體類 package com.student

編寫一個ArrayList類儲存1到10之間的數打亂順序後輸出按從小到大輸出按從大到小輸出。

/** * Created by whp on 2018/7/30. */ public class Test { public static void main(String[] args) { List list = new ArrayList();