C語(yǔ)言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)程序設(shè)計(jì)
本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
一、題目設(shè)計(jì)及其要求
1、題目:學(xué)生學(xué)籍管理系統(tǒng)
用數(shù)據(jù)文件存放學(xué)生的學(xué)籍,可對(duì)學(xué)生學(xué)籍進(jìn)行注冊(cè)、修改、查找、統(tǒng)計(jì)、學(xué)籍變化等操作。(用文件保存)
2、功能要求:
(1)系統(tǒng)以菜單方式工作;
(2)登記學(xué)生的學(xué)號(hào),姓名,性別,年齡,籍貫,學(xué)院,專業(yè),班級(jí);
(3)修改已知學(xué)號(hào)的學(xué)生信息;
(4)查找已知學(xué)號(hào)的學(xué)生信息;
(5)按學(xué)號(hào)和專業(yè)輸出學(xué)生籍貫表;
(6)查詢學(xué)生學(xué)籍變化,比如入學(xué),轉(zhuǎn)專業(yè),退學(xué),降級(jí),休學(xué),畢業(yè)。
二、設(shè)計(jì)平臺(tái)
Visual C++ 6.0
三、設(shè)計(jì)思路及過(guò)程
1、初步完成總體結(jié)構(gòu)設(shè)計(jì),主要運(yùn)用結(jié)構(gòu)體及函數(shù)調(diào)用的知識(shí)設(shè)計(jì)程序框架,根據(jù)功能確定函數(shù)個(gè)數(shù)及儲(chǔ)備每個(gè)功能所需的知識(shí);
2、創(chuàng)建工程,同時(shí)在工程路徑下創(chuàng)建記事本保存文件數(shù)據(jù),寫出程序的主要框架;
3、寫主函數(shù)以及被調(diào)用函數(shù),完成上述登記、修改、查找、輸出學(xué)生信息等功能;
4、調(diào)試代碼,不斷修改以達(dá)到運(yùn)行成功和取得最佳效果。
四、運(yùn)行結(jié)果
(1)系統(tǒng)以菜單方式工作
(2)登記學(xué)生的學(xué)號(hào)、姓名、性別、年齡、籍貫、學(xué)院、專業(yè)、班級(jí),并用文件保存
(3)修改已知學(xué)號(hào)的學(xué)生信息
(4)查找已知學(xué)號(hào)的學(xué)生信息
(5)按學(xué)號(hào)和專業(yè)輸出學(xué)生籍貫表
(6)查詢學(xué)生學(xué)籍變化,比如入學(xué)、轉(zhuǎn)專業(yè)、退學(xué)、降級(jí)、休學(xué)、畢業(yè)
(7)退出系統(tǒng)
五、程序代碼
#include<stdio.h>?? ? #include<stdlib.h>?? ? #include<string.h>?? ?//頭文件 ? #define LEN 20?? ??? ?//學(xué)號(hào)和姓名最大字符數(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é)號(hào) ? ? 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; ? ? ?//班級(jí) ? ? 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("請(qǐng)選擇菜單編號(hào):"); ?? ?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("請(qǐng)?jiān)?-8之間選擇\n"); ? ? ? ? ? ? system("pause");//提示完成之后顯示按任意鍵繼續(xù) ?? ?} ? } void insert()//添加學(xué)生信息 ?? ?{?? ?int i; ?? ??? ?for(i=1;i<=M;i++) ?? ??? ?{ ?? ??? ??? ?printf("請(qǐng)輸入第%d個(gè)學(xué)生的學(xué)號(hào):",i); ?? ??? ??? ?scanf("%ld",&stu[i].Id); ?? ??? ??? ?printf("請(qǐng)輸入第%d個(gè)學(xué)生的姓名:",i); ?? ??? ??? ?scanf("%s",&stu[i].Name); ?? ??? ??? ?printf("請(qǐng)輸入第%d個(gè)學(xué)生的性別:",i); ?? ??? ??? ?scanf("%s",&stu[i].Sex); ?? ??? ??? ?printf("請(qǐng)輸入第%d個(gè)學(xué)生的年齡:",i); ?? ??? ??? ?scanf("%d",&stu[i].Age); ?? ??? ??? ?printf("請(qǐng)輸入第%d個(gè)學(xué)生的籍貫:",i); ?? ??? ??? ?scanf("%s",&stu[i].BirthPlace); ?? ??? ??? ?printf("請(qǐng)輸入第%d個(gè)學(xué)生的學(xué)院:",i); ?? ??? ??? ?scanf("%s",&stu[i].YuanXi); ?? ??? ??? ?printf("請(qǐng)輸入第%d個(gè)學(xué)生的專業(yè):",i); ?? ??? ??? ?scanf("%s",&stu[i].ZhuanYe); ?? ??? ??? ?printf("請(qǐng)輸入第%d個(gè)學(xué)生的班級(jí):",i); ?? ??? ??? ?scanf("%d",&stu[i].BanJi); ?? ??? ??? ?printf("請(qǐng)輸入第%d個(gè)學(xué)生的學(xué)籍(如入學(xué)、轉(zhuǎn)專業(yè)、退學(xué)、降級(jí)、休學(xué)、畢業(yè)):",i); ?? ??? ??? ?scanf("%s",&stu[i].xueji); ?? ??? ?} ?? ??? ?printf("學(xué)生信息添加完畢!請(qǐng)立即保存數(shù)據(jù)信息到文件!"); ?? ??? ? ?? ?} void modify()//修改學(xué)生信息 ?? ?{ ?? ??? ? ?? ?int i, item; ?? ?long int a; ?? ?printf("請(qǐng)輸入要修改學(xué)生的學(xué)號(hào):\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.修改班級(jí):\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é)號(hào)的學(xué)生信息 { ?? ?long int b,term=-1; ?? ?int i; ? ? printf("請(qǐng)輸入要查找學(xué)生的學(xué)號(hào):"); ?? ?scanf("%ld",&b); ?? ?for (i=1; i<=M; i++) ?? ?{ ?? ??? ?if (stu[i].Id==b) ?? ??? ?{ ?? ??? ??? ? ?? ??? ??? ?printf("學(xué)號(hào):%ld ?姓名:%s ?性別:%s ?年齡:%d ?籍貫:%s ?學(xué)院:%s ?專業(yè):%s ?班級(jí):%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é)號(hào)和專業(yè)輸出學(xué)生籍貫表 ?? ?{ ?? ?int i; ? ?? ?FILE *fp; ?? ?fp=fopen("student.txt","r"); ?? ?printf("********************學(xué)生籍貫表*********************\n"); ?? ?printf("學(xué)號(hào) ? ? ?姓名 ? ? ? 籍貫\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("請(qǐng)輸入要查詢學(xué)生的學(xué)號(hào):"); ?? ??? ?scanf("%ld",&c); ?? ??? ?for (i=1; i<=M; i++) ?? ??? ?{ ?? ??? ??? ?if (c==stu[i].Id) ?? ??? ??? ?{ ?? ??? ??? ?printf("學(xué)號(hào):%ld ?姓名:%s ? 學(xué)籍:%s ?\n",stu[i].Id,stu[i].Name,stu[i].xueji);?? ??? ? ?? ??? ??? ?t=-2; ?? ??? ??? ?}?? ? ?? ??? ?} ?? ??? ? ?? ??? ?if(t!=-2)?? ? ?? ??? ?printf("Not found!\n"); ?}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語(yǔ)言模擬實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)
- C語(yǔ)言實(shí)現(xiàn)學(xué)籍信息管理系統(tǒng)
- C語(yǔ)言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)課程設(shè)計(jì)
- C語(yǔ)言實(shí)現(xiàn)學(xué)籍管理系統(tǒng)課程設(shè)計(jì)
- C語(yǔ)言實(shí)現(xiàn)學(xué)籍管理系統(tǒng)
- C語(yǔ)言學(xué)籍管理系統(tǒng)源代碼
- C語(yǔ)言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)
- C語(yǔ)言學(xué)生學(xué)籍管理系統(tǒng)課程設(shè)計(jì)
- C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單學(xué)生學(xué)籍管理系統(tǒng)
- C語(yǔ)言動(dòng)態(tài)鏈表實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)
相關(guān)文章
C語(yǔ)言 function recursion函數(shù)遞歸詳解
遞歸指的是在函數(shù)的定義中使用函數(shù)自身的方法,舉個(gè)例子: 從前有座山,山里有座廟,廟里有個(gè)老和尚,正在給小和尚講故事呢!故事是什么呢?"從前有座山,山里有座廟,廟里有個(gè)老和尚,正在給小和尚講故事呢!故事是什么呢?"從前有座山,山里有座廟,循環(huán)下去2021-10-10C語(yǔ)言在輸入輸出時(shí)遇到的常見問(wèn)題總結(jié)
大家在平時(shí)的做題中是否會(huì)遇到和我一樣的煩惱,題目的代碼已經(jīng)基本完成,但是在輸出時(shí)候,總是和題目給出的樣例輸出格式不同?,導(dǎo)致題目不能通過(guò)。為了解決這一煩惱,我總結(jié)了以下幾點(diǎn),需要的可以參考一下2022-09-09C++賦值函數(shù)+移動(dòng)賦值函數(shù)+移動(dòng)構(gòu)造函數(shù)詳解
這篇文章主要介紹了C++賦值函數(shù)+移動(dòng)賦值函數(shù)+移動(dòng)構(gòu)造函數(shù)詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08C語(yǔ)言實(shí)例講解四大循環(huán)語(yǔ)句的使用
C語(yǔ)言有四大循環(huán)語(yǔ)句,他們之間可以進(jìn)行任意轉(zhuǎn)換。本文將首先對(duì)其語(yǔ)法進(jìn)行講解,然后通過(guò)一個(gè)實(shí)例用四種循環(huán)來(lái)實(shí)現(xiàn)。相信通過(guò)本文的學(xué)習(xí),大家都能夠?qū)語(yǔ)言循環(huán)語(yǔ)句有著熟練的掌握2022-05-05