C语言图书馆管理系统课程设计报告

时间:2024.4.5

C语言课程设计

学生姓名袁盛升

学生学号1021112128

所在班级10211121

任课教师姜林

图书馆管理系统

设计目的

图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等.

试设计一图书信息管理系统,使之能提供以下功能:

1)系统以菜单方式工作

2)图书信息录入功能(图书信息用文件保存)--输入

3)图书信息浏览功能--输出

4)查询和排序功能:(至少一种查询方式)--算法

5)按书名查询

6)按作者名查询

7)图书信息的删除与修改(可选项)*/

设计思路

根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中去,所以应该提供下个结构体和文件的输入等操作:在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现:另外还需提供选择菜单实现功能,在运行时达到所要求的目的。

  【总体设计

图1  系统功能模块图

 【详细设计

1.       主函数

主函数设计要求简洁,只提供部分提示语和函数的调用

【程序】

     

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

int get()

{

       int o;

       scanf("%d",&o);

}

struct BOOK

{

       int ID,usr[10],total,store,days[10];

       char name[31],aurthor[21];

}books[100];

/*上面是结构体的定义,用于存放书籍及借书的信息。*/

void page_title(char*menu_item)

{

       printf("图书管理系统\n-%s-\n",menu_item);

}

/*通过参数menu_item,可以显示当前的状态。*/

void return_confirm()

{

       printf("\n按任意返回\n");

    getch();

}

/*上面是返回前请求确认的函数,以便在返回前观察结果*/

int search_book()

{

       int n,i;

       printf("输入图书序号:");

       scanf("%d",&i);

       for(n=0;n<100;n++)

       {

              if(books[n].ID==i)

              {

                     printf("书名:%s\n",books[n].name);

                     printf("作者:%s\n",books[n].aurthor );

                     printf("存数:%d of ",books[n].store );

                     printf("%d\n",books[n].total);

                     return n;

              }

       }

       printf("\n输入错误或无效图书序号\n");

       return -1;

}

/*上面的函数是在数组中找到图书号匹配的记录,显示其信息并返

 回数组下标,如果找不到相应记录则提示错误并返回-1。*/

void book_out()

{

       int n,s,l,d;

       page_title("借阅图书");

       if((n=search_book())!=-1 && books[n].store >0)

       {

              printf("请输入可借天数:\n");

              scanf("%d",&d);

              for(l=0;l<10;l++)

              {

                     if(books[n].usr [l]==0)

                     {

                            books[n].usr[l]=s;

                            books[n].days[l]=d;

                            break;

                     }

              }

              books[n].store--;

       }

       if(n!=-1 && books[n].store==0)

              printf("此书已借出。\n");

           return_confirm();

}

/*上面是借书的函数,首先调用找书函数*/

void book_in()

{

       int n,s,l;

       page_title("图书归还");

       if((n=search_book())!=-1 && books[n].store<books[n].total)

       {

              printf("借阅者图书证列表:\n");

              for(l=0;l<10;l++)

                     if(books[n].usr[l])    !0;

                     printf("[%d]-%d天\n",books[n].usr[l],books[n].days[l]);

                     printf("请输入借书证序号:");

                     scanf("%d",&s);

                     for(l=0;l<10;l++)

                     {

                            if(books[n].usr[l]==s)

                            {

                                   books[n].usr[l]=0;

                                   books[n].days[l]=0;

                                   break;

                            }

                     }

                     books[n].store++;

       }

       if(n!=-1 && books[n].store==books[n].total)

              printf("全部入藏。\n");

           return_confirm();

}

void book_add()

{

       int n;

       page_title("注册新书");

       for(n=0;n<100;n++)

              if(books[n].ID==0)

                     break;

              printf("序号:");

              scanf("%d",&books[n].ID);

              printf("书名:");

              scanf("%s",&books[n].name);

              printf("作者:");

              scanf("%s",&books[n].aurthor);

              printf("数量:");

              scanf("%d",books[n].total);

              books[n].store=books[n].total;

              return_confirm();

}

void book_del()

{

       int n;

       page_title("注销旧书\n");

       if((n=search_book())!=-1) books[n].ID=0;

       printf("该书已注销\n");

       return_confirm();

}

void main()

{

       while(1)

       {

menu:page_title("操作选单");

        printf("请用数字选择操作\n\n");

        printf("1,借阅图书\n2,归还图书\n");

        printf("3,注册新书\n4,注销旧书\n\n");

        printf("\n0,退出\n");

        switch(get())

        {

        case 1: book_out();break;

        case 2: book_in();break;

        case 3: book_add();break;

        case 4: book_del();break;

        default : exit(0);

       }

return;

       }

}

设计体会

通过为期一周的课程设计,对《C语言》这门课程有了更深一步的了解。它是计算机程序设计的重要理论技术基础,在我们软件工程专业的学习中占据着十分重要的地位。这个程序的结构大体是从网络上借鉴的,但是结果无法运行,只能自己修改,最后终于调试通过,同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。


第二篇:c语言课程设计报告(宿舍管理系统)


C语言实训报告书

系部名称

学生姓名 专业名称

班 级 学号 通信工程系 通信工程专业

指导教师 刘欣

20xx年08月29日至

时间

20xx年09月09日

实验题目:学生宿舍管理系统

一、实验目的

通过本课程设计,强化上机动手能力,使学生在理论和实践的基础上进一步巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法。通过这次实习练习,可以更进一步的熟悉所学的知识,还可以加强和巩固知识。长达两周的上机练习,为我们提供了很好的编程环境。更好的了解编程的意义,为将来参加实践活动以及以后的毕业设计打下坚实的基础。

二、实验内容

我设计的是“学生宿舍管理系统”,主要是针对住宿学生个人信息的管理,适用对象主要是学校,以方便学校对住宿学生的管理。包括学生的姓名、学号、性别、专业、班级等等。在编写过程中主要运用C语言的基本知识有:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的调用与使用)等。

三、需求分析

该程序是由C语言编写的一个宿舍管理查询软件,本程序在Microsoft Visual C++ 6.0下运行,其主要功能是实现对学生信息的录入、添加、删除、修改、查询、统计。其中查询

可以分别以姓名、学号、宿舍号为关键字查询学生信息。统计可以分别以学号、宿舍号、性别、班级、专业为关键字进行统计,并且输出信息按学号大小从小到大输出。

四、概要设计

1、方案设计

2、数据结构说明

程序中数据主要是学生信息,具体属于类型如下: truct st_message

char name[20]; /*学生姓名*/ char dorm[7]; /*宿舍号*/ char num[10]; /*学号*/ char sex[5]; /*性别*/ char age[4]; /*年龄*/ char major[20]; /*专业*/ char classs[8]; /*班级*/

3、模块功能说明

第一密码模块:调用cipher(),进行管理者的注册与登录操作。 第二录入模块:调用input_message(),对住宿学生信息进行录入。

第三添加模块:调用append_message(),对新来学生信息进行添加录入。 第四修改模块:调用revise_message(),对需修改学生的信息进行修改。 第五删除模块:调用delete_message(),对某一学生信息进行删除操作。

第六查询模块:调用find_message(),分别以姓名、学号、宿舍号对学生信息进行查询。 第七统计模块:调用census_message(),分别以学号、宿舍号、性别、班级、专业方式对学生信息进行统计,并按学号由小到大输出。

五、详细设计及运行结果

c语言课程设计报告宿舍管理系统

1.函数之间调用关系图

c语言课程设计报告宿舍管理系统

c语言课程设计报告宿舍管理系统

2.登陆界面 主函数流程图

主页界面

c语言课程设计报告宿舍管理系统

c语言课程设计报告宿舍管理系统

录入模块

录入界面

c语言课程设计报告宿舍管理系统

修改模块

c语言课程设计报告宿舍管理系统

c语言课程设计报告宿舍管理系统

c语言课程设计报告宿舍管理系统

统计模块

c语言课程设计报告宿舍管理系统

统计界面

c语言课程设计报告宿舍管理系统

六、调试情况,设计技巧及体会

1、测试数据

对功能1(密码系统测试)的测试:先注册账号密码分别为:1,1,然后退出程序进行登录测试。输入一组错误账号密码系统显示“输入的账号或密码有误,请重新输入!”。在输入正确密码,系统显示“登陆成功”并进入主界面。

对功能2(录入学生信息)的测试:按照先后顺序分别输入学生信息:

学号 姓名 班级 宿舍号 性别 年龄 专业

03091002 张三 0901 13#401 男 20 通信工程

03091001 李四 0902 13#401 男 20 计算机

对功能3(添加学生信息)的测试:按照先后顺序分别输入学生信息:

学号 姓名 班级 宿舍号 性别 年龄 专业

03091004 王红 0901 14#401 女 20 通信工程

03091003 李娜 0902 14#401 女 20 计算机

对功能4(修改学生信息)的测试:输入要修改学生的姓名:王五,系统显示“该学生信息不存在”。输入修改学生姓名:张三,系统显示出该学生信息。选择修改学号为:03091005,系统显示出修改后的学生信息。

对功能5(删除学生信息)的测试:输入要删除学生的学号:03091001,系统显示“该学生信息不存在”。输入要删除的学生的学号:03091005,系统显示出该学生信息。选择删除该学生信息。

对功能6(查询学生信息)的测试:查询宿舍号为14#401的信息,系统显示为:

学号 姓名 班级 宿舍号 性别 年龄 专业

03091003 李娜 0902 14#401 女 20 计算机

03091004 王红 0901 14#401 女 20 通信工程

对功能7(统计学生信息)的测试:选择按学号统计,系统显示为:

学号 姓名 班级 宿舍号 性别 年龄 专业

03091002 张三 0901 13#401 男 20 通信工程

03091003 李娜 0902 14#401 女 20 计算机

03091004 王红 0901 14#401 女 20 通信工程

学生总人数3人,其中男生1人,女生2人。

对功能8(退出系统)的测试:选择退出系统,程序关闭。

2、对调试中主要问题进行总结

调试过程中,经常会出现输入或显示为乱码的情况,这往往是上下定义的数据类型不同

或定义数组长度不够所造成的。有时候程序中还会出现录入五个数据而只显示四个的情况,

这也往往是由于定义的结构体数组长度过低所造成的。像这类问题只要把数据类型都定义成

字符型,并且定义一个合理的数组长度往往都能解决。在调试过程中我遇到最大的问题出现

在删除模块。在运用“rt+”打开文件并对某一数据进行删除后,往往显示会多显示一行数

据。这是由于“rt+”写数据时只会覆盖数据而不会清除原文件数据,因此文件最后一行数

据总会保留在原文件中。后来我先用“rt”打开文件并读取文件中的数据,然后再用“wt”

打开原文件将删除后的数据重新写入文件,最终检测运行成功。

3、对自己设计进行评价,指出合理和不足之处,提出改进的方案

本程序拥有很多的优点:第一,它具有作为一个宿舍管理系统的各个功能,包括录入信

息、添加信息、修改信息、删除信息、查询信息、统计信息六大主要功能。可以方便的进行

住宿学生信息的管理。第二,它的各个功能模块在实现时非常方便,例如:录入和添加学生

信息可以自己控制录入和添加的人数;统计学生信息可以分学号、班级、专业等进行统计等

等。第三,它也具有安全性,在进入学生信息管理系统之前要求输入账号和密码,所以非常

安全,不会造成信息的外泄。当然程序也有他的不足之处,比如密码不能回显“*”,这样很

容易造成密码的丢失。可以在密码模块中改为回显“*”形式,并且可以对密码进行算法加

密,这样更能确保信息的安全。

4、在设计过程中的感受

“万事开头难”这句话在我编写程序的过程中得到了真正的体现。在最初编写的几天里

出现了这样那样的错误一大堆,这主要是由于我对基础知识掌握不扎实所造成的。但是随后

几天里,我对课本知识进行了回顾并不时的向老师和同学进行请教,慢慢的对编写程序也开

始得心应手起来。程序的编写总归是一件费时费力的事情,但只要我们认真编写和调试最后

总能成功。

短短的两周实习时间我收获颇多,我相信经过这次实习必将为我以后的深入学习打下扎

实的基础。

参考文献:《C语言程序设计》(第二版) 王曙燕 科学出版社

七、源程序清单

#include"stdio.h"

#include"string.h"

#include"stdlib.h"

#include"io.h"

#define N 900

struct cipher

{char account[6];

char code[6];

}m[10];

cipher() /*密码模块*/

{ int i,k=0,flag,flag1,flag2,fno,fsize,fnum,choice;

char account[6];

char code[6],code1[6];

FILE *fp1;

printf ("\n\n\n\n\n\n\n ***********学生宿舍管

理系统**********\n");

printf (" * 1.登陆 *\n");

printf (" * 2.注册

*\n");

printf

*************************************\n");

scanf("%d",&choice);

system("cls");

switch(choice)

{case 1: fp1=fopen("code.txt","rt");

if(fp1==NULL)

{printf("\n\n*****你还没有注册,按任意键退出!"); getchar();

exit(1);

}

fno=fileno(fp1);

fsize=filelength(fno);

fnum=fsize/sizeof(struct cipher);

while(k<3)

{getchar();

system("cls");

printf("请输入账号:");

gets(account);

printf("请输入密码:");

gets(code);

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

{ fread(&m,sizeof(struct cipher),1,fp1);

if(!strcmp(m[i].account,account)) flag1=0;

else flag1=1;

if(!strcmp(m[i].code,code)) flag2=0;

else flag2=1;

if(flag1==0&&flag2==0)

{ fclose(fp1);

printf("登陆成功!\n");

system("pause");

return 1;

}

}

if(i==fnum)

{printf("输入的账号或密码有误,请重新输入!"); k++;

}

}

printf("连续3次输入错误,退出!\n");

system("pause");

("

exit(1);

case 2:fp1=fopen("code.txt","at+");

if(fp1==NULL)

{printf("\n\n*****文件打开错误。按任意键退出!"); getchar();

exit(1);

}

do

{system("cls");

getchar();

printf("请输入注册账号:");

gets(m[0].account);

printf("请输入注册密码:");

gets(m[0].code);

printf("请再次输入注册密码:");

gets(code1);

if(!strcmp(m[0].code,code1))

{fwrite(&m[0],sizeof(struct cipher),1,fp1);

fclose(fp1);

flag=0;

}

else

{

printf("两次密码输入不同,请重新注册!"); getchar();

flag=1;

}

}while(flag==1);

printf("注册成功!\n");

getchar();

system("cls");

break;

}

return 1;

}

struct st_message /*学生信息*/

{

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

char dorm[7]; /*宿舍号*/

char num[10]; /*学号*/

char sex[5]; /*性别*/

char age[4]; /*年龄*/

char major[20]; /*专业*/

char classs[8]; /*班级*/

}st[N],t;

sort_message() /*排序模块*/

{int i,j,fno,fsize,fnum;

FILE *fp;

fp=fopen("student.txt","rt+");

if(fp==NULL)

{printf("\n\n*****文件打开错误。按任意键退出!");

getchar();

exit(1);

}

fno=fileno(fp);

fsize=filelength(fno);

fnum=fsize/sizeof(struct st_message);

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

fread(&st[i],sizeof(struct st_message),1,fp);

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

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

if(strcmp(st[i].num,st[j].num)>0)

{t=st[i];

st[i]=st[j];

st[j]=t;

}

rewind(fp);

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

fwrite(&st[i],sizeof(struct st_message),1,fp);

fclose(fp);

}

input_message() /*录用信息模块*/

{int i;

char choice;

FILE *fp;

fp=fopen("student.txt","at+");

if(fp==NULL)

{printf("\n\n*****库存文件不存在!请建立。按任意键退出!");

getchar();

exit(1);

}

for (i=0;;i++)

{ system ("cls");

getchar();

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

gets(st[i].name);

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

gets(st[i].classs);

printf("\n请输入学生宿舍号:");

gets(st[i].dorm);

printf("\n请输入学生学号:");

gets(st[i].num);

printf("\n请输入学生性别:");

gets(st[i].sex);

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

gets(st[i].age);

printf("\n请输入学生专业:");

gets(st[i].major);

fwrite(&st[i],sizeof(struct st_message),1,fp);

printf("输入成功!\n是否继续录入(Y/N)?");

choice=getchar();

if(choice=='y'||choice=='Y')

continue;

else

{ fclose(fp);

break;

}

}

}

append_message() /*添加模块*/

{int i;

char choice;

FILE *fp;

fp=fopen("student.txt","at+");

if(fp==NULL)

{printf("\n\n*****库存文件不存在!请建立。按任意键退出!"); getchar();

exit(1);

}

for (i=0;;i++)

{struct st_message st[N];

system ("cls");

getchar();

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

gets(st[i].name);

printf("\n请输入所添加学生班级:"); gets(st[i].classs);

printf("\n请输入所添加学生宿舍号:"); gets(st[i].dorm);

printf("\n请输入所添加学生学号:"); gets(st[i].num);

printf("\n请输入所添加学生性别:"); gets(st[i].sex);

printf("\n请输入所添加学生年龄:"); gets(st[i].age);

printf("\n请输入所添加学生专业:"); gets(st[i].major);

fwrite(&st[i],sizeof(struct st_message),1,fp); printf("输入成功!\n是否继续添加(Y/N)?"); choice=getchar();

if(choice=='y'||choice=='Y')

continue;

else

{fclose(fp);

break;

}

}

}

revise_message() /*修改模块*/

{int i,choice,flag,fno,fsize,fnum;

char re_name[20],s[20];

FILE *fp;

do

{fp=fopen("student.txt","rt+");

fno=fileno(fp);

fsize=filelength(fno);

fnum=fsize/sizeof(struct st_message);

system("cls");

gets(s);

printf("请输入需要修改的学生姓名:"); gets(re_name);

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

{

fread(&st[i],sizeof(struct st_message),1,fp);

if(!strcmp(re_name,st[i].name))

{ printf("\n -----该学生信息-----\n\n");

printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n");

printf("-----------------------------------------------------\n");

printf("%-8s %-6s %-4s %-6s %-4s %-4s %-20s\n",st[i].num,st[i].name,

st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major);

printf("您要修改哪一项?\n");

printf("1.学号\n");

printf("2.姓名\n");

printf("3.班级\n");

printf("4.宿舍号\n");

printf("5.性别\n");

printf("6.年龄\n");

printf("7.专业\n");

printf("8.返回主页\n");

scanf("%d",&choice);

switch(choice)

{case 1:printf("\n请输入修改后的学号:");

scanf("%s",st[i].num);break;

case 2:printf("\n请输入修改后的姓名:");

scanf("%s",st[i].name);break;

case 3:printf("\n请输入修改后的班级:");

scanf("%s",st[i].classs);break;

case 4:printf("\n请输入修改后的宿舍号:");

scanf("%s",st[i].dorm);break;

case 5:printf("\n请输入修改后的性别:");

scanf("%s",st[i].sex);break;

case 6:printf("\n请输入修改后的年龄:");

scanf("%s",st[i].age);break;

case 7:printf("\n请输入修改后的专业:");

scanf("%s",st[i].major);break;

case 8:return 1;

}

getchar();

system("cls");

printf("\n -----修改后的学生信息-----\n\n"); printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n");

printf("-----------------------------------------------------\n");

printf("%-8s %-6s %-4s %-6s %-4s %-4s %-20s\n",st[i].num,st[i].name,

st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major);

rewind(fp);

fseek(fp,sizeof(struct st_message)*i,0);

fwrite(&st[i],sizeof(struct st_message),1,fp);

fclose(fp);

break;

}

}

if(i==fnum)

printf("\n该学生信息不存在!");

printf("\n\n继续修改吗?(Y/N)");

choice=getchar();

if(choice=='Y'||choice=='y')

{flag=1;

system("pause");

}

else flag=0;

}while(flag==1);

return 1;

}

delete_message() /*删除模块*/

{int i,j,choice,fno,fsize,fnum;

char d_num[10];

FILE *fp;

system("cls");

getchar();

fp=fopen("student.txt","rt");

if(fp==NULL)

{printf("\n\n*****库存文件不存在!请先建立。按任意键退出!"); getchar();

exit(1);

}

fno=fileno(fp);

fsize=filelength(fno);

fnum=fsize/sizeof(struct st_message);

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

fread(&st[i],sizeof(struct st_message),1,fp);

printf("请输入需要删除学生的学号:\n");

gets(d_num);

system("cls");

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

{if(!strcmp(d_num,st[i].num))

{printf("\n -----该学生信息-----\n\n");

printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n"); printf("-----------------------------------------------------\n");

printf("%-8s %-6s %-4s %-6s %-4s %-4s %-20s\n",st[i].num,st[i].name,

st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major);

printf("\n是否删除该学生信息:\n");

printf("1.是\n");

printf("2.否\n");

scanf("%d",&choice);

switch(choice)

{case 1:for(j=i;j<fnum-1;j++)

st[j]=st[j+1];

rewind(fp);

fp=fopen("student.txt","wt");

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

fwrite(&st[i],sizeof(struct st_message),1,fp);

fclose(fp);

getchar();

break;

case 2:printf("按任意键返回主菜单!");

getchar();

return 0;

}

break;

}

}

if(i==fnum)

{printf("所查学生信息不存在,按任意键返回主菜单!");

getchar();

return 0;

}

printf("删除信息成功,按任意键返回主菜单!");

return 1;

}

find_message() /*查找信息模块*/

{int i,choice,flag,fno,fsize,fnum;

char f_name[20];

char f_num[10];

char f_dorm[7];

FILE *fp;

system("cls");

do

{ sort_message();

fp=fopen("student.txt","rt");

if(fp==NULL)

{printf("\n\n*****库存文件不存在!请先建立。按任意键退出!"); getchar();

exit(1);

}

fno=fileno(fp);

fsize=filelength(fno);

fnum=fsize/sizeof(struct st_message);

system("cls");

printf("请选择查询方式:\n");

printf("1.按姓名查询\n");

printf("2.按学号查询\n");

printf("3.按宿舍号查询\n");

printf("4.返回主页\n");

scanf("%d",&choice);

system("cls");

getchar();

switch(choice)

{case 1:printf("请输入需要查询的姓名:\n");

gets(f_name);

printf("\n -----该学生信息-----\n\n");

printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n");

printf("-----------------------------------------------------\n"); for (i=0;i<fnum;i++)

if(!strcmp(f_name,st[i].name))

printf("%-8s %-6s %-4s %-6s %-4s %-4s %-20s\n",st[i].num,st[i].name,

st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major);

printf("-----------------------------------------------------\n"); break;

case 2:printf("请输入要查询的学号:");

gets(f_num);

printf("\n -----该学生信息-----\n\n");

printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n");

printf("-----------------------------------------------------\n"); for (i=0;i<fnum;i++)

{fread(&st[i],sizeof(struct st_message),1,fp);

if(!strcmp(f_num,st[i].num))

printf("%-8s %-6s %-4s %-6s %-4s %-4s %-20s\n",st[i].num,st[i].name,

st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major); }

printf("-----------------------------------------------------\n"); break;

case 3:printf("请输入要查询的宿舍号:");

gets(f_dorm);

printf("\n -----该宿舍学生信息-----\n\n");

printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n");

printf("-----------------------------------------------------\n"); rewind(fp);

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

{fread(&st[i],sizeof(struct st_message),1,fp);

if(!strcmp(f_dorm,st[i].dorm))

printf("%-8s %-6s %-4s %-6s %-4s %-4s %-20s\n",st[i].num,st[i].name,

st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major);

}

printf("-----------------------------------------------------\n"); break;

case 4:return 0;

}

printf("\n\n继续查询吗?(Y/N)");

choice=getchar();

if(choice=='Y'||choice=='y')

{flag=1;

system("pause");

}

else flag=0;

}while(flag==1);

return 1;

}

census_message() /*统计信息模块*/

{int i,choice,fno,fsize,fnum;

int m=0,n=0,k=0;

char dorm[7];

char classs[8];

char major[20];

FILE *fp;

sort_message();

fp=fopen("student.txt","rt");

if(fp==NULL)

{printf("\n\n*****文件打开错误。按任意键退出!");

getchar();

exit(1);

}

fno=fileno(fp);

fsize=filelength(fno);

fnum=fsize/sizeof(struct st_message);

system("cls");

printf("请选择显示方式:\n");

printf("1.按学号显示\n");

printf("2.按宿舍号显示\n");

printf("3.按性别显示\n");

printf("4.按班级显示\n");

printf("5.按专业显示\n");

printf("6.返回主页\n");

scanf("%d",&choice);

system("cls");

switch(choice)

{case 1: printf("\n -----学生信息-----\n\n");

printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n");

printf("-----------------------------------------------------\n"); for(i=0;i<fnum;i++)

{ fread(&st[i],sizeof(struct st_message),1,fp);

{ printf("%-8s %-6s %-4s %-6s %-4s %-4s %-20s\n",st[i].num,st[i].name,

st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major); k++;

if(!strcmp(st[i].sex,"男")) m++;

if(!strcmp(st[i].sex,"女")) n++;

}

}

printf("-----------------------------------------------------\n");

printf("\n\n学生总人数为%d,其中男生为%d,女生为%d。",k,m,n);

break;

case 2: getchar();

printf("请输入要显示的宿舍号:");

gets(dorm);

printf("\n -----该宿舍学生信息-----\n\n");

printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n");

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

if(!strcmp(dorm,st[i].dorm))

{ printf("-----------------------------------------------------\n");

printf("%-8s %-6s %-4s %-6s %-4s %-4s %-20s\n",st[i].num,st[i].name,

st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major); }

break;

case 3:printf("请输入需要显示的性别:\n");

printf("1.男\n");

printf("2.女\n");

scanf("%d",&choice);

printf("\n -----学生信息-----\n\n");

printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n");

printf("-----------------------------------------------------\n"); switch(choice)

{case 1: for(i=0;i<fnum;i++)

if(!strcmp(st[i].sex,"男"))

{ printf("%-8s %-6s %-4s %-6s %-4s %-4s %-20s\n",st[i].num

,st[i].name,

st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major);

m++;

}

printf("-----------------------------------------------------\n");

printf("\n\n男生人数为%d。",m);

break;

case 2: for(i=0;i<fnum;i++)

if(!strcmp(st[i].sex,"女"))

{ printf("%-8s %-6s %-4s %-6s %-4s %-4s %-20s\n",st[i].num,st[i].name,

st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major);

n++;

}

printf("-----------------------------------------------------\n");

printf("\n\n女生人数为%d。",n);

break;

}

break;

case 4: getchar();

printf("请输入要显示的班级:");

gets(classs);

printf("\n -----该班级学生信息-----\n\n");

printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n");

printf("-----------------------------------------------------\n"); for (i=0;i<fnum;i++)

if(!strcmp(classs,st[i].classs))

{ printf("%-8s %-6s %-4s %-6s %-4s %-4s %-20s\n",st[i].num,st[i].name,

st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major); k++;

if(!strcmp(st[i].sex,"男")) m++;

if(!strcmp(st[i].sex,"女")) n++;

}

printf("-----------------------------------------------------\n");

printf("\n\n该班学生总人数为%d,其中男生为%d,女生为%d。",k,m,n);

break;

case 5: getchar();

printf("请输入要显示的专业:");

gets(major);

printf("\n -----该专业学生信息-----\n\n");

printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n");

printf("-----------------------------------------------------\n"); for (i=0;i<fnum;i++)

if(!strcmp(major,st[i].major))

{ printf("%-8s %-6s %-4s %-6s %-4s %-4s %-20s\n",st[i].num,st[i].name,

st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major);

k++;

if(!strcmp(st[i].sex,"男")) m++;

if(!strcmp(st[i].sex,"女")) n++;

}

printf("-----------------------------------------------------\n");

printf("\n\n该专业学生总人数为%d,其中男生为%d,女生为%d。",k,m,n);

break;

case 6: return 0;

}

fclose(fp);

system("pause");

return 1;

}

void main()

{int choice;

cipher();

do

{

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(" 0.退出系统\n\n"); printf("请选择0-6:");

scanf("%d",&choice);

switch(choice)

{case 1: input_message();break;

case 2: append_message();break;

case 3: revise_message();break;

case 4: delete_message();break;

case 5: find_message();break;

case 6: census_message();break;

case 0: break;

}

}while(choice!=0);

}

更多相关推荐:
C语言图书馆管理系统课程设计报告

高级语言程序设计课程设计报告设计题目高校图书馆信息管理系统姓专班指导老师20xx年01月01日摘要绪论问题定义或系统分析总体设计与详细设计调适与测试总结与心得附录附录一源代码附录二参考文献高校图书馆管理系统摘要...

C++图书馆管理系统课程设计报告

面向对象课程设计图书馆管理系统院系别信息工程系班级学号姓名指导教师时间课程设计任务书题目图书管理系统C语言课程设计系部信息工程系专业信息管理与信息系统班级学生姓名学号10月10日至10月21日共2周指导教师签字...

图书馆管理系统课程设计报告

经济管理学院本科课程设计论文数据库开发与应用课程设计学号姓名班级专业系别指导教师20xx年12月24日吉林目录第一章引言3第一节课程设计目的3第二节背景错误未定义书签第三节定义错误未定义书签第四节参考资料3第二...

图书管理系统课程设计报告

管理信息系统实习报告专业班级学生姓名指导教师时间成绩评语王桃群20xx32320xx313一课程设计题目图书管理系统二系统需求1系统的准备操作系统Windowsxp数据库系统SQLServer20xx或SQLS...

课程设计实验报告--图书管理系统

课程设计实验报告课程名称数据库课程设计系院数学与计算机学院班级20xx级计算机科学与技术指导教师欧方平摘要随着人类社会的发展人类对知识的需求也不断地增长在这种形势下书籍就渐渐地成为人们获取并增长知识的主要途径而...

c++ 课程设计报告及源代码 图书馆管理系统

重庆科技学院C语言课程设计课程设计报告目录1设计内容任务及基本要求211设计内容212设计任务213设计基本要求22总体设计思路421系统功能422各个模块之间的主要关系423总体程序框图524系统的总体流程图...

c++_课程设计报告及源代码_图书馆管理系统

重庆科技学院C语言课程设计课程设计报告目录1设计内容任务及基本要求211设计内容212设计任务213设计基本要求22总体设计思路421系统功能422各个模块之间的主要关系423总体程序框图524系统的总体流程图...

图书馆管理系统课程设计报告

图书馆管理系统课程设计报告课题名称图书馆管理系统班级10信息本指导老师张宇敬组别第五组成员武少帅闫晓军徐姗李佳琳李雪一需求分析图书管理系统需要满足图书馆管理人员读者等人的需求图书馆管理人员对图书读者的借阅及还书...

图书馆管理系统课程设计报告

数据库原理及应用课程设计报告题目图书馆管理系统所在学院信息工程学院班级计科1001学号101304116姓名陆佳林指导教师20xx年1月2日目录1概述211开发背景212开发工具的选用及介绍2121Eclips...

小型图书管理系统C语言课程设计报告 - 副本

德州学院计算机系20xx级数据结构课程设计德州学院计算机系课程设计报告实习名称数据结构设计题目小型图书管理系统实习时间20xx1320xx19专业班级20xx级网络工程指导老师徐志敏教学单位盖章小组分工情况二0...

C语言课程设计报告—图书信息管理系统

C语言课程设计报告图书信息管理系统设计5507113陈杰20xx1001797指导老师刘文中C语言程序设计编程实践是学习C语言程序设计的一重要环节上机实习和课程设计是提高同学们程序设计能力的有效途径能够使同学们...

图书管理系统课设报告

图书管理系统课设报告1设计目的通过对图书管理信息系统的系统分析系统设计编码和调试等工作的实践了解管理信息系统的一般设计方法和实现思路深入了解数据库设计的基本理论及方法2设计任务要求完成一个具有一定实用价值的图书...

图书馆管理系统课程设计报告(26篇)