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í)有所幫助,也希望大家多多支持腳本之家。
- C語言模擬實現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)
- C語言實現(xiàn)學(xué)籍信息管理系統(tǒng)
- C語言實現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)課程設(shè)計
- C語言實現(xiàn)學(xué)籍管理系統(tǒng)課程設(shè)計
- C語言實現(xiàn)學(xué)籍管理系統(tǒng)
- C語言學(xué)籍管理系統(tǒng)源代碼
- C語言實現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)
- C語言學(xué)生學(xué)籍管理系統(tǒng)課程設(shè)計
- C語言實現(xiàn)簡單學(xué)生學(xué)籍管理系統(tǒng)
- C語言動態(tài)鏈表實現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)
相關(guān)文章
C語言 function recursion函數(shù)遞歸詳解
遞歸指的是在函數(shù)的定義中使用函數(shù)自身的方法,舉個例子: 從前有座山,山里有座廟,廟里有個老和尚,正在給小和尚講故事呢!故事是什么呢?"從前有座山,山里有座廟,廟里有個老和尚,正在給小和尚講故事呢!故事是什么呢?"從前有座山,山里有座廟,循環(huán)下去2021-10-10C++賦值函數(shù)+移動賦值函數(shù)+移動構(gòu)造函數(shù)詳解
這篇文章主要介紹了C++賦值函數(shù)+移動賦值函數(shù)+移動構(gòu)造函數(shù)詳解,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08