㈠ c語言程序設計學生信息管理系統中如何插入學生信息
真有點累人啊,汗~~~~~~
不過,你的要求這些代碼都能滿足了,
可能會有點小錯誤,我這兒也無法驗證,總之總體的思路是完全正確的。
#include <stdio.h>
#include <string.h> //字元串頭文件
#include <windows.h> //Sleep函數的頭文件
#include <conio.h> //getch函數的頭文件
#define N 50
//定義全局變數
//定義學員結構體
typedef struct Student
{
char name[10];//姓名
int NO;//學號
char sex[10];//性別
char subject[20];//專業
int phone;//電話
char jianli[200];//簡歷
}STU;
//聲明這種學員類型的數組
STU stu[N];
//計數器n
int n=0; //代表數組的實際人數
//登錄函數
void login()
{
system("color 2A");//定義背景和前景顏色
//登錄模塊實現代碼
char Yonghu[30];
char Mima[30];
for(int i=0;i<3;i++)
{
// 列印登陸界面
Sleep(500);//定時列印
printf("\n\n\t\t\t\t學員管理系統平台\n");
Sleep(500);
printf("\n\t\t\n");
Sleep(500);
printf("\n\t\t\t\t用戶名:");
gets(Yonghu);
printf("\n\t\t\t\t密碼:");
char let=NULL;//定義一個字元變數為空值
int j=0; //代表密碼的實際長度
while(j<10 && let!=13)//定義密碼長度和當接收的字元不為回車鍵(回車鍵的ASCLL碼值為13)時
{
let=getch();//獲得字元 不顯示
if(let!=8)//當接收的字元不為退格鍵(退格鍵的ASCLL碼值為8)時
{
Mima[j++]=let;//將接收的字元賦給數組Mima並自加一個長度
printf("*");
}
else
{
if(j>0)//當密碼長度不為0時
{
//刪除字元的操作
putchar(8);
putchar(' ');
putchar(8);
Mima[--j]=NULL;//將空值賦給數組Mima並自減一個長度
}
}
}
Mima[--j]=NULL;
putchar(8);//消除因回車鍵所列印的*
putchar(' ');
putchar(8);
putchar('\0');//字元串結束標記
//驗證密碼
if(strcmp(Yonghu,"姓名")==0 && strcmp(Mima,"123456")==0)//用比較函數判斷用戶輸入的用戶名和密碼是否正確
{
//調用dos命令清空控制台屏幕
system("cls");
printf("\n\n\n\n\n\t\t\t正在登錄菜單界面,請稍候...");
for(int i=0;i<=5;i++)
{
Sleep(666);
printf(">>>");
}
for(int i=0;i<=100;i++)
{
system("cls");
//%%為百分號
printf("\n\n\n\n\n\n\n\t\t\t\t正在載入數據中...%d%%",i);
}
system("cls");
printf("\n\n\n\n\n\n\n\t\t\t\t載入數據成功,loding.....\n");
break;//跳出for循環
}
else
{
if(i<2)//用戶輸入錯誤不超過2次
{
system("cls");
printf("\n\n\n\n\n\n\n\n\n\n");
Sleep(1000);
printf("\t:抱歉,您輸入的用戶名或密碼錯誤,請重新輸入!\n");
}
else//用戶3次輸入都錯誤時
{
system("cls");
printf("\n\n\n\n\n\n\n\n\n\n");
Sleep(1000);
printf("\t:Sorry,您輸入的用戶名或密碼錯誤次數太多,請休息一會再來!\n");break;
}
}
Sleep(2000);
//調用dos命令清空控制台屏幕
system("cls");
}
}
//菜單函數
void menu()
{
Sleep(2000);
//調用dos命令清空控制台屏幕
system("cls");
//列印功能菜單界面
Sleep(500);
printf("\n\n\t\t\t\t學員管理系統平台\n");
Sleep(500);
printf("\n\t\t************************************************\n");
Sleep(500);
printf("\n\t\t功能菜單:\n\n");
Sleep(1000);
printf("\t\t 1、錄入單個學員信息 2、顯示所有學員信息\n");
Sleep(1000);
printf("\t\t 3、排序顯示學員信息 4、插入單個學員信息\n");
Sleep(1000);
printf("\t\t 5、刪除單個學員信息 6、查找單個學員信息\n");
Sleep(1000);
printf("\t\t 7、讀取所有學員信息 8、保存所有學員信息\n");
Sleep(1000);
printf("\t\t 9、清空全部學員信息 0、退出學員管理系統\n");
}
//錄入函數
void input()
{
int i;
char answer;
do
{
//錄入學號
do
{
printf("學號:");
scanf("%d",&stu[n].NO);
// 判斷輸入格式是否有錯
while(stu[n].NO<=0 || stu[n].NO>50)
{
printf("\t:輸入格式有誤,請重新輸入!\n");
fflush(stdin); //判斷輸入其它字元(如:a,b,aa,skd...)時報錯
printf("學號:");
scanf("%d",&stu[n].NO);
}
//循環遍歷輸入的學號是否重復
for(i=0;i<n;i++)
{
if(stu[i].NO==stu[n].NO)
{
printf("\t:學號重復,請重新輸入!\n");
break;
}
}
}while(i<n);
//錄入姓名
do
{
printf("姓名:");
scanf("%s",stu[n].name);
//判斷輸入時姓名是否為空
while(strlen(stu[n].name)==0)
{
printf("\t:姓名不能為空,請重新輸入!\n");
printf("姓名:");
scanf("%s",stu[n].name);
}
// 判斷輸入時姓名是否含有數字
for(i=0;i<strlen(stu[n].name);i++)
{
if(stu[n].name[i]>='0'&&stu[n].name[i]<='9')
{
printf("提示:姓名不能含有數字,請重新輸入!\n");
break;
}
}
}while(i<strlen(stu[n].name));
//錄入性別
do
{
printf("性別");
scanf("%s",stu[n].sex);
}while(i<strlen(stu[n].sex));
//錄入專業
do
{
printf("專業");
scanf("%s",stu[n].subject);
}while(i<strlen(stu[n].subject));
//錄入聯系電話
do
{
printf("電話號碼");
scanf("%s",&stu[n].phone);
}while(i<strlen(stu[n].phone));
//錄入簡歷
do
{
printf("簡歷\n");
scanf("%s",stu[n].jianli);
}while(i<strlen(stu[n].jianli);
n++;//實際的人數自加一次
//判斷輸入成績的實際人數是否超出已定內存空間
if(n<N)
{
printf("是否繼續錄入?(y/n):");
fflush(stdin);//清空緩存
scanf("%c",&answer);
}
else
{
printf("實際人數超出已定存儲空間的內存,程序終止!\n");
break;
}
}while(answer=='Y' || answer=='y');
}
//顯示函數
void display()
{
//列印表頭
printf("********************************************************************************\n");
printf("學號\t姓名\t性別\t專業\n");
printf("********************************************************************************\n");
//循環列印學員信息
for(int i=0;i<n;i++)
{
printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].NO,stu[i].name,stu[i].sex,stu[i].subject);
printf("********************************************************************************\n");
}
printf("\n聯系電話\n");
for(int i=0;i<n;i++)
{
printf("%d\n",stu[i].phone);
printf("********************************************************************************\n");
}
printf("\n學歷\n");
for(int i=0;i<n;i++)
{
printf("%s",stu[i].jianli);
printf("********************************************************************************\n");
}
}
//排序函數
void sort()
{
STU temp;//定義臨時變數
int i,j;
//冒泡排序
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(stu[j].avg<stu[j+1].avg)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
}
//插入函數
void insert()
{
int i,j;//定義循環變數
STU newStu;//定義實行插入功能時輸入的類型
char answer;
printf("單個學員信息的循環插入:\n");
do
{
do
{
printf("學號:");
scanf("%d",&newStu.NO);
// 判斷輸入格式是否有錯
while(newStu.NO<=0 || newStu.NO>50)
{
printf("\t:輸入格式有誤,請重新輸入!\n");
fflush(stdin); //判斷輸入其它字元(如:a,b,aa,skd...)時報錯
printf("學號:");
scanf("%d",&newStu.NO);
}
//循環遍歷輸入的學號是否重復
for(i=0;i<n;i++)
{
if(stu[i].NO==newStu.NO)
{
printf("\t:學號重復,請重新輸入!\n");
break;
}
}
}while(i<n);
do
{
printf("姓名:");
scanf("%s",&newStu.name);
//判斷輸入時姓名是否為空
while(strlen(newStu.name)==0)
{
printf("\t:姓名不能為空,請重新輸入!\n");
printf("姓名:");
scanf("%s",newStu.name);
}
// 判斷輸入時姓名是否含有數字
for(i=0;i<strlen(newStu.name);i++)
{
if(newStu.name[i]>='0' && newStu.name[i]<='9')
{
printf("提示:姓名不能含有數字,請重新正確輸入!\n");
break;
}
}
}while(i<strlen(newStu.name));
n++;//實際的人數自加一次
sort();//調用排序函數
//循環遍歷找位置
for(i=0;i<n;i++)
{
if(newStu.avg>stu[i].avg)
{
j=i;
break;
}
}
//移位
for(i=n;i>j;i--)
{
stu[i]=stu[i-1];
}
stu[j]=newStu;//將newStu插入到j的位置
//判斷插入的實際人數是否超出已定內存空間
if(n<N)
{
printf("是否繼續插入?(y/n):");
fflush(stdin);//清空緩存
scanf("%c",&answer);
}
else
{
printf("實際人數超出已定存儲空間的內存,程序終止!\n");
break;
}
}while(answer=='Y' || answer=='y');
}
//刪除函數
void remove()
{
int i,j,no;
char answer;
do
{
printf("請輸入要刪除學員的學號:");
scanf("%d",&no);
//循環遍歷找位置
for(i=0;i<n;i++)
{
if(no==stu[i].NO)
{
j=i;
break;
}
}
//移位
if(i<n)
{
for(i=j;i<n-1;i++)
{
stu[i]=stu[i+1];
}
n--;//實際人數自減一個
printf("\n\n系統在第%d個位置找到了學號為%d的學員!\n",j+1,no);
}
else
{
printf("沒有找到您要刪除的學員學號,請重新選擇功能!\n");
}
//判斷是否已經沒有可以刪除的人數
if(n>0)
{
printf("是否繼續刪除?(y/n):");
fflush(stdin);//清空緩存
scanf("%c",&answer);
}
else
{
printf("已經沒有可以刪除的人數了,程序終止!\n");
break;
}
}while(answer=='Y' || answer=='y');
}
//查找函數
void search()
{
int i,no;
char answer;
printf("請輸入您要查找學員的學號:");
scanf("%d",&no);
do
{
//循環遍歷找位置
for(i=0;i<n;i++)
{
if(stu[i].NO==no)
{
break;
}
}
if(i<n)
{
printf("\n\n系統在第%d個位置找到了學號為%d的學員!\n",i+1,no);
printf("該學員的信息如下:\n");
printf("********************************************************************************\n");
printf("學號\t姓名\t成績一\t成績二\t成績三\t平均分\t總分\n");
printf("********************************************************************************\n");
printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].NO,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avg,stu[i].sum);
printf("********************************************************************************\n");
}
else
{
printf("\n提示:對不起,沒有找到學號為%d的學員\n",no);
}
//判斷是否繼續查詢
printf("是否繼續查詢?(y/n):");
fflush(stdin);//清空緩存
scanf("%c",&answer);
}while(answer=='Y' || answer=='y');
}
//讀取函數
int read()
{
FILE *fp;//定義文件指針變數
fp=fopen("e:\\xueyuanguanlixitong.txt","rt");
int n=fread(stu,sizeof(STU),N,fp);
return n;
}
//保存函數
void save()
{
FILE *fp;//定義文件指針變數
fp=fopen("e:\\xueyuanguanlixitong.txt","wb");
fwrite(stu,sizeof(STU),n,fp);
fclose(fp);
printf("已保存在:e:\\xueyuanguanlixitong.txt\n");
printf("\n\n\n\n\n\t\t\t\t保存成功!O(∩_∩)O~\n");
}
//主函數
void main()
{
login();//調用登錄函數
int choice,i;//定義用戶選擇變數
do
{
//顯示菜單
menu();
printf("\n\t請選擇:");
scanf("%d",&choice); //接受用戶選擇
switch(choice)
{
case 1:
system("cls"); //清屏
printf("\n單個學員信息的循環錄入\n");
input();
display();
system("pause");
break;
case 2:
system("cls");
display();
system("pause"); //暫停一下程序
break;
case 3:
system("cls");
if(n==0)
{
printf("\t\t學員個數為0,無法排序,請先錄入!\n");
system("pause");
break;
}
else
{
sort(); ;//調用排序函數
system("pause");
break;
}
case 4:
system("cls");
insert(); //調用插入函數
system("pause");
break;
case 5:
system("cls");
remove(); //調用刪除函數
system("pause");
break;
case 6:
system("cls");
search(); //調用查找函數
system("pause");
break;
case 7:
system("cls");
n=read(); //調用讀取函數
printf("讀取成功!\n");
system("pause");
break;
case 8:
system("cls");
save(); //調用保存函數
system("pause");
break;
case 9:
system("cls");
n=0; //清空學員個數
printf("清空完成!\n");
system("pause");
break;
case 0: //退出程序
system("cls");
for(i=5;i>=0;i--)
{
Sleep(1000);
system("cls");
printf("\n\n\n\n\n\n\n\n\n\n\n\n\t\t請稍等,還有%d秒推出程序!\n\n\n",i);
}
system("cls");
printf("\n\n\n\n\n\n你已經成功退出程序\n\t\t謝謝使用,歡迎再次登錄!\n");
exit(0);
break;
default:
system("cls");
printf("\n\n\n\n\n\t\t請選擇0-9之間的數!\n");
system("pause");
}
}while(1);
}
㈡ 用c語言編寫學生信息管理系統
我這有伍族個差不多的,要嗎?是我寫的實訓作業
程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int man=0;
int j;
char str[20];
struct student
{
char id[11];
char name[10];
int n1;
int n2;
int n3;
int n4;
int n5;
int n6;
int n7;
int n8;
int n9;
int zong;
int ping;
}student[100],temp;
void read(void)
{
FILE *cj;
int i,k;
man=0;
while(1)
{
printf("請輸入要讀取的文件:\n");
scanf("%s",&str);
if((cj=fopen(str,"r"))==NULL)
{
printf("打唯爛開失敗\n");
}
else
{
break;
}
}
for(i=0;i<500;i++)
{
if(fscanf(cj,"%s %s %d %d %d %d %d %d %d %d %d",&student[i].id,&student[i].name,&student[i].n1,&student[i].n2,&student[i].n3,&student[i].n4,&student[i].n5,&student[i].n6,&student[i].n7,&student[i].n8,&student[i].n9)==-1)
{
break;
}
man=man+1;
}
printf("從%s讀取去了「%d」條記錄\n",str,man);
for(k=0;k<man;k++)
{
student[k].zong=student[k].n1+student[k].n2+student[k].n3+student[k].n4+student[k].n5+student[k].n6+student[k].n7+student[k].n8+student[k].n9;
}
for(i=0;i<man;i++)
{
student[i].ping=student[i].zong/9;
}
fclose(cj);
}
void write(void)
{
FILE *cj;
int i;
char me;
printf("請確認是否保存(是:y,否:任意鍵):\n");
scanf("%s",&me);
if(me=='y')
{
if((cj=fopen(str,"w"))==NULL)
{
printf("保存失敗\n");
}
for(i=0;i<man;i++)
{
fprintf(cj,"%s %s %d %d %d %d %d %d %d %d %d\n",student[i].id,student[i].name,student[i].n1,student[i].n2,student[i].n3,student[i].n4,student[i].n5,student[i].n6,student[i].n7,student[i].n8,student[i].n9);
}
printf("存了「%d」條記錄到%s\n",man,str);
fclose(cj);
}
else
return;
}
void save(void)
{
FILE *cj;
int i;
char me;
printf("請輸入新的文件名:\n");
scanf("%s",&str);
printf("請確認是否保存(是:y,否:任意鍵):\n"指橘漏);
scanf("%s",&me);
if(me=='y')
{
if((cj=fopen(str,"w"))==NULL)
{
printf("保存失敗\n");
}
for(i=0;i<man;i++)
{
fprintf(cj,"%s %s %d %d %d %d %d %d %d %d %d\n",student[i].id,student[i].name,student[i].n1,student[i].n2,student[i].n3,student[i].n4,student[i].n5,student[i].n6,student[i].n7,student[i].n8,student[i].n9);
}
printf("存了「%d」條記錄到%s\n",man,str);
fclose(cj);
}
else
return;
}
void print(void)
{
int i;
for(i=0;i<72;i++)
printf("*");
printf("\n");
printf(" | 學號 姓名 1 2 3 4 5 6 7 8 9 平均分 總分 | \n");
for(i=0;i<man;i++)
{
printf(" | %10s %-6s %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d | \n",student[i].id,student[i].name,student[i].n1,student[i].n2,student[i].n3,student[i].n4,student[i].n5,student[i].n6,student[i].n7,student[i].n8,student[i].n9,student[i].ping,student[i].zong);
}
for(i=0;i<72;i++)
printf("*");
printf("\n");
}
void inquiry(void)
{
int i;
char id[10];
while(1)
{
printf("請輸入要查人的學號或名字(輸入-1即返回上一級):\n");
scanf("%s",&id);
if(id[0]=='-'&&id[1]=='1')
{
printf("exit\n");
break;
}
else
{
for(i=0;i<man;i++)
{
if(strcmp(student[i].id,id)==0)
{
j=i;
break;
}
if(strcmp(student[i].name,id)==0)
{
j=i;
break;
}
j=-1;
}
if(j==-1)
{
printf("無此人\n");
}
else
{
printf(" | 學號 姓名 1 2 3 4 5 6 7 8 9 總分 平均分 | \n");
printf(" | %10s %-6s %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d | \n",student[j].id,student[j].name,student[j].n1,student[j].n2,student[j].n3,student[j].n4,student[j].n5,student[j].n6,student[j].n7,student[j].n8,student[j].n9,student[i].ping,student[i].zong);
}
}
}
}
void fail(void)
{
int i;
printf("有不及格成績的學生為:\n");
for(i=0;i<man;i++)
{
if(student[i].n1<60||student[i].n2<60||student[i].n3<60||student[i].n4<60||student[i].n5<60||student[i].n6<60||student[i].n7<60||student[i].n8<60||student[i].n9<60)
{
printf(" | %10s %-6s %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d | \n",student[i].id,student[i].name,student[i].n1,student[i].n2,student[i].n3,student[i].n4,student[i].n5,student[i].n6,student[i].n7,student[i].n8,student[i].n9,student[i].ping,student[i].zong);
}
}
}
void compositor(void)
{
int i,k;
char m;
printf("請選擇干什麼排序:\n");
printf("1.成績1\n");
printf("2.成績2\n");
printf("3.成績3\n");
printf("4.成績4\n");
printf("5.成績5\n");
printf("6.成績6\n");
printf("7.成績7\n");
printf("8.成績8\n");
printf("9.成績9\n");
printf("0.總成績或平均成績\n");
scanf("%s",&m);
if(m=='0')
{
for(k=man;k>0;k--)
{
for(i=0;i<k;i++)
{
if(student[i].zong<student[i+1].zong)
{
temp=student[i];
student[i]=student[i+1];
student[i+1]=temp;
}
}
}
}
else if(m=='1')
{
for(k=man;k>0;k--)
{
for(i=0;i<k;i++)
{
if(student[i].n1<student[i+1].n1)
{
temp=student[i];
student[i]=student[i+1];
student[i+1]=temp;
}
}
}
}
else if(m=='2')
{
for(k=man;k>0;k--)
{
for(i=0;i<k;i++)
{
if(student[i].n2<student[i+1].n2)
{
temp=student[i];
student[i]=student[i+1];
student[i+1]=temp;
}
}
}
}
else if(m=='3')
{
for(k=man;k>0;k--)
{
for(i=0;i<k;i++)
{
if(student[i].n3<student[i+1].n3)
{
temp=student[i];
student[i]=student[i+1];
student[i+1]=temp;
}
}
}
}
else if(m=='4')
{
for(k=man;k>0;k--)
{
for(i=0;i<k;i++)
{
if(student[i].n4<student[i+1].n4)
{
temp=student[i];
student[i]=student[i+1];
student[i+1]=temp;
}
}
}
}
else if(m=='5')
{
for(k=man;k>0;k--)
{
for(i=0;i<k;i++)
{
if(student[i].n5<student[i+1].n5)
{
temp=student[i];
student[i]=student[i+1];
student[i+1]=temp;
}
}
}
}
else if(m=='6')
{
for(k=man;k>0;k--)
{
for(i=0;i<k;i++)
{
if(student[i].n6<student[i+1].n6)
{
temp=student[i];
student[i]=student[i+1];
student[i+1]=temp;
}
}
}
}
else if(m=='7')
{
for(k=man;k>0;k--)
{
for(i=0;i<k;i++)
{
if(student[i].n7<student[i+1].n7)
{
temp=student[i];
student[i]=student[i+1];
student[i+1]=temp;
}
}
}
}
else if(m=='8')
{
for(k=man;k>0;k--)
{
for(i=0;i<k;i++)
{
if(student[i].n8<student[i+1].n8)
{
temp=student[i];
student[i]=student[i+1];
student[i+1]=temp;
}
}
}
}
else if(m=='9')
{
for(k=man;k>0;k--)
{
for(i=0;i<k;i++)
{
if(student[i].n9<student[i+1].n9)
{
temp=student[i];
student[i]=student[i+1];
student[i+1]=temp;
}
}
}
}
else
printf("無此功能\n");
}
void raise(void)
{
printf("請輸入添加人的學號:\n");
scanf("%s",&student[man].id);
printf("請輸入添加人的姓名:\n");
scanf("%s",&student[man].name);
printf("請輸入添加人的成績1:\n");
scanf("%d",&student[man].n1);
printf("請輸入添加人的成績2:\n");
scanf("%d",&student[man].n2);
printf("請輸入添加人的成績3:\n");
scanf("%d",&student[man].n3);
printf("請輸入添加人的成績4:\n");
scanf("%d",&student[man].n4);
printf("請輸入添加人的成績5:\n");
scanf("%d",&student[man].n5);
printf("請輸入添加人的成績6:\n");
scanf("%d",&student[man].n6);
printf("請輸入添加人的成績7:\n");
scanf("%d",&student[man].n7);
printf("請輸入添加人的成績8:\n");
scanf("%d",&student[man].n8);
printf("請輸入添加人的成績9:\n");
scanf("%d",&student[man].n9);
student[man].zong=student[man].n1+student[man].n2+student[man].n3+student[man].n4+student[man].n5+student[man].n6+student[man].n7+student[man].n8+student[man].n9;
student[man].ping=student[man].zong/9;
man=man+1;
}
void alter(void)
{
int i;
char id[10];
printf("請輸入要修改人的學號:\n");
scanf("%s",&id);
for(i=0;i<man;i++)
{
if(strcmp(student[i].id,id)==0)
{
j=i;
break;
}
j=-1;
}
if(j==-1)
{
printf("無此人\n");
}
else
{
printf("請輸入要修改為的學號:\n");
scanf("%s",&student[j].id);
printf("請輸入要修改為的姓名:\n");
scanf("%s",&student[j].name);
printf("請輸入要修改為的成績1:\n");
scanf("%d",&student[j].n1);
printf("請輸入要修改為的成績2:\n");
scanf("%d",&student[j].n2);
printf("請輸入要修改為的成績3:\n");
scanf("%d",&student[j].n3);
printf("請輸入要修改為的成績4:\n");
scanf("%d",&student[j].n4);
printf("請輸入要修改為的成績5:\n");
scanf("%d",&student[j].n5);
printf("請輸入要修改為的成績6:\n");
scanf("%d",&student[j].n6);
printf("請輸入要修改為的成績7:\n");
scanf("%d",&student[j].n7);
printf("請輸入要修改為的成績8:\n");
scanf("%d",&student[j].n8);
printf("請輸入要修改為的成績9:\n");
scanf("%d",&student[j].n9);
student[j].zong=student[j].n1+student[j].n2+student[j].n3+student[j].n4+student[j].n5+student[j].n6+student[j].n7+student[j].n8+student[j].n9;
student[j].ping=student[j].zong/9;
}
}
void deletes()
{
int i,k;
char id[10];
printf("請輸入要刪除人的學號:\n");
scanf("%s",&id);
for(i=0;i<man;i++)
{
if(strcmp(student[i].id,id)==0)
{
j=i;
break;
}
j=-1;
}
if(j==-1)
{
printf("無此人\n");
}
else
{
for(k=j;k<man;k++)
{
student[j]=student[j+1];
j=j+1;
}
man=man-1;
}
}
void menu(void)
{
int i;
printf("\n");
for(i=0;i<10;i++)
printf(" ");
for(i=0;i<60;i++)
printf("*");
for(i=0;i<9;i++)
printf(" ");
printf("\n");
for(i=0;i<10;i++)
printf(" ");
printf("# 1.顯示學生成績信息 6.查詢不及格學生信息 #\n");
for(i=0;i<10;i++)
printf(" ");
printf("# 2.按成績由高到低排序 7.修改學生成績信息 #\n");
for(i=0;i<10;i++)
printf(" ");
printf("# 3.添加學生成績信息 8.讀取文件 #\n");
for(i=0;i<10;i++)
printf(" ");
printf("# 4.刪除學生成績信息 9.保存文件 #\n");
for(i=0;i<10;i++)
printf(" ");
printf("# 5.查詢學生成績信息 -. 另存為 #\n");
for(i=0;i<10;i++)
printf(" ");
printf("# +.退出 #\n");
for(i=0;i<10;i++)
printf(" ");
for(i=0;i<60;i++)
printf("*");
for(i=0;i<9;i++)
printf(" ");
printf("\n");
}
int main(void)
{
char i;
read();
menu();
while(1)
{
printf("請輸入要選擇的需要功能的序列號(輸入0顯示菜單):\n");
scanf("%s",&i);
if(i=='1')
{
print();
}
else if(i=='2')
{
compositor();
print();
}
else if(i=='3')
{
raise();
print();
}
else if(i=='4')
{
deletes();
print();
}
else if(i=='5')
{
inquiry();
}
else if(i=='6')
{
fail();
}
else if(i=='7')
{
alter();
print();
}
else if(i=='8')
{
read();
}
else if(i=='9')
{
write();
}
else if(i=='0')
{
menu();
}
else if(i=='+')
{
break;
}
else if(i=='-')
{
save();
}
else
{
printf("無此功能,請重新輸入序列號\n");
}
}
return 0;
}
記事本文件:你可以隨意起名,但要放在和程序同目錄
0615438101 顧佳 44 67 72 60 66 65 93 82 67
0615438103 金一宇 60 77 75 75 78 77 97 74 76
0615438104 李陽濤 50 76 66 73 74 80 92 89 74
0615438105 馬凱 66 76 77 66 75 72 95 82 75
0615438106 史超 47 71 65 61 85 72 89 83 70
0615438108 徐磊 60 75 66 80 76 80 92 68 74
0615438109 楊浩 60 81 70 91 83 72 93 72 78
0615438110 於澤 61 75 78 70 87 73 84 92 77
0615438111 張昊 60 71 57 82 72 63 86 38 67
0615438112 張政 60 67 69 80 66 61 87 88 73
0615438114 周艨 61 69 71 38 74 77 76 89 67
0615438131 張楠 86 74 72 90 80 81 97 80 84
0615438132 王凡 29 68 48 35 46 76 88 62 54
㈢ C語言課程設計—學生成績管理系統<急!!!!!>注意要求,謝謝
#include <time.h>
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#include<string.h>
#define MAX 80
void input();
void sort();
void display();
void insert();
void del();
void average();
void find();
void save();
void read();
void del_file();
void average();
void modify();
int now_no=0;
struct student
{
int no;
char name[20];
char sex[4];
float score1;
float score2;
float score3;
float sort;
float ave;
float sum;
};
struct student stu[MAX],*p;
main()/*主函數*/
{
int as;
start: printf("\n\t\t\t歡迎使用學生成績管理系統\n");
/*一下為功能選擇模塊*/
do
{
printf("\n\t\t\t\t1.錄入學員信息\n\t\t\t\t2.顯示學員信息\n\t\t\t\t3.成績排序信息\n\t\t\t\t4.添加學員信息\n\t\t\t\t5.刪除學員信息\n\t\t\t\t6.修改學員信息\n\t\t\t\t7.查詢學員信息\n\t\t\t\t8.從文件讀入學員信息\n\t\t\t\t9.刪除文件中學員信息\n\t\t\t\t10.保存學員信息\n\t\t\t\t11.退出\n");
printf("\t\t\t\t選擇功能選項:");
fflush(stdin);
scanf("%d",&as);
switch(as)
{
case 1:system("cls");input();break;
case 2:system("cls");display();break;
case 3:system("cls");sort();break;
case 4:system("cls");insert();break;
case 5:system("cls");del();break;
case 6:system("cls");modify();break;
case 7:system("cls");find();break;
case 8:system("cls");read();break;
case 9:system("cls");del_file();break;
case 10:system("cls");save();break;
case 11:system("exit");exit(0);
default:system("cls");goto start;
}
}while(1);
/*至此功能選擇結束*/
}
void input()/*原始數據錄入模塊*/
{
int i=0;
char ch;
do
{
printf("\t\t\t\t1.錄入學員信息\n輸入第%d個學員的信息\n",i+1);
printf("\n輸入學生編號:");
scanf("%d",&stu[i].no);
fflush(stdin);
printf("\n輸入學員姓名:");
fflush(stdin);
gets(stu[i].name);
printf("\n輸入學員性別:");
fflush(stdin);
gets(stu[i].sex);
printf("\n輸入學員成績1:");
fflush(stdin);
scanf("%f",&stu[i].score1);
printf("\n輸入學員成績2:");
fflush(stdin);
scanf("%f",&stu[i].score2);
printf("\n輸入學員成績3:");
fflush(stdin);
scanf("%f",&stu[i].score3);
printf("\n\n");
i++;
now_no=i;
printf("是否繼續輸入?(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
system("cls");
}
void sort()/*排序數據函數*/
{
struct student temp;
int i,j;
average();
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1].ave<stu[j].ave)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
}
void display()/*顯示數據函數*/
{
int i;
char as;
average();
do
{
printf("\t\t\t班級學員信息列表\n");
printf("\t編號\t姓名\t性別\t成績1\t成績2\t成績3\t平均值\n");
for(i=0;i<now_no&&stu[i].name[0];i++)printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
printf("\t\t按任意鍵返回主菜單.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void insert()/*插入數據函數*/
{
char ch;
do
{
printf("\n\t\t輸入新插入學員隊信息\n");
printf("\n輸入學生編號:");
scanf("%d",&stu[now_no].no);
fflush(stdin);
printf("\n輸入學員姓名:");
fflush(stdin);
gets(stu[now_no].name);
printf("\n輸入學員性別:");
fflush(stdin);
gets(stu[now_no].sex);
printf("\n輸入學員成績1:");
fflush(stdin);
scanf("%f",&stu[now_no].score1);
printf("\n輸入學員成績2:");
fflush(stdin);
scanf("%f",&stu[now_no].score2);
printf("\n輸入學員成績3:");
fflush(stdin);
scanf("%f",&stu[now_no].score3);
printf("\n\n");
now_no=now_no+1;
sort();
printf("是否繼續輸入?(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
}
void del()/*刪除數據函數*/
{
int inum,i,j;
printf("輸入要刪除學員的編號:");
fflush(stdin);
scanf("%d",&inum);
for(i=0;i<now_no;i++)
{
if(stu[i].no==inum)
{
if(i==now_no)now_no-=1;
else
{
stu[i]=stu[now_no-1];
now_no-=1;
}
sort();
break;
}
}
system("cls");
}
void save()/*保存數據函數*/
{
FILE *fp;
int i;
char filepath[20];
printf("輸入要保存的文件路徑:");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失敗!");
exit(0);
}
for(i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
fprintf(fp,"\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
}
fclose(fp);
printf("學生信息已保存在%s中!\n",filepath);
system("pause");
system("cls");
}
void find()/*查詢函數*/
{
int i;
char str[20],as;
do
{
printf("輸入要查詢的學生姓名:");
fflush(stdin);
gets(str);
for(i=0;i<now_no;i++)
if(!strcmp(stu[i].name,str))
{
printf("\t編號\t姓名\t性別\t成績1\t成績2\t成績3\t平均值\n");
printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
}
printf("\t\t按任意鍵返回主菜單.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void average()/*求平均數*/
{
int i;
for(i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
}
}
void modify()/*修改數據函數*/
{
int i;
char str[20],as;
printf("輸入要修改的學生姓名:");
fflush(stdin);
gets(str);
for(i=0;i<now_no;i++)
if(!strcmp(stu[i].name,str))
{
system("cls");
printf("\n\t\t輸入新插入學員隊信息\n");
printf("\n輸入學生編號:");
fflush(stdin);
scanf("%d",&stu[i].no);
printf("\n輸入學員性別:");
fflush(stdin);
gets(stu[i].sex);
printf("\n輸入學員成績1:");
fflush(stdin);
scanf("%f",&stu[i].score1);
printf("\n輸入學員成績2:");
fflush(stdin);
scanf("%f",&stu[i].score2);
printf("\n輸入學員成績3:");
fflush(stdin);
scanf("%f",&stu[i].score3);
printf("\n\n");
sort();
break;
}
system("cls");
}
void read()
{
FILE *fp;
int i;
char filepath[20];
printf("輸入要讀入的文件路徑:");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!\n",filepath);
system("pause");
exit(0);
}
now_no=0;
for(i=0;i<MAX&&!feof(fp);i++)
{
fscanf(fp,"\t%d\t%s\t%s\t%f\t%f\t%f\t%f\n",&stu[i].no,stu[i].name,stu[i].sex,&stu[i].score1,&stu[i].score2,&stu[i].score3,&stu[i].ave);
now_no++;
}
fclose(fp);
printf("保存的在文件%s中的所有信息已經讀入!\n",filepath);
system("pause");
system("cls");
}
void del_file()
{
FILE *fp;
char filepath[20];
printf("輸入要刪除的文件路徑:");
fflush(stdin);
gets(filepath);
fp=fopen(filepath,"w");
fclose(fp);
printf("保存的在文件%s中的所有信息已經刪除!\n",filepath);
system("pause");
system("cls");
}
自己改改就好了 謝謝 給分哦