源程序.docx
- 文档编号:29076658
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:26
- 大小:20.89KB
源程序.docx
《源程序.docx》由会员分享,可在线阅读,更多相关《源程序.docx(26页珍藏版)》请在冰豆网上搜索。
源程序
#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]; /*专业*/
char classs[30]; /*班级*/
char phone[20];/*电话*/
}stu[N];
void login() /*登录*/
{
void menu();
system("cls");
if(flag)
{
printf(" 已经登录!
\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.继续登录 2.返回菜单 [ ]\b\b");
scanf("%d",&q);
if(q==1) /*继续登录*/
{
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.继续登录 2.返回菜单 [ ]\b\b"); scanf("%d",&q); if(q==1) /*继续登录*/ { 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("专业: %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() /*打开文件,读取里面的数据*/ { FILE *fp; int i; if((fp=fopen("D: \\file.txt","rb"))==NULL) /*读入空文件,rb表示打开一个二进制文件,只允许读数据*/ { printf("\n文件不存在! 请输入: \n"); return 0; } for(i=0;! feof(fp);i++) /*处理到文件结尾*/ fread(&stu[i],sizeof(struct student),1,fp); /*fread(buffer,size,cout,fp)将磁盘文件中的一批数据作为一个整体一次性读取出来, buffer指定数据块位置,sizeof数据块字节数,count读取次数,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("专业: "); 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) /*只打开或建立一个二进制文件,只允许写数据*/ { 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) /*将一批数据作为一个整体一次性写入磁盘文件*/ 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).浏览所有\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表示打开一个二进制文件,只允许读数据*/ { 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.继续输入 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).继续 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; /*这里要注意: 不加这句话会陷入死循环,跳不出来*/ }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];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 源程序
![提示](https://static.bdocx.com/images/bang_tan.gif)