#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include<windows.h>
#define M 100
int count=0;
struct student
{
char name[25];
int num[25];
int grades;
}stu[M];
void Choice()
{
int a=0;
scanf("%d",&a);
switch(a)
{
case 0:printf("退出成功\n");break;
case 1:printf("* 1.錄入資訊 *\n");Input();break;
case 2:printf("* 2.保存資訊 *\n");Save();break;
case 3:printf("* 3.查詢資訊 *\n");Search();break;
case 4:printf("* 4.瀏覽資訊 *\n");Output();break;
case 5:printf("* 5.修改資訊 *\n");Amend();break;
case 6:printf("* 6.洗掉資訊 *\n");Delete();break;
case 7:printf("* 7.讀取資訊 *\n");Read();break;
}
}
void Read()
{
int a=0;
char b;
FILE *fp;
system("cls");
printf("請確認已輸入或存有學生資訊:'Y'or'N'\n");
scanf("%c,&b");
fflush(stdin);
while(b!='Y'&&b!='N')
{
printf("輸入錯誤,請確認已輸入或存有學生資訊:'Y'or'N'\n");
scanf("%c",&b);
fflush(stdin);
}
if((fp=fopen("D:\學生成績記錄薄","rb"))==NULL)
{printf("檔案打開錯誤,請重新查看路徑‘D:\學生成績記錄薄’是否存在!");
exit(0);}
fread(&stu[a],sizeof(struct student),1,fp);
count=0;
count++;
a++;
while(fread(&stu[a],sizeof(struct student),1,fp))
{
a++;
count;
}
fclose(fp);
printf("資料讀取完畢\n");
system("cls");
Menu();
Choice();
return 0;
}
void Save()
{
int a=0;char b;FILE *fp;
printf("確認學生資訊錄入完成!Y or N\n");
scanf("%c",&b);
fflush(stdin);
while(b!='Y'&&b!='N')
{
if(b!='Y'&&b!='N')
printf("輸入錯誤,重新輸入\n");
printf("確認請輸入Y,回傳主選單請按N!\n");
scanf("%c",&b);
fflush(stdin);
if(b=='Y')
{
if((fp=fopen("D:\學生成績記錄薄","wb"))==NULL)
{
printf("檔案打開錯誤,請重新查看路徑‘D:\學生成績記錄薄’是否存在!");
exit(0);
}
for(a=0;a<count;a++)
{
fwrite(&stu[a],sizeof(struct student),1,fp);
}
fclose(fp);
if(count==0)
printf("沒有待保存的資料,請確認已錄入學生資訊\n");
else
printf("資料保存完畢!\n");
}
else
system("cls");
Menu();
Choice();
return 0;
}
}
void Input()
{
int len;
system("cls");
printf("請輸入學生資訊\n");
do
{printf("請輸入學生學號(12位數)\n");
scanf("%s",&stu[count].num);
len=strlen(stu[count].num);
}
while(len!=12);
printf("輸入學生姓名(拼音)\n");
scanf("%s",stu[count].name);
do{
printf("請輸入學生成績\n");
scanf("%d",&stu[count].grades);
}
while(stu[count].grades>100);
count++;
system("pause");
system("cls");
Menu();
Choice();
return 0;
}
void Output()
{
int j;
system("cls");
if(count==0)
{
printf("程式中沒有資訊\n");
return;
}
for(j=0;j<count;j++)
{
for(j=0;j<count;j++)
{
printf("學號:%s",stu[j].num);
printf("姓名:%s",stu[j].name);
printf("成績:%d",stu[j].grades);
}
}
}
void Delete()
{
int nm;
system("cls");
if(count==0)
{
printf("資料庫為空!\n");
return;
}
else
{
printf("輸入1可以按學號洗掉資訊,輸入2可以按姓名洗掉資訊,輸入3退出。\n");
scanf("%d",&nm);
switch(nm)
{
case 3:return;break;
case 1:Deletebynum();break;
case 2:Deletebyname();break;
}
}
}
void Amend()
{
int j,coure;
char ch[25];
system("cls");
if(count==0)
{
printf("資料庫中沒有資訊!\n");
return;
}
else
{
printf("請輸入要修改的學生學號\n");
scanf("%s",&ch);
fflush(stdin);
for(j=0;j<count;j++)
if(strcmp(stu[j].num,ch)==0)
{
printf("");
}
}
}
void Search()
{
int kb;
system("cls");
if(count==0)
{
printf("目前資料庫為空!\n");
return;
}
else
{
printf("請輸入1以進行按姓名查找或輸入2按學號查找\n");
scanf("%d",&kb);
switch(kb)
{
case 1:printf("按姓名(拼音)查找……\n");Byname();break;
case 2:printf("按學號查找……\n");Bynum();break;
default :printf("輸入錯誤\n");
}
}
}
void Byname()
{
int j=0;
char cx[25];
printf("請輸入你要查找的學生姓名(拼音)\n");
scanf("%s",&cx);
fflush(stdin);
for(j=0;j<count;j++)
{
if(strcmp(stu[j].name,cx)==0)
{
printf("學號:%s",stu[j].num);
printf("姓名:%s",stu[j].name);
printf("成績:%d",stu[j].grades);
if(j==count)
{
printf("沒有該學生資訊\n");
return;
}
}
}
}
void Bynum()
{
int j=0;
char ch[25];
printf("請輸入你要查找的學生的學號(12位數)\n");
scanf("%s,",&ch);
fflush(stdin);
for(j=0;j<count;j++)
{
if(strcmp(stu[j].num,ch)==0)
{
printf("學號:%s",stu[j].num);
printf("姓名:%s",stu[j].name);
printf("成績:%d",stu[j].grades);
if(j==count)
{
printf("沒有該學生資訊\n");
return;
}
}
}
}
void Deletebynum()
{
int j,h=0,k=count;
char ch[25];
system("cls");
printf("輸入要洗掉的學生的學號\n");
scanf("%s",ch);
fflush(stdin);
for(j=0;j<count;j++)
{
if(strcmp(stu[j].num,ch)==0)
{
for(j=h;j<count;j++)
stu[j]=stu[j+1];
count--;
if(count<k)
printf("已洗掉目標資訊\n");
}
h++;}
if(j==count)
printf("沒有你要洗掉的學生資訊\n");
}
void Deletebyname()
{
int j,h=0,k=count;
char ch[25];
system("cls");
printf("請輸入要洗掉的學生姓名(拼音)\n");
scanf("%s",ch);
fflush(stdin);
for(j=0;j<count;j++)
{
if(strcmp(stu[j].name,ch)==0)
{
for(j=h-1;j<count;j++)
stu[j]=stu[j+1];
count--;
if(count<k)
printf("已洗掉目標學生資訊\n");
}
h++;}
if(j==count)
printf("沒有目標學生\n");
}
void fenduan(struct student stu[M]);
void fenduan60(struct student stu[M]);
void fenduan79(struct student stu[M]);
void fenduan89(struct student stu[M]);
void fenduan100(struct student stu[M]);
void Menu()
{
printf("***************【學生C++成績登記表】****************\n");
printf("* 0.退出系統 *\n");
printf("* 1.錄入資訊 *\n");
printf("* 2.保存資訊 *\n");
printf("* 3.查詢資訊 *\n");
printf("* 4.瀏覽資訊 *\n");
printf("* 5.修改資訊 *\n");
printf("* 6.洗掉資訊 *\n");
printf("* 7.讀取資訊 *\n");
printf("****************************************************\n");
printf("\t\t請輸入一個數<0-7>\n");
}
int main()
{
Menu();
Choice();
return 0;
}
//主要就是讀取函式和保存函式有問題,不知道為什么
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/232216.html
標籤:新手樂園
上一篇:(C語言)編程實作,將1-1000間的所有超級素數顯示出來。超級素數是各個位的數字都是素數,且本身也為素數的數。
下一篇:C語言求助
