本文目錄一覽:
- 1、如何用c語言製作一個學生信息管理系統,要求以文件形式保存
- 2、學生信息管理系統C語言編程
- 3、怎樣用C語言製作學生信息管理系統
- 4、怎樣用c語言編寫一個學生信息管理系統
- 5、學生信息管理系統用C語言實現,
如何用c語言製作一個學生信息管理系統,要求以文件形式保存
#includestdio.h
#includestdlib.h
#includestring.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(“歡迎進入信息管理版塊!\n\n”);
printf(“\025 1、添加學生\n”);
printf(“\025 2、刪除學生\n”);
printf(“\025 3、修改學生信息\n”);
printf(“\025 4、返回\n”);
printf(“請輸入您的選擇編號:\n”);
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(“輸入有誤,請重新輸入!\n”);
}
case 2:
{
//信息查詢
system(“cls”);
printf(“歡迎進入信息查詢版塊!\n”);
printf(“請輸入要查詢的學生編號:”);
scanf(“%d”,j);
getchar();
//printf(“%d\n”,j); //檢測輸入是否成功,調試程序用
FindStu(head,j); //查詢並輸出
printf(“\n請輸入回車鍵返回主菜單!”);
getchar();
system(“cls”);
break;
}
擴展資料:
C語言包含的各種控制語句僅有9種,關鍵字也只有32 個,程序的編寫要求不嚴格且以小寫字母為主,對許多不必要的部分進行了精簡。
實際上,語句構成與硬件有關聯的較少,且C語言本身不提供與硬件相關的輸入輸出、文件管理等功能,如需此類功能,需要通過配合編譯系統所支持的各類庫進行編程,故c語言擁有非常簡潔的編譯系統。
參考資料來源:百度百科-c語言
學生信息管理系統C語言編程
#includestdio.h /*I/O函數*/
#includestdlib.h /*其它說明*/
#includestring.h /*字符串函數*/
#define BUFLEN 100 /* 緩衝區最大字符數 */
#define LEN 15 /* 學號和姓名最大字符數,實際請更改 */
#define N 100 /* 最大學生人數,實際請更改*/
struct record /*結構體*/
{
char code[LEN+1]; /* 學號 */
char name[LEN+1]; /* 姓名 */
int age; /* 年齡 */
char sex[3]; /* 性別 */
char time[LEN+1]; /* 出生年月 */
char add[30]; /* 家庭地址 */
char tel[LEN+1]; /* 電話號碼 */
char mail[30]; /* 電子郵件地址 */
}stu[N];
int k=1,n,m; /* 定義全局變量 */
void readfile();/* 函數聲明 */
void seek();
void modify();
void insert();
void del();
void display();
void save();
void menu();
int main()
{
while(k)
menu();
system(“pause”);
return 0;
}
void help()
{
printf(“\n0.歡迎使用系統幫助!\n”);
printf(“\n1.進入系統後,先刷新學生信息,再查詢;\n”);
printf(“\n2.按照菜單提示鍵入數字代號;\n”);
printf(“\n3.增加學生信息後,切記保存按7;\n”);
printf(“\n4.謝謝您的使用!\n”);
}
void readfile()/* 建立信息 */
{
char *p=”student.txt”;
FILE *fp;
int i=0;
if ((fp=fopen(“student.txt”,”r”))==NULL)
{
printf(“Open file %s error! Strike any key to exit!”,p);
system(“pause”);
exit(0);
}
while(fscanf(fp,”%s %s%d%s %s %s %s %s”,stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)==8)
{
i++;
i=i;
}
fclose(fp);
n=i;
printf(“錄入完畢!\n”);
}
void seek() /*查找*/
{
int i,item,flag;
char s1[21]; /* 以姓名和學號最長長度+1為準 */
printf(“——————\n”);
printf(“—–1.按學號查詢—–\n”);
printf(“—–2.按姓名查詢—–\n”);
printf(“—–3.退出本菜單—–\n”);
printf(“——————\n”);
while(1)
{
printf(“請選擇子菜單編號:”);
scanf(“%d”,item);
flag=0;
switch(item)
{
case 1:
printf(“請輸入要查詢的學生的學號:\n”);
scanf(“%s”,s1);
for(i=0;in;i++)
if(strcmp(stu[i].code,s1)==0)
{
flag=1;
printf(“學生學號 學生姓名 年齡 性別 出生年月 地址 電話 E-mail\n”);
printf(“——————————————————————–\n”);
printf(“%6s %7s %6d %5s %9s %8s %10s %14s\n”,stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
if(flag==0)
printf(“該學號不存在!\n”); break;
case 2:
printf(“請輸入要查詢的學生的姓名:\n”);
scanf(“%s”,s1);
for(i=0;in;i++)
if(strcmp(stu[i].name,s1)==0)
{
flag=1;
printf(“學生學號 學生姓名 年齡 性別 出生年月 地址 電話 E-mail\n”);
printf(“——————————————————————–\n”);
printf(“%6s %7s %6d %5s %9s %8s %10s %14s\n”,stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
if(flag==0)
printf(“該姓名不存在!\n”); break;
case 3:return;
default:printf(“請在1-3之間選擇\n”);
}
}
}
void modify() /*修改信息*/
{
int i,item,num;
char sex1[3],s1[LEN+1],s2[LEN+1]; /* 以姓名和學號最長長度+1為準 */
printf(“請輸入要要修改的學生的學號:\n”);
scanf(“%s”,s1);
for(i=0;in;i++)
if(strcmp(stu[i].code,s1)==0) /*比較字符串是否相等*/
num=i;
printf(“——————\n”);
printf(“1.修改姓名\n”);
printf(“2.修改年齡\n”);
printf(“3.修改性別\n”);
printf(“4.修改出生年月\n”);
printf(“5.修改地址\n”);
printf(“6.修改電話號碼\n”);
printf(“7.修改E-mail地址\n”);
printf(“8.退出本菜單\n”);
printf(“——————\n”);
while(1)
{
printf(“請選擇子菜單編號:”);
scanf(“%d”,item);
switch(item)
{
case 1:
printf(“請輸入新的姓名:\n”);
scanf(“%s”,s2);
strcpy(stu[num].name,s2); break;
case 2:
printf(“請輸入新的年齡:\n”);
scanf(“%d”,stu[num].age);break;
case 3:
printf(“請輸入新的性別:\n”);
scanf(“%s”,sex1);
strcpy(stu[num].sex,sex1); break;
case 4:
printf(“請輸入新的出生年月:\n”);
scanf(“%s”,s2);
strcpy(stu[num].time,s2); break;
case 5:
printf(“請輸入新的地址:\n”);
scanf(“%s”,s2);
strcpy(stu[num].add,s2); break;
case 6:
printf(“請輸入新的電話號碼:\n”);
scanf(“%s”,s2);
strcpy(stu[num].tel,s2); break;
case 7:
printf(“請輸入新的E-mail地址:\n”);
scanf(“%s”,s2);
strcpy(stu[num].mail,s2); break;
case 8:return;
default:printf(“請在1-8之間選擇\n”);
}
}
}
void sort()/*按學號排序*/
{
int i,j,*p,*q,s;
char temp[10];
for(i=0;in-1;i++)
{
for(j=n-1;ji;j–)
if(strcmp(stu[j-1].code,stu[j].code)0)
{
strcpy(temp,stu[j-1].code);
strcpy(stu[j-1].code,stu[j].code);
strcpy(stu[j].code,temp);
strcpy(temp,stu[j-1].name);
strcpy(stu[j-1].name,stu[j].name);
strcpy(stu[j].name,temp);
strcpy(temp,stu[j-1].sex);
strcpy(stu[j-1].sex,stu[j].sex);
strcpy(stu[j].sex,temp);
strcpy(temp,stu[j-1].time);
strcpy(stu[j-1].time,stu[j].time);
strcpy(stu[j].time,temp);
strcpy(temp,stu[j-1].add);
strcpy(stu[j-1].add,stu[j].add);
strcpy(stu[j].add,temp);
strcpy(temp,stu[j-1].tel);
strcpy(stu[j-1].tel,stu[j].tel);
strcpy(stu[j].tel,temp);
strcpy(temp,stu[j-1].mail);
strcpy(stu[j-1].mail,stu[j].mail);
strcpy(stu[j].mail,temp);
p=stu[j-1].age;
q=stu[j].age;
s=*q;
*q=*p;
*p=s;
}
}
}
void insert() /*插入函數*/
{
int i=n,j,flag;
printf(“請輸入待增加的學生數:\n”);
scanf(“%d”,m);
do
{
flag=1;
while(flag)
{
flag=0;
printf(“請輸入第 %d 個學生的學號:\n”,i+1);
scanf(“%s”,stu[i].code);
for(j=0;ji;j++)
if(strcmp(stu[i].code,stu[j].code)==0)
{
printf(“已有該學號,請檢查後重新錄入!\n”);
flag=1;
break; /*如有重複立即退出該層循環,提高判斷速度*/
}
}
printf(“請輸入第 %d 個學生的姓名:\n”,i+1);
scanf(“%s”,stu[i].name);
printf(“請輸入第 %d 個學生的年齡:\n”,i+1);
scanf(“%d”,stu[i].age);
printf(“請輸入第 %d 個學生的性別:\n”,i+1);
scanf(“%s”,stu[i].sex);
printf(“請輸入第 %d 個學生的出生年月:(格式:年.月)\n”,i+1);
scanf(“%s”,stu[i].time);
printf(“請輸入第 %d 個學生的地址:\n”,i+1);
scanf(“%s”,stu[i].add);
printf(“請輸入第 %d 個學生的電話:\n”,i+1);
scanf(“%s”,stu[i].tel);
printf(“請輸入第 %d 個學生的E-mail:\n”,i+1);
scanf(“%s”,stu[i].mail);
if(flag==0)
{
i=i;
i++;
}
}
while(in+m);
n+=m;
printf(“錄入完畢!\n\n”);
sort();
}
void del()
{
int i,j,flag=0;
char s1[LEN+1];
printf(“請輸入要刪除學生的學號:\n”);
scanf(“%s”,s1);
for(i=0;in;i++)
if(strcmp(stu[i].code,s1)==0)
{
flag=1;
for(j=i;jn-1;j++)
stu[j]=stu[j+1];
}
if(flag==0)
printf(“該學號不存在!\n”);
if(flag==1)
{
printf(“刪除成功,顯示結果請選擇菜單6\n”);
n–;
}
}
void display()
{
int i;
printf(“所有學生的信息為:\n”);
printf(“學生學號 學生姓名 年齡 性別 出生年月 地址 電話 E-mail\n”);
printf(“——————————————————————–\n”);
for(i=0;in;i++)
{
printf(“%6s %7s %5d %5s %9s %8s %10s %14s\n”,stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
}
void save()
{
int i;
FILE *fp;
fp=fopen(“student.txt”,”w”); /*寫入*/
for(i=0;in;i++)
{
fprintf(fp,”%s %s %d %s %s %s %s %s\n”,stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
fclose(fp);
}
void menu()/* 界面 */
{
int num;
printf(“*********************系統功能菜單************************ \n”);
printf(“友情提醒:查詢前請先刷新系統! \n”);
printf(” ———————- ———————- \n”);
printf(” ********************************************* \n”);
printf(” * 0.系統幫助及說明 * * 1.刷新學生信息 * \n”);
printf(” ********************************************* \n”);
printf(” * 2.查詢學生信息 * * 3.修改學生信息 * \n”);
printf(” ********************************************* \n”);
printf(” * 4.增加學生信息 * * 5.按學號刪除信息 * \n”);
printf(” ********************************************* \n”);
printf(” * 6.顯示當前信息 * * 7.保存當前學生信息* \n”);
printf(” ********************** ********************** \n”);
printf(” * 8.退出系統 * \n”);
printf(” ********************** \n”);
printf(” ———————- ———————- \n”);
printf(“請選擇菜單編號:”);
scanf(“%d”,num);
switch(num)
{
case 0:help();break;
case 1:readfile();break;
case 2:seek();break;
case 3:modify();break;
case 4:insert();break;
case 5:del();break;
case 6:display();break;
case 7:save();break;
case 8:k=0;break;
default:printf(“請在0-8之間選擇\n”);
}
怎樣用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;iSIZE;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;iSIZE;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。。。。
希望這些對你有所幫助。。。。
怎樣用c語言編寫一個學生信息管理系統
給你個我寫的參考:
#
include
stdio.h
#
include
malloc.h
struct
Student
{
char
name[100];
int
age;
int
id;
char
sex;
};
int
input(struct
Student
**
pArr)
{
int
i;
int
len;
printf(“請輸入學生的個數:\n”);
printf(“len
=
“);
scanf(“%d”,
len);
*pArr
=
(struct
Student
*)malloc(len
*
sizeof(struct
Student));
for(i
=
0;
i
len;
++i)
{
printf(“請輸入第%d個學生的信息:\n”,
i
+
1);
printf(“姓名
=
“);
scanf(“%s”,
(*pArr)[i].name);
printf(“年齡
=
“);
scanf(“%d”,
((*pArr)[i].age));
printf(“學號
=
“);
scanf(“%d”,
((*pArr)[i].id));
printf(“性別(1-男
0-女)
=
“);
scanf(“
%c”,
((*pArr)[i].sex));
}
return
len;
}
void
output(struct
Student
*
pArr,
int
len,
int
sid)
{
int
i;
for(i
=
0;
i
len;
++i)
if(pArr[i].id
==
sid)
break;
printf(“\n\n學生的信息是:\n”);
printf(“第%d個學生的信息是:\n”,
i
+
1);
printf(“姓名
=
%s\n”,
pArr[i].name);
printf(“年齡
=
%d\n”,
pArr[i].age);
printf(“學號
=
%d\n”,
pArr[i].id);
if(pArr[i].sex
==
‘1’)
printf(“性別
=
男\n”);
else
printf(“性別
=
女\n”);
}
int
main(void)
{
int
len,
id;
struct
Student
*
pArr;
len
=
input(pArr);
printf(“輸入要查找的學號:\n”);
scanf(“%d”,
id);
output(pArr,
len,
id);
return
0;
}
學生信息管理系統用C語言實現,
#include”stdio.h”
#include”conio.h”
#include”string.h”
#include”stdlib.h”
void look(); /*聲明查看函數*/
void save(); /*聲明保存函數*/
void search_name(); /*聲明按姓名查看函數*/
void search_number(); /*聲明按學號查看函數*/
void order(); /*聲明排序函數*/
void del(); /*聲明刪除函數*/
int openl(); /*聲明打開函數*/
void welcome(); /*聲明我的個人信息函數*/
void type(); /*聲明輸入函數*/
void see(); /*聲明打開並查看文件函數*/
struct student /*定義學生信息的結構體類型*/
{
char num[15]; /*學號*/
char name[20]; /*姓名*/
char sex[4]; /*性別*/
int english; /*英語成績*/
int math; /*數學成績*/
int chinese; /*語文成績*/
float aver; /*平均成績*/
float sum; /*總成績*/
}stu[100];
int n; /*聲明一個全局變量*/
void main() /*主函數即用戶的操作界面*/
{
system(“color 1E”); /*設計文本顏色*/
int b,flag=0; /*聲明局部變量*/
while(1) /*循環輸出以下信息*/
{
printf(“\n\t\t\t歡迎來到學生成績管理系統!\n”);
printf(“\n\t\t\t\t ###製作\n”);
printf(“\t\t\t——————————-\n”);
printf(“\t\t\t1.鍵入學生的信息\n\n”); /*鍵入學生的信息*/
printf(“\t\t\t2.查看錄入的學生信息\n\n”); /*查看錄入的學生信息*/
printf(“\t\t\t3.按姓名查看學生的信息\n\n”); /*按姓名查看學生的信息*/
printf(“\t\t\t4.按學號查看學生的信息\n\n”); /*按學號查看學生的信息*/
printf(“\t\t\t5.按平均成績排序\n\n”); /*排序*/
printf(“\t\t\t6.刪除學生信息\n\n”); /*刪除學生信息*/
printf(“\t\t\t7.保存學生信息\n\n”); /*保存*/
printf(“\t\t\t8.打開文件\n\n”); /*打開文件*/
printf(“\t\t\t9.我的個人信息\n\n”); /*我的個人信息*/
printf(“\t\t\t0.退出\n\n”); /*退出*/
printf(“\t\t\t請輸入你的選擇:”);
scanf(“%d”,b);
switch(b)
{
case 1:type();break; /*調用鍵入學生信息函數*/
case 2:look();break; /*調用查看函數*/
case 3:search_name();break; /*調用姓名查看函數*/
case 4:search_number();break; /*調用學號查看函數*/
case 5:order();break; /*調用排序函數*/
case 6:del();break;/*調用刪除函數*/
case 7:save();break;/*調用保存函數*/
case 8:see();break;/*調用打開文件函數*/
case 9:welcome();break;/*調用我的個人信息函數*/
case 0:flag=1;break;/*退出SWITCH語句*/
default :printf(“錯誤!”);
}
if(flag) break; /*如果選擇0就退出循環*/
}
}
void welcome() /*我的個人信息函數*/
{
system(“CLS”);
printf(“\n\n\t\t————個人信息————“); /*在屏幕上輸出一下信息*/
printf(“\n\n\n\n\t\t姓名:###”);
printf(“\t\t\tSex:#\n”);
printf(“\t\t年齡:#\n”);
printf(“\n\t\t\t——–學習經歷——–\n\n\n”);
printf(“\t\t小學:######\n\n”);
printf(“\t\t初中:#####\n\n”);
printf(“\t\tS高中:######\n\n”);
printf(“\t\t大學:######\n\n”);
printf(“\n\n\t\t按任意鍵返回歡迎屏幕!”);
getch(); /*按任意鍵返回主函數*/
}
void type() /*定義鍵入學生信息函數*/
{
system(“CLS”);
int i; /*定義局部變量*/
printf(“\t\t輸出你想輸入的學生信息個數:”);
scanf(“%d”,n);
for(i=0;in;i++) /*輸入每個學生的信息*/
{
printf(“\n\t\t\t—————-\n”);
printf(“\t\t\t學號:”);
scanf(“%s”,stu[i].num); /*輸入學號*/
printf(“\t\t\t姓名:”);
scanf(“%s”,stu[i].name); /*輸入姓名*/
printf(“\t\t\t性別:”);
scanf(“%S”,stu[i].sex); /*輸入性別*/
printf(“\t\t\t英語:”);
scanf(“%d”,stu[i].english); /*輸入英語成績*/
printf(“\t\t\t數學:”);
scanf(“%d”,stu[i].math); /*輸入數學成績*/
printf(“\t\t\t語文:”);
scanf(“%d”,stu[i].chinese); /*輸入語文成績*/
stu[i].aver=((float)stu[i].english+(float)stu[i].math+(float)stu[i].chinese)/3;/*計算平均成績*/
stu[i].sum=(float)stu[i].english+(float)stu[i].math+(float)stu[i].chinese;/*計算總成績*/
printf(“\t\t\t平均成績=%4.1f\n”,stu[i].aver); /*輸出平均成績*/
printf(“\t\t\t總成績=%4.1f\n”,stu[i].sum); /*輸出總成績*/
}
printf(“\n\n\t\t\t按任意鍵返回菜單!!”);
getch();
save();
}
void save() /*建立保存文件函數*/
{
system(“CLS”);
FILE *fp; /*定義文件型指針*/
int i;
if((fp=fopen(“student.txt”,”wb”))==NULL) /*打開輸出文件*/
{
printf(“不能打開文件!\n”);
return; /*終止程序*/
}
for(i=0;in;i++) /*向student文件中寫入信息*/
if(fwrite(stu[i],sizeof(struct student),1,fp)!=1)
printf(“文件寫入錯誤\n”);
fclose(fp); /*關閉文件*/
printf(“\n\n\n\n\t\t\t學生信息保存成功!\n”);
printf(“\n\n\n\n\t\t\t按任意鍵返回菜單!!”);
getch();
}
void look() /*定義查看函數*/
{
system(“CLS”);
int i;
//n=openl(); /*調用openl函數*/
printf(“\t學號\t姓名\t性別\t英語\t數學\t語文\t平均成績\t總成績\n”);
for(i=0;in;i++) /*輸出所有的學生信息*/
{
printf(“%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n”,stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
}
printf(“\n\n\n\t\t\t按任意鍵返回菜單”);
getch();
}
void search_name() /*按姓名查看函數*/
{
system(“CLS”);
int i;
char name[20]; /*聲明字符數組*/
printf(“\t\t\t請輸入學生姓名:\n”);
scanf(“%s”,name);
printf(“\t學號\t姓名\t性別\t英語\t數學\t語文\t平均成績\t總成績\n”);
for(i=0;in;i++)
if(strcmp(stu[i].name,name)==0) /*將輸入的姓名與結構體中的姓名進行比較*/
{
printf(“%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n”,stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
printf(“\n\n\n\t\t\t按任意鍵返回菜單”);
}
getch();
}
void search_number() /*定義按學號查看函數*/
{
system(“CLS”);
int i;
char number[15]; /*聲明字符數組*/
printf(“\t\t\t請輸入學號:\n”);
scanf(“%s”,number);
printf(“\t學號\t姓名\t性別\t英語\t數學\t語文\t平均成績\t總成績\n”);
for(i=0;in;i++)
if(strcmp(stu[i].num,number)==0) /*將輸入的學號與結構體中的學號進行比較*/
printf(“%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n”,stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
printf(“\n\n\n\t\t\t按任意鍵返回菜單”);
getch();
}
void order() /*定義排序函數*/
{
system(“CLS”);
int i,j;
char a;
struct student temp; /*聲明結構體變量*/
printf(“\t學號\t姓名\t性別\t英語\t數學\t語文\t平均成績\t總成績\n”);
for(i=0;in;i++) /*對數據進行排序*/
{
for(j=i+1;jn;j++)
if(stu[i].sumstu[j].sum)
{
temp=stu[i];
stu[i]= stu[j];
stu[j]=temp;
}
printf(“%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n”,stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
}
getch();
printf(“是否保存?(y or n)”);
getchar();
scanf(“%c”,a);
if(a==’y’) /*是否保存排序後的文件*/
save();
else
printf(“退出”);
getch();
}
void del() /*定義刪除學生信息函數*/
{
int i;
char a;
char name[20];
system(“CLS”);
printf(“\t\t\t輸入學生名字:\n”);
scanf(“%s”,name);
system(“CLS”);
printf(“\t學號\t姓名\t性別\t英語\t數學\t語文\t平均成績\t總成績\n”);
for(i=0;in;i++)
if(strcmp(stu[i].name,name)==0)
{
printf(“%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n”,stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
getch();
printf(“真的刪除?(y or n)”);
getchar();
scanf(“%c”,a);
if(a==’y’) /*是否刪除該信息*/
{
for(;in;i++)
stu[i]=stu[i+1];
n=n-1;
printf(“你已經刪除信息”);
}
else
printf(“退出”);
getch();
}
save();
}
int openl() /*定義打開文件函數*/
{
system(“CLS”);
int i;
FILE *fp;
if((fp=fopen(“student.txt”,”rb”))==NULL)
{
printf(“Cannot open file.\n”);
exit(0);
}
for(i=0;!feof(fp);i++)
fread(stu[i],sizeof(struct student),1,fp);
fclose(fp);
return(i-1);
}
void see() /*打開並查看文件*/
{
system(“CLS”);
int i;
n=openl();
printf(“文件打開成功!\n”);
printf(“按任意鍵查看!\n”);
getch();
printf(“\t學號\t姓名\t性別\t英語\t數學\t語文\t平均成績\t總成績\n”);
for(i=0;in;i++) /*輸出所有的學生信息*/
{
printf(“%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n”,stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
}
printf(“\n\n\n\t\t\t按任意鍵返回菜單”);
getch();
請採納答案,支持我一下。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/185807.html