精华内容
下载资源
问答
  • c语言期末大作业

    2015-12-14 16:28:48
    c语言期末大作业.。
  • 计信一班王晴c语言期末大作业必做题(学生信息系统管理)计信一班王晴c语言期末大作业必做题(学生信息系统管理)#include #include "string.h"#include #define N 10struct date{int year;int month ;int day;};struct ...

    计信一班王晴c语言期末大作业必做题(学生信息系统管理)计信一班王晴c语言期末大作业必做题(学生信息系统管理)

    #include

    #include "string.h"

    #include

    #define N 10

    struct date

    {int year;

    int month ;

    int day;

    };

    struct student

    {char num[3];

    char name[3];

    struct date brithday;

    char collage[10];

    float score[5];

    float allscore;

    float average;

    } str[100];

    FILE *fp;

    wenjian()

    { FILE *fp;

    char filenname[10];

    printf("请输入所用的文件名:\n");

    scanf("%s",filenname);

    if ((fp=fopen(filenname,"w"))==NULL)

    { printf("无法打开此文件\n");

    exit(0);

    }

    }

    display()

    {int i,j;

    printf("\n ********欢迎进入学生成绩管理系统********\n\n");

    printf("请输入10名同学的学号、姓名、出生日期、所在系、5门课程及成绩:\n\n");

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

    {

    printf ("请输入第%d名学生的信息:\n",i+1);

    printf (" 学号:");

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

    printf(" 姓名:");

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

    printf (" 出生日期:");

    scanf ("%d,%d,%d",&str[i].brithday.year,&str[i].brithday.month,&str[i].brithday.day);

    printf (" 专业院系:");

    scanf("%s",str[i].collage);

    printf(" 成绩(C语言 英语 高数 线性代数 语文):\n");

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

    {printf("score%d",j+1);

    scanf("%f",&str[i].score[j]);}system("cls");

    }

    }

    chakan()

    { int i,j,n;

    char k[3],l[3];

    printf ("请输入你的查找方式(1,按学号查找2,按姓名查找):\n");

    scanf("%d",&n);

    switch(n)

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

    scanf ("%s",&k);

    printf ("学号 姓名 出生日期 院系 英语 C语言 英语 高数 线性代数 语文 \n");

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

    if(strcmp(k,str[i].num)==0)

    {printf ("%s %s %d,%d,%d %s",str[i].num,str[i].name,str[i].brithday.year,str[i].brithday.month,str[i].brithday.day,str[i].collage);

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

    printf("%9.2f",str[i].score[j]);}

    else continue;}break;

    case 2:{printf("请输入姓名:\n");

    scanf ("%s",&l);

    printf ("学号 姓名 出生日期 院系 C语言 英语 高数 线性代数 语文 \n");

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

    if(strcmp(l,str[i].name)==0)

    {printf ("%s %s %d,%d,%d %s",str[i].num,str[i].name,str[i].brithday.year,str[i].brithday.month,str[i].brithday.day,str[

    展开全文
  • C语言模拟通讯录(大一C语言期末大作业

    万次阅读 多人点赞 2019-11-10 18:26:21
    #C语言模拟简易通讯录(大一C语言期末大作业) ##设计目的 题目要求建立一个通讯录,通讯录的结构记录包括:姓名、生日(年月日)、电话号码,程序需要实现下列功能:(1)按姓名查询某人...

    C语言模拟简易通讯录(大一C语言期末大作业)

    前言

    大一第一个学期,我们初学C语言,临近寒假,老师给我们布置了期末大作业,分为A类和B类,A类是最高分为100分,B类是最高分为70分,我选择了B类题里的模拟简易通讯录。下面是详细,技术不精,还请各位大佬指点。

    设计目的

    题目要求建立一个通讯录,通讯录的结构记录包括:姓名、生日(年月日)、电话号码,程序需要实现下列功能:(1)按姓名查询某人的信息并输出查询结果;(2)修改某人的电话号码;(3)按年龄从大到小排序;(4)输出通讯录中的所有信息。同时程序需要有良好的交互提示和清晰的显示界面。

    总体设计

    总体结构图
    总体流程图

    具体代码如下:

    #include<stdio.h> 
    #include<string.h>
    struct birthday{         /*定义生日结构,年·月·日*/
     int year;
     int month;
     int day;
    };
    struct person {         
     char name [10];
     struct birthday birth;       /*定义生日成员,嵌套入个人信息*/ 
     char phonenumber[20];
    };
    int main (void)
    {
     int i,n,j,choice,index;
     char namex[10],namey[10],phonex[20];
     struct person persons[50],temp;
     
     printf ("请输入通讯录中的联系人人数:");
     scanf ("%d",&n);
     for (i=0;i<n;i++){                           /*开始输入通讯录信息*/ 
      printf ("请输入此联系人的姓名:");
      scanf ("%s",persons[i].name);
      printf ("请输入生日:");
      scanf ("%d.%d.%d",&persons[i].birth.year,&persons[i].birth.month,&persons[i].birth.day);
      printf ("请输入联系电话:");
      scanf ("%s",&persons[i].phonenumber);
      printf ("\n");
     }
    while (1) {
               /*输出选项菜单*/
     printf ("\n");
     printf ("以下为本程序为您提供的通讯录功能选项:(输入数字以选择功能)\n");
     printf ("查询通讯录成员个人信息请输入'1';\n");
     printf ("修改通讯录成员电话号码请输入'2';\n");
     printf ("将通讯录成员按年龄从大到小排序请输入'3';\n");
     printf ("输出通讯录所有信息请输入'4';\n");
     printf ("退出通讯录服务请输入'0';\n");
     printf ("请输入您的选项(数字):");
     scanf ("%d",&choice);
     printf ("\n");
     if (choice==0) {                 /*选项为‘0’时,退出程序*/ 
      break;
     }
     switch (choice) {             
     case 1:                                  /*功能一:查找*/ 
     printf ("请输入您要查找的联系人姓名:");
     scanf ("%s",namex);
     for (i=0;i<n;i++){
      if (strcmp(namex,persons[i].name)==0){
       printf ("\n");
       printf ("姓名:%s\n",persons[i].name);
       printf ("生日:%d.%d.%d\n",persons[i].birth.year,persons[i].birth.month,persons[i].birth.day);
       printf ("联系电话:");
       puts(persons[i].phonenumber);
       printf ("\n");
       break;
      }
     }
     break;
     case 2:                                    /*功能二:修改*/ 
     printf ("请输入您要修改的联系人姓名:");
     scanf ("%s",namey);
     printf ("请为您的联系人设置新的联系电话:");
     scanf ("%s",phonex);
     for (i=0;i<n;i++){
      if (strcmp(namey,persons[i].name)==0){
       strcpy (persons[i].phonenumber,phonex);
       printf ("\n");
       printf ("姓名:%s\n",persons[i].name);
                printf ("生日:%d.%d.%d\n",persons[i].birth.year,persons[i].birth.month,persons[i].birth.day);
          printf ("联系电话:");
       puts(persons[i].phonenumber);
       printf ("\n");
       break;  
            } 
     }
     break;
     case 3:                                 /*功能三:排序*/ 
     for (i=0;i<n-1;i++){                     
      index=i;
      for (j=i+1;j<n;j++){
          if (persons[j].birth.year<persons[index].birth.year){
       index=j;
       }
       else if(persons[j].birth.year==persons[index].birth.year&&persons[j].birth.month<persons[index].birth.month){
       index=j;
       }
       else if(persons[j].birth.year==persons[index].birth.year&&persons[j].birth.month==persons[index].birth.month&&persons[j].birth.day<persons[index].birth.day){
       index=j;
       }
      }
      temp=persons[index];
      persons[index]=persons[i];
      persons[i]=temp;
     }
     for (i=0;i<n;i++){                            /*输出排序后的通讯录*/ 
      printf ("\n");
      printf ("姓名:%s\n",persons[i].name);
      printf ("生日:%d.%d.%d\n",persons[i].birth.year,persons[i].birth.month,persons[i].birth.day);
      printf ("联系电话:");
      puts(persons[i].phonenumber);
      printf ("\n");
     }
     break;
     case 4:                             /*功能四:输出*/ 
     for (i=0;i<n;i++){
      printf ("\n");
      printf ("姓名:%s\n",persons[i].name);
      printf ("生日:%d.%d.%d\n",persons[i].birth.year,persons[i].birth.month,persons[i].birth.day);
      printf ("联系电话:"); 
      puts(persons[i].phonenumber);
     }
     break;
     default :                            
      printf ("\n");
      printf ("\n");
      printf ("\n");
      printf ("您好!您所输入的数字在程序中没有与之对应的功能。\n");
      printf ("\n");
      printf ("\n");
      printf ("\n");
      break;
     }
    }
        printf ("\n");
     printf ("\n");
     printf ("\n");
        printf ("感谢您的使用!\n");
        
        
     return 0;
    }
    

    调试与测试

    编写程序时第一个问题是如何将每个功能分开调出使用,翻看课本后我决定采用switch语句,将每个功能程序段嵌入switch语句中,依靠输入的数字进行功能选择。
    第二个问题是电话号码的输出,我采用了scanf语句输入电话号码,用puts()输出电话号码,从而保证十一位号码的正常输出。
    第三个问题是交互提示的优化,提示语采用中文,在输出语句的前面输出空格,便于查看输出结果。

    课程实践总结

    收获:得知写程序,调试程序的不简单,获得克服困难的喜悦,在看到自己亲手编写的程序运行出来满意的结果时,很有成就感。
    体会:虽然这次实践题我选的不是100分的B类题,但我明白自己的能力适合做A类题。通过这次实践任务,我明白了幸福是靠自己奋斗出来的,写完程序的快乐只有自己知道。
    优点:可以供使用者自由选择通讯录功能,有良好的交互提示和输出界面。
    缺点:输入姓名错误时没有错误提示,直接跳出循环。

    展开全文
  • 大一新生,c语言期末大作业图书管理系统,附加实验报告
  • 内含C语言期末大作业参考代码《迷之学习包》,包括17届抽学号,18届抽学号,以及比较难读懂的c源程序
  • /****Attention:* Copyright (c) 2013, PanYongPeng, 18728735432.* All rights reserved.*Purpose:* This is a library book information manage system.*This is the main source file.*Name:*L...

    /***

    *Attention:

    * Copyright (c) 2013, PanYongPeng, 18728735432.

    * All rights reserved.

    *Purpose:

    * This is a library book information manage system.

    *This is the main source file.

    *Name:

    *LibrarySystem.c

    * [Public]

    ****/

    #include "LibrarySystem.h"

    /***********主程序***********/

    int main()

    {

    int n;

    switch(Login())/*管理员返回值1,读者返回值0*/

    {

    case 1: n=ChooseMenu_Admin(); Contro_Admin(n); break;

    case 0: n=ChooseMenu_Reader(); Contro_Reader(n); break;

    }

    Farewell();

    return 0;

    }

    /***********登录模块***********/

    int Login()/*用户登陆界面,管理员返回值1,读者返回值0*/

    {

    int flag=-1;

    while(flag==-1)

    {

    int i;

    system("cls");

    printf("\n\t***********图书管理系统***********\n\n");

    printf("\t欢迎使用图书管理系统\n\n");

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

    fflush(stdin);

    scanf("%s",CurUser);

    printf("\t请输入密码:\n\t ");/*密码安全输入功能*/

    fflush(stdin);

    for(i=0;(((CurPsw[i]=getch())!='\r')&&(CurPsw[i]!='\n'));i++)

    printf("*");

    CurPsw[i]='\0';

    if((strcmp(CurUser,ADMIN)==0)&&(strcmp(CurPsw,PSW)==0))

    { flag=1; limit=1; }

    else

    { flag=0; limit=0; }

    }

    return flag;

    }

    /***********显示菜单模块***********/

    int ChooseMenu_Admin() /*管理员选择操作界面*/

    {

    short int choice;

    char ch;

    system("cls");

    printf("\n\t***********图书管理系统***********\n\n");

    printf("\t欢迎你:管理员%s\n\n",CurUser);

    printf("\t1.查找书目\n");

    printf("\t2.增加书目\n");

    printf("\t3.删除书目\n");

    printf("\t4.查看留言板\n");

    printf("\t5.查看借书统计\n");

    printf("\t0.退出\n");

    do{

    printf("\n\t请输入你要执行的选项:");

    fflush(stdin);

    scanf("%c",&ch);

    choice=(int)(ch-'0');

    }while(choice<0||choice>5);

    return choice;

    }

    int ChooseMenu_Reader() /*读者选择操作界面*/

    {

    short int choice;

    char ch;

    system("cls");

    printf("\n\t***********图书管理系统***********\n\n");

    printf("\t欢迎你:读者%s\n\n",CurUser);

    printf("\t1.查找书目\n");

    printf("\t2.借书\n");

    printf("\t3.还书\n");

    printf("\t4.联系管理员\n");

    printf("\t0.退出\n");

    do{

    printf("\n\t请输入你要执行的选项:");

    fflush(stdin);

    scanf("%c",&ch);

    choice=(int)(ch-'0');

    }while(choice<0||choice>4);

    return choice;

    }

    void Contro_Admin(int choice)

    {

    switch(choice)

    {

    case 1: FindBook();break;

    case 2: AddBook();break;

    case 3:DeleteBook();break;

    case 4: ShowMessage(); break;

    case 5:ShowBorrow();break;

    case 0:Farewell();break;

    }

    }

    void Contro_Reader(int choice)

    {

    switch(choice)

    {

    case 1: FindBook();break;

    case 2: LendBook();break;

    case 3:ReturnBook();break;

    case 4:ContactManager();break;

    case 0:return;

    展开全文
  • “祭”我的大一C语言期末大作业之奇奇怪怪的知识一 文章目录“祭”我的大一C语言期末大作业之奇奇怪怪的知识一前言1、关于fread函数(1)关于sizeof和strleni.sizeof和strlen的返回值都是整数,不过这大概也是它们...

    “祭”我的大一C语言期末大作业之奇奇怪怪的知识一


    前言

    非常非常惭愧,完成大作业的时候,我就决定要写博客记录一下,当时甚至想记录下每一次debug的经历,现在想想太过于细碎,可能后期会分点整理一下。也因为1月还有几门考试,所以决定考完了好好写一下博客。
    虽然但是,考完了确实也厚着脸皮向同学、学长要了他们的作业,计划好好研究一下,不过,这个工作量着实有点超出了我的计划。 ##
    任务难度主要是在这样的几个方面: ###
    1、对于大家的代码认知的不到位。 对于同学们功能实现的思路了解需要时间,其实可以发现尤其是师哥的代码中使用了很多我不熟悉的函数,这些我都会尽量逐一整理为“奇奇怪怪的知识” ###
    2、对于博客这种记录形式的陌生
    考完试之后,其实我就已经在看大家的程序了,甚至向师哥立了flag,说14号之前一定写完,但是一拖就到了今天😵。
    所以不想再拖了,干脆先把整理的一些发出了,做一个类似合辑的形式。这样每天更一点,计划迟迟得不到推进的无力感也会轻一些。

    1、关于fread函数

    众所周知,fread函数声明是

    size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
    
    

    但是从下方这个代码块我们还是可以看出两个小知识点:

    int main()
    {
        FILE*stream;
        char m[]="this is a test";
        char buf[20];
        if((stream=fopen("dump.fil","w+"))==NULL){
            fprintf(stderr,"Cannot open the file.\n");
            return 1;
        //防止文档为空
        
        fwrite(m,1,sizeof(m),stream);
        //在文件中写入字符串stream
       
        fseek(stream,0,1);
        //将stream指针移动到当前位置0字节处
        
        fread(buf,1,sizeof(m),stream);
        //从stream文件中读取m字节长度到buf字节数组中
        printf("%s",buf);
        fclose(stream);
        system("pause");
        return 0;
    }
    }
    

    输出结果为 this is a test

    (1)关于sizeof和strlen


    sizeof(m)与strlen(m)-1的值其实是相等的。
    其实我在csdn上查阅到很多的博文讲这两个函数
    这里就上链接!
    C语言中sizeof与strlen的区别总结!

    (发现这里sizeof的值甚至与寄存器位数也有关系,真的是很amazing呢!)

    我们可以粗糙地理解一下:


    i.sizeof和strlen的返回值都是整数,不过这大概也是它们之间唯一的共同点了😉hh大概


    ii.sizeof的参数可以为类型、数组、指针、函数,如sizeof可以用于测定类型所占存储单元(运行结果为4):

    printf("%d",sizeof(int));
    

    但是strlen的参数仅为数组

    [^小插曲]C语言不仅有大作业,也有理论考试,考试中考了这样的一条选择题:

    #define PI "hello"
    

    问这里PI被定义为什么?
    正确答案应该是字符串,可是我选的是标识符。😡


    iii.sizeof的本质是运算符,strlen的本质是函数。

    (2)关于fseek函数

    众所周知,fseek函数的定义为

    int fseek( FILE *stream, long offset, int origin );
    

    即将stream指针以origin的位置为基准,移动offset个字节。

    offset的数值正数表示正向偏移,负数表示负向偏移。

    下方展示的代码块为利用stream函数得知文章的总字节长度

    #include <stdio.h>
    long filesize(FILE*stream);
    int main(void)
    {
    	FILE *stream;
    	stream = fopen("MYFILE.TXT", "wb+");
    	fprintf(stream, "Thisisatest");
    	printf("FilesizeofMYFILE.TXTis%ldbytes\n", filesize(stream));
    	fclose(stream);
    	return 0;
    }
    
    long filesize(FILE*stream)
    {
    	long curpos, length;
    	curpos = ftell(stream);
        /*告知curpo为此时指针stream距离文件头的距离*/
    	
    	fseek(stream, 0L, SEEK_END);
    	/*L是因为变量定义中用的是long int。*/
    	/*本条命令目的是把stream指针移动到文件结尾处
        这条指令指设置指针stream的位置,以SEEK_END为基准,偏移0L个字节的位置
    	*/
    	
    	length = ftell(stream);
        /*这时的length应该是文件的长度*/
    	
        fseek(stream, curpos, SEEK_SET);
    	/*把steam指针移动到离文件头curpo距离的地方,curpo被赋值为刚开始距离文件头的初始位置*/
    	return length;
    }
    

    补充:
    SEEK_SET: 文件开头

    SEEK_CUR: 当前位置

    SEEK_END: 文件结尾
    其中SEEK_SET, SEEK_CUR和SEEK_END依次为0,1和2.

    简言之:
    fseek(fp, 100L, 0); 把stream指针移动到离文件开头100字节处;
    fseek(fp, 100L, 1); 把stream指针移动到离文件当前位置100字节处;
    fseek(fp, -100L, 2); 把stream指针退回到离文件结尾100字节处。

    总结:
    filesize函数利用文件中的一个stream(工具人指针)。

    先定义一个long int数据类型的常量用来记录stream指针的初始位置,
    接着用fseek函数将steam移动到文件末,
    再定义一个long int数据类型的常量用来这时steam指针距离文件头的距离(即文件的总长),
    返回值为第二个变量即得到了文件的长度。

    2、检查日期输入是否合法

    重点关注2月

    if(month>12||month<1)
    return -1;
    else{
        int max_day[12]={31,29,31,30,31,30,31,31,30,31,30,31}
        if(day>max_day[month-1]||day<1)
          return -1;
        if(month == 2){
            bool b;
            if(year%4==0)
                if(year%100)==0)
                    if(year%400==0)
                        b = 1;
                    else b=0;
                else b = 1;
            else b = 0;//闰年为1,平年为0
            if(!b&&day>28)//如果b=0且day值大于28则退出
                return -1;
        }
    }
    

    看到这段代码时,原谅菜鸡本人还特意百度了一下闰年的判断方式:😁

    (1)能被4整除,但不能被100整除;

    (2)能被400整除。

    3、fscanf和fprintf函数的返回值

    fsanf的返回值为正常情况下从文件读出得得参数个数。

    而fprintf的返回值为写入文件的字节数。
    😂奇怪的知识又增加了。

    好学的小伙伴可能要问了,这有什么用呢?
    其实可以利用它来进行判断,从而读取文件的准确性得到了一定的保证。

    这里作为while语句的执行判断:

    while(fscanf(fp,"%d %d %d",&a,&b,&c)==3)
    {
        
    }
    

    这里其实也可看作判断了一下fp文件是否为空:

    while(fscanf(fp,"%d",&a))
    {
    
    }
    

    同时,我们也可以根据返回值来判断成功读取数据的个数,

    如下方的代码块,我们可以根据num的值对于fscanf是否完成了它的使命进行判断。

    int num=fscanf(fp,"%d %d %d",&a);
    

    亿点废话

    这次先选取了3个小知识作为第一篇,其实这篇题目中的“祭”某一方面讲也是认真的,这学期的C语言学习,对于自己的表现,我其实是非常不满意的。师哥师姐也说,既然自己觉得学的不好,那就去做一些努力。大概是由于自己的性格,哪怕只有一点点想法,我都比较想和师哥师姐或者同学聊,尬聊也要聊😂。
    所以!会争取日更,最近是真的闲的慌哈哈哈。下面是用VScode学的一点点html,第二天还下了DW,DW的界面好好看啊,太友好了叭!!
    [^除了三个超链接,无任何其他功能(哈哈哈哈理直气壮)]
    在这里插入图片描述

    这篇博文也是用VScode里markdown插件写的,有一说一,下插件的感觉还真挺爽的哈哈。不过后来复制到CSDN里的编辑器来,套用了CSDN里大佬提供的目录模板,真挺香的,爱了爱了。

    这次学习同学们的代码也是想有意识地想学习同学们的写程序思路,不过确实有点点困难。加油加油!

    展开全文
  • 题目: 利用链表实现下述功能: 功能: (1)学生信息录入功能,即链表插入新节点; (2)学生信息查询(或排序)功能,即查询链表中的节点; (3)学生信息删除功能,即从链表中删除节点; (5)学生信息修改功能,...
  • #include#include#includestruct A {// 结构体Achar c[10];//数据};struct B { //结构体Bint number;//链表节点号struct A a; //包含结构体Astruct B* next;//形成链表};//链表头尾指针struct B* R_head = NULL;...
  • C语言实现学生管理系统,期末实验90分以上大作业,界面美观用于体验好,功能全面,可运行无bug。 教师输入密码进入教师系统,密码连续输入三次均错误则退回上一界面。 教师系统功能:1.增加学生信息 2.删除学生信息3...
  • 根据题目的描述,完成榜单打印,C语言实现
  • 在这里基本实现了c语言控制台对链表文件信息的读取和存取,同时这是期末大作业哦,编译环境我的是VS2010,6.0应该也可以进行操作,不过需要自己建一个工程,再把代码文件加入进去
  • 你输入的金额过或者过小,请输入100-20000元\n"); system("pause"); continue;//结束当前循环,重新输入金额 } //double型不能用%号来求余,但可以用fmod函数 if...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,231
精华内容 892
关键字:

c语言期末大作业

c语言 订阅