C語言實訓報告——學生宿舍資訊管理系統
功能描述
該學生宿舍資訊管理系統主要實現的功能有:建立學生宿舍資訊,顯示學生宿舍資訊,查詢學生宿舍資訊,修改學生宿舍資訊,刪除學生宿舍資訊,儲存學生宿舍資訊,讀取學生宿舍資訊。其系統功能模組圖如下:
完整程式碼如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<windows.h>
#define MAX 1000
int k=0;
//結構體型別
typedef struct
{
char name[20]; //姓名
char sex[5]; //性別
char classs[20]; //班級
int number; //學號
int age; //年齡
int dorm; //阿
int year; //年份
int month; //月份
}students;
//建立學生宿舍資訊
int establish(students stu[])
{ int i,x;
for(i=0;i<1000;i++)
{
system("cls");
printf("\n\n 錄入學生資訊 (最多%d個)\n",MAX);
printf(" ----------------------------\n");
printf("\n 第%d個學生",k+1);
printf("\n 請輸入學生的學號:");
scanf("%d",&stu[k].number);
printf("\n 請輸入學生的姓名:");
scanf("%s",stu[k].name);
printf("\n 請輸入學生的性別:");
scanf("%s",stu[k].sex);
printf("\n 請輸入學生的年齡:");
scanf("%d",&stu[k].age);
printf("\n 請輸入學生的班級:");
scanf("%s",stu[k].classs);
printf("\n 請輸入學生入住時間(如:2017 9):");
while((scanf("%d %d",&stu[k].year,&stu[k].month))!=EOF)
{
if(stu[k].year<1000||stu[k].year>9999||stu[k].month>12||stu[k].month<1)//限定輸入範圍
{
printf("對不起,輸入錯誤,請重新輸入:");
}
else
break;
}
printf("\n 請輸入學生的宿舍號:");
scanf("%d",&stu[k++].dorm);
printf("\n 請按 1 鍵返回主選單或按 0 鍵繼續建立:");
scanf("%d",&x);
if(x!=0) break;
}
return k;
}
//顯示學生宿舍資訊
void display(students stu[])
{
int i;
for(i=0;i<k;i++)
{
printf("學號:%d 姓名:%s 性別:%s 年齡:%d 班級:%s 宿舍號: %d 入住時間:%d/%d\n",stu[i].number,stu[i].name,stu[i].sex,stu[i].age,stu[i].classs,stu[i].dorm,stu[i].year,stu[i].month);
}
printf("按任意鍵返回主選單!");
getch();
system("cls");
return ;
}
//查詢學生宿舍資訊
void query(students stu[])
{
int i,m=0;
int number;
printf("\n\n 請輸入您要查詢的學生的學號: ");
scanf("%d",&number);
printf(" 正在查詢,請稍後.....\n");
Sleep(1000);
for(i=0;i<k;i++)
{
if(number==stu[i].number)
{
printf("\n\n學號:%d 姓名:%s 性別:%s 年齡:%d 班級:%s 宿舍號: %d 入住時間:%d/%d\n",stu[i].number,stu[i].name,stu[i].sex,stu[i].age,stu[i].classs,stu[i].dorm,stu[i].year,stu[i].month);
m=1;
}
}
if(m==0)
{
printf("對不起,此學生資訊不存在!\n");
}
printf("按任意鍵返回主選單!");
getch();
system("cls");
return ;
}
//修改學生資訊
void modify(students stu[])
{
int number,i,choose,m=0;
system("cls");
printf("\n\n\n 請輸入您要修改的學生的學號:");
scanf("%d",&number);
printf(" 正在查詢,請稍後.....\n");
Sleep(1000);
for(i=0;i<k;i++)
{
if(number==stu[i].number)
{
printf("\n\n學號:%d 姓名:%s 性別:%s 年齡:%d 班級:%s 宿舍號: %d 入住時間:%d/%d\n",stu[i].number,stu[i].name,stu[i].sex,stu[i].age,stu[i].classs,stu[i].dorm,stu[i].year,stu[i].month);
printf("\n\n ********請輸入您想要修改的資料********\n\n");
printf(" 1. 學號\n");
printf(" 2. 姓名\n");
printf(" 3. 性別\n");
printf(" 4. 年齡\n");
printf(" 5. 班級\n");
printf(" 6. 宿舍號\n");
printf(" 7. 入住時間\n\n");
printf(" 請選擇(1-7):");
while((scanf("%d",&choose))!=EOF)
{
if(choose<1||choose>7)
{
printf("對不起,輸入錯誤,請重新輸入:");
}
else
{
switch(choose)
{
case 1:
{
printf("\n 請輸入你改的新學號:");
scanf("%d",&stu[i].number);
break;
}
case 2:
{
printf("\n 請輸入你改的新姓名:");
scanf("%s",stu[i].name);
break;
}
case 3:
{
printf("\n 請輸入你改的新性別:");
scanf("%s",stu[i].sex);
break;
}
case 4:
{
printf("\n 請輸入你改的新年齡:");
scanf("%d",&stu[i].age);
break;
}
case 5:
{
printf("\n 請輸入你改的新班級:");
scanf("%s",stu[i].classs);
break;
}
case 6:
{
printf("\n 請輸入你改的新宿舍:");
scanf("%d",&stu[i].dorm);
break;
}
case 7:
{
printf("\n 請輸入你改的新入住時間:");
scanf("%d %d",&stu[i].year,&stu[i].month);
break;
}
}
printf("修改成功!");
Sleep(500);
printf("\n\n學號:%d 姓名:%s 性別:%s 年齡:%d 班級:%s 宿舍號: %d 入住時間:%d/%d\n",stu[i].number,stu[i].name,stu[i].sex,stu[i].age,stu[i].classs,stu[i].dorm,stu[i].year,stu[i].month);
m=1;
break;
}
}
}
}
if(m==0)
{
printf("對不起,此學生資訊不存在!\n");
}
printf("按任意鍵返回主選單!");
getch();
return ;
}
//刪除學生資訊
void deletee(students stu[])
{
char name1[20];
int i,j,m=0;
printf("請輸入學生姓名:");
scanf("%s",name1);
printf("\n");
printf("正在查詢是否存在此學生資訊.....\n");
Sleep(1000);
for(i=0;i<k;i++)
{
if(strcmp(stu[i].name,name1)==0)
{
m=1;
printf("已找到此學生資訊!\n刪除中....\n");
Sleep(2000);
for(j=i;j<k;j++)
{
strcpy(stu[j].name,stu[j+1].name);
strcpy(stu[j].sex,stu[j+1].sex);
strcpy(stu[j].classs,stu[j+1].classs);
stu[j].age=stu[j+1].age;
stu[j].dorm=stu[j+1].dorm;
stu[j].number=stu[j+1].number;
stu[j].year=stu[j+1].year;
stu[j].month=stu[j+1].month;
}
k--;
printf("刪除成功!\n");
}
}
if(m==0)
{
printf("此學生資訊不存在!\n");
}
printf("按任意鍵返回主選單!");
getch();
system("cls");
return ;
}
//儲存學生住宿資訊
void preservation(students stu[])
{
int i;
FILE *fp;
if((fp=fopen("學生宿舍資訊.txt","w"))==NULL)
{
printf("未發現學生宿舍資訊!\n");
printf("按任意鍵返回...\n");
getch();
system("cls");
return ;
}
else
{
for(i=0;i<k;i++)
{
fprintf(fp,"\n\n學號:%d 姓名:%s 性別:%s 年齡:%d 班級:%s 宿舍號: %d 入住時間:%d/%d\n",stu[i].number,stu[i].name,stu[i].sex,stu[i].age,stu[i].classs,stu[i].dorm,stu[i].year,stu[i].month);
}
fclose(fp);
printf("正在儲存檔案....\n");
Sleep(1000);
printf("檔案儲存成功!\n");
printf("按任意鍵返回...\n");
getch();
system("cls");
return ;
}
}
//讀取學生住宿資訊
void read(students stu[])
{
FILE *fp;
char ch;
if((fp=fopen("學生宿舍資訊.txt","r"))==NULL)
{
printf("檔案無法開啟!\n");
exit(0);
}
printf("正在讀入檔案...\n");
Sleep(1000);
printf("檔案讀入成功!\n");
ch=fgetc(fp);
while(!feof(fp))
{
putchar(ch);
ch=fgetc(fp);
}
printf("\n");
fclose(fp);
printf("按任意鍵返回...\n");
getch();
system("cls");
return ;
}
void title()
{
printf(" \n\n\n **********************************\n");
printf(" * *\n");
printf(" * *\n");
printf(" * *\n");
printf(" * 歡迎進入學生宿舍資訊管理系統 *\n");
printf(" * *\n");
printf(" * *\n");
printf(" * *\n");
printf(" **********************************\n");
printf("\n 按任意鍵進入系統!\n");
getch();
}
void start()
{
students stu[20];
int choose,k;
while(choose!=0)
{
system("cls");
printf("\n\n\n ********學生宿舍資訊管理系統********\n\n");
printf(" 1. 建立學生宿舍資訊\n\n");
printf(" 2. 顯示學生宿舍資訊\n\n");
printf(" 3. 查詢學生宿舍資訊\n\n");
printf(" 4. 修改學生宿舍資訊\n\n");
printf(" 5. 刪除學生宿舍資訊\n\n");
printf(" 6. 儲存學生宿舍資訊\n\n");
printf(" 7. 讀取學生宿舍資訊\n\n");
printf(" 0. 退出系統\n\n");
printf(" 請選擇(0-7):");
while((scanf("%d",&choose))!=EOF)
{
if(choose<0||choose>7)
{
printf("對不起,輸入錯誤,請重新輸入:");
}
else
{
switch(choose)
{
case 1: k=establish(stu); break;//建立學生宿舍資訊
case 2: display( stu) ; break;//顯示學生宿舍資訊
case 3: query(stu); break;//查詢學生宿舍資訊
case 4: modify(stu); break;//修改學生宿舍資訊
case 5: deletee(stu); break;//刪除學生宿舍資訊
case 6: preservation(stu); break;//儲存學生宿舍資訊
case 7: read(stu);break;//讀取學生宿舍資訊
case 0: break;
}
break;
}
}
}
}
int main()
{
title();
start();
return 0;
}