當前位置:首頁 » 編程語言 » c語言學生信息系統
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言學生信息系統

發布時間: 2022-07-18 07:55:48

『壹』 用標准c語言編寫學生信息管理系統

把我之前做的給你吧,差不多的
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"conio.h"
#define N 50 //定義符號常量,代表學生人數最大值
int count=0; //全局變數,用於記錄數組的當前位置
struct student //定義結構體類型,代表學生信息*/
{
char name[9];
char number[10];
float math;
float english;
float physics;
float computer;
};
void input(struct student *arr); //函數聲明,輸入學生信息*/
void sort(struct student *arr); //函數聲明,按總分排序*/
void find(struct student *arr); //函數聲明,查找某位學生信息*/
void main()
{
char selmenu; //定義局部變數,用於記錄用戶選擇的功能編號*/
struct student stud[N]; //定義結構體數組,用於記錄學生信息*/
do //利用循環顯示界面*/
{
system("cls"); //清屏函數*/
printf("\n\n");
printf("歡迎使用學生管理系統\n");
printf("------------------------\n");
printf("學生成績管理系統 \n\n");
printf("1.輸入學生信息 \n");
printf("2.按總分進行排榜 \n");
printf("3.查找相應的學生信息 \n");
printf("4.退出學生成績管理系統 \n\n");
printf("請輸入功能選擇編號:");
fflush(stdin); //清空輸入緩沖區
scanf("%c",&selmenu); //接受用戶選擇的功能編號
switch(selmenu) //輸入不同功能編號調用相應函數來完成功能
{
case'1':
input(stud); //調用輸入學生信息函數,參數為學生信息數組名
break;
case'2':
sort(stud); //調用按總分排榜函數,參數是數組名
break;
case'3':
find(stud); //調用按學號和姓名查找學生信息函數
break;
}
}while(selmenu!='4'); //判斷是否退出
printf("*^-^* 謝謝使用 *^-^*\n"); //輸出告別詞
printf(" 任務完成 ");
getch();
}
void input(struct student *arr) //定義輸入學生信息函數
{
char ch; //用於接收用戶指令
do //利用循環,由用戶控制輸入學生成績
{
system("cls");
printf("\n輸入第%d個學生的信息:\n輸入學生姓名:",count+1);
scanf("%s",arr[count].name);
printf("\n輸入學生學號:");
scanf("%s",arr[count].number);
printf("\n輸入數學成績:");
scanf("%f",&arr[count].math);
printf("\n輸入英語成績:");
scanf("%f",&arr[count].english);
printf("\n輸入物理成績:");
scanf("%f",&arr[count].physics);
printf("\n輸入計算機成績:");
scanf("%f",&arr[count].computer);
count++; //記錄當前輸入的學生資料的個數
printf("\n是否繼續輸入(y/n)\n");
fflush(stdin); //清空輸入緩沖區
ch=getchar();
}while(ch=='y'||ch=='Y'); //判斷用戶指令,是否繼續輸入
}
void sort(struct student *arr) //定義按總分排榜函數
{
int i,j,k; //定義循環變數i,j,最小數位置k
struct student t; //定義交換臨時變數
if(count==0) //判斷數組中學生成績是否存在
printf("無學生成績,請先錄入學生信息\n");
else
{
for(i=0;i<count-1;i++) //用選擇法按總分對學生成績排序
{
k=i;
for(j=i+1;j<count;j++) //k為arr[i]到arr[count-1]中最小數的位置
if((arr[k].math+arr[k].english+arr[k].physics+arr[k].computer)<(arr[j].math+arr[j].english+arr[j].physics+arr[j].computer))
k=j;
if(k!=i) //如果最小數不是比較數列中第一個,對調
{
t=arr[k];
arr[k]=arr[i];
arr[i]=t;
}
}
printf("\n總分排榜版:\n\n");
printf("\t姓名\t學號\t數學\t英語\t物理\t計算機\t總分\t名次\n");
for(j=0;j<count;j++) //輸出按總分排榜後的學生成績和名次
printf("\t%-6s\t%-4s\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\t%-5d\n",
arr[j].name,arr[j].number,arr[j].math,arr[j].english,arr[j].physics,arr[j].computer,arr[j].math+arr[j].english,j+1);
}
printf("\n回車鍵返回主程序\n");
fflush(stdin);
getchar();
}
void find(struct student *arr) //定義查找函數
{
int j;
char name[9]; //用於接收用戶輸入的學生姓名
char number[10]; //用於接收用戶輸入的學生學號
system("cls"); //清屏函數
printf("\n請輸入要查找的學生資料:\n");
printf("\n學生姓名:");
scanf("%s",name);
printf("\n學生學號:");
scanf("%s",number);
for(j=0;j<count;j++) //使用字元串比較函數查找兵書出符合條件的學生成績
{
if((strcmp(name,arr[j].name)==0)&&(strcmp(number,arr[j].number)==0))
{
printf("\n\t姓名\t學號\t數學\t英語\t物理\t計算機\t總分\n");
printf("\t%-6s\t%-4s\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\n",
arr[j].name,arr[j].number,arr[j].math,arr[j].english,arr[j].physics,arr[j].computer,arr[j].math+arr[j].english);
break;
}
}
if(j>=count) //如果沒找到,會從循環條件退出
printf("\n未找到該學生紀錄,請核對後重新查找!\n");
fflush(stdin); //清空輸入緩沖區
printf("\n回車鍵返回\n");
getchar();
}

『貳』 如何用c語言編寫學生信息管理系統

性別也就兩種狀態,你就 定義 1 表示男性 0 表示女性,用一個int類型存儲,名字就定義一個20個字元長度的字元串,電話,學號這些都可以定義為字元串(長度自己選擇) 寢室號看情況也可以定義int類型或者字元串類型;
輸入就用字元串和整型數字的輸入方式啊 scanf
存儲的話,一般寫入文件裡面去,用結構體數組或鏈表進行 增刪改查

『叄』 用C語言設計一個學生信息查詢系統程序

1、首先創建一個c語言項目。然後右鍵頭文件,創建一個Stu的頭文件。

『肆』 學生信息管理系統編程(c語言)

挺好的一個題目啊

但我可不願意幫人寫作業

網上很多類似的,你可以參考下:
#include <stdio.h>
#include <string.h> struct student {
char name[30];
float math;
float chinese;
float english;
float average;
};

int MenuChoice(void);
int EnterAccount(void);
void Enter(struct student *fst);
void Amend(struct student *src);
void Delete(struct student *next);
void Print(struct student *out);

main()
{
struct student one[100] = {0}, *look = one;
int menu, t;

while ((menu = MenuChoice()) != 0)

if (menu >= 1 && menu <= 4 && (t = EnterAccount())) {
look = one + t;

switch (menu) {
case 1:
Enter(look);
break;
case 2:
if (strcmp(look->name, ""))
printf("學號:%d\n姓名: %s\n語文成績: %.1f\n數學成績:%.1f\n英語成績: %f\n平均"成績:%.1f\n",
t, look->name, look->chinese, look->math, look->english, look->average);
else
printf("對不起,該學號不存在!\n");
break;
case 3:
Amend(look);
break;
case 4:
Delete(look);
break;
}
}
else if (menu == 5)
Print(one);
else
printf("錯誤的請求!\n");

return 0;
}

int MenuChoice(void)
{
int choice;

printf("請選擇:\n"
"1 - 新建學生信息\n"
"2 - 查找學生信息\n"
"3 - 修改學生信息\n"
"4 - 刪除學生信息\n"
"5 - 列印學生信息\n"
"0 - 退出\n");
scanf("%d", &choice);

return choice;
}

int EnterAccount(void)
{
int ret;

printf("請輸入學號:\n");
scanf("%d", &ret);

if (ret >= 1 && ret <= 100)
return ret -1;

return 0;
}

void Enter(struct student *fst)
{
printf("請輸入學生姓名、語文成績、數學成績、英語成績和平均成績\n");
scanf("%s%f%f%f%f", fst->name, &fst->chinese, &fst->math, &fst->english, &fst->average);
}

void Amend(struct student *src)
{
int t;

printf("請選擇:\n"
"1 - 修改學生姓名\n"
"2 - 修改學生語文成績\n"
"3 - 修改學生數學成績\n"
"4 - 修改學生英語成績\n"
"5 - 修改學生平均成績\n");
scanf("%d", &t);

switch (t) {
case 1:
printf("請輸入學生的新名字\n");
scanf("%s", src->name);
break;
case 2:
printf("請輸入學生新的語文成績\n");
scanf("%f", &src->chinese);
break;
case 3:
printf("請輸入學生新的數學成績\n");
scanf("%f", &src->math);
break;
case 4:
printf("請輸入學生新的英語成績\n");
scanf("%f", &src->english);
break;
case 5:
printf("請輸入學生新的平均成績\n");
scanf("%f", &src->average);
break;
}

}

void Delete(struct student *next)
{
strcpy(next->name, "");
next->math = next->english = next->chinese = next->average = 0.0;
}

void Print(struct student *out)
{
struct student *up;

for (up = out; out < &up[100]; out++)

if (strcmp(out->name, ""))
printf("學號:%d\n姓名: %s\n語文成績: %.1f\n數學成績:%.1f\n英語成績: %.1f\n平均成績:%.1f\n",
out-up + 1, out->name, out->chinese, out->math, out->english, out->average);
}

『伍』 c語言編寫學生信息管理系統

稍微用了點c++(你給的分太低)
如下圖所示:
studf.txt
操作日誌文件:

『陸』 用C語言創建學生信息處理系統,要求如下

你這來可以用基本的鏈表來創建。
鏈表就是結構體用指針連接起來。
學生的信息可以定義成結構類型。
每個學生就是一個結構體的變數。
每個結構體都有一個指針成員next指向下一個學生的結構體變數。
這樣就構成了鏈表。對鏈表的增刪就是對這個鏈表指針操作,並釋放刪除節點空間。

具體鏈表代碼,在我回答記錄里,我已經回答過很多次。各種都有,你需要去我回答記錄找吧。

『柒』 建立一個學生信息系統C語言編程

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>

intbExit=0;
inttotal=0;
#defineCreate(the_one)the_one=(Stu*)malloc(sizeof(Stu))
typedef
structStudent
{
charcnum[20]; //字元串學號
intinum; //數字學號
charname[20]; //姓名
floatscore; //成績
structStudent*next;
}Stu;
Stu*the_one,*h,*pr,*last,*end;//1.添加學生函數
voidADD()
{
intFour=0;
printf("================================ ");

Create(the_one);
the_one->next=NULL;

end=last;//end指向倒數第二個結點

last->next=the_one;//將the_one放在鏈表的最後
last=the_one;//last指向倒數第一個結點

//輸入學號
printf("輸入學生信息: 學號:");

while(!Four)
{
gets(the_one->cnum);
if(strlen(the_one->cnum)!=4)
printf("輸入非法:學號必須是4位,請重新輸入! 學號:");
else
Four=1;
}
the_one->inum=atoi(the_one->cnum); //int型學號

//輸入姓名
printf("學生姓名:");
gets(the_one->name);
//輸入成績
printf("學生成績:");
scanf("%f",&the_one->score);
getchar();//接收回車
//總數+1
total++;
//排序

//pr從空head開始,last指向下一個(前趨pr,後趨last)
for(pr=h,last=pr->next;last->next;pr=pr->next,last=pr->next)
{
if(last->inum>the_one->inum)
{
//插入元素the_one
the_one->next=last;
pr->next=the_one;

last=end;//插入完成,將last移到最後。
end->next=NULL;//最後結點指針域置空,last->next為NULL,跳出循環
break;
}
}
printf("================================ ");
}

//2.查詢學生函數
voidCHECK()
{
Stu*target,*p;
intfond=0;
printf("================================ ");
printf("輸入要查找學生的學號: 學號:");
Create(target);
gets(target->cnum);
for(p=h->next;p;p=p->next)
{
if(!strcmp(p->cnum,target->cnum))
{
printf("學號為%s的學生信息:姓名(%s),分數(%.2f) ",p->cnum,p->name,p->score);
free(target);
fond=1;
}
}
if(!fond)
printf("WrongStudentNO.! ");
printf("================================ ");
}
//3.編輯學生
voidEDIT()
{
Stu*target,*p;
intfond=0;
printf("================================ ");
printf("輸入要編輯學生的學號: 學號:");
Create(target);
gets(target->cnum);
for(p=h->next;p;p=p->next)
{
if(!strcmp(p->cnum,target->cnum))
{
printf("學號為%s的學生信息:姓名(%s),分數(%.2f) ",p->cnum,p->name,p->score);
printf("請選擇修改項目: 1:姓名 2:分數 ");
charc;
c=getch();
switch(c)
{
case'1':
printf("輸入正確的姓名:");
gets(p->name);
break;
case'2':
printf("輸入最新成績:");
scanf("%f",&p->score);
break;
}
printf("學號為%s的學生最新信息:姓名(%s),分數(%.2f) ",p->cnum,p->name,p->score);

free(target);
fond=1;
}
}
if(!fond)
printf("NotExitThisNO.! ");
printf("================================ ");

}
//4.刪除學生
voidDELETE1()
{
voidPRINALL();
PRINALL();
Stu*target,*p,*pr;
intfond=0;
printf("================================ ");
printf("輸入要刪除學生的學號:(如果刪除所有學生信息,請輸入0000) 學號:");
Create(target);
gets(target->cnum);
target->inum=atoi(target->cnum);
// char*zero=&"0000";

if(!strcmp(target->cnum,"0000"))
{
h->next=NULL;
total=0;
}
else
{

for(pr=h,p=h->next;p;pr=pr->next,p=p->next)
{
if(!strcmp(p->cnum,target->cnum))
{
printf("學號為%s的學生信息已刪除 ",p->cnum);
free(target);
pr->next=p->next;
p->next=NULL;
// free(p);此句報錯
fond=1;
total--;
}
}
if(!fond)
printf("沒有找到學號為%s的學生,請確認學號輸入是否正確 ");
}
printf("================================ ");
}
//5.列印全部
voidPRINALL()
{
intamounts=1;
Stu*Op;
printf("================================ ");
printf("所有學生信息: ");
for(Op=h->next;Op;Op=Op->next)
printf("%d.%s,%s,%.2f ",amounts++,Op->cnum,Op->name,Op->score);
printf("================================ ");
}
//6.總人數
voidTOTAL()
{
printf("================================ ");
printf("學生總人數:%d ",total);
printf("================================ ");
}

//菜單函數
voidMenu()
{
charorder;
printf("================================ ");
printf("|1.添加學生.| ");
printf("|2.查詢學生.| ");
printf("|3.編輯學生.| ");
printf("|4.刪除學生.| ");
printf("|5.列印全部.| ");
printf("|6.總人數.| ");
printf("|7.退出.| ");
printf("================================ ");

order=getch();
system("cls");


switch(order)
{
case'1':
ADD();
break;
case'2':
CHECK();
break;
case'3':
EDIT();
break;
case'4':
DELETE1();
break;
case'5':
PRINALL();
break;
case'6':
TOTAL();
break;
case'7':
bExit=1;
break;
}
while(!bExit)
{
getch();
system("cls");
Menu();
}
}
voidmain()
{
//創建鏈表頭
Create(h);
pr=last=end=the_one=h;
the_one->next=NULL; Menu();
}

『捌』 如何用c語言製作一個學生信息管理系統,要求以文件形式保存

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

//鏈表結點結構體聲明

typedef struct subjects

{

char name[20];

float score;

}sub;

typedef struct student

{

int num;

char name[20];

sub subject[3];

struct student* next;

}stu,*pstu;

#define SIZE sizeof(stu)

//函數申明

pstu LoadInfo();

void PrintMenu();

pstu AddStu(pstu );

pstu DeleStu(pstu );

pstu RwrStu(pstu );

void FindStu(pstu , char );

void Count(pstu ,char * ,float ,float );

void Rank(pstu ,char * );

void SaveQuit(pstu );

//創建菜單,進入選擇循環

while(1)

{

PrintMenu();

printf("請輸入您的選擇編號:");

scanf("%d",&n);

getchar();

switch(n)

{

case 1:

{

system("cls");

j=0;

while(4!=j)

{

printf("歡迎進入信息管理版塊! ");

printf("25 1、添加學生 ");

printf("25 2、刪除學生 ");

printf("25 3、修改學生信息 ");

printf("25 4、返回 ");

printf("請輸入您的選擇編號: ");

scanf("%d",&j);

getchar();

if ( 1 == j) head = AddStu(head);

else if( 2 == j) head = DeleStu(head);

else if( 3 == j) head = RwrStu(head);

else if( 4 == j) ;

else printf("輸入有誤,請重新輸入! ");

}

case 2:

{

//信息查詢

system("cls");

printf("歡迎進入信息查詢版塊! ");

printf("請輸入要查詢的學生編號:");

scanf("%d",&j);

getchar();

//printf("%d ",j); //檢測輸入是否成功,調試程序用

FindStu(head,j); //查詢並輸出

printf(" 請輸入回車鍵返回主菜單!");

getchar();

system("cls");

break;

}

(8)c語言學生信息系統擴展閱讀:

C語言包含的各種控制語句僅有9種,關鍵字也只有32 個,程序的編寫要求不嚴格且以小寫字母為主,對許多不必要的部分進行了精簡。

實際上,語句構成與硬體有關聯的較少,且C語言本身不提供與硬體相關的輸入輸出、文件管理等功能,如需此類功能,需要通過配合編譯系統所支持的各類庫進行編程,故c語言擁有非常簡潔的編譯系統。

『玖』 用c語言設計一個學生信息管理系統,急啊.謝謝

#includenbsp;「stdio.h「#definenbsp;SIZEnbsp;50intnbsp;sum=0;staticnbsp;charnbsp;*str[]={「C「,「Math「,「English「};structnbsp;studentnbsp;nbsp;{nbsp;intnbsp;n;nbsp;nbsp;nbsp;nbsp;longnbsp;num;nbsp;nbsp;nbsp;nbsp;charnbsp;name[10];nbsp;nbsp;nbsp;nbsp;intnbsp;age;nbsp;nbsp;nbsp;nbsp;charnbsp;addr[10];nbsp;nbsp;nbsp;nbsp;intnbsp;score[3];nbsp;nbsp;nbsp;nbsp;floatnbsp;avr;nbsp;nbsp;}nbsp;stu[SIZE];/*nbsp;1--Inputnbsp;*/voidnbsp;fin(){nbsp;intnbsp;i,j,s;charnbsp;f;nbsp;nbsp;FILEnbsp;*fp;nbsp;nbsp;printf(「nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Warring!nbsp;Input?nbsp;(nbsp;y/nnbsp;)nbsp;:nbsp;777「);nbsp;nbsp;f=getchar();f=getchar();nbsp;nbsp;if(f!=『y『)nbsp;nbsp;nbsp;nbsp;return;nbsp;nbsp;fp=fopen(「fstu「,「wb「);nbsp;nbsp;for(i=0;iamp;lt;SIZE;i++)nbsp;nbsp;nbsp;nbsp;{nbsp;printf(「nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;i=%dnbsp;Inputnbsp;No.nbsp;(i=-1,return)nbsp;i=?nbsp;「,i+1);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;scanf(「%d「,amp;j);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;ifnbsp;(j==-1)nbsp;{nbsp;printf(「
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;*nbsp;*nbsp;*nbsp;Pressnbsp;anynbsp;keynbsp;return!nbsp;*nbsp;*nbsp;*
「,j);nbsp;nbsp;nbsp;fclose(fp);getch();return;nbsp;}nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;elsenbsp;{nbsp;printf(「nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Inputnbsp;num,name,age,addrnbsp;:nbsp;「);nbsp;nbsp;nbsp;stu[i].n=i+1;nbsp;nbsp;nbsp;scanf(「%ld%s%d%s「,amp;stu[i].num,stu[i].name,amp;stu[i].age,stu[i].addr);nbsp;nbsp;nbsp;s=0;nbsp;nbsp;nbsp;for(j=0;jamp;lt;3;j++)nbsp;nbsp;nbsp;nbsp;{nbsp;printf(「nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Inputnbsp;%-7snbsp;scorenbsp;:nbsp;「,str[j]);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;scanf(「%d「,amp;stu[i].score[j]);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;if(stu[i].score[j]amp;gt;100)nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;{nbsp;j--;continue;}nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;s+=stu[i].score[j];nbsp;nbsp;nbsp;nbsp;}nbsp;nbsp;nbsp;stu[i].avr=s/3.0;nbsp;nbsp;nbsp;fwrite(amp;stu[i],sizeof(structnbsp;student),1,fp);nbsp;}nbsp;nbsp;nbsp;nbsp;}nbsp;nbsp;fclose(fp);}/*nbsp;2--Findnbsp;*/voidnbsp;ffind(){nbsp;intnbsp;i,j;nbsp;nbsp;FILEnbsp;*fp;nbsp;nbsp;fp=fopen(「fstu「,「rb「);nbsp;nbsp;for(i=0;fread(amp;stu[i],sizeof(structnbsp;student),1,fp)!=0;i++);nbsp;nbsp;sum=i;nbsp;nbsp;rewind(fp);nbsp;nbsp;printf(「nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;*nbsp;*nbsp;*nbsp;Findnbsp;studentnbsp;datanbsp;*nbsp;*nbsp;*
「);nbsp;nbsp;printf(「nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Inputnbsp;n=1nbsp;--nbsp;%dnbsp;:nbsp;「,sum);nbsp;nbsp;scanf(「%d「,amp;j);nbsp;nbsp;fseek(fp,(j-1)*sizeof(structnbsp;student),0);nbsp;nbsp;printf(「
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Displaynbsp;studentnbsp;%dnbsp;datanbsp;:nbsp;
「,j);nbsp;nbsp;printf(「nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*
「);nbsp;nbsp;printf(「nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;No.nbsp;Numnbsp;nbsp;nbsp;nbsp;Namenbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Agenbsp;Addrnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Cnbsp;nbsp;Mathnbsp;En.nbsp;Aver.
「);nbsp;nbsp;printf(「nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;-----------------------------------------------------
「);nbsp;nbsp;fread(amp;stu[i],sizeof(structnbsp;student),1,fp);nbsp;nbsp;printf(「%12d%7

『拾』 怎樣用C語言製作學生信息管理系統

還真不想再寫代碼了啊。。。。。

直接跟你說下思路吧。。。。

首先創建一個結構體,如——

struct student
{
char num[10]; //學號
char name[20]; //姓名
char sex[4]; //性別
int age; //年齡
int flag; //一個標示符(下面會說用法)
};

然後就定義一個student類型的數組stu[max],在前面#define max 1000000,你也可以把max定義得小一點,這是用來表示最大能容納多少個學生信息。。。。

說到flag的用處,我不清楚你了不了解,還是先跟你說下吧。。。。

先考一下你,知道怎樣把一個數組裡面的某一個元素清空嗎?清空就表示能在那個位置再次賦值,沒清空的位置就不能重復賦值。把那個元素設為a[x],可能你會想著把a[x]=0不就得啦,那好,如果用這種方法,那麼如果你想尋找數組a中可以再次賦值的元素,然後進行賦值,你是不是要通過一個判別式來對數組a的每一個元素進行判斷,看看它是否能被再賦值,對吧,那這個判別式肯定就是判斷a中的數值是否為零了。但是你想一下,如果一開始a中某個元素的值就是等於0,並不表示清空狀態,那你這樣的判別式能成立嗎,所以我們要用到一個標示符flag。。。。

當flag=1時,表示該數組的元素已存在,當flag=0時,表示該數組的元素是無效的,這樣的話就不需要對數組中的每個元素進行什麼清空操作了,就像上面的數組stu,這么多元素,你怎麼清空。。。。

然後有一個最重要的是怎樣存儲數據,因為沒用到資料庫,所以就用txt文件來存儲吧,給你一個相關的代碼——

int load_student() //把已存在的儲存數據的txt文件打開
{
FILE *fp;
if((fp=fopen("student.txt","rb"))==NULL) //判斷文件是否存在
{
printf("不能打開此文件.\n");
exit(0);
}
for(int i=0;i<SIZE;i++) //存在的話就打開它
{
fread(&stu[i],sizeof(struct student),1,fp);
}
fclose(fp);
return 0;
}

int save_student() //把數據存放進txt文件中
{
FILE *fp;
if((fp=fopen("student.txt","wb"))==NULL)
{
printf("不能打開此文件.\n");
exit(0);
}
for(int i=0;i<SIZE;i++)
{
fwrite(&stu[i],sizeof(struct student),1,fp);
}
fclose(fp);
return 0;
}

這是一個比較基本的代碼,你可以靈活的修改一下,實現讀寫過程的代碼也就是這樣了。。。。

然後是功能的實現,這方面就得看你的要求了,不過我建議你把每個界面做成一個函數,實現模塊化,如——

int shouye() //首頁
{
system("cls"); //清屏
int num1;
printf("**********************************\n");
printf(" 學生信息管理系統 \n");
printf("**********************************\n");
printf("\n\n");
printf("1、更改學生信息\n\n");
printf("2、查看學生信息\n\n");
printf("3、退出系統\n\n");
scanf("%d",&num1); //輸入操作
if(num1==1)
update(); //進入學生信息更改模塊
else if(num1==2)
check(); //進入學生信息查看模塊
else
exit(0); //退出系統
return 0;
}

在給多你一個界面函數的代碼吧——

int update()
{
system("cls");
int num2;
printf("**********************************\n");
printf(" 更改成績 \n");
printf("**********************************\n");
printf("\n\n");
printf("1、增加學生信息\n\n");
printf("2、修改學生信息\n\n");
printf("3、返回上一層\n\n");
scanf("%d",&num2);
if(num2==1)
add();
else if(num2==2)
correct();
else
shouye();
return 0;
}

大概就是這種模式,我就不多弄了,你自己開拓一下吧,可能你會問我主函數怎麼實現,大概就是這樣吧——

int main()
{
load_student(); //讀取txt裡面的內容
shouye();
return 0;
}

這里要說明一下,我給你這代碼還不怎麼完善的,只是簡單跟你說下思路罷了,如果你招著復制的話,要記住,在你第一次運行之前,要先在你這工程目錄低下創建一個名字為student的txt文件,不然會顯示錯誤,因為load_student()那裡就會判斷是否存在student.txt文件,沒的話就會顯示錯誤的。。。。

我建議你簡單地畫下流程圖,這樣可以讓你的編程思路更清晰,如果還有什麼不清楚的地方可以Q我,410430209。。。。

希望這些對你有所幫助。。。。