原本想着只用一個頭文件,但是操作字符串自己寫一個函數不好弄,就加了一個#include<string.h>的頭文件[笑哭],要不然標題就是一個頭文件,不用指針,教你寫一個學生管理系統,有點像營銷號哈。。。
以下是耗時半天編寫的代碼,累~~~~
還有一件事,沒有寫判斷輸入類型的函數(其實是懶,沒有寫),例如:不要在輸入學號ID,int類型的地方輸入字符或者是符號。否則你可以試一下。
對應着類型輸入就可以。
/*********************************************************************
文件名稱:
文件描述:
編寫時間:2020年6月1日
創建工程:韓法旭
***********************************************************************/
#include<stdio.h>
#include<string.h>
typedef struct stu{
int ID; //學號
char name[15]; //名字
char sex[10]; //性別
int grade; //成績
int num; //代號
}student;
int temp=1; //菜單結束判斷
int str=0; //結構體編號
student s[100];
int ji;//記錄值
int dh=1; //學生代號
void list(){
printf("代號----------名字---------學號---------性別---------成績\n");
for(int i=0;s[i].num!=0;i++){
printf("%d %s %d %s %d",s[i].num,s[i].name,s[i].ID,s[i].sex,s[i].grade);
printf("\n");
}
printf("\n");
printf("==-------------==------------==------------==------------==\n");
printf("\n");
printf("\n");
}
//============↓↓↓↓↓↓↓====輸入函數(能力不夠,數量來湊)============↓↓↓↓↓↓===========
void inquID(){ //輸入學號
int t;
scanf("%d",&t);
s[str].ID=t;
}
void inquName(){ //輸入名字
char cha[15];
scanf("%s",cha);
for(int i=0;i<15;i++){
s[str].name[i]=cha[i];
}
}
void inquSex(){ //輸入性別
char cha[10];
scanf("%s",cha);
for(int i=0;i<15;i++){
s[str].sex[i]=cha[i];
}
}
void inquGrade(){ //輸入成績
int g;
scanf("%d",&g);
s[str].grade=g;
s[str].num=dh++;
str++;
}
//===========↑↑↑↑↑↑↑↑↑========輸入函數(能力不夠,數量來湊)======↑↑↑↑↑↑↑================
//============↓↓↓↓↓↓↓=========刪除函數(能力不夠,數量來湊)============↓↓↓↓↓↓===========
void delID(){//通過 ID 刪除學生成績
printf("請輸入要刪除成績學生的學號\n");
int inID;
int ty=0;
scanf("%d",&inID);
for(int i=0;i<=dh;i++){
if(s[i].ID==inID){
printf("刪除結果爲:\n");
s[i].grade=-1;
printf("代號----------名字---------學號---------性別---------成績\n");
printf("%d %s %d %s %d",s[i].num,s[i].name,s[i].ID,s[i].sex,s[i].grade);
printf("\n");
ty=1;
}
}
if(ty==0){
printf("該學生不存在\n");
}
}
void delName(){
printf("請輸入要刪除成績學生的名字\n");
char inName[15];
int ty=0;
scanf("%s",&inName);
for(int i=0;i<dh;i++){
if(strcmp(s[i].name,inName)==0){
printf("刪除結果爲:\n");
s[i].grade=-1;
printf("代號----------名字---------學號---------性別---------成績\n");
printf("%d %s %d %s %d",s[i].num,s[i].name,s[i].ID,s[i].sex,s[i].grade);
printf("\n");
ty=1;
}
}
if(ty==0){
printf("該學生不存在\n");
}
}
//===========↑↑↑↑↑↑↑↑↑========刪除函數(能力不夠,數量來湊)======↑↑↑↑↑↑↑================
//============↓↓↓↓↓↓↓=========查詢函數(能力不夠,數量來湊)============↓↓↓↓↓↓===========
void inqID(){//根據 學號 查詢
printf("請輸入學號\n");
int inID;
int ty=0;
scanf("%d",&inID);
for(int i=0;i<=dh;i++){
if(s[i].ID==inID){
printf("查詢結果爲:\n");
printf("代號----------名字---------學號---------性別---------成績\n");
printf("%d %s %d %s %d",s[i].num,s[i].name,s[i].ID,s[i].sex,s[i].grade);
printf("\n");
ty=1;
}
}
if(ty==0){
printf("該學生不存在\n");
}
}
void inqName(){//根據 名字 查詢
printf("請輸入名字\n");
char inName[15];
int ty=0;
scanf("%s",&inName);
for(int i=0;i<dh;i++){
if(strcmp(s[i].name,inName)==0){
printf("查詢結果爲:\n");
printf("代號----------名字---------學號---------性別---------成績\n");
printf("%d %s %d %s %d",s[i].num,s[i].name,s[i].ID,s[i].sex,s[i].grade);
printf("\n");
ty=1;
}
}
if(ty==0){
printf("該學生不存在\n");
}
}
//===========↑↑↑↑↑↑↑↑↑========查詢函數(能力不夠,數量來湊)======↑↑↑↑↑↑↑================
//============↓↓↓↓↓↓↓=========修改函數(能力不夠,數量來湊)============↓↓↓↓↓↓===========
void reID(){
int inID;
printf("請輸入要修改的值-學號\n");
scanf("%d",&inID);
printf("修改結果爲:\n");
s[ji].ID=inID;
printf("代號----------名字---------學號---------性別---------成績\n");
printf("%d %s %d %s %d",s[ji].num,s[ji].name,s[ji].ID,s[ji].sex,s[ji].grade);
printf("\n");
}
void reName(){
char inName[15];
printf("請輸入要修改的值-名字\n");
scanf("%s",&inName);
printf("修改結果爲:\n");
strcpy(s[ji].name,inName);
printf("代號----------名字---------學號---------性別---------成績\n");
printf("%d %s %d %s %d",s[ji].num,s[ji].name,s[ji].ID,s[ji].sex,s[ji].grade);
printf("\n");
}
void reSex(){
char inSex[10];
printf("請輸入要修改的值-性別\n");
scanf("%s",&inSex);
printf("修改結果爲:\n");
strcpy(s[ji].sex,inSex);
printf("代號----------名字---------學號---------性別---------成績\n");
printf("%d %s %d %s %d",s[ji].num,s[ji].name,s[ji].ID,s[ji].sex,s[ji].grade);
printf("\n");
}
void reGrade(){
int inGrade;
printf("請輸入要修改的值-成績\n");
scanf("%d",&inGrade);
printf("修改結果爲:\n");
s[ji].grade=inGrade;
printf("代號----------名字---------學號---------性別---------成績\n");
printf("%d %s %d %s %d",s[ji].num,s[ji].name,s[ji].ID,s[ji].sex,s[ji].grade);
printf("\n");
}
void renum(){
list();
printf("請輸入要修改學生的代號\n");
int inNum;
int ty=0;
scanf("%d",&inNum);
for(int i=0;i<=dh;i++){
if(s[i].num==inNum){
printf("\n");
printf("你要修改的學生是:");
printf("\n");
printf("代號----------名字---------學號---------性別---------成績\n");
printf("%d %s %d %s %d",s[i].num,s[i].name,s[i].ID,s[i].sex,s[i].grade);
printf("\n");
printf("1.修改學號 2.修改名字 3.修改性別 4.修改成績\n");
ji=i;
int x;
scanf("%d",&x);
switch(x){
case 1:
reID();
break;
case 2:
reName();
break;
case 3:
reSex();
break;
case 4:
reGrade();
}
printf("\n");
ty=1;
}
}
if(ty==0){
printf("該學生不存在\n");
}
}
//===========↑↑↑↑↑↑↑↑↑========修改函數(能力不夠,數量來湊)======↑↑↑↑↑↑↑================
//============↓↓↓↓↓↓↓=========冒泡排序函數(能力不夠,數量來湊)============↓↓↓↓↓↓===========
void sort(){
int n= sizeof(s)/sizeof(s[0]);
for (int i=0; i<n-1; ++i) //比較n-1輪
{
for (int j=0; j<n-1-i; ++j) //每輪比較n-1-i次,
{
if (s[j].grade < s[j+1].grade)
{
int t = s[j].num;
s[j].num = s[j+1].num;
s[j+1].num= t;
student t1 = s[j];
s[j]= s[j+1];
s[j+1]= t1;
}
}
}
list();
}
//===========↑↑↑↑↑↑↑↑↑========冒泡排序函數(能力不夠,咳)======↑↑↑↑↑↑↑================
void menu(){
while(temp){
printf("\t\t》》》學生管理系統《《《\n");
printf("=========================================================\n");
printf("*\t1.輸入學生成績\t\t2.刪除學生成績\t\t*\n");
printf("*\t3.查詢學生成績\t\t4.修改學生成績\t\t*\n");
printf("*\t5.排序學生成績\t\t6.列出所有學生\t\t*\n");
printf("*\t\t\t8.退出系統\t\t\t*\n");
printf("=========================================================\n");
int i;
scanf("%d",&i);
switch(i){
case 1 : /////已實現
printf("請輸入學生學號\n");
inquID();//輸入學號
printf("請輸入學生名字\n");
inquName();//輸入名字
printf("請輸入學生性別\n");
inquSex(); //輸入性別
printf("請輸入學生成績\n");
inquGrade();//輸入成績
break;
case 2 : //////已實現
int x;
printf("++++++++++刪除學生成績++++++++++++\n");
printf("==================================\n");
printf("--------1.輸入學號刪除------------\n");
printf("--------2.輸入名字刪除------------\n");
printf("==================================\n");
scanf("%d",&x);
if(x==1){
delID(); //通過學號 刪除學生成績
}else if(x==2){
delName(); //通過名字 刪除學生成績
}
break;
case 3 : /////已實現
int c;
printf("++++++++++查詢學生成績++++++++++++\n");
printf("==================================\n");
printf("--------1.輸入學號查詢------------\n");
printf("--------2.輸入名字查詢------------\n");
printf("==================================\n");
scanf("%d",&c);
if(c==1){
inqID(); //通過 學號 查詢
}else if(c==2){
inqName();
}
break;
case 4 :
int xg;
printf("\t\t++++++++++修改學生成績++++++++++++\n");
printf("\t\t以下是當前學生列表\n");
renum();
//修改 ;
break;
case 5 :
printf("++++++++++排序++++++++++++\n");
printf("\n");
sort();
break;
case 6 :
list();
break;
case 8:
temp=0;
printf("您已安全退出\n");
break;
}
menu();
}
}
int main(){
menu();
return 0;
}
運行截圖就不放了,太長了,你們(指同學)不會看的,溜了溜了。
算了,運行結果的圖片鏈接在這:
https://s1.ax1x.com/2020/06/01/tJCqUA.png
有些長。。