宿舍管理作业

*结构体类型*/

typedef struct

{  int num;/*宿舍号*/

char name[20];/*姓名*/

charsex[5];/*性别*/

intage;/*年龄*/

charstudentclass[20];/*班级*/   (使用结构体使一个变量同时表达多个含义)

intscore;/*成绩*/

}STUDENTS;

通过结构体可以使定义后的变量表达多个含义

int read_file(STUDENTS stu[])

{        FILE*fp;

int i=0;

if((fp=fopen("stu.txt","rt"))==NULL)

{printf("\n\n*****库存文件不存在!请创");  (接下来定义指针变量将所输入的信                                          息存入电脑中指定的文件夹)

return 0;

}

while(feof(fp)!=1)

{

fread(&stu[i],sizeof(STUDENTS),1,fp);

if(stu[i].num==0)

break;

else

i++;

}

fclose(fp);

returni;

}

通过定义指针变量来快速的将学生信息储存在电脑的一个文件夹内,并且也能快速找出你所需要的内容

/*创建学生信息*/

int input(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].num);

printf("\n 请输入学生的姓名:");

scanf("%s",stu[k].name);

printf("\n请输入学生的性别:");   (然后运用printf函数显示各                                            项显示在界面的信息菜单)

scanf("%s",stu[k].sex);

printf("\n 请输入学生的年龄:");

scanf("%d",&stu[k].age);

printf("\n 请输入学生的班级:");

scanf("%s",stu[k].studentclass);

printf("\n 请输入学生的成绩:");

scanf("%d",&stu[k++].score);

printf("\n 请按1键返回菜单或按0键继续创建");

scanf("%d",&x);

if(x)

break;

}

return k;

}

主要用printf函数来制作管理系统菜单

/*删除学生信息*/

void deletel(STUDENTS stu[])           (删除学生信息运用两个字符串相互比较如果两个字                                 符串相同则覆盖该字符串)

{system("cls");

char Stuname2[20];

int i,j;

printf("请输入学生姓名:");

scanf("%s",Stuname2);

printf("\n");

for(i=0;i<k;i++)

if(strcmp(stu[i].name,Stuname2)==0)

for(j=0;j<20;j++)

stu[i].name[j]=stu[i+1].name[j];

k--;

printf("删除成功\n");

printf("按任意键加回车返回主菜单!");

scanf("%d",&i);

getchar();

}

这里删除学生信息主要使用数组,利用数组的有序性将数组中的下一个元素直接将输入元素覆盖

/*查询学生信息*/

void inquire(STUDENTS stu[])       (用if条件函数对之前存入指定位置保存的学号与当前输入                             的学号进行比较如果相等就输出相应学生的信息)

{int i;

int num;

system("cls");

printf("     \n\n请输入您要查找的学生的学号");

scanf("%d",&num);

for(i=0;i<k;i++)

if(num==stu[i].num)

printf("\n\n\n学号:%d,姓名:%s,性别:%s,年龄:%d,班级:%s,成绩: %d\n",stu[i].num,stu[i].name,

stu[i].sex,stu[i].age,stu[i].studentclass,stu[i].score);

printf("按任意键加回车返回主菜单!");

scanf("%d",&i);

getchar();

}

主要是使用if条件函数将输入的学号与保存的学号比较,如果相等就输出所对应的所有学生信息

/*修改学生信息*/

void change(STUDENTS stu[])   (修改学生信息先将你想要修改的学生的学号输入进行查找运用                         printf函数将你所能修改的数据显示出来再通过switch函数选择你                            修改的信息)

{  int num,i,choice;

system("cls");

printf("\n\n\n      请输入您要修改的学生的学号");

scanf("%d",&num);

for(i=0;i<k;i++)

{ if(num==stu[i].num)

printf("\n宿舍号:%d,姓名:%s,性别:%s,年龄:%d,班级:%s,成绩: %d\n",stu[i].num,stu[i].name,

stu[i].sex,stu[i].age,stu[i].studentclass,stu[i].score);

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("                 请选择(1-6):");

scanf("%d",&choice);

switch(choice)

{case 1:{

printf("\n   请输入你改的新宿舍号");

scanf("%d",&stu[i].num);

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].studentclass);

break;

}

case 6:{

printf("\n   请输入你改的新成绩");

scanf("%d",&stu[i].score);

break;

}

}

printf("宿舍号:%d,姓名:%s,性别:%s,年龄:%d,班级:%s,成绩:%d\n",stu[i].num,stu[i].name,

stu[i].sex,stu[i].age,stu[i].studentclass,stu[i].score);

printf("按任意键加回车返回主菜单!");

scanf("%d",&i);

break;

}

}

这个部分主要是运用switch函数,先用printf打印出所有能够修改的选项,用switch选择你想要修改的部分。

/*学生成绩信息排名*/

void sort(STUDENTS stu[])              (运用字符串的冒泡排序

对学生的成绩进行排序)

{  int i,j,n=1,x;

system("cls");

int t;

for(i=0;i<k-1;i++)

for(j=i+1;j<k;j++)

if(stu[i].score<stu[j].score)

{t=stu[i].score;

stu[i].score=stu[j].score;

stu[j].score=t;

t=stu[i].num;

stu[i].num=stu[j].num;

stu[j].num=t;

}

for(i=0;i<k;i++)

printf("排名    宿舍号    成绩\n %d       %d      %d\n",n++,stu[i].num,stu[i].score);

printf("按任意键加回车返回主菜单!");

scanf("%d",&x);

getchar();

}

这里主要使用for循环来进排序,每次循环将最大的元素放在首位,下一次循环从第二位开始。

void check()

{

char userName[5];/*用户名*/

char userPWD[5];/*密码*/

int i,sum;

system("color 4E");

for(i = 1; i < 4; i++)

{

/*用户名和密码均为abcde;*/

printf("   用户名和密码均为abcde\n\n");

printf("\n       请输入您的用户名:");

gets(userName);

printf("\n       请输入您的密码:");

gets(userPWD);

if ((strcmp(userName,"abcde")==0) &&(strcmp(userPWD,"abcde")==0))/*验证用户名和密码*/

{

printf("用户名和密码正确,显示主菜单");

return;           (用户的密码系统运用了strcmp函数对用户输入的密                                码与原来系统保存的密码进行比较,如果相同                                  则进入系统如果不用则显示请重新输入,运用if函                                数判断如果输入密码错误次数大于3次则自动退出                                 登入系统)

}

else

{

if (i < 3)

{

printf("用户名或密码错误,提示用户重新输入");

printf("用户名或密码错误,请重新输入!");

}

else

{

printf("连续3次输错用户名或密码,退出系统。");

printf("您已连续3次将用户名或密码输错,系统将退出!");

exit(1);

}

}

}

}

用字符串比较的函数来比较输入的密码,strcmp。

时间: 2024-11-04 16:31:49

宿舍管理作业的相关文章

【腾讯GAD暑期训练营游戏程序班】游戏场景管理作业说明文档

场景管理作业说明文档                              用了八叉树的算法,测出三层时最快,区域范围内物体数量为21块,控制台打印出的结果如图所示: 场景物体:游戏中,所有具有空间属性的物体游戏场景:<围棋>二维表<进击的围棋><围棋世界>基于空间分组的场景管理的进一步优化进一步分组四叉树视锥范围剔除非可见区域当前必要场景区域 动态加载谷歌 可感知即存在 不可感知即不存在 场景加载

javaWeb校园宿舍管理解析(三)

前两章主要集成Struts2以及mybatis,并进行的相应的小测试,现在我们来实现整个登录功能,说简单一下,登录功能就是登录页-->发送请求-->action-->dao-->主菜单. Struts2做为一个声明性架构,struts.xml作为他的入口,用来定义动作默认地方,很多企业习惯将功能模块化,然后在引入struts.xml,因为我们这个项目比较简单,我就不模块化了,所有动作都定义在struts.xml中. <?xml version="1.0" 

SQL SERVER 中如何用脚本管理作业

在SQL SERVER中用脚本管理作业,在绝大部分场景下,脚本都比UI界面管理作业要高效.简洁.打个简单的比方,如果你要查看作业的运行时长,如果用UI界面查看,100个作业,你就得在历史记录里面至少查看一百次甚至更多,还要记录.统计作业各个步骤的执行时间.而用脚本,一个查询就OK了.这篇文章分享一些我在数据库管理过程中积累的一些常用脚本. 如有不足或需要完善的地方,也请多多指教. 1:业务场景:你想了解一下所有作业的Schedule信息,方便你作出调整或分析.例如作业的执行频率:例如你想查询那些

javaWeb校园宿舍管理解析(四)

关于3种身份的登录验证已经完成,现在我们开始逐步完成菜单中的选项. 首先看管理员进入系统的菜单选项,第一个是楼宇管理员,看源码关于该功能,只是简单的增删改查,工作中其实往往大多数也是针对实体类的增删改查,无非是持久层技术不同或者企业有大牛将这些方法统一,方便拿来直接用,先看效果页面. 上面一个页面关于楼宇管理员管理包含四个功能:查询(条件查询和全查询).删除.修改.新增. 首先我们来理清楚思路,管理员身份登录,进入index.jsp页面,我们会发现菜单相应操作都在left.jsp中,首先定位到-

oracle12c管理作业资源的一种方式

数据库:12.1.0.2,rac,cdb模式 笔者负责移动两个12.1.0.2的cdb集群,一个在aix上,一个在linux上,不幸的是,它们都是混合型,数据有100多T. 由于其它部门交付的时候,已经是12c,之前对12c不是很熟悉,但还是想看看是否可以在不分库的前提下,最大化性能. 结果不行,因为有些偏向OLTP的应用会常常觉得慢. 怎么办?只好先通过SERVICE指定节点,每个服务至少两个节点,服务内部采用taf配置,一个主节点,一个备用节点. 例如为某个oltp创建的服务如下: srvc

javaWeb校园宿舍管理解析(二)

上一章我们已经集成struts2,本章我们主要将mybatis集成进来,方便我们持久层代码的编写. 首先添加相应的包:mybatis-3.1.1.jar,oracle驱动包:ojdbc14.jar 创建管理员用户存储表,用来查询登录页选择管理员的用户,数据稍后再插入. CREATE TABLE admin(  Admin_ID number(11), Admin_Username varchar(20), Admin_Password varchar(20), Admin_Name varcha

javaWeb校园宿舍管理解析(一)

从网上看到一个开源的web项目-校园宿舍管理系统,大致看了一下源码,框架很简单,用的struts2+jdbc+jsp,虽然作为一个很简单的项目,但对于新手来说,直接看一套系统的源码,很快就会失去兴趣,本人作为一个新人过来很理解这种感受,因此对于这套系统,我准备将他重新翻写一遍,顺便将技术框架修改一下以便自己提高一下自己技术,在这里分享一下重新搭建项目的过程. 主体框架不动,仍用struts2,持久层方面我准备用mybatis,数据库用oracle11g. 废话不多说,直接开干! 首先创建一个Dy

项目沟通管理和项目合同管理作业

一.项目沟通管理: 1.项目沟通管理包括哪些过程: (1)沟通计划编制 (2)信息分发 (3)绩效报告 (4)项目干系人管理 2.沟通管理计划的主要内容: (1)项目干系人沟通要求 (2)对要发布信息的描述 (3)信息接收的个人或组织 (4)传达信息所需的技术和方法,如备忘录.电子邮件或新闻发布 (5)沟通频率 (6)上报过程,对下层无法解决的问题,确定问题上报的时间要求和管理链 (7)随项目的进展对沟通管理计划更新与细化的方法 (8)通用词语表 3.项目干系人管理的方法(12.6.2) (1)

沟通管理、风险管理、采购管理作业

1.沟通管理计划包括哪些内容?  a.项目干系人的沟通要求 b.对要发布的信息的描述 c.信息接受者(个人或团队) d.传播信息所需要的技术或方法 e.沟通频率 f.上报流程 2.风险管理中,负面风险. 正向风险的应对策略? 负面风险:  a.避免:消除.隔离风险.放宽项目目标,解决.  b.转移:保险  c.减轻:冗余设计.减轻影响 正向风险:  a.开拓:使机会确实发生.分配更多资源,获取更好效果.  b.分享:提供给第三方.合作经营  c.强大:增加积极影响,加强发生的可能性3.采购管理中