C語言實(shí)現(xiàn)簡單的學(xué)生學(xué)籍管理系統(tǒng)
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
一 .課題設(shè)計內(nèi)容與主要功能
1.1問題描述:
通過該系統(tǒng)實(shí)現(xiàn)對學(xué)生學(xué)籍信息進(jìn)行錄入、顯示、修改、插入、刪除、排序、保存等操作的管理。
2.1功能要求:
1、本系統(tǒng)采用一個包含N個數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,每個數(shù)據(jù)的結(jié)構(gòu)應(yīng)當(dāng)包括:學(xué)號、姓名、性別、出生日期、入學(xué)時間、專業(yè)、班級、備注。
2、本系統(tǒng)顯示這樣的菜單:
請選擇系統(tǒng)功能項(xiàng):
j.學(xué)生學(xué)籍信息錄入
k.學(xué)生學(xué)籍信息顯示
l.學(xué)生學(xué)籍信息保存
m.學(xué)生學(xué)籍信息修改
n.學(xué)生學(xué)籍信息插入
o.學(xué)生學(xué)籍信息刪除
p.學(xué)生學(xué)籍信息排序
q.學(xué)生學(xué)籍信息查詢
r.退出系統(tǒng)
3、執(zhí)行一個具體的功能之后,程序?qū)⒅匦嘛@示菜單。
4、將學(xué)生學(xué)籍信息保存到文件中。
二.代碼
#include ? ?"stdio.h"
#include ? ?"string.h"
#include ? ? "stdlib.h"
#define PF printf
#define SF scanf
#define N 20
FILE *fp;
static int n = 0, i, m;
struct date
{
? ? char year[10];
? ? char month[10];
? ? char day[10];
};
struct classmate
{
? ? char name[20];
? ? char num[20];
? ? char sex[10];
? ? char clas[40];
? ? struct date birth;
? ? char time[20];
? ? char specialit[20];
? ? char remark[40];
}stud[N] = {NULL};
void add()
{
? ? char j;
? ? front1:
? ? for(m = 0;; m++)
? ? ? ? if(*stud[m].num== '\0')break;
? ? n = m;
?? ?system("cls"); ?/*清屏*/
? ? PF("\n");
? ? PF("\n請輸入要添加的姓名:");
? ? SF("%s",stud[n].name);
? ? PF("\n請輸入要添加的學(xué)號(12位):");
? ? SF("%s",&stud[n].num);
? ? PF("\n請輸入要添加的性別(男/女):");
? ? SF("\n%s",&stud[n].sex);
? ? PF("\n請輸入要添加的班級:");
? ? SF("%s",&stud[n].clas);
? ? PF("\n請輸入要添加的出生年份:");
? ? SF("%s",&stud[n].birth.year);
? ? PF("\n請輸入要添加的出生月份:");
? ? SF("%s",&stud[n].birth.month);
? ? PF("\n請輸入要添加的出生日子:");
? ? SF("%s",&stud[n].birth.day);
? ? PF("\n請輸入要添加的入學(xué)日期:");
? ? SF("%s",&stud[n].time);
? ? PF("\n請輸入要添加的專業(yè):");
? ? SF("%s",&stud[n].specialit);
? ? PF("\n請輸入要添加的備注:");
? ? SF("%s",stud[n].remark);
? ? getchar();
? ? n++;
? ? PF("是否繼續(xù)(Y/N)?:");
? ? j=getchar(); getchar();
? ? if(j=='y'||j=='Y')
? ? {
? ? ? ? n++;
? ? ? ? goto front1;
? ? } ? ? ? ?/*再輸入記錄*/
}
void del()
{
? ? int ?k = 0;
? ? char j, s[20];
? ? front2:;
? ? for(m = 0;; m++)
? ? ? ? if(*stud[m].num == '\0')
? ? ? ? ? ? break;
? ? n = m;
? ? system("cls"); ?/*清屏*/
? ? PF("請輸入要刪除的學(xué)號:\n");
? ? getchar();
? ? gets(s);
? ? for(i = 0; i < n; i++)
? ? ? ?if(strcmp(s , stud[i].num) == 0)
? ? ? ? {
? ? ? ? ? ? k=1;break;
? ? ? ? } ? ? ? /*查找記錄*/
? ? if(k == 1) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /*刪除記錄*/
? ? {
? ? ? ? if(n == 1)
? ? ? ? {
? ? ? ? ? ? *stud[0].name = '\0';
? ? ? ? ? ? *stud[0].num = '\0';
? ? ? ? ? ? *stud[0].sex = '\0';
? ? ? ? ? ? *stud[0].clas = '\0';
? ? ? ? ? ? *stud[0].birth.year = '\0';
? ? ? ? ? ? *stud[0].birth.month = '\0';
? ? ? ? ? ? *stud[0].birth.day = '\0';
? ? ? ? ? ? *stud[0].time = '\0';
? ? ? ? ? ? *stud[0].specialit = '\0';
? ? ? ? ? ? *stud[0].remark = '\0';
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? for(k = i;k < n - 1; k++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? stud[k] = stud[k+1];
? ? ? ? ? ? }
? ? ? ? ? ? *stud[n - 1].name = '\0';
? ? ? ? ? ? *stud[n - 1].num = '\0';
? ? ? ? ? ? *stud[n - 1].sex = '\0';
? ? ? ? ? ? *stud[n - 1].clas = '\0';
? ? ? ? ? ? *stud[n - 1].birth.year = '\0';
? ? ? ? ? ? *stud[n - 1].birth.month = '\0';
? ? ? ? ? ? *stud[n - 1].birth.day = '\0';
? ? ? ? ? ? *stud[n - 1].time = '\0';
? ? ? ? ? ? *stud[n - 1].specialit = '\0';
? ? ? ? ? ? *stud[n - 1].remark = '\0';
? ? ? ? }
? ? ? ? PF("已刪除\n\n");
? ? }
? ? else
? ? {
? ? ? ? ?PF("找不到要刪除的記錄!\n");
? ? ? ? ?PF("按回車鍵返回:");
? ? ? ? ?getchar();
? ? }
? ? PF("是否繼續(xù)(Y/N)?:");
? ? j = getchar(); getchar();
? ? if(j=='y'||j=='Y')
? ? ? ? goto front2;
}
void find()
{
? ? int ?i,s = 0;
? ? char j,k[20];
? ? for(m = 0;; m++)
? ? ? ? if(*stud[m].num== '\0')break;
? ? n = m;
? ? front3:
? ? s=0;
? ? system("cls"); ?/*清屏*/
? ? PF("\n請輸入要查詢的學(xué)號: ");
? ? getchar();
? ? gets(k);
? ? for(i = 0;i <= n; i++)
? ? if(strcmp(k,stud[i].num) == 0)
? ? {
? ? PF("\t\t姓名:%-10s\n",stud[i].name);
? ? PF("\t\t學(xué)號:%-10s\n",stud[i].num);
? ? PF("\t\t性別:%s\n",stud[i].sex);
? ? PF("\t\t班級:%-12s\n",stud[i].clas);
? ? PF("\t\t出生日期:%-4s 年 %-2s 月 %-2s 日\n",stud[i].birth.year,stud[i].birth.month,stud[i].birth.day);
? ? PF("\t\t入學(xué)日期:%s\n",stud[i].time);
? ? PF("\t\t專業(yè):%s\n",stud[i].specialit);
? ? PF("\t\t備注:%s\n",stud[i].remark);
? ? s=1;
? ? }
? ? if(s==0)
? ? PF("查無此人!\n");
? ? getchar();
? ? PF("是否繼續(xù)查詢(Y/N)?:");
? ? j=getchar();getchar();
? ? if(j=='y'||j=='Y')
? ? ? ? goto front3;
? ? getchar();
}
void arrange()
{
? ? int k,i;
? ? struct classmate t;
? ? system("cls"); ?/*清屏*/
? ? FILE *fp;
? ? int s;
? ? for(m = 0;; m++)
? ? ? ? if(*stud[m].num== '\0')break;
? ? n = m;
? ? for(k = 0;k < n - 1; k++)
? ? ? ? for(i = 0;i < n - k - 1; i++)
? ? ? ? ? ? if(strcmp(stud[i].num,stud[i+1].num) > 0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? t = stud[i];
? ? ? ? ? ? ? ? stud[i] = stud[i+1];
? ? ? ? ? ? ? ? stud[i+1] = t;
? ? ? ? ? ? }
? ? ? ? ? ? else continue;
? ? for(i=0;i<=n-1;i++)
? ? if(stud[k].num != 0)
? ? {
? ? ? ? PF("\t\t姓名:%-10s\n",stud[i].name);
? ? ? ? PF("\t\t學(xué)號:%-10s\n",stud[i].num);
? ? ? ? PF("\t\t性別:%s\n",stud[i].sex);
? ? ? ? PF("\t\t班級:%-12s\n",stud[i].clas);
? ? ? ? PF("\t\t出生日期:%-4s 年 %-2s 月 %-2s 日\n",stud[i].birth.year,stud[i].birth.month,stud[i].birth.day);
? ? ? ? PF("\t\t入學(xué)日期:%s\n",stud[i].time);
? ? ? ? PF("\t\t專業(yè):%s\n",stud[i].specialit);
? ? ? ? PF("\t\t備注:%s\n\n",stud[i].remark);
? ? }
? ? PF("\t\t輸入回車返回主菜單");
? ? getchar();
? ? getchar();
}
void change()
{
? ? int ?k = 0;
? ? char j, s[20];
? ? front5:
? ? system("cls"); ?/*清屏*/
? ? for(m = 0;; m++)
? ? ? ? if(*stud[m].num== '\0')break;
? ? n = m;
? ? PF("\n請輸入要修改記錄的學(xué)號:");
? ? getchar();
? ? gets(s);
? ? for(i = 0;i < n; i++)
? ? ? ?if(strcmp(s , stud[i].num) == 0)
? ? ? ?{
? ? ? ? ? ? k = 1;break;
? ? ? ?} ? ? ?/*查找*/
? ? ? ?if(k == 1) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /*修改*/
? ? ? ?{
? ? ? ? ? ? PF("\n");
? ? ? ? ? ? PF("\n請輸入修改后的姓名:");
? ? ? ? ? ? SF("%s",stud[i].name);
? ? ? ? ? ? PF("\n請輸入修改后的學(xué)號:");
? ? ? ? ? ? SF("%s",&stud[i].num);
? ? ? ? ? ? PF("\n請輸入修改后的性別:");
? ? ? ? ? ? SF("\n%s",&stud[i].sex);
? ? ? ? ? ? PF("\n請輸入修改后的班級:");
? ? ? ? ? ? SF("%s",&stud[i].clas);
? ? ? ? ? ? PF("\n請輸入修改后的出生年:");
? ? ? ? ? ? SF("%s",&stud[i].birth.year);
? ? ? ? ? ? PF("\n請輸入修改后的出生月:");
? ? ? ? ? ? SF("%s",&stud[i].birth.month);
? ? ? ? ? ? PF("\n請輸入修改后的出生日:");
? ? ? ? ? ? SF("%s",&stud[i].birth.day);
? ? ? ? ? ? PF("\n請輸入修改后的入學(xué)日期:");
? ? ? ? ? ? SF("%s",&stud[n].time);
? ? ? ? ? ? PF("\n請輸入修改后的專業(yè):");
? ? ? ? ? ? SF("%s",&stud[n].specialit);
? ? ? ? ? ? PF("\n請輸入修改后的備注:");
? ? ? ? ? ? SF("%s",stud[i].remark);
? ? ? ? ? ? PF("修改成功\n");
? ? ? ? ? ? getchar();
? ? ?}
? ? ?if(k==0)
? ? ?{
? ? ? ? PF("找不到要修改的記錄!\n");
? ? ? ? PF("按回車鍵返回:");
? ? ? ? getchar();
? ? ?}
? ? getchar();
? ? PF("是否繼續(xù)(Y/N)?:");
? ? j=getchar(); getchar();
? ? if(j=='y'||j=='Y') goto front5;
}
void show()
{
? ? int s;
? ? for(m = 0;; m++)
? ? ? ? if(*stud[m].num== '\0')break;
? ? n = m;
? ? for(s = 0;s < n;s++)
? ? {
? ? ? ? PF("\t\t姓名:%-10s\n",stud[s].name);
? ? ? ? PF("\t\t學(xué)號:%-10s\n",stud[s].num);
? ? ? ? PF("\t\t性別:%s\n",stud[s].sex);
? ? ? ? PF("\t\t班級:%-12s\n",stud[s].clas);
? ? ? ? PF("\t\t出生日期:%-4s 年 %-2s 月 %-2s 日\n",stud[s].birth.year,stud[s].birth.month,stud[s].birth.day);
? ? ? ? PF("\t\t入學(xué)日期:%s\n",stud[s].time);
? ? ? ? PF("\t\t專業(yè):%s\n",stud[s].specialit);
? ? ? ? PF("\t\t備注:%s\n\n",stud[s].remark);
? ? }
? ? PF("\t\t按回車鍵返回主菜單");
? ? getchar();
? ? getchar();
}
void insert()
{
? ? front9:;
? ? char j;
? ? for(m = 0;; m++)
? ? ? ? if(*stud[m].num== '\0')break;
? ? n = m;
?? ?system("cls"); ?/*清屏*/
? ? PF("\n");
? ? PF("\n請輸入要插入的姓名:");
? ? SF("%s",stud[n].name);
? ? PF("\n請輸入要插入的學(xué)號(12位):");
? ? SF("%s",&stud[n].num);
? ? PF("\n請輸入要插入的性別(男/女):");
? ? SF("\n%s",&stud[n].sex);
? ? PF("\n請輸入要插入的班級:");
? ? SF("%s",&stud[n].clas);
? ? PF("\n請輸入要插入的出生年份:");
? ? SF("%s",&stud[n].birth.year);
? ? PF("\n請輸入要插入的出生月份:");
? ? SF("%s",&stud[n].birth.month);
? ? PF("\n請輸入要插入的出生日子:");
? ? SF("%s",&stud[n].birth.day);
? ? PF("\n請輸入要插入的入學(xué)日期:");
? ? SF("%s",&stud[n].time);
? ? PF("\n請輸入要插入的專業(yè):");
? ? SF("%s",&stud[n].specialit);
? ? PF("\n請輸入要插入的備注:");
? ? SF("%s",stud[n].remark);
? ? getchar();
? ? arrange();
? ? front10:;
? ? PF("是否繼續(xù)(Y/N)?:");
? ? j=getchar(); getchar();
? ? if(j=='y'||j=='Y')
? ? {
? ? ? ? n++;
? ? ? ? goto front9;
? ? }
}
void main()
{
?? ?char j;
?? ?PF("\n ? ? ? ? ? * * * * * * * * * * * * * * * * * * * * * * * * * * *");
? ? PF("\n ? ? ? ? ? * ? ? ? ? ? ? ?歡迎使用學(xué)生學(xué)籍管理系統(tǒng) ? ? ? ? ? ? *");
? ? PF("\n ? ? ? ? ? * ? ? ? ? ? ? ? ? ?制作人:胡彬 ? ? ? ? ? ? ? ? ? ? *");
? ? PF("\n ? ? ? ? ? * ? ? ? ? ? ? ? ? ? 2020年1月 ? ? ? ? ? ? ? ? ? ? ? *");
? ? PF("\n ? ? ? ? ? * ? ? ? ? ? ? ? 按回車鍵進(jìn)入主菜單: ? ? ? ? ? ? ? ? *");
? ? PF("\n ? ? ? ? ? * * * * * * * * * * * * * * * * * * * * * * * * * * *");
? ? if(( fp = fopen("student.txt","r")) == NULL)//載入已保存的學(xué)籍信息
? ? {
? ? ? ? PF("\n ? ? ? ? ? 數(shù)據(jù)加載失敗!");
? ? }
? ? else
? ? {
? ? ? ? fread(stud, sizeof(struct classmate), N, fp);
? ? ? ? fclose(fp);
? ? ? ? PF("\n ? ? ? ? ? 數(shù)據(jù)加載成功");
? ? }
? ? getchar();
? ? loop:
? ? system("cls");
? ? PF("\n");
? ? PF("\t\t ? ************\n");
? ? PF("\t\t ? * ?主菜單 ?*\n");
? ? PF("\t\t ? ************\n");
? ? PF("\t\t1.學(xué)生學(xué)籍信息錄入\n\n");
? ? PF("\t\t2.學(xué)生學(xué)籍信息刪除\n\n");
? ? PF("\t\t3.學(xué)生學(xué)籍信息查詢\n\n");
? ? PF("\t\t4.學(xué)生學(xué)籍信息排序\n\n");
? ? PF("\t\t5.學(xué)生學(xué)籍信息修改\n\n");
? ? PF("\t\t6.學(xué)生學(xué)籍信息保存\n\n");
? ? PF("\t\t7.退出系統(tǒng)\n\n");
? ? PF("\t\t8.學(xué)生學(xué)籍信息顯示\n\n");
? ? PF("\t\t9.學(xué)生學(xué)籍信息插入\n\n");
? ? PF("\t\t請選擇[1/2/3/4/5/6/7/8]: ");
? ? j=getchar();
? ? if(j=='\n') goto loop; ? ?/*返回主菜單*/
? ? switch(j)
? ? {
? ? ? ? case '1': ? add(); goto loop; ? ?/*返回主菜單*/
? ? ? ? case '2': ? del(); goto loop;
? ? ? ? case '3': ? find(); goto loop;
? ? ? ? case '4': ? arrange(); goto loop;
? ? ? ? case '5': ? change(); goto loop;
? ? ? ? case '6': ? {
? ? ? ? ? ? ? ? ? ? ? ? FILE *fp;
? ? ? ? ? ? ? ? ? ? ? ? fp=fopen("student.txt","w");
? ? ? ? ? ? ? ? ? ? ? ? fwrite(stud,n*sizeof(struct classmate),1,fp);
? ? ? ? ? ? ? ? ? ? ? ? fclose(fp); goto loop;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? case '7': ? exit(0);
? ? ? ? case '8': ? show(); goto loop;
? ? ? ? case '9': ? insert();goto loop;
? ? ? ? default: ? ?goto loop;
? ? }
}以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語言實(shí)現(xiàn)簡單學(xué)生學(xué)籍管理系統(tǒng)
- C語言學(xué)生學(xué)籍管理系統(tǒng)課程設(shè)計
- C語言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)
- C語言學(xué)籍管理系統(tǒng)源代碼
- C語言實(shí)現(xiàn)學(xué)籍管理系統(tǒng)
- C語言模擬實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)
- C語言實(shí)現(xiàn)學(xué)籍信息管理系統(tǒng)
- C語言實(shí)現(xiàn)學(xué)籍管理系統(tǒng)課程設(shè)計
- C語言動態(tài)鏈表實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)
- C語言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)課程設(shè)計
相關(guān)文章
完美解決QT?QGraphicsView提升到QChartView報錯的問題
使用QT提供的QChartView來繪制圖表,提升QGraphicsView控件繼承QChartView后,然后將QGraphicsView提升到我們自己寫的類,怎么才能確保提升后編譯不報錯呢,下面小編給大家?guī)砹薗T QGraphicsView 提升到QChartView報錯解決方案,感興趣的朋友一起看看吧2023-05-05
字典樹的基本知識及使用C語言的相關(guān)實(shí)現(xiàn)
這篇文章主要介紹了字典樹的基本知識及使用C語言的相關(guān)實(shí)現(xiàn),這也是ACM等計算機(jī)考試和競賽題目的基本知識,需要的朋友可以參考下2015-08-08
MFC實(shí)現(xiàn)學(xué)生選課系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了MFC實(shí)現(xiàn)學(xué)生選課系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-02-02

