学生签到系统c代码_C语言实现简单学生学籍管理系统
#include
#include
#include
#include
#define N 100 /*存儲100個學生的學籍信息*/
int flag; /*標記是否登錄*/
struct date /*出生日期*/
{
int year;
int month;
int day;
};
struct student
{
char num[20];/*學號*/
char name[25];/*姓名*/
char sex[10];/*性別*/
struct date birthday;/*出生年月*/
int age;/*年齡*/
char addr[50];/*籍貫*/
char dept[50]; /*系別*/
char major[30]; /*專業(yè)*/
char classs[30]; /*班級*/
char phone[20];/*電話*/
}stu[N];
void login() /*登錄*/
{
void menu();
system("cls");
if(flag)
{
printf(" 已經(jīng)登錄!\n");
printf("Press any key to continue…\n");
getchar();
getchar();
system("cls");
menu();
}
int load();
int n,i,m,w;
FILE *fp;
if((fp=fopen("D:\\file.txt","rb"))!=NULL) /*不是空文件*/
n=load(); /*打開文件*/
else
n=0;
struct student s;
char password[20];
int d,q;
printf("\n\t請選擇登錄身份:1.管理員 2.用戶 [ ]\b\b");
scanf("%d",&d);
if(d==1)
{
printf("\n\t\t\t請輸入密碼:");
getchar();
int j=0;
while(1)
{
password[j]=getch();
if(password[j]=='\r')
break;
printf("*");
j++;
}
password[j]='\0';
if(!strcmp(password,"930322")) /*判斷密碼是否正確*/
{
flag=1;
printf("\n\t登錄成功!\n");
printf("\tPress [ Enter ] key to continue…");
getchar();
system("cls");
menu();
}
if(!flag)
{
printf("\t\n密碼錯誤!\n");
printf("What do you want to do next? 1.繼續(xù)登錄 2.返回菜單 [ ]\b\b");
scanf("%d",&q);
if(q==1) /*繼續(xù)登錄*/
{
system("cls");
login();
}
else if(q==2) /*返回主菜單*/
{
system("cls");
menu();
}
}
}
else
{
printf("\n\t\t\t用戶名:");
scanf("%s",s.name);
printf("\t\t\t密碼:");
int j=0;
while(1)
{
password[j]=getch();
if(password[j]=='\r')
break;
printf("*");
j++;
}
password[j]='\0';
flag=0; /*未登錄時flag=0*/
for(i=0;i
if(!strcmp(s.name,stu[i].name)&&!strcmp(s.name,password))
{
flag=1; /*登錄成功flag=1*/
break;
}
if(flag)
{
printf("\n\t登錄成功!\n");
printf("\tPress any key to continue…\n");
getchar(); getchar();
system("cls");
menu(); /*登錄成功后返回主菜單*/
}
else
{
m=0; /*設置m是為了避免陷入 登錄失敗時 跳不出登錄界面*/
w=1; /*設置w是為了避免輸出多次 “用戶不存在”*/
int q; /*q為選項*/
do
{
if(w>0)
printf("用戶名不存在或密碼錯誤!\n"); /*第一次登錄時輸入不存在的用戶時顯示*/
printf("What do you want to do next? 1.繼續(xù)登錄 2.返回菜單 [ ]\b\b");
scanf("%d",&q);
if(q==1) /*繼續(xù)登錄*/
{
login();
m=1;
}
else if(q==2) /*返回主菜單*/
{
system("cls");
menu();
m=1;
}
else
{
printf("選擇錯誤!請重新選擇:\n");
w=0;
}
}while(m==0);
}
}
}
void printf_one(int k) /*輸出一個學生的信息*/
{
system("color 4e");
printf("學號:%s\n",stu[k].num);
printf("姓名:%s\n",stu[k].name);
printf("性別:%s\n",stu[k].sex);
printf("出生年月:%d/%d/%d\n",stu[k].birthday.year,stu[k].birthday.month,stu[k].birthday.day);
printf("年齡:%d\n",stu[k].age);
printf("籍貫:%s\n",stu[k].addr);
printf("系別:%s\n",stu[k].dept);
printf("專業(yè):%s\n",stu[k].major);
printf("班級:%s\n",stu[k].classs);
printf("電話:%s\n",stu[k].phone);
}
void printf_n(int n) /*瀏覽時輸出所有學生的信息*/
{
system("color 2e");
int j,i=1;
for(j=0;j
{
printf("第%d個學生:\n",i++);
printf_one(j);
printf("\n");
}
getchar();
}
int load() /*打開文件,讀取里面的數(shù)據(jù)*/
{
FILE *fp;
int i;
if((fp=fopen("D:\\file.txt","rb"))==NULL) /*讀入空文件,rb表示打開一個二進制文件,只允許讀數(shù)據(jù)*/
{
printf("\n文件不存在!請輸入:\n");
return 0;
}
for(i=0;!feof(fp);i++) /*處理到文件結(jié)尾*/
fread(&stu[i],sizeof(struct student),1,fp); /*fread(buffer,size,cout,fp)將磁盤文件中的一批數(shù)據(jù)作為一個整體一次性讀取出來,
buffer指定數(shù)據(jù)塊位置,sizeof數(shù)據(jù)塊字節(jié)數(shù),count讀取次數(shù),fp指向源磁盤文件*/
fclose(fp);
return(i-1);
}
void input(int k) /*輸入學生信息*/
{
getchar();
printf("學號:"); gets(stu[k].num);
printf("姓名:"); gets(stu[k].name);
printf("性別:"); gets(stu[k].sex);
printf("出生年月:"); scanf("%d/%d/%d",&stu[k].birthday.year,&stu[k].birthday.month,&stu[k].birthday.day);
printf("年齡:"); scanf("%d",&stu[k].age); getchar();
printf("籍貫:"); gets(stu[k].addr);
printf("系別:"); gets(stu[k].dept);
printf("專業(yè):"); gets(stu[k].major);
printf("班級:"); gets(stu[k].classs);
printf("電話:"); gets(stu[k].phone);
}
void save(int n) /*保存學生信息*/
{
void exit();
FILE *fp;
int i;
if((fp=fopen("D:\\file.txt","wb"))==NULL) /*只打開或建立一個二進制文件,只允許寫數(shù)據(jù)*/
{
printf("\nCan not open file!\n");
exit();
}
for(i=0;i
if(stu[i].name[0]!='\0')
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) /*將一批數(shù)據(jù)作為一個整體一次性寫入磁盤文件*/
printf("文件寫入錯誤!\n");
fclose(fp);
}
void printf_back()/*添加學生信息后顯示的“是瀏覽還是返回”*/
{
int w,k=0;
void browse();
void menu();
printf("\n\n\t^_^.插入成功. ^_^\n\n");
do
{
printf("What do you want to do next?\n\n\t1).瀏覽所有\(zhòng)t2).返回: [ ]\b\b");
scanf("%d",&w);
if(w==1)
{
system("cls");
browse();
}
else if(w==2)
{
system("cls");
menu();
}
else
printf(" 選擇錯誤!請重新選擇!\n");
}while(k==0);
}
void insert() /*添加學生信息*/
{
int i,n,k,t;
FILE *fp;
if((fp=fopen("D:\\file.txt","rb"))==NULL) /*讀入空文件,rb表示打開一個二進制文件,只允許讀數(shù)據(jù)*/
{
printf("How many people do you want to add(1-%d)?:",N-1);
n=0;
}
else
{
n=load();
printf("How many student do you want to insert (1-%d)?:",N-n-1);
}
scanf("%d",&t);
k=n+t;
for(i=n;i
{
printf("\n輸入第 %d 個學生學籍信息.\n",i-n+1);
input(i);
}
save(k); /*保存所有學生的信息*/
printf_back();
}
void deleter() /*刪除*/
{
void menu();
if(!flag)
{
printf("\n\n\t請先登錄!\n");
printf("\n\t請按 Enter 鍵進入登錄界面!");
getchar();
getchar();
login();
}
else
{
struct student s;
int i,n,k,w0,w1;
n=load();
do
{
k=-1;
//printf_n(n); /*刪除之前先顯示所有學生的信息*/
do
{
printf("\n\n請輸入您想要刪除的學生的姓名!\nName:");
scanf("%s",s.name);
for(i=0;i
if(strcmp(s.name,stu[i].name)==0)
{
k=i;
s=stu[i];
}
if(k==-1)
{
int m;
printf("\n\n沒有這個學生的信息!\n");
printf("What do you want to do next? 1.繼續(xù)輸入 2.返回主菜單 [ ]\b\b");
scanf("%d",&m);
if(m==1)
deleter();
else
{
k=0;
menu();
}
}
}while(k==-1);
printf_one(k);
printf("\n\t確定刪除?\n\t1).是 2).返回 [ ]\b\b");/*再次詢問是否刪除*/
scanf("%d",&w0);
if(w0==1)
{
stu[k].name[0]='\0';
save(n);
}
else
break;
printf("\n\t^_^.成功刪除^_^.\n");
printf("What do you want to do?\n\t1).繼續(xù) 2).返回 [ ]\b\b");
scanf("%d",&w1);
}while(w1==1);
system("cls");
menu(); /*不再刪除時返回主菜單,w1!=1*/
}
}
void search() /*查找*/
{
void menu();
int w0,k,i,n,w1,w2;
struct student s;
FILE *fp;
if((fp=fopen("D:\\file.txt","rb"))!=NULL) /*不是空文件*/
n=load();
do
{
printf("請選擇查找類別: 1.姓名 2.學號 [ ]\b\b");
scanf("%d",&w1);
if(w1<1||w1>2)
{
printf("輸入錯誤!請重新輸入!\n");
w2=1;
}
else
w2=0; /*這里要注意:不加這句話會陷入死循環(huán),跳不出來*/
}while(w2==1);
if(w1==1) /*按姓名查找*/
{
do
{
k=-1;
do
{
printf("\n請輸入您想要查找的學生的姓名!\nName:");
scanf("%s",s.name);
for(i=0;i
if(strcmp(s.name,stu[i].name)==0)
{
k=i;
s=stu[i];
}
if(k==-1) /*沒有找到*/
{
int o;
printf("\n\n沒有這個學生的信息!\n!");
printf("What do you want to do?\n\t1.繼續(xù) 2.返回菜單 [ ]\b\b");
scanf("%d",&o);
if(o==1)
{
system("cls");
search(); /*繼續(xù)查找*/
}
else
{
system("cls");
menu();
}
}
}while(k==-1);
system("cls");
printf_one(k); /*找到以后輸出這個學生的信息*/
printf("\nWhat do you want to do next?\n\t1).繼續(xù) 2).返回菜單 [ ]\b\b");
scanf("%d",&w0);
}while(w0==1);
system("cls");
menu(); /*不再查找時返回主菜單*/
}
else /*按學號查找*/
{
do
{
k=-1;
do
{
printf("\n請輸入您想要查找的學生的學號!\nNum:");
scanf("%s",s.num);
for(i=0;i
if(strcmp(s.num,stu[i].num)==0) /*找到了*/
{
k=i;
s=stu[i];
}
if(k==-1) /*沒有找到*/
{
int o;
printf("\n\n沒有這個學生的信息!\n!");
printf("What do you want to do?\n\t1.繼續(xù) 2.返回菜單 [ ]\b\b");
scanf("%d",&o);
if(o==1)
{
system("cls");
search(); /*繼續(xù)查找*/
}
else
{
system("cls");
menu();
}
}
}while(k==-1);
system("cls");
printf_one(k); /*找到以后輸出這個學生的學籍信息*/
printf("\nWhat do you want to do?\n\t1).繼續(xù) 2).返回菜單 [ ]\b\b");
scanf("%d",&w0);
}while(w0==1);
system("cls");
menu();/*不再查找時返回主菜單*/
}
}
int modify_data(int i) /*修改信息函數(shù)*/
{
int c,w1;
void menu();
do
{
puts("\n請選擇要修改的選項:\n\n1.學號 2.姓名 3.性別 4.出生日期 5.年齡 6.籍貫 7.系別 8.專業(yè) 9.班級 10.電話 11.所有信息 12.取消并返回");
printf("請選擇?: [ ]\b\b\b");
scanf("%d",&c);
if(c>12||c<1)
{
puts("\n選擇錯誤!請重新選擇!");
getchar();
}
}while(c>12||c<1);
do
{
switch(c)
{
case 1: printf("學號:"); scanf("%s",stu[i].num); break;
case 2: printf("姓名:"); scanf("%s",stu[i].name); break;
case 3: printf("性別:"); scanf("%s",stu[i].sex); break;
case 4: printf("出生年月:"); scanf("%d/%d/%d",&stu[i].birthday.year,&stu[i].birthday.month,&stu[i].birthday.day); break;
case 5: printf("年齡:"); scanf("%d",&stu[i].age);break;
case 6: printf("籍貫:"); scanf("%s",stu[i].addr);break;
case 7: printf("系別:"); scanf("%s",stu[i].dept);break;
case 8: printf("專業(yè):"); scanf("%s",stu[i].major);break;
case 9: printf("班級:"); scanf("%s",stu[i].classs);break;
case 10: printf("電話:"); scanf("%s",stu[i].phone);break;
case 11: input(i); break; /*修改這個學生的所有信息*/
case 12: menu(); /*返回主菜單*/
}
puts("\nNow:\n");
printf_one(i); /*輸出 修改后 的這個學生的信息*/
printf("\n確定?\n\n\t1).是 2).不,重新修改 3).返回不保存 [ ]\b\b");
scanf("%d",&w1);
}while(w1==2);
return(w1); /*修改成功并選擇1后返回1*/
}
void modify() /*修改*/
{
void menu();
if(!flag)
{
printf("\n\n\t請先登錄!\n");
printf("\n\t請按 Enter 鍵進入登錄界面!");
getchar();
getchar();
login();
}
else
{
struct student s;
int i,n,k,w0=1,w1,w2=0;
n=load();
do
{
k=-1;
//printf_n(n); /*刪除之前先顯示所有學生的信息*/
do
{
printf("\n請輸入您想要修改的學生的姓名!\nName:");
scanf("%s",s.name);
for(i=0;i
if(strcmp(s.name,stu[i].name)==0) /*與其中一個學生匹配*/
{
k=i;
s=stu[i];
}
if(k==-1) /*沒有找到輸入的學生*/
{
int o;
printf("\n\n沒有這個學生的信息!\n");
printf("What do you want to do?\n\t1.繼續(xù) 2.返回菜單 [ ]\b\b");
scanf("%d",&o);
if(o==1)
{
system("cls");
modify(); /*繼續(xù)修改*/
}
else
{
system("cls");
menu();
}
}
}while(k==-1);
system("cls");
printf_one(k); /*輸出這個學生的信息*/
w1=modify_data(k);
if(w1==1) /*判斷是否修改成功修改*/
{
printf("\n\t^_^.修改成功 ^_^.\n\n是否繼續(xù)?\n\n\t1).是 2).保存返回\t[ ]\b\b");
scanf("%d",&w0);
w2=1;
}
else
{
w0=0;
if(w2==0)
stu[k]=s;
}
if((w0!=1)&&(w2==1)) /*修改成功保存*/
save(n);
}while(w0==1);
system("cls");
menu();/*不再修改返回主菜單*/
}
}
void browse()/*瀏覽*/
{
system("color 5f");
void menu();
int n;
n=load();
printf_n(n);
printf(" 共有 %d 個學生的記錄.\n",n);
printf("\nPress [ ENTER ] key to back...");
getchar();
system("cls");
menu(); /*返回主函數(shù)*/
}
void exit() /*退出*/
{
exit(0);
}
void face() /*訪問頁面*/
{
system("color 4e");
printf("\n\t ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★\n\n");
puts("\t ※※※※※※※※※※※※※※※※※※※※※※※※※※※");
puts("\t ※※ ※※");
puts("\t ※※ ※※");
puts("\t ※※ 歡迎訪問學生學籍管理系統(tǒng)! ※※");
puts("\t ※※ ※※");
puts("\t ※※ ※※");
puts("\t ※※ ※※");
puts("\t ※※ ※※");
puts("\t ※※ 制作人:李遠航 ※※");
puts("\t ※※ 2013.6.20 ※※");
puts("\t ※※ ※※");
puts("\t ※※※※※※※※※※※※※※※※※※※※※※※※※※※");
printf("\n\tPress [ Enter ] key to continue……\n");
getchar();
system("cls");
}
void menu() /*主菜單*/
{
system("color 2e");
printf("\n\t\t\t歡迎使用學生學籍管理系統(tǒng)!\n");
printf("\n");
int n,w1;
do
{
puts("\t\t★★★★★★★★ 菜單 ★★★★★★★★");
puts("\t\t★ 1.登 錄 ★");
puts("\t\t★ 2.插 入 ★");
puts("\t\t★ 3.刪 除 ★");
puts("\t\t★ 4.查 找 ★");
puts("\t\t★ 5.修 改 ★");
puts("\t\t★ 6.瀏 覽 ★");
puts("\t\t★ 7.退 出 ★");
puts("\t\t★★★★★★★★★★★★★★★★★★★★★");
printf("請選擇服務種類(1-7) : [ ]\b\b");
scanf("%d",&n);
if(n<1||n>7)
{
system("cls");
printf("選擇錯誤! 請重新選擇!\n");
w1=1;
}
else
w1=0;
}while(w1==1);
switch(n)
{
case 1: login(); break; /*登錄*/
case 2: system("cls"); insert(); break; /*插入*/
case 3: system("cls"); deleter(); break; /*刪除*/
case 4: system("cls"); search(); break; /*查找*/
case 5: system("cls"); modify(); break; /*修改*/
case 6: system("cls"); browse(); break; /*瀏覽*/
case 7: exit(); break; /*退出*/
}
}
int main()
{
face();
menu();
return 0;
}
總結(jié)
以上是生活随笔為你收集整理的学生签到系统c代码_C语言实现简单学生学籍管理系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php5.3无法加载mysql数据库模块
- 下一篇: mysql文件查看工具_OpenDBVi