欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言實現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)程序設(shè)計

 更新時間:2022年07月22日 09:25:32   作者:E×H  
這篇文章主要為大家詳細介紹了C語言實現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)程序設(shè)計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

一、題目設(shè)計及其要求

1、題目:學(xué)生學(xué)籍管理系統(tǒng)

用數(shù)據(jù)文件存放學(xué)生的學(xué)籍,可對學(xué)生學(xué)籍進行注冊、修改、查找、統(tǒng)計、學(xué)籍變化等操作。(用文件保存)

2、功能要求:

(1)系統(tǒng)以菜單方式工作;

(2)登記學(xué)生的學(xué)號,姓名,性別,年齡,籍貫,學(xué)院,專業(yè),班級;

(3)修改已知學(xué)號的學(xué)生信息;

(4)查找已知學(xué)號的學(xué)生信息;

(5)按學(xué)號和專業(yè)輸出學(xué)生籍貫表;

(6)查詢學(xué)生學(xué)籍變化,比如入學(xué),轉(zhuǎn)專業(yè),退學(xué),降級,休學(xué),畢業(yè)。

二、設(shè)計平臺

Visual C++ 6.0

三、設(shè)計思路及過程

1、初步完成總體結(jié)構(gòu)設(shè)計,主要運用結(jié)構(gòu)體及函數(shù)調(diào)用的知識設(shè)計程序框架,根據(jù)功能確定函數(shù)個數(shù)及儲備每個功能所需的知識;

2、創(chuàng)建工程,同時在工程路徑下創(chuàng)建記事本保存文件數(shù)據(jù),寫出程序的主要框架;

3、寫主函數(shù)以及被調(diào)用函數(shù),完成上述登記、修改、查找、輸出學(xué)生信息等功能;

4、調(diào)試代碼,不斷修改以達到運行成功和取得最佳效果。

四、運行結(jié)果

(1)系統(tǒng)以菜單方式工作

(2)登記學(xué)生的學(xué)號、姓名、性別、年齡、籍貫、學(xué)院、專業(yè)、班級,并用文件保存

 (3)修改已知學(xué)號的學(xué)生信息

 (4)查找已知學(xué)號的學(xué)生信息

 (5)按學(xué)號和專業(yè)輸出學(xué)生籍貫表

 (6)查詢學(xué)生學(xué)籍變化,比如入學(xué)、轉(zhuǎn)專業(yè)、退學(xué)、降級、休學(xué)、畢業(yè)

 (7)退出系統(tǒng)

 五、程序代碼

#include<stdio.h>?? ?
#include<stdlib.h>?? ?
#include<string.h>?? ?//頭文件
?
#define LEN 20?? ??? ?//學(xué)號和姓名最大字符數(shù),20
#define N 50?? ??? ?//最大的學(xué)生人數(shù)
?
int M = 0;//當(dāng)前已經(jīng)有的學(xué)生數(shù)量
?
//函數(shù)聲明
?
void insert(); ?//錄入學(xué)生信息
void modify(); ?//修改學(xué)生信息
void search(); ?//查詢學(xué)生信息
void menu(); ? ?//主菜單函數(shù)
void save(); ? ?//保存學(xué)生信息
void jiguanbiao(); ?//輸出學(xué)生籍貫信息
void xueji(); ? //查詢學(xué)生學(xué)籍變化信息
?
//結(jié)構(gòu)體保存學(xué)生信息
struct student{
? ? long int Id; ?//學(xué)號
? ? char Name[LEN+1]; ? ?//姓名
? ? char Sex[LEN+1]; ? ?//性別
? ? int ?Age; ? ? //年齡
? ? char BirthPlace[LEN+1]; ? ?//籍貫
? ? char YuanXi[LEN+1]; ? ? ? ? ?//院系
? ? char ZhuanYe[LEN+1]; ? ? ? ?//專業(yè)
? ? int ?BanJi; ? ? ?//班級
? ? char xueji[LEN+1];//學(xué)籍變化信息
?
}stu[N];
?
//主函數(shù)
int main()
{
?? ?
?? ?while (1)
?? ?{
?? ??? ?menu();
?? ?}
?? ?system("pause");
?? ?return 0;
?
}
?
?
void menu()//菜單函數(shù)
{
?
?? ?int num;
?? ?printf("\n");
?? ?printf("——————————————————————————\n");
?? ?printf("*************歡迎使用學(xué)生信息管理系統(tǒng)***************\n");
?? ?printf("* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*\n");
?? ?printf("********************系統(tǒng)功能菜單********************\n");
?? ?printf("* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*\n");
?? ?printf("* ? ? ? ? ? ? ? ? 1.添加學(xué)生信息 ? ? ? ? ? ? ? ? ? *\n");
?? ?printf("* ? ? ? ? ? ? ? ? 2.修改學(xué)生信息 ? ? ? ? ? ? ? ? ? *\n");
?? ?printf("* ? ? ? ? ? ? ? ? 3.查找學(xué)生信息 ? ? ? ? ? ? ? ? ? *\n");
?? ?printf("* ? ? ? ? ? ? ? ? 4.輸出學(xué)生籍貫表 ? ? ? ? ? ? ? ? *\n");
?? ?printf("* ? ? ? ? ? ? ? ? 5.保存信息到文件 ? ? ? ? ? ? ? ? *\n");
?? ?printf("* ? ? ? ? ? ? ? ? 6.查看學(xué)生學(xué)籍變化 ? ? ? ? ? ? ? *\n");
?? ?printf("* ? ? ? ? ? ? ? ? 7.退出系統(tǒng) ? ? ? ? ? ? ? ? ? ? ? *\n");
?? ?printf("——————————————————————————\n");
?? ?printf("請選擇菜單編號:");
?? ?scanf("%d", &num);
?? ?switch (num)
?? ?{
? ? ? ??
? ? ? ? case 1:
? ? ? ? ? ? printf("Input student number(M<=50):\n");
?? ??? ??? ?scanf("%d", &M);
?? ??? ??? ?insert();
? ? ? ? ? ? break;
? ? ? ? case 2:
? ? ? ? ? ? modify();
? ? ? ? ? ? break;
? ? ? ? case 3:
? ? ? ? ? ? search();
? ? ? ? ? ? break;
? ? ? ? case 4:
? ? ? ? ? ? jiguanbiao();
? ? ? ? ? ? break;
? ? ? ? case 5:
? ? ? ? ? ? save();
? ? ? ? ? ? break;
? ? ? ? case 6:
? ? ? ? ? ? xueji();
? ? ? ? ? ? break;
? ? ? ? case 7:
? ? ? ? ? ? printf("退出程序成功!\n");
? ? ? ? ? ? exit(0);
? ? ? ? default:
? ? ? ? ? ? printf("請在1-8之間選擇\n");
? ? ? ? ? ? system("pause");//提示完成之后顯示按任意鍵繼續(xù)
?? ?}
?
}
void insert()//添加學(xué)生信息
?? ?{?? ?int i;
?? ??? ?for(i=1;i<=M;i++)
?? ??? ?{
?? ??? ??? ?printf("請輸入第%d個學(xué)生的學(xué)號:",i);
?? ??? ??? ?scanf("%ld",&stu[i].Id);
?? ??? ??? ?printf("請輸入第%d個學(xué)生的姓名:",i);
?? ??? ??? ?scanf("%s",&stu[i].Name);
?? ??? ??? ?printf("請輸入第%d個學(xué)生的性別:",i);
?? ??? ??? ?scanf("%s",&stu[i].Sex);
?? ??? ??? ?printf("請輸入第%d個學(xué)生的年齡:",i);
?? ??? ??? ?scanf("%d",&stu[i].Age);
?? ??? ??? ?printf("請輸入第%d個學(xué)生的籍貫:",i);
?? ??? ??? ?scanf("%s",&stu[i].BirthPlace);
?? ??? ??? ?printf("請輸入第%d個學(xué)生的學(xué)院:",i);
?? ??? ??? ?scanf("%s",&stu[i].YuanXi);
?? ??? ??? ?printf("請輸入第%d個學(xué)生的專業(yè):",i);
?? ??? ??? ?scanf("%s",&stu[i].ZhuanYe);
?? ??? ??? ?printf("請輸入第%d個學(xué)生的班級:",i);
?? ??? ??? ?scanf("%d",&stu[i].BanJi);
?? ??? ??? ?printf("請輸入第%d個學(xué)生的學(xué)籍(如入學(xué)、轉(zhuǎn)專業(yè)、退學(xué)、降級、休學(xué)、畢業(yè)):",i);
?? ??? ??? ?scanf("%s",&stu[i].xueji);
?? ??? ?}
?? ??? ?printf("學(xué)生信息添加完畢!請立即保存數(shù)據(jù)信息到文件!");
?? ??? ?
?? ?}
void modify()//修改學(xué)生信息
?? ?{
?? ??? ?
?? ?int i, item;
?? ?long int a;
?? ?printf("請輸入要修改學(xué)生的學(xué)號:\n");
?? ?scanf("%ld",&a);
?? ?for (i=1; i<=M; i++)
?? ?{
?? ??? ?if (stu[i].Id==a)
?? ??? ?{
?? ??? ??? ?printf("1.修改名字:\n");
?? ??? ??? ?printf("2.修改性別:\n");
?? ??? ??? ?printf("3.修改年齡:\n");
?? ??? ??? ?printf("4.修改籍貫:\n");
?? ??? ??? ?printf("5.修改學(xué)院:\n");
?? ??? ??? ?printf("6.修改專業(yè):\n");
?? ??? ??? ?printf("7.修改班級:\n");
?? ??? ??? ?printf("8.修改學(xué)籍\n");
?? ??? ??? ?printf("0.End of program!\n");
?? ??? ??? ?while (1)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("please choose:");
?? ??? ??? ??? ?scanf("%d", &item);
?? ??? ??? ??? ?switch (item)
?? ??? ??? ??? ?{
?? ??? ??? ??? ?case 1:
?? ??? ??? ??? ??? ?printf("Please input new name:\n");
?? ??? ??? ??? ??? ?scanf("%s", &stu[i].Name);
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?case 2:
?? ??? ??? ??? ??? ?printf("Please input sex:\n ");
?? ??? ??? ??? ??? ?scanf("%s", &stu[i].Sex);
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?case 3:
?? ??? ??? ??? ??? ?printf("Please input new age:\n");
?? ??? ??? ??? ??? ?scanf("%d", &stu[i].Age);
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?case 4:
?? ??? ??? ??? ??? ?printf("Please input BirthPlace:\n");
?? ??? ??? ??? ??? ?scanf("%s", &stu[i].BirthPlace);
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?case 5:
?? ??? ??? ??? ??? ?printf("Please input new yuanxi:\n");
?? ??? ??? ??? ??? ?scanf("%s", &stu[i].YuanXi);
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?case 6:
?? ??? ??? ??? ??? ?printf("Please input new zhuanye:\n");
?? ??? ??? ??? ??? ?scanf("%s", &stu[i].ZhuanYe);
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?case 7:
?? ??? ??? ??? ??? ?printf("Please input new banji:\n ");
?? ??? ??? ??? ??? ?scanf("%d", &stu[i].BanJi);
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?case 8:
?? ??? ??? ??? ??? ?printf("Please input new xueji:\n");
?? ??? ??? ??? ??? ?scanf("%s", &stu[i].xueji);
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?default: printf("Input error!\n");
?? ??? ??? ??? ?}
?? ??? ??? ??? ?if (item == 0)
?? ??? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ?}
?? ?}
?
}?
void search() ?//查找已知學(xué)號的學(xué)生信息
{
?? ?long int b,term=-1;
?? ?int i;
? ? printf("請輸入要查找學(xué)生的學(xué)號:");
?? ?scanf("%ld",&b);
?? ?for (i=1; i<=M; i++)
?? ?{
?? ??? ?if (stu[i].Id==b)
?? ??? ?{
?? ??? ??? ?
?? ??? ??? ?printf("學(xué)號:%ld ?姓名:%s ?性別:%s ?年齡:%d ?籍貫:%s ?學(xué)院:%s ?專業(yè):%s ?班級:%d ?學(xué)籍:%s ?\n",stu[i].Id,stu[i].Name,stu[i].Sex,stu[i].Age,stu[i].BirthPlace,stu[i].YuanXi,stu[i].ZhuanYe,stu[i].BanJi,stu[i].xueji);
?? ??? ??? ?term=-2;
?? ??? ?}
?? ?}
?? ?if(term!=-2)
?? ?{
?? ??? ?printf("Not found!\n");
?? ?}
?? ?
}
void jiguanbiao()//按學(xué)號和專業(yè)輸出學(xué)生籍貫表
?? ?{
?? ?int i;
?
?? ?FILE *fp;
?? ?fp=fopen("student.txt","r");
?? ?printf("********************學(xué)生籍貫表*********************\n");
?? ?printf("學(xué)號 ? ? ?姓名 ? ? ? 籍貫\n");
?? ?for(i=1;i<=M;i++)
?? ?{ ?
?? ??? ?printf("%ld ? ? ? ?%s ? ? ? ? %s\n",stu[i].Id,stu[i].Name,stu[i].BirthPlace);
?? ?}
?? ?fclose(fp);
?? ?}
void save()//保存學(xué)生信息到文件
?? ?{
?? ??? ?int i;
?? ?
?? ??? ?FILE *fp;
?? ??? ?fp=fopen("student.txt","w");//在工程路徑下創(chuàng)建名為“student.txt”的記事本
?
?? ? ? ?for(i=1;i<=M;i++)
?? ??? ?{
?? ??? ??? ?fprintf(fp,"%ld ? ? ? ? %s ? ? ? ? %s ? ? ? ? %d ? ? ? ?%s ? ? ? ? %s ? ? ? ? %s ? ? ? ? %d ? ? ? %s ?\n",stu[i].Id,stu[i].Name,stu[i].Sex,stu[i].Age,stu[i].BirthPlace,stu[i].YuanXi,stu[i].ZhuanYe,stu[i].BanJi,stu[i].xueji);
?
?? ??? ?}
?? ??? ?fclose(fp);
?? ??? ?printf("學(xué)生信息保存成功!");
?? ?}
void xueji() ? //查詢學(xué)生學(xué)籍變化信息
?
?? ?{
?? ??? ?long int c,t=-1;
?? ??? ?int i;
?? ??? ?printf("請輸入要查詢學(xué)生的學(xué)號:");
?? ??? ?scanf("%ld",&c);
?? ??? ?for (i=1; i<=M; i++)
?? ??? ?{
?? ??? ??? ?if (c==stu[i].Id)
?? ??? ??? ?{
?? ??? ??? ?printf("學(xué)號:%ld ?姓名:%s ? 學(xué)籍:%s ?\n",stu[i].Id,stu[i].Name,stu[i].xueji);?? ??? ?
?? ??? ??? ?t=-2;
?? ??? ??? ?}?? ?
?? ??? ?}
?? ??? ?
?? ??? ?if(t!=-2)?? ?
?? ??? ?printf("Not found!\n");
?}

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

相關(guān)文章

  • C語言 function recursion函數(shù)遞歸詳解

    C語言 function recursion函數(shù)遞歸詳解

    遞歸指的是在函數(shù)的定義中使用函數(shù)自身的方法,舉個例子: 從前有座山,山里有座廟,廟里有個老和尚,正在給小和尚講故事呢!故事是什么呢?"從前有座山,山里有座廟,廟里有個老和尚,正在給小和尚講故事呢!故事是什么呢?"從前有座山,山里有座廟,循環(huán)下去
    2021-10-10
  • C++ 如何將string轉(zhuǎn)換成全小寫

    C++ 如何將string轉(zhuǎn)換成全小寫

    這篇文章主要介紹了C++ 如何將string轉(zhuǎn)換成全小寫問題,具有很好的參考價值,希望對大家有所幫助。
    2022-11-11
  • VC++ 獲取系統(tǒng)時間的方法匯總

    VC++ 獲取系統(tǒng)時間的方法匯總

    本文給大家匯總介紹了5種VC++中獲取系統(tǒng)時間的方法,十分的簡單實用,有需要的小伙伴可以參考下。
    2015-07-07
  • 函數(shù)指針的一些概念詳解

    函數(shù)指針的一些概念詳解

    首先看函數(shù)指針的語法,舉一個最簡單的例子,要創(chuàng)建一個函數(shù)指針,則它與它指向的函數(shù),在參數(shù)個數(shù)類型以及返回值上都保持一致,跟重載的要求應(yīng)該是一樣的
    2013-09-09
  • C語言在輸入輸出時遇到的常見問題總結(jié)

    C語言在輸入輸出時遇到的常見問題總結(jié)

    大家在平時的做題中是否會遇到和我一樣的煩惱,題目的代碼已經(jīng)基本完成,但是在輸出時候,總是和題目給出的樣例輸出格式不同?,導(dǎo)致題目不能通過。為了解決這一煩惱,我總結(jié)了以下幾點,需要的可以參考一下
    2022-09-09
  • C語言超詳細講解指針的使用

    C語言超詳細講解指針的使用

    C語言這門課程在計算機的基礎(chǔ)教學(xué)中一直占有比較重要的地位,然而要想突破C語言的學(xué)習(xí),對指針的掌握是非常重要的,本文將具體針對指針的基礎(chǔ)做詳盡的介紹
    2022-05-05
  • C++賦值函數(shù)+移動賦值函數(shù)+移動構(gòu)造函數(shù)詳解

    C++賦值函數(shù)+移動賦值函數(shù)+移動構(gòu)造函數(shù)詳解

    這篇文章主要介紹了C++賦值函數(shù)+移動賦值函數(shù)+移動構(gòu)造函數(shù)詳解,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • C++內(nèi)存分布及用法

    C++內(nèi)存分布及用法

    這篇文章主要介紹了C++內(nèi)存分布及用法,從內(nèi)存的基礎(chǔ)概念到內(nèi)存分配進行了講解,內(nèi)存是我們開發(fā)中最重要的一部分,往往邏輯上的錯誤就會造成內(nèi)存泄漏,導(dǎo)致程序無法運行,下面我們就來了解文章對該內(nèi)容的詳細介紹
    2021-12-12
  • C++中關(guān)于getchar()的使用方法

    C++中關(guān)于getchar()的使用方法

    這篇文章主要介紹了C++中關(guān)于getchar()的使用方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C語言實例講解四大循環(huán)語句的使用

    C語言實例講解四大循環(huán)語句的使用

    C語言有四大循環(huán)語句,他們之間可以進行任意轉(zhuǎn)換。本文將首先對其語法進行講解,然后通過一個實例用四種循環(huán)來實現(xiàn)。相信通過本文的學(xué)習(xí),大家都能夠?qū)語言循環(huán)語句有著熟練的掌握
    2022-05-05

最新評論