李老师 发表于 2016-7-8 18:40:21

《程序设计语言课程设计9112》课程设计(针对16春学期)

四川大学网络教育学院
课程设计说明书
本文是范文,仅供参考写作,禁止抄袭本文内容上传提交,违者取消写作资格,成绩不合格!

课程名称      程序设计语言课程设计   
校外学习中心                        
专    业                              
层    次                              
年    级                              
学生姓名                              
学   号                              



年    月    日
实验设备管理系统设计
1、程序功能
实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。本实验设备信息管理系统,能提供以下功能,实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备的插叙需要提供查找操作,设备的查询可根据设备编号、设备种类、设备名称、设备购入日期、正常设备(未报废的)等多种方式查询;另外还要提供键盘式选择菜单以实现功能选择。
   (1)能够完成对设备的录入和修改。
   (2)对设备进行分类统计。
   (3)设备的查询。
2、程序设计
根据需求分析,可将系统的设计分为四个模块:输入模块,修改模块,统计模块,查询模块;实验室设备信息用文件存储,提供文件的输入输出;建立实验设备信息结构体,结构体成员包括:设备编号,设备种类,设备名称,设备价格,设备购入日期,是否报废,报废日期。
   (1)主函数设计
主函数提供输入,处理,输出部分的函数调用,其中各功能模块用菜单方式选择,即主函数里显示一系列功能选项,判断后,是否调用个功能模块用了switch()选择功能。
   (2)各功能模块设计
    输入模块:定义了文件型指针变量,打开文件输入用户要输入设备的个数,输入设备的各项详细信息,将输入的信息存储到文件的中;用到fopen(文件名,使用文件方式);fclose(文件指针);fprintf(文件指针,格式字符串,输出列表)。
修改模块:输入要修改的设备编号,是否找到该设备资料,如果找到记录,调用修改函数,对该设备的信息进行修改;如果没有找到,返回主菜单。在寻找的过程中用了字符串的比较strcmp(字符串1,字符串2),如果字符串1=字符串2,则函数值为0。
如果字符串1>字符串2,则函数值为一个正整数。
如果字符串1<字符串2,则函数值为一个负整数。
比较时,只能用if(strcmp(str1,str2)>0)。还用到feof()若到文件末尾,函数值为“真”。
统计模块:打开文件,并对文件中的设备信息进行统计计算类型数目,总价格,平均价格;此程序中将char类型转化成double型,用到了pc=atof();fscanf(文件指针,格式字符串,输入列表);同样也用到了字符串的比较strcmp(字符串1,字符串2),feof()。
查询模块:询问用户想要选择的搜索方式,分三种类型查询(设备名称,设备型号,设备价格),再用switch()的选择功能,每一种类型有用到了feof()控制循环,字符串的比较strcmp(字符串1,字符串2),



3、功能模块图
(1) 输入模块
            






(2) 修改模块


(3)统计模块













(4)查询模块


4、数据结构设计
此程序中用到了
(1)基本类型:1)常量的使用#define N 50,2)整型(int),
                   3)字符型(char),4)浮点型(双精度double)。               
(2)构造类型:1)数组类型 (equipCode ,equipType,equipName
                         equipPrice,equipOver, equipYesno, equipTime )
               2)结构体类型:struct equip
                           {
                               charequipCode;
                               charequipType;
                               charequipName;
                               charequipPrice;
                               charequipOver;
                               charequipYesno;      
                               charequipTime;
                              }equ,temp;
(3)指针类型:FILE *fp,文件型指针变量,fp是一个指向FLIE类型结构
                           的指针变量。
5、算法设计






















































6. 程序代码
#include "stdio.h"
#include<stdlib.h>
#include<string.h>
# define N 50
struct equip
{
      charequipCode;
      charequipType;
      charequipName;
      charequipPrice;
      charequipOver;
      charequipYesno;      
      charequipTime;
}equ,temp;
int enter()         //输入记录   
{
   FILE *fp;
   int c;
   printf("**************************************\n");
   printf("Add new equiment\n");
   printf("**************************************\n");
if((fp=fopen("test.txt","a"))==NULL)
{
       printf("Can not open file!\n");
}
   printf("------------------\n");
   printf("请输入设备ID号:\n");
   scanf("%s",temp.equipCode);
   printf("请输入设备类型\n");
   scanf("%s",temp.equipType);
   printf("请输入设备名称\n");
   scanf("%s",temp.equipName);
   printf("请输入设备价格\n");
   scanf("%s",temp.equipPrice);
   printf("请输入设备购买日期\n");
   scanf("%s",temp.equipTime);
   printf("请输入设备报废日期\n");
   scanf("%s",temp.equipOver);
   printf("请输入设备是否报废\n");
   scanf("%s",temp.equipYesno);
   fprintf(fp,"%s %s %s %s %s %s %s\n",
                      temp.equipCode,
                      temp.equipType,
                      temp.equipName,
                      temp.equipPrice,
                      temp.equipTime,
                      temp.equipOver,
                      temp.equipYesno);
   fclose(fp);
    printf("\n-----------------------\n");
    printf("Return to main menu?\n");
    printf("1.YES,Addition Successful\n");
    printf("2.NO,I want to quit now\n");
    scanf("%d",&c);
    if(c==1)return(0);
    if(c==2)return(0);
}
int modifty()         //修改记录
{
    char code;
   int i,j;
   int c;
   FILE *fp;
   printf("*************************************\n");
   printf("Modifty for the equiment\n");
   printf("*************************************\n");
   printf("Please input the equipcode for modiftying\n");
   scanf("%s",code);
   printf("------------------------------------\n");
if((fp=fopen("test.txt","r"))==NULL)
{
        printf("\nCan not open test!\n");
}
for(i=0;!feof(fp);i++)
{
   fscanf(fp,"%s %s %s %s %s %s %s",
             equ.equipCode,
             equ.equipType,
             equ.equipName,
             equ.equipPrice,
             equ.equipTime,
             equ.equipOver,
             equ.equipYesno);
    if(strcmp(equ.equipCode,code)==0)
{
    printf("------------------\n");
    printf("Input new equipCode\n");
    scanf("%s",equ.equipCode);
    printf("Input new equiptype\n");
    scanf("%s",equ.equipType);
    printf("Input new equipname\n");
    scanf("%s",equ.equipName);
    printf("Input equipPrice\n");
    scanf("%s",equ.equipPrice);
    printf("Input new euiptime\n");
    scanf("%s",equ.equipTime);
    printf("Input new euipover\n");
    scanf("%s",equ.equipOver)
    printf("Input new euipyesno\n");
    scanf("%s",equ.equipYesno);
}
}
   fclose(fp);
    j=i;
if((fp=fopen("test.txt","w"))==NULL)
{
        printf("\nCan not open test!\n");
}
for(i=0;i<j;i++)
{
       printf("\nwrite!\n");
   fprintf(fp,"%s %s %s %s %s %s %s",
                  equ.equipCode,
                  equ.equipType,
                  equ.equipName,
                  equ.equipPrice,
                  equ.equipTime,
                  equ.equipOver,
                  equ.equipYesno);
}
   fclose(fp);
   printf("\n-----------------------\n");
   printf("Return to main menu?   \n");
   printf("1.YES Modify Successful\n");
   printf("2.NO, quit now\n");
   scanf("%d",&c);
if(c==1)return(0);
if(c==2)return(0);
}

int disp()               //统计记录
{
   int c;
   double sum=0;
   int count=0;
   double aver=0;
   char type;
   int i;
   FILE *fp;
if((fp=fopen("test.txt","r"))==NULL)
{
       printf("\nWrong\n");
}
   printf("please input equipType:\n");
   scanf("%s",type);
for(i=0;!feof(fp);i++)
{
       fscanf(fp,"%s %s %s %s %s %s %s",
                      equ.equipCode,
                          equ.equipType,
            equ.equipName,
                          equ.equipPrice,
                          equ.equipTime,
                          equ.equipOver,
                          equ.equipYesno);
   printf("\nOK!\n");
       printf("%s,%s,%s,%s,%s,%s,%s\n",
                      equ.equipCode,
                          equ.equipType,
            equ.equipName,
                          equ.equipPrice,
                          equ.equipTime,
                          equ.equipOver,
                          equ.equipYesno);
   if(strcmp(equ.equipType,type)==0)
   {
              double pc=atof(equ.equipPrice);       //char 转换为double
      count++;
      sum+=pc;
      aver=sum/count;
   }
}   
   fclose(fp);
   printf("----------Statist--Result-----------");
   printf("\n\n这种类型的数目:%d",count);
   printf("\n\n总的价格 :%lf",sum);
   printf("\n\n平均价格 :%lf",aver);
   printf("\nexit");
   printf("\n-----------------------\n");
   printf("Return to main menu?\n");
   printf("1.YES Disp Successful \n");
   printf("2.NO,quit now.\n");
   scanf("%d",&c);
if(c==1) return(0);
if(c==2) return(0);
}

int search()            //查询记录
{
char code;
char name;
char price;
int sel;
int c;
FILE *fp;
int i;
fp=fopen("test.txt","r");
if(fp==NULL) exit(0);
   printf("please choose the way of search:\n\n");
   printf("1.search by equipCode\n\n");
   printf("2.search by equipName \n\n");
   printf("3.search by equipPrice\n\n");
   printf("0.return\n\n");
   printf("please input number 0-5:");
   scanf("%d",&sel);            
if(sel==0)exit(0);
switch(sel)
{
   case 0:exit(0);break;
   case 1:
      printf("please input equipCode:\n");
      scanf("%s",code);
      for(i=0;!feof(fp);i++)
       {
             fscanf(fp,"%s %s %s %s %s %s %s",
                       equ.equipCode,
                       equ.equipType,
                       equ.equipName,
                       equ.equipPrice,
                       equ.equipTime,
                       equ.equipOver,
                       equ.equipYesno);
          if(strcmp(equ.equipCode,code)==0)
   {
      printf("\nequipCode,equipType,equipName,equipPrice,euipTime,euipOver,euipYesno\n");
      printf( "\n%s,%s,%s,%s,%s,%s,%s\n",
                             equ.equipCode,
                             equ.equipType,
                          equ.equipName,
                equ.equipPrice,
                          equ.equipTime,
                          equ.equipOver,
                          equ.equipYesno);
                  }
       }
      break;
case 2:
       printf("please input equipName:\n");
       scanf("%s",name);
      for(i=0;!feof(fp);i++)
       {
             fscanf(fp,"%s %s %s %s %s %s %s",
                           equ.equipCode,
                           equ.equipType,
               equ.equipName,
                           equ.equipPrice,
                           equ.equipTime,
                           equ.equipOver,
                           equ.equipYesno);
          if(strcmp(equ.equipName,code)==0)
                  {
      printf("\nequipCode,equipType,equipName,equipPrice,euipTime,euipOver,euipYesno\n");
      printf("\n%s,%s,%s,%s,%s,%s,%s\n",
                           equ.equipCode,
                           equ.equipType,
               equ.equipName,
                           equ.equipPrice,
                           equ.equipTime,
                           equ.equipOver,
                           equ.equipYesno);
                  }
       }
    break;
case 3:
   printf("please input equipPrice:\n");
   scanf("%d",&price);
   for(i=0;!feof(fp);i++)
       {   
          fscanf(fp,"%s %s %s %s %s %s %s",
                          equ.equipCode,
                          equ.equipType,
            equ.equipName,
                          equ.equipPrice,
                          equ.equipTime,
                          equ.equipOver,
                          equ.equipYesno);
          if(strcmp(price,equ.equipPrice)==0)
{   
      printf("\nequipCode,equipType,equipName,equipPrice,euipTime,euipOver,euipYesno\n");
      printf("\n%s,%s,%s,%s,%s,%s,%s\n",
             equ.equipCode,
                       equ.equipType,
             equ.equipName,
                       equ.equipPrice,
                       equ.equipTime,
                       equ.equipOver,
                       equ.equipYesno);
                  }
       }
break;
}
   fclose(fp);
   printf("\n-----------------------\n");
   printf("Return to main menu?   \n");
   printf("1.YES Search Successful \n");
   printf("2.NO, quit now\n");
   scanf("%d",&c);
if(c==1) return(0);
if(c==2) return(0);
}
void main()
{   
    int n;
    int w;
    do
{
    puts("\t\t*******MENU*******\n\n");
    puts("\t\t 1.Enter new data");
    puts("\t\t 2.Modify data");
    puts("\t\t 3.Disp ");
    puts("\t\t 4.Search");
    puts("\t\t 5.Exit");
    puts("\n\n\t\t*****************\n");
    printf("Choice your number(1-5):");
    scanf("%d",&n);
if(n<1||n>5)
{
    w=1;
   getchar();
}
else w=0;
switch(n)
{
   case 1:enter();break;
   case 2:modifty();break;
   case 3:disp();break;
   case 4:search();break;
   case 5:exit(0);
}
}   
   while(w==0);
}

7、程序运行结果
(1)        主函数

(2)输入模块
   

(3)修改模块


(4)统计模块


(5)查询模块

编程中遇到的困难及解决方法
    由于自己时间过长的遗忘及知识的局限性使得在程序的编译中存在一些问题,对每个功能模块的理解,以及主函数的功能,都是在老师的讲解下有了更深的了解。编写主函数根据一些例题的模式以及自己的所要实现的功能来完成;每一个子模块,也是根据例题模块,以及要实现的功能编写,用到了文件,结构体类型,数组,类型的装换等等,文件以及结构体类型,通过查看书本完成的,类型的装换是通过老师和同学的帮忙解决的。在运行过程中,每个模块运行后不能接着下一个模块,也是在老师的帮助下完成的,总体程序还是比较简单的。
总结
    经过这几天的实习使我了解到C语言的重要性,之前接触到的C语言内容都是理论上的,理论知识知道的比较多,但是没怎么用到实际操作当中。这次上机实习给了我一次真正认识C语言的机会,刚开始我一脸的迷茫,不知道从哪里开始动手,觉得C语言是一种很深奥的东西,对于刚开始接触这门课程的我来说非常的不适应。很多东西都是第一次:第一次真正认真的投入C语言当中,第一次用自己在课堂上学习的东西逐步的去解决实际问题,这次是完成实验设备信息的管理。经过这次实习,我知道自己的计算机知识还是相当有限的,在这次的程序编译过程中遇到了很多自己无法解决的问题,可是通过老师的指导,上网查看资料,问高年级的学长学姐等方法,最终问题都基本解决了。
    这次C语言课程设计给我的帮助是很大的。虽然到现在我还掌握得不好。所以在以后的学习生活中我会更加注重这方面的实际操作,提高自己的实际动手操作能力,解决实际问题的能力以及提升自己的计算机水平。 
   

程序设计语言课程设计
程序设计语言课程设计是教学实践环节中一项重要内容,进行此课程设计的旨在:
        1、学习和掌握C程序设计方法以及上机调试技巧,为今后学习其它专业课程打好基础。
        2、提高和加强学生的计算机应用与软件开发能力,使学生由初学者向专业的程序员过渡。
        3、培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应计算机产业日新月异发展的形势。
本次课程设计是以学生独立思考解决问题为主,教师指导为辅,结合上机操作,完成指定的任务,作出设计报告。
       
一、        程序设计语言课程设计报告的要求
1、程序的题目;
2、程序的功能说明;
3、程序的算法流程图;
4、程序中所用的数据结构说明;
5、程序代码;
6、测试数据和结果;
7、心得体会。
二、        设计题目和具体要求
题目可以自拟(难度要和下面的要求相当),也可以从下面选择:
1、学生成绩管理
        数据输入:如果没有数据文件,从键盘输入学生数据(包括学生的学号、姓名、性别、年龄及五门功课的成绩),并保存到磁盘文件“*.txt”。如果有数据文件,则可向该文件写数据。
1)        数据查询:根据姓名或学号,查找相应学生的信息并在屏幕上显示。
2)        修改数据:修改某名学生的某门课的成绩(注意修改的权限)。
3)        统计数据:按学号升序显示全部学生的信息;
4)        按平均分降序打印全部学生的信息,并保存到磁盘文件“.txt”;
5)        统计不及格课程学生的信息。
2、学生通讯系统
        学生通信录信息包括:姓名、学号、年龄、性别、家庭住址、联系电话、寝室号等信息。现要求编写程序来完成如下功能:1)学生通信录信息的输入;
2)学生的通信录信息删除和修改;
3)学生的通信录信息查询和统计功能;
4)学生的通信录信息输出显示。
3、电脑报价
电脑各部件的信息包括:部件名、价格、分类号、型号,厂商、报价时间等。试设计一电脑报价系统,系统以菜单方式工作,使之能提供以下功能:
1)        添加电脑各部件的信息功能(用文件保存);
2)        查询功能,按类型、价格等查询;
3)        生成报价单;
4)        电脑各部件的信息的删除与修改。
4、职工信息管理
职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,系统以菜单方式工作,使之能提供以下功能:
1)        职工信息录入功能(职工信息用文件保存);
2)        职工信息浏览功能;
3)        查询和排序功能:按工资查询和按学历查询或按年龄等查询;
4)        职工信息删除、修改功能;
5)        统计功能。
:格式要求
1、封面:封面字体宋体一号文字,名称使用黑体3号
2、内页正文内容:4号宋体、单倍行距
            
封面见后:
      



       四川大学网络教育学院
课程设计报告

课程名称                           
   校外学习中心                        
                专    业                           
层   次                           
        年    级                           
学生姓名                              
        学   号                              


年    月    日
考核方式:
考核成绩(合格或不合格),由学习中心评分盖章后成绩交网络教育学院。
报告由学生按时间要求通过平台上传实习报告,不再邮寄。



页: [1]
查看完整版本: 《程序设计语言课程设计9112》课程设计(针对16春学期)

作业辅导、毕业论文、学业辅导,考试辅导资料,请加qq2762169544(微信:2762169544)